Index: sdk/lib/html/dart2js/html_dart2js.dart |
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart |
index 82eaeee52c4c6a1c846b5a213ef6f1e8bbc284d3..cceeefdb964618a38b3bf37d939dc5cb3e7e1bab 100644 |
--- a/sdk/lib/html/dart2js/html_dart2js.dart |
+++ b/sdk/lib/html/dart2js/html_dart2js.dart |
@@ -1031,6 +1031,7 @@ class ButtonElement extends Element implements Element native "*HTMLButtonElemen |
String formTarget; |
/** @domName HTMLButtonElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLButtonElement.name */ |
@@ -1127,6 +1128,7 @@ class CSSKeyframeRule extends CSSRule native "*WebKitCSSKeyframeRule" { |
class CSSKeyframesRule extends CSSRule native "*WebKitCSSKeyframesRule" { |
/** @domName WebKitCSSKeyframesRule.cssRules */ |
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList') |
vsm
2012/11/20 18:33:46
Does @Returns imply @Creates?
sra1
2012/11/20 19:26:33
No. There is no cross-use of the annotations.
I c
|
final List<CSSRule> cssRules; |
/** @domName WebKitCSSKeyframesRule.name */ |
@@ -1261,6 +1263,7 @@ class CSSMatrix native "*WebKitCSSMatrix" { |
class CSSMediaRule extends CSSRule native "*CSSMediaRule" { |
/** @domName CSSMediaRule.cssRules */ |
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList') |
final List<CSSRule> cssRules; |
/** @domName CSSMediaRule.media */ |
@@ -4660,12 +4663,14 @@ class CSSStyleRule extends CSSRule native "*CSSStyleRule" { |
class CSSStyleSheet extends StyleSheet native "*CSSStyleSheet" { |
/** @domName CSSStyleSheet.cssRules */ |
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList') |
final List<CSSRule> cssRules; |
/** @domName CSSStyleSheet.ownerRule */ |
final CSSRule ownerRule; |
/** @domName CSSStyleSheet.rules */ |
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList') |
final List<CSSRule> rules; |
/** @domName CSSStyleSheet.addRule */ |
@@ -5203,6 +5208,7 @@ class Clipboard native "*Clipboard" { |
String effectAllowed; |
/** @domName Clipboard.files */ |
+ @Returns('_FileList') @Creates('_FileList') |
final List<File> files; |
/** @domName Clipboard.items */ |
@@ -5352,6 +5358,7 @@ class ContentElement extends Element implements Element native "*HTMLContentElem |
String select; |
/** @domName HTMLContentElement.getDistributedNodes */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> getDistributedNodes() native; |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
@@ -6438,6 +6445,7 @@ class DirectoryReader native "*DirectoryReader" { |
class DirectoryReaderSync native "*DirectoryReaderSync" { |
/** @domName DirectoryReaderSync.readEntries */ |
+ @Returns('_EntryArraySync') @Creates('_EntryArraySync') |
List<EntrySync> readEntries() native; |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
@@ -6511,7 +6519,7 @@ class Document extends Node native "*Document" |
String selectedStylesheetSet; |
/** @domName Document.styleSheets */ |
- List<StyleSheet> get $dom_styleSheets => JS("List<StyleSheet>", "#.styleSheets", this); |
+ List<StyleSheet> get $dom_styleSheets => JS("_StyleSheetList", "#.styleSheets", this); |
/** @domName Document.title */ |
String get $dom_title => JS("String", "#.title", this); |
@@ -6586,12 +6594,15 @@ class Document extends Node native "*Document" |
Element $dom_getElementById(String elementId) native "getElementById"; |
/** @domName Document.getElementsByClassName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByClassName(String tagname) native "getElementsByClassName"; |
/** @domName Document.getElementsByName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByName(String elementName) native "getElementsByName"; |
/** @domName Document.getElementsByTagName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByTagName(String tagname) native "getElementsByTagName"; |
/** @domName Document.queryCommandEnabled */ |
@@ -6613,6 +6624,7 @@ class Document extends Node native "*Document" |
Element $dom_querySelector(String selectors) native "querySelector"; |
/** @domName Document.querySelectorAll */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll"; |
/** @domName Document.webkitCancelFullScreen */ |
@@ -7032,6 +7044,7 @@ class DocumentFragment extends Node native "*DocumentFragment" { |
Element $dom_querySelector(String selectors) native "querySelector"; |
/** @domName DocumentFragment.querySelectorAll */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll"; |
} |
@@ -7720,6 +7733,7 @@ abstract class Element extends Node implements ElementTraversal native "*Element |
* [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html |
* [x-tags]: http://x-tags.org/ |
*/ |
+ @Creates('Null') // Set from Dart code; does not instantiate a native type. |
var xtag; |
// TODO(vsm): Implement noSuchMethod or similar for dart2js. |
@@ -7922,12 +7936,15 @@ abstract class Element extends Node implements ElementTraversal native "*Element |
ClientRect getBoundingClientRect() native; |
/** @domName Element.getClientRects */ |
+ @Returns('_ClientRectList') @Creates('_ClientRectList') |
List<ClientRect> getClientRects() native; |
/** @domName Element.getElementsByClassName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByClassName(String name) native "getElementsByClassName"; |
/** @domName Element.getElementsByTagName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByTagName(String name) native "getElementsByTagName"; |
/** @domName Element.hasAttribute */ |
@@ -7937,6 +7954,7 @@ abstract class Element extends Node implements ElementTraversal native "*Element |
Element $dom_querySelector(String selectors) native "querySelector"; |
/** @domName Element.querySelectorAll */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll"; |
/** @domName Element.removeAttribute */ |
@@ -9552,6 +9570,7 @@ class HTMLAllCollection implements JavaScriptIndexingBehavior, List<Node> native |
Node namedItem(String name) native; |
/** @domName HTMLAllCollection.tags */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> tags(String name) native; |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
@@ -10145,6 +10164,7 @@ class IDBDatabase extends EventTarget native "*IDBDatabase" { |
final String name; |
/** @domName IDBDatabase.objectStoreNames */ |
+ @Returns('_DOMStringList') @Creates('_DOMStringList') |
final List<String> objectStoreNames; |
/** @domName IDBDatabase.version */ |
@@ -10527,6 +10547,7 @@ class IDBObjectStore native "*IDBObjectStore" { |
final bool autoIncrement; |
/** @domName IDBObjectStore.indexNames */ |
+ @Returns('_DOMStringList') @Creates('_DOMStringList') |
final List<String> indexNames; |
/** @domName IDBObjectStore.keyPath */ |
@@ -11077,6 +11098,7 @@ class InputElement extends Element implements Element native "*HTMLInputElement" |
bool disabled; |
/** @domName HTMLInputElement.files */ |
+ @Returns('_FileList') @Creates('_FileList') |
List<File> files; |
/** @domName HTMLInputElement.form */ |
@@ -11107,6 +11129,7 @@ class InputElement extends Element implements Element native "*HTMLInputElement" |
bool indeterminate; |
/** @domName HTMLInputElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLInputElement.list */ |
@@ -11179,6 +11202,7 @@ class InputElement extends Element implements Element native "*HTMLInputElement" |
num valueAsNumber; |
/** @domName HTMLInputElement.webkitEntries */ |
+ @Returns('_EntryArray') @Creates('_EntryArray') |
final List<Entry> webkitEntries; |
/** @domName HTMLInputElement.webkitGrammar */ |
@@ -11662,6 +11686,7 @@ class KeygenElement extends Element implements Element native "*HTMLKeygenElemen |
String keytype; |
/** @domName HTMLKeygenElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLKeygenElement.name */ |
@@ -11817,6 +11842,7 @@ class LocalHistory implements History native "*History" { |
class LocalLocation implements Location native "*Location" { |
/** @domName Location.ancestorOrigins */ |
+ @Returns('_DOMStringList') @Creates('_DOMStringList') |
final List<String> ancestorOrigins; |
/** @domName Location.hash */ |
@@ -12209,6 +12235,7 @@ class LocalWindow extends EventTarget implements Window native "@*DOMWindow" { |
CSSStyleDeclaration $dom_getComputedStyle(Element element, String pseudoElement) native "getComputedStyle"; |
/** @domName Window.getMatchedCSSRules */ |
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList') |
List<CSSRule> getMatchedCSSRules(Element element, String pseudoElement) native; |
/** @domName Window.getSelection */ |
@@ -12224,6 +12251,7 @@ class LocalWindow extends EventTarget implements Window native "@*DOMWindow" { |
void moveTo(num x, num y) native; |
/** @domName DOMWindow.openDatabase */ |
+ @Creates('Database') @Creates('DatabaseSync') |
vsm
2012/11/20 18:33:46
FWIW, the first is redundant with the return type.
sra1
2012/11/20 19:26:33
1. If you give any Creates annotation, you must gi
|
Database openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native; |
/** @domName Window.postMessage */ |
@@ -13184,6 +13212,7 @@ class MessageEvent extends Event native "*MessageEvent" { |
final String origin; |
/** @domName MessageEvent.ports */ |
+ @Creates('=List') |
vsm
2012/11/20 18:33:46
What's the significance of the "="?
sra1
2012/11/20 19:26:33
=List is a special hack to name JavaScript Array.
|
final List ports; |
/** @domName MessageEvent.source */ |
@@ -13301,6 +13330,7 @@ class MeterElement extends Element implements Element native "*HTMLMeterElement" |
num high; |
/** @domName HTMLMeterElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLMeterElement.low */ |
@@ -13571,6 +13601,7 @@ class MutationObserver native "*MutationObserver" { |
class MutationRecord native "*MutationRecord" { |
/** @domName MutationRecord.addedNodes */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> addedNodes; |
/** @domName MutationRecord.attributeName */ |
@@ -13589,6 +13620,7 @@ class MutationRecord native "*MutationRecord" { |
final Node previousSibling; |
/** @domName MutationRecord.removedNodes */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> removedNodes; |
/** @domName MutationRecord.target */ |
@@ -13777,6 +13809,7 @@ class Navigator native "*Navigator" { |
bool javaEnabled() native; |
/** @domName Navigator.webkitGetGamepads */ |
+ @Returns('_GamepadList') @Creates('_GamepadList') |
List<Gamepad> webkitGetGamepads() native; |
/** @domName Navigator.webkitGetUserMedia */ |
@@ -14013,7 +14046,7 @@ class Node extends EventTarget native "*Node" { |
NamedNodeMap get $dom_attributes => JS("NamedNodeMap", "#.attributes", this); |
/** @domName Node.childNodes */ |
- List<Node> get $dom_childNodes => JS("List<Node>", "#.childNodes", this); |
+ List<Node> get $dom_childNodes => JS("_NodeList", "#.childNodes", this); |
/** @domName Node.firstChild */ |
Node get $dom_firstChild => JS("Node", "#.firstChild", this); |
@@ -14548,6 +14581,7 @@ class OutputElement extends Element implements Element native "*HTMLOutputElemen |
DOMSettableTokenList htmlFor; |
/** @domName HTMLOutputElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLOutputElement.name */ |
@@ -14767,6 +14801,7 @@ class PeerConnection00 extends EventTarget native "*PeerConnection00" { |
final SessionDescription localDescription; |
/** @domName PeerConnection00.localStreams */ |
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList') |
final List<MediaStream> localStreams; |
/** @domName PeerConnection00.readyState */ |
@@ -14776,6 +14811,7 @@ class PeerConnection00 extends EventTarget native "*PeerConnection00" { |
final SessionDescription remoteDescription; |
/** @domName PeerConnection00.remoteStreams */ |
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList') |
final List<MediaStream> remoteStreams; |
/** @domName PeerConnection00.addEventListener */ |
@@ -15086,6 +15122,7 @@ class ProgressElement extends Element implements Element native "*HTMLProgressEl |
factory ProgressElement() => document.$dom_createElement("progress"); |
/** @domName HTMLProgressElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLProgressElement.max */ |
@@ -15275,6 +15312,7 @@ class RTCPeerConnection extends EventTarget native "*RTCPeerConnection" { |
final RTCSessionDescription localDescription; |
/** @domName RTCPeerConnection.localStreams */ |
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList') |
final List<MediaStream> localStreams; |
/** @domName RTCPeerConnection.readyState */ |
@@ -15284,6 +15322,7 @@ class RTCPeerConnection extends EventTarget native "*RTCPeerConnection" { |
final RTCSessionDescription remoteDescription; |
/** @domName RTCPeerConnection.remoteStreams */ |
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList') |
final List<MediaStream> remoteStreams; |
/** @domName RTCPeerConnection.addEventListener */ |
@@ -15559,6 +15598,7 @@ class Range native "*Range" { |
ClientRect getBoundingClientRect() native; |
/** @domName Range.getClientRects */ |
+ @Returns('_ClientRectList') @Creates('_ClientRectList') |
List<ClientRect> getClientRects() native; |
/** @domName Range.insertNode */ |
@@ -16054,6 +16094,7 @@ class SelectElement extends Element implements Element native "*HTMLSelectElemen |
final FormElement form; |
/** @domName HTMLSelectElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLSelectElement.length */ |
@@ -16174,9 +16215,11 @@ class ShadowRoot extends DocumentFragment native "*ShadowRoot" { |
Element $dom_getElementById(String elementId) native "getElementById"; |
/** @domName ShadowRoot.getElementsByClassName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByClassName(String className) native "getElementsByClassName"; |
/** @domName ShadowRoot.getElementsByTagName */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> $dom_getElementsByTagName(String tagName) native "getElementsByTagName"; |
/** @domName ShadowRoot.getSelection */ |
@@ -16515,6 +16558,7 @@ class SpeechGrammarList implements JavaScriptIndexingBehavior, List<SpeechGramma |
class SpeechInputEvent extends Event native "*SpeechInputEvent" { |
/** @domName SpeechInputEvent.results */ |
+ @Returns('_SpeechInputResultList') @Creates('_SpeechInputResultList') |
final List<SpeechInputResult> results; |
} |
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
@@ -16664,6 +16708,7 @@ class SpeechRecognitionEvent extends Event native "*SpeechRecognitionEvent" { |
final SpeechRecognitionResult result; |
/** @domName SpeechRecognitionEvent.resultHistory */ |
+ @Returns('_SpeechRecognitionResultList') @Creates('_SpeechRecognitionResultList') |
final List<SpeechRecognitionResult> resultHistory; |
/** @domName SpeechRecognitionEvent.resultIndex */ |
@@ -17207,6 +17252,7 @@ class TextAreaElement extends Element implements Element native "*HTMLTextAreaEl |
final FormElement form; |
/** @domName HTMLTextAreaElement.labels */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
final List<Node> labels; |
/** @domName HTMLTextAreaElement.maxLength */ |
@@ -19863,12 +19909,15 @@ class WebKitNamedFlow extends EventTarget native "*WebKitNamedFlow" { |
bool $dom_dispatchEvent(Event event) native "dispatchEvent"; |
/** @domName WebKitNamedFlow.getContent */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> getContent() native; |
/** @domName WebKitNamedFlow.getRegions */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> getRegions() native; |
/** @domName WebKitNamedFlow.getRegionsByContent */ |
+ @Returns('_NodeList') @Creates('_NodeList') |
List<Node> getRegionsByContent(Node contentNode) native; |
/** @domName WebKitNamedFlow.removeEventListener */ |
@@ -21465,20 +21514,10 @@ class _MessageChannelFactoryProvider { |
class _MutationObserverFactoryProvider { |
- static MutationObserver createMutationObserver(MutationCallback callback) { |
- // This is a hack to cause MutationRecord to appear to be instantiated. |
- // |
- // MutationCallback has a parameter type List<MutationRecord>. From this we |
- // infer a list is created in the browser, but not the element type, because |
- // other native fields and methods return plain List which is too general |
- // and would imply creating anything. This statement is a work-around. |
- JS('MutationRecord','0'); |
- |
- return _createMutationObserver(callback); |
- } |
- |
- static MutationObserver _createMutationObserver(MutationCallback callback) native ''' |
+ @Creates('MutationObserver') |
+ @Creates('MutationRecord') |
+ static MutationObserver createMutationObserver(MutationCallback callback) native ''' |
var constructor = |
window.MutationObserver || window.WebKitMutationObserver || |
window.MozMutationObserver; |