Chromium Code Reviews| 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; |