Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 /** | 1 /** | 
| 2 * HTML elements and other resources for web-based applications that need to | 2 * HTML elements and other resources for web-based applications that need to | 
| 3 * interact with the browser and the DOM (Document Object Model). | 3 * interact with the browser and the DOM (Document Object Model). | 
| 4 * | 4 * | 
| 5 * This library includes DOM element types, CSS styling, local storage, | 5 * This library includes DOM element types, CSS styling, local storage, | 
| 6 * media, speech, events, and more. | 6 * media, speech, events, and more. | 
| 7 * To get started, | 7 * To get started, | 
| 8 * check out the [Element] class, the base class for many of the HTML | 8 * check out the [Element] class, the base class for many of the HTML | 
| 9 * DOM types. | 9 * DOM types. | 
| 10 * | 10 * | 
| 11 * ## Other resources | 11 * ## Other resources | 
| 12 * | 12 * | 
| 13 * * If you've never written a web app before, try our | 13 * * If you've never written a web app before, try our | 
| 14 * tutorials—[A Game of Darts](http://dartlang.org/docs/tutorials). | 14 * tutorials—[A Game of Darts](http://dartlang.org/docs/tutorials). | 
| 15 * | 15 * | 
| 16 * * To see some web-based Dart apps in action and to play with the code, | 16 * * To see some web-based Dart apps in action and to play with the code, | 
| 17 * download | 17 * download | 
| 18 * [Dart Editor](http://www.dartlang.org/#get-started) | 18 * [Dart Editor](http://www.dartlang.org/#get-started) | 
| 19 * and run its built-in examples. | 19 * and run its built-in examples. | 
| 20 * | 20 * | 
| 21 * * For even more examples, see | 21 * * For even more examples, see | 
| 22 * [Dart HTML5 Samples](https://github.com/dart-lang/dart-html5-samples) | 22 * [Dart HTML5 Samples](https://github.com/dart-lang/dart-html5-samples) | 
| 23 * on Github. | 23 * on Github. | 
| 24 */ | 24 */ | 
| 25 library dart.dom.html; | 25 library dart.dom.html; | 
| 26 | 26 | 
| 
 
vsm
2016/01/26 14:09:40
Note, I'm auto-generating this file right now.  Sh
 
ochafik
2016/01/26 16:27:37
Platform.supportsTypedData will return true in nod
 
 | |
| 27 import 'dart:_runtime' show global_; | |
| 27 import 'dart:async'; | 28 import 'dart:async'; | 
| 28 import 'dart:collection'; | 29 import 'dart:collection'; | 
| 29 import 'dart:_internal' hide Symbol; | 30 import 'dart:_internal' hide Symbol; | 
| 30 import 'dart:html_common'; | 31 import 'dart:html_common'; | 
| 31 import 'dart:isolate'; | 32 import 'dart:isolate'; | 
| 32 import "dart:convert"; | 33 import "dart:convert"; | 
| 33 import 'dart:math'; | 34 import 'dart:math'; | 
| 34 import 'dart:_native_typed_data'; | 35 import 'dart:_native_typed_data'; | 
| 35 import 'dart:typed_data'; | 36 import 'dart:typed_data'; | 
| 36 import 'dart:_isolate_helper' show IsolateNatives; | 37 import 'dart:_isolate_helper' show IsolateNatives; | 
| (...skipping 4806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4843 /** | 4844 /** | 
| 4844 * Parses the specified text as HTML and adds the resulting node after the | 4845 * Parses the specified text as HTML and adds the resulting node after the | 
| 4845 * last child of this document fragment. | 4846 * last child of this document fragment. | 
| 4846 */ | 4847 */ | 
| 4847 void appendHtml(String text, {NodeValidator validator, | 4848 void appendHtml(String text, {NodeValidator validator, | 
| 4848 NodeTreeSanitizer, treeSanitizer}) { | 4849 NodeTreeSanitizer, treeSanitizer}) { | 
| 4849 this.append(new DocumentFragment.html(text, validator: validator, | 4850 this.append(new DocumentFragment.html(text, validator: validator, | 
| 4850 treeSanitizer: treeSanitizer)); | 4851 treeSanitizer: treeSanitizer)); | 
| 4851 } | 4852 } | 
| 4852 | 4853 | 
| 4853 /** | 4854 /** | 
| 4854 * Alias for [querySelector]. Note this function is deprecated because its | 4855 * Alias for [querySelector]. Note this function is deprecated because its | 
| 4855 * semantics will be changing in the future. | 4856 * semantics will be changing in the future. | 
| 4856 */ | 4857 */ | 
| 4857 @deprecated | 4858 @deprecated | 
| 4858 @Experimental() | 4859 @Experimental() | 
| 4859 @DomName('DocumentFragment.querySelector') | 4860 @DomName('DocumentFragment.querySelector') | 
| 4860 Element query(String relativeSelectors) { | 4861 Element query(String relativeSelectors) { | 
| 4861 return querySelector(relativeSelectors); | 4862 return querySelector(relativeSelectors); | 
| 4862 } | 4863 } | 
| 4863 | 4864 | 
| 4864 /** | 4865 /** | 
| 4865 * Alias for [querySelectorAll]. Note this function is deprecated because its | 4866 * Alias for [querySelectorAll]. Note this function is deprecated because its | 
| 4866 * semantics will be changing in the future. | 4867 * semantics will be changing in the future. | 
| 4867 */ | 4868 */ | 
| 4868 @deprecated | 4869 @deprecated | 
| 4869 @Experimental() | 4870 @Experimental() | 
| 4870 @DomName('DocumentFragment.querySelectorAll') | 4871 @DomName('DocumentFragment.querySelectorAll') | 
| 4871 ElementList<Element> queryAll(String relativeSelectors) { | 4872 ElementList<Element> queryAll(String relativeSelectors) { | 
| 4872 return querySelectorAll(relativeSelectors); | 4873 return querySelectorAll(relativeSelectors); | 
| 4873 } | 4874 } | 
| 4874 // To suppress missing implicit constructor warnings. | 4875 // To suppress missing implicit constructor warnings. | 
| (...skipping 2646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7521 * Normally events should be created via their constructors, if available. | 7522 * Normally events should be created via their constructors, if available. | 
| 7522 * | 7523 * | 
| 7523 * var e = new Event.type('MouseEvent', 'mousedown', true, true); | 7524 * var e = new Event.type('MouseEvent', 'mousedown', true, true); | 
| 7524 */ | 7525 */ | 
| 7525 factory Event.eventType(String type, String name, {bool canBubble: true, | 7526 factory Event.eventType(String type, String name, {bool canBubble: true, | 
| 7526 bool cancelable: true}) { | 7527 bool cancelable: true}) { | 
| 7527 final Event e = document._createEvent(type); | 7528 final Event e = document._createEvent(type); | 
| 7528 e._initEvent(name, canBubble, cancelable); | 7529 e._initEvent(name, canBubble, cancelable); | 
| 7529 return e; | 7530 return e; | 
| 7530 } | 7531 } | 
| 7531 | 7532 | 
| 7532 /** The CSS selector involved with event delegation. */ | 7533 /** The CSS selector involved with event delegation. */ | 
| 7533 String _selector; | 7534 String _selector; | 
| 7534 | 7535 | 
| 7535 /** | 7536 /** | 
| 7536 * A pointer to the element whose CSS selector matched within which an event | 7537 * A pointer to the element whose CSS selector matched within which an event | 
| 7537 * was fired. If this Event was not associated with any Event delegation, | 7538 * was fired. If this Event was not associated with any Event delegation, | 
| 7538 * accessing this value will throw an [UnsupportedError]. | 7539 * accessing this value will throw an [UnsupportedError]. | 
| 7539 */ | 7540 */ | 
| 7540 Element get matchingTarget { | 7541 Element get matchingTarget { | 
| 7541 if (_selector == null) { | 7542 if (_selector == null) { | 
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7756 Events(this._ptr); | 7757 Events(this._ptr); | 
| 7757 | 7758 | 
| 7758 Stream operator [](String type) { | 7759 Stream operator [](String type) { | 
| 7759 return new _EventStream(_ptr, type, false); | 7760 return new _EventStream(_ptr, type, false); | 
| 7760 } | 7761 } | 
| 7761 } | 7762 } | 
| 7762 | 7763 | 
| 7763 class ElementEvents extends Events { | 7764 class ElementEvents extends Events { | 
| 7764 /* Raw event target. */ | 7765 /* Raw event target. */ | 
| 7765 static final webkitEvents = { | 7766 static final webkitEvents = { | 
| 7766 'animationend' : 'webkitAnimationEnd', | 7767 'animationend' : 'webkitAnimationEnd', | 
| 7767 'animationiteration' : 'webkitAnimationIteration', | 7768 'animationiteration' : 'webkitAnimationIteration', | 
| 7768 'animationstart' : 'webkitAnimationStart', | 7769 'animationstart' : 'webkitAnimationStart', | 
| 7769 'fullscreenchange' : 'webkitfullscreenchange', | 7770 'fullscreenchange' : 'webkitfullscreenchange', | 
| 7770 'fullscreenerror' : 'webkitfullscreenerror', | 7771 'fullscreenerror' : 'webkitfullscreenerror', | 
| 7771 'keyadded' : 'webkitkeyadded', | 7772 'keyadded' : 'webkitkeyadded', | 
| 7772 'keyerror' : 'webkitkeyerror', | 7773 'keyerror' : 'webkitkeyerror', | 
| 7773 'keymessage' : 'webkitkeymessage', | 7774 'keymessage' : 'webkitkeymessage', | 
| 7774 'needkey' : 'webkitneedkey', | 7775 'needkey' : 'webkitneedkey', | 
| 7775 'pointerlockchange' : 'webkitpointerlockchange', | 7776 'pointerlockchange' : 'webkitpointerlockchange', | 
| 7776 'pointerlockerror' : 'webkitpointerlockerror', | 7777 'pointerlockerror' : 'webkitpointerlockerror', | 
| 7777 'resourcetimingbufferfull' : 'webkitresourcetimingbufferfull', | 7778 'resourcetimingbufferfull' : 'webkitresourcetimingbufferfull', | 
| 7778 'transitionend': 'webkitTransitionEnd', | 7779 'transitionend': 'webkitTransitionEnd', | 
| 7779 'speechchange' : 'webkitSpeechChange' | 7780 'speechchange' : 'webkitSpeechChange' | 
| 7780 }; | 7781 }; | 
| 7781 | 7782 | 
| 7782 ElementEvents(Element ptr) : super(ptr); | 7783 ElementEvents(Element ptr) : super(ptr); | 
| 7783 | 7784 | 
| 7784 Stream operator [](String type) { | 7785 Stream operator [](String type) { | 
| 7785 if (webkitEvents.keys.contains(type.toLowerCase())) { | 7786 if (webkitEvents.keys.contains(type.toLowerCase())) { | 
| 7786 if (Device.isWebKit) { | 7787 if (Device.isWebKit) { | 
| 7787 return new _ElementEventStreamImpl( | 7788 return new _ElementEventStreamImpl( | 
| (...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8597 responseType: responseType, | 8598 responseType: responseType, | 
| 8598 requestHeaders: requestHeaders, sendData: formData, | 8599 requestHeaders: requestHeaders, sendData: formData, | 
| 8599 onProgress: onProgress); | 8600 onProgress: onProgress); | 
| 8600 } | 8601 } | 
| 8601 | 8602 | 
| 8602 /** | 8603 /** | 
| 8603 * Creates and sends a URL request for the specified [url]. | 8604 * Creates and sends a URL request for the specified [url]. | 
| 8604 * | 8605 * | 
| 8605 * By default `request` will perform an HTTP GET request, but a different | 8606 * By default `request` will perform an HTTP GET request, but a different | 
| 8606 * method (`POST`, `PUT`, `DELETE`, etc) can be used by specifying the | 8607 * method (`POST`, `PUT`, `DELETE`, etc) can be used by specifying the | 
| 8607 * [method] parameter. (See also [HttpRequest.postFormData] for `POST` | 8608 * [method] parameter. (See also [HttpRequest.postFormData] for `POST` | 
| 8608 * requests only. | 8609 * requests only. | 
| 8609 * | 8610 * | 
| 8610 * The Future is completed when the response is available. | 8611 * The Future is completed when the response is available. | 
| 8611 * | 8612 * | 
| 8612 * If specified, `sendData` will send data in the form of a [ByteBuffer], | 8613 * If specified, `sendData` will send data in the form of a [ByteBuffer], | 
| 8613 * [Blob], [Document], [String], or [FormData] along with the HttpRequest. | 8614 * [Blob], [Document], [String], or [FormData] along with the HttpRequest. | 
| 8614 * | 8615 * | 
| 8615 * If specified, [responseType] sets the desired response format for the | 8616 * If specified, [responseType] sets the desired response format for the | 
| 8616 * request. By default it is [String], but can also be 'arraybuffer', 'blob', | 8617 * request. By default it is [String], but can also be 'arraybuffer', 'blob', | 
| 8617 * 'document', 'json', or 'text'. See also [HttpRequest.responseType] | 8618 * 'document', 'json', or 'text'. See also [HttpRequest.responseType] | 
| 8618 * for more information. | 8619 * for more information. | 
| 8619 * | 8620 * | 
| 8620 * The [withCredentials] parameter specified that credentials such as a cookie | 8621 * The [withCredentials] parameter specified that credentials such as a cookie | 
| 8621 * (already) set in the header or | 8622 * (already) set in the header or | 
| 8622 * [authorization headers](http://tools.ietf.org/html/rfc1945#section-10.2) | 8623 * [authorization headers](http://tools.ietf.org/html/rfc1945#section-10.2) | 
| 8623 * should be specified for the request. Details to keep in mind when using | 8624 * should be specified for the request. Details to keep in mind when using | 
| 8624 * credentials: | 8625 * credentials: | 
| 8625 * | 8626 * | 
| 8626 * * Using credentials is only useful for cross-origin requests. | 8627 * * Using credentials is only useful for cross-origin requests. | 
| 8627 * * The `Access-Control-Allow-Origin` header of `url` cannot contain a wildca rd (*). | 8628 * * The `Access-Control-Allow-Origin` header of `url` cannot contain a wildca rd (*). | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8690 xhr.onLoad.listen((e) { | 8691 xhr.onLoad.listen((e) { | 
| 8691 var accepted = xhr.status >= 200 && xhr.status < 300; | 8692 var accepted = xhr.status >= 200 && xhr.status < 300; | 
| 8692 var fileUri = xhr.status == 0; // file:// URIs have status of 0. | 8693 var fileUri = xhr.status == 0; // file:// URIs have status of 0. | 
| 8693 var notModified = xhr.status == 304; | 8694 var notModified = xhr.status == 304; | 
| 8694 // Redirect status is specified up to 307, but others have been used in | 8695 // Redirect status is specified up to 307, but others have been used in | 
| 8695 // practice. Notably Google Drive uses 308 Resume Incomplete for | 8696 // practice. Notably Google Drive uses 308 Resume Incomplete for | 
| 8696 // resumable uploads, and it's also been used as a redirect. The | 8697 // resumable uploads, and it's also been used as a redirect. The | 
| 8697 // redirect case will be handled by the browser before it gets to us, | 8698 // redirect case will be handled by the browser before it gets to us, | 
| 8698 // so if we see it we should pass it through to the user. | 8699 // so if we see it we should pass it through to the user. | 
| 8699 var unknownRedirect = xhr.status > 307 && xhr.status < 400; | 8700 var unknownRedirect = xhr.status > 307 && xhr.status < 400; | 
| 8700 | 8701 | 
| 8701 if (accepted || fileUri || notModified || unknownRedirect) { | 8702 if (accepted || fileUri || notModified || unknownRedirect) { | 
| 8702 completer.complete(xhr); | 8703 completer.complete(xhr); | 
| 8703 } else { | 8704 } else { | 
| 8704 completer.completeError(e); | 8705 completer.completeError(e); | 
| 8705 } | 8706 } | 
| 8706 }); | 8707 }); | 
| 8707 | 8708 | 
| 8708 xhr.onError.listen(completer.completeError); | 8709 xhr.onError.listen(completer.completeError); | 
| 8709 | 8710 | 
| 8710 if (sendData != null) { | 8711 if (sendData != null) { | 
| (...skipping 1839 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10550 * The [type] of the event identifies what kind of interaction occurred. | 10551 * The [type] of the event identifies what kind of interaction occurred. | 
| 10551 * | 10552 * | 
| 10552 * See also: | 10553 * See also: | 
| 10553 * | 10554 * | 
| 10554 * * [KeyboardEvent](https://developer.mozilla.org/en/DOM/KeyboardEvent) at MDN. | 10555 * * [KeyboardEvent](https://developer.mozilla.org/en/DOM/KeyboardEvent) at MDN. | 
| 10555 */ | 10556 */ | 
| 10556 @DomName('KeyboardEvent') | 10557 @DomName('KeyboardEvent') | 
| 10557 @Native("KeyboardEvent") | 10558 @Native("KeyboardEvent") | 
| 10558 class KeyboardEvent extends UIEvent { | 10559 class KeyboardEvent extends UIEvent { | 
| 10559 | 10560 | 
| 10560 /** | 10561 /** | 
| 10561 * Programmatically create a KeyboardEvent. | 10562 * Programmatically create a KeyboardEvent. | 
| 10562 * | 10563 * | 
| 10563 * Due to browser differences, keyCode, charCode, or keyIdentifier values | 10564 * Due to browser differences, keyCode, charCode, or keyIdentifier values | 
| 10564 * cannot be specified in this base level constructor. This constructor | 10565 * cannot be specified in this base level constructor. This constructor | 
| 10565 * enables the user to programmatically create and dispatch a [KeyboardEvent], | 10566 * enables the user to programmatically create and dispatch a [KeyboardEvent], | 
| 10566 * but it will not contain any particular key content. For programmatically | 10567 * but it will not contain any particular key content. For programmatically | 
| 10567 * creating keyboard events with specific key value contents, see the custom | 10568 * creating keyboard events with specific key value contents, see the custom | 
| 10568 * Event [KeyEvent]. | 10569 * Event [KeyEvent]. | 
| 10569 */ | 10570 */ | 
| 10570 factory KeyboardEvent(String type, | 10571 factory KeyboardEvent(String type, | 
| 10571 {Window view, bool canBubble: true, bool cancelable: true, | 10572 {Window view, bool canBubble: true, bool cancelable: true, | 
| 10572 int keyLocation: 1, bool ctrlKey: false, | 10573 int keyLocation: 1, bool ctrlKey: false, | 
| 10573 bool altKey: false, bool shiftKey: false, bool metaKey: false}) { | 10574 bool altKey: false, bool shiftKey: false, bool metaKey: false}) { | 
| 10574 if (view == null) { | 10575 if (view == null) { | 
| 10575 view = window; | 10576 view = window; | 
| 10576 } | 10577 } | 
| 10577 KeyboardEvent e = document._createEvent("KeyboardEvent"); | 10578 KeyboardEvent e = document._createEvent("KeyboardEvent"); | 
| 10578 e._initKeyboardEvent(type, canBubble, cancelable, view, "", | 10579 e._initKeyboardEvent(type, canBubble, cancelable, view, "", | 
| (...skipping 7914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 18493 // for details. All rights reserved. Use of this source code is governed by a | 18494 // for details. All rights reserved. Use of this source code is governed by a | 
| 18494 // BSD-style license that can be found in the LICENSE file. | 18495 // BSD-style license that can be found in the LICENSE file. | 
| 18495 | 18496 | 
| 18496 | 18497 | 
| 18497 // Iterator for arrays with fixed size. | 18498 // Iterator for arrays with fixed size. | 
| 18498 class FixedSizeListIterator<T> implements Iterator<T> { | 18499 class FixedSizeListIterator<T> implements Iterator<T> { | 
| 18499 final List<T> _array; | 18500 final List<T> _array; | 
| 18500 final int _length; // Cache array length for faster access. | 18501 final int _length; // Cache array length for faster access. | 
| 18501 int _position; | 18502 int _position; | 
| 18502 T _current; | 18503 T _current; | 
| 18503 | 18504 | 
| 18504 FixedSizeListIterator(List<T> array) | 18505 FixedSizeListIterator(List<T> array) | 
| 18505 : _array = array, | 18506 : _array = array, | 
| 18506 _position = -1, | 18507 _position = -1, | 
| 18507 _length = array.length; | 18508 _length = array.length; | 
| 18508 | 18509 | 
| 18509 bool moveNext() { | 18510 bool moveNext() { | 
| 18510 int nextPosition = _position + 1; | 18511 int nextPosition = _position + 1; | 
| 18511 if (nextPosition < _length) { | 18512 if (nextPosition < _length) { | 
| 18512 _current = _array[nextPosition]; | 18513 _current = _array[nextPosition]; | 
| 18513 _position = nextPosition; | 18514 _position = nextPosition; | 
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 18952 @Experimental() // untriaged | 18953 @Experimental() // untriaged | 
| 18953 int get location => throw new UnimplementedError(); | 18954 int get location => throw new UnimplementedError(); | 
| 18954 @Experimental() // untriaged | 18955 @Experimental() // untriaged | 
| 18955 bool get repeat => throw new UnimplementedError(); | 18956 bool get repeat => throw new UnimplementedError(); | 
| 18956 dynamic get _get_view => throw new UnimplementedError(); | 18957 dynamic get _get_view => throw new UnimplementedError(); | 
| 18957 } | 18958 } | 
| 18958 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 18959 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 
| 18959 // for details. All rights reserved. Use of this source code is governed by a | 18960 // for details. All rights reserved. Use of this source code is governed by a | 
| 18960 // BSD-style license that can be found in the LICENSE file. | 18961 // BSD-style license that can be found in the LICENSE file. | 
| 18961 | 18962 | 
| 18962 | |
| 18963 class Platform { | 18963 class Platform { | 
| 18964 /** | 18964 /** | 
| 18965 * Returns true if dart:typed_data types are supported on this | 18965 * Returns true if dart:typed_data types are supported on this | 
| 18966 * browser. If false, using these types will generate a runtime | 18966 * browser. If false, using these types will generate a runtime | 
| 18967 * error. | 18967 * error. | 
| 18968 */ | 18968 */ | 
| 18969 static final supportsTypedData = JS('bool', '!!(window.ArrayBuffer)'); | 18969 static final supportsTypedData = JS('bool', '!!($global_.ArrayBuffer)'); | 
| 18970 | 18970 | 
| 18971 /** | 18971 /** | 
| 18972 * Returns true if SIMD types in dart:typed_data types are supported | 18972 * Returns true if SIMD types in dart:typed_data types are supported | 
| 18973 * on this browser. If false, using these types will generate a runtime | 18973 * on this browser. If false, using these types will generate a runtime | 
| 18974 * error. | 18974 * error. | 
| 18975 */ | 18975 */ | 
| 18976 static final supportsSimd = false; | 18976 static final supportsSimd = false; | 
| 18977 } | 18977 } | 
| 18978 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 18978 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 
| 18979 // for details. All rights reserved. Use of this source code is governed by a | 18979 // for details. All rights reserved. Use of this source code is governed by a | 
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 19471 * Each web page loaded in the browser has its own [Window], which is a | 19471 * Each web page loaded in the browser has its own [Window], which is a | 
| 19472 * container for the web page. | 19472 * container for the web page. | 
| 19473 * | 19473 * | 
| 19474 * If the web page has any `<iframe>` elements, then each `<iframe>` has its own | 19474 * If the web page has any `<iframe>` elements, then each `<iframe>` has its own | 
| 19475 * [Window] object, which is accessible only to that `<iframe>`. | 19475 * [Window] object, which is accessible only to that `<iframe>`. | 
| 19476 * | 19476 * | 
| 19477 * See also: | 19477 * See also: | 
| 19478 * | 19478 * | 
| 19479 * * [Window](https://developer.mozilla.org/en-US/docs/Web/API/window) from MD N. | 19479 * * [Window](https://developer.mozilla.org/en-US/docs/Web/API/window) from MD N. | 
| 19480 */ | 19480 */ | 
| 19481 Window get window => wrap_jso(JS('', 'window')); | 19481 | 
| 19482 final Window window = wrap_jso(JS('', '$global_')); | |
| 19482 | 19483 | 
| 19483 /** | 19484 /** | 
| 19484 * Root node for all content in a web page. | 19485 * Root node for all content in a web page. | 
| 19485 */ | 19486 */ | 
| 19486 HtmlDocument get document => wrap_jso(JS('HtmlDocument', 'document')); | 19487 HtmlDocument get document => wrap_jso(JS('HtmlDocument', 'document')); | 
| 19487 | 19488 | 
| 19488 // Workaround for tags like <cite> that lack their own Element subclass -- | 19489 // Workaround for tags like <cite> that lack their own Element subclass -- | 
| 19489 // Dart issue 1990. | 19490 // Dart issue 1990. | 
| 19490 @Native("HTMLElement") | 19491 @Native("HTMLElement") | 
| 19491 class HtmlElement extends Element { | 19492 class HtmlElement extends Element { | 
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 19711 } | 19712 } | 
| 19712 return null; | 19713 return null; | 
| 19713 } | 19714 } | 
| 19714 | 19715 | 
| 19715 Function _getHtmlFunction(String key) { | 19716 Function _getHtmlFunction(String key) { | 
| 19716 if (htmlBlinkFunctionMap.containsKey(key)) { | 19717 if (htmlBlinkFunctionMap.containsKey(key)) { | 
| 19717 return htmlBlinkFunctionMap[key](); | 19718 return htmlBlinkFunctionMap[key](); | 
| 19718 } | 19719 } | 
| 19719 return null; | 19720 return null; | 
| 19720 } | 19721 } | 
| 19721 | |
| OLD | NEW |