| /// The Dart HTML library. |
| /// |
| /// For examples, see |
| /// [Dart HTML5 Samples](https://github.com/dart-lang/dart-html5-samples) |
| /// on Github. |
| library dart.dom.html; |
| |
| import 'dart:async'; |
| import 'dart:collection'; |
| import 'dart:_collection-dev' hide Symbol, deprecated; |
| import 'dart:html_common'; |
| import 'dart:indexed_db'; |
| import 'dart:isolate'; |
| import 'dart:json' as json; |
| import 'dart:math'; |
| import 'dart:typed_data'; |
| import 'dart:svg' as svg; |
| import 'dart:web_audio' as web_audio; |
| import 'dart:web_gl' as gl; |
| import 'dart:web_sql'; |
| import 'dart:_js_helper' show convertDartClosureToJS, Creates, JavaScriptIndexingBehavior, JSName, Null, Returns; |
| import 'dart:_interceptors' show Interceptor, JSExtendableArray; |
| import 'dart:_isolate_helper' show IsolateNatives; |
| import 'dart:_foreign_helper' show JS; |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // DO NOT EDIT - unless you are editing documentation as per: |
| // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation |
| // Auto-generated dart:html library. |
| |
| |
| // Not actually used, but imported since dart:html can generate these objects. |
| |
| |
| |
| |
| |
| /** |
| * Top-level container for a web page, which is usually a browser tab or window. |
| * |
| * Each web page loaded in the browser has its own [Window], which is a |
| * container for the web page. |
| * |
| * If the web page has any `<iframe>` elements, then each `<iframe>` has its own |
| * [Window] object, which is accessible only to that `<iframe>`. |
| * |
| * See also: |
| * |
| * * [Window](https://developer.mozilla.org/en-US/docs/Web/API/window) from MDN. |
| */ |
| Window get window => JS('Window', 'window'); |
| |
| /** |
| * Root node for all content in a web page. |
| */ |
| HtmlDocument get document => JS('HtmlDocument', 'document'); |
| |
| Element query(String selector) => document.query(selector); |
| ElementList queryAll(String selector) => document.queryAll(selector); |
| |
| // Workaround for tags like <cite> that lack their own Element subclass -- |
| // Dart issue 1990. |
| class _HTMLElement extends Element native "HTMLElement" { |
| factory _HTMLElement() { throw new UnsupportedError("Not supported"); } |
| } |
| |
| // Support for Send/ReceivePortSync. |
| int _getNewIsolateId() { |
| if (JS('bool', r'!window.$dart$isolate$counter')) { |
| JS('void', r'window.$dart$isolate$counter = 1'); |
| } |
| return JS('int', r'window.$dart$isolate$counter++'); |
| } |
| |
| // Fast path to invoke JS send port. |
| _callPortSync(int id, message) { |
| return JS('var', r'ReceivePortSync.dispatchCall(#, #)', id, message); |
| } |
| |
| Future<SendPort> spawnDomFunction(Function f) => |
| new Future.value(IsolateNatives.spawnDomFunction(f)); |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('AbstractWorker') |
| class AbstractWorker extends Interceptor implements EventTarget native "AbstractWorker" { |
| |
| @DomName('AbstractWorker.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ErrorEvent> errorEvent = const EventStreamProvider<ErrorEvent>('error'); |
| |
| @DomName('AbstractWorker.onerror') |
| @DocsEditable() |
| Stream<ErrorEvent> get onError => errorEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('AesCbcParams') |
| @Experimental() // untriaged |
| class AesCbcParams extends Algorithm native "AesCbcParams" { |
| // To suppress missing implicit constructor warnings. |
| factory AesCbcParams._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('AesCbcParams.iv') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final Uint8List iv; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('AesKeyGenParams') |
| @Experimental() // untriaged |
| class AesKeyGenParams extends Algorithm native "AesKeyGenParams" { |
| // To suppress missing implicit constructor warnings. |
| factory AesKeyGenParams._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('AesKeyGenParams.length') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int length; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Algorithm') |
| @Experimental() // untriaged |
| class Algorithm extends Interceptor native "Algorithm" { |
| |
| @DomName('Algorithm.name') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLAnchorElement') |
| class AnchorElement extends _HTMLElement native "HTMLAnchorElement" { |
| // To suppress missing implicit constructor warnings. |
| factory AnchorElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLAnchorElement.HTMLAnchorElement') |
| @DocsEditable() |
| factory AnchorElement({String href}) { |
| var e = document.$dom_createElement("a"); |
| if (href != null) e.href = href; |
| return e; |
| } |
| |
| @DomName('HTMLAnchorElement.download') |
| @DocsEditable() |
| String download; |
| |
| @DomName('HTMLAnchorElement.hash') |
| @DocsEditable() |
| String hash; |
| |
| @DomName('HTMLAnchorElement.host') |
| @DocsEditable() |
| String host; |
| |
| @DomName('HTMLAnchorElement.hostname') |
| @DocsEditable() |
| String hostname; |
| |
| @DomName('HTMLAnchorElement.href') |
| @DocsEditable() |
| String href; |
| |
| @DomName('HTMLAnchorElement.hreflang') |
| @DocsEditable() |
| String hreflang; |
| |
| @DomName('HTMLAnchorElement.name') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial |
| @deprecated // deprecated |
| String name; |
| |
| @DomName('HTMLAnchorElement.origin') |
| @DocsEditable() |
| // WebKit only |
| @deprecated // nonstandard |
| final String origin; |
| |
| @DomName('HTMLAnchorElement.pathname') |
| @DocsEditable() |
| String pathname; |
| |
| @DomName('HTMLAnchorElement.ping') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-a-element |
| @deprecated // deprecated |
| String ping; |
| |
| @DomName('HTMLAnchorElement.port') |
| @DocsEditable() |
| String port; |
| |
| @DomName('HTMLAnchorElement.protocol') |
| @DocsEditable() |
| String protocol; |
| |
| @DomName('HTMLAnchorElement.rel') |
| @DocsEditable() |
| String rel; |
| |
| @DomName('HTMLAnchorElement.search') |
| @DocsEditable() |
| String search; |
| |
| @DomName('HTMLAnchorElement.target') |
| @DocsEditable() |
| String target; |
| |
| @DomName('HTMLAnchorElement.type') |
| @DocsEditable() |
| String type; |
| |
| @DomName('HTMLAnchorElement.toString') |
| @DocsEditable() |
| String toString() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitAnimationEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| class AnimationEvent extends Event native "WebKitAnimationEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory AnimationEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitAnimationEvent.animationName') |
| @DocsEditable() |
| final String animationName; |
| |
| @DomName('WebKitAnimationEvent.elapsedTime') |
| @DocsEditable() |
| final num elapsedTime; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMApplicationCache') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.OPERA) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class ApplicationCache extends EventTarget native "ApplicationCache,DOMApplicationCache,OfflineResourceList" { |
| // To suppress missing implicit constructor warnings. |
| factory ApplicationCache._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DOMApplicationCache.cachedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> cachedEvent = const EventStreamProvider<Event>('cached'); |
| |
| @DomName('DOMApplicationCache.checkingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> checkingEvent = const EventStreamProvider<Event>('checking'); |
| |
| @DomName('DOMApplicationCache.downloadingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> downloadingEvent = const EventStreamProvider<Event>('downloading'); |
| |
| @DomName('DOMApplicationCache.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('DOMApplicationCache.noupdateEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> noUpdateEvent = const EventStreamProvider<Event>('noupdate'); |
| |
| @DomName('DOMApplicationCache.obsoleteEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> obsoleteEvent = const EventStreamProvider<Event>('obsolete'); |
| |
| @DomName('DOMApplicationCache.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress'); |
| |
| @DomName('DOMApplicationCache.updatereadyEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> updateReadyEvent = const EventStreamProvider<Event>('updateready'); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.applicationCache)'); |
| |
| @DomName('DOMApplicationCache.CHECKING') |
| @DocsEditable() |
| static const int CHECKING = 2; |
| |
| @DomName('DOMApplicationCache.DOWNLOADING') |
| @DocsEditable() |
| static const int DOWNLOADING = 3; |
| |
| @DomName('DOMApplicationCache.IDLE') |
| @DocsEditable() |
| static const int IDLE = 1; |
| |
| @DomName('DOMApplicationCache.OBSOLETE') |
| @DocsEditable() |
| static const int OBSOLETE = 5; |
| |
| @DomName('DOMApplicationCache.UNCACHED') |
| @DocsEditable() |
| static const int UNCACHED = 0; |
| |
| @DomName('DOMApplicationCache.UPDATEREADY') |
| @DocsEditable() |
| static const int UPDATEREADY = 4; |
| |
| @DomName('DOMApplicationCache.status') |
| @DocsEditable() |
| final int status; |
| |
| @DomName('DOMApplicationCache.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| @DomName('DOMApplicationCache.swapCache') |
| @DocsEditable() |
| void swapCache() native; |
| |
| @DomName('DOMApplicationCache.update') |
| @DocsEditable() |
| void update() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('DOMApplicationCache.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('DOMApplicationCache.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('DOMApplicationCache.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('DOMApplicationCache.oncached') |
| @DocsEditable() |
| Stream<Event> get onCached => cachedEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onchecking') |
| @DocsEditable() |
| Stream<Event> get onChecking => checkingEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.ondownloading') |
| @DocsEditable() |
| Stream<Event> get onDownloading => downloadingEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onnoupdate') |
| @DocsEditable() |
| Stream<Event> get onNoUpdate => noUpdateEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onobsolete') |
| @DocsEditable() |
| Stream<Event> get onObsolete => obsoleteEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onprogress') |
| @DocsEditable() |
| Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this); |
| |
| @DomName('DOMApplicationCache.onupdateready') |
| @DocsEditable() |
| Stream<Event> get onUpdateReady => updateReadyEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * DOM Area Element, which links regions of an image map with a hyperlink. |
| * |
| * The element can also define an uninteractive region of the map. |
| * |
| * See also: |
| * |
| * * [<area>](https://developer.mozilla.org/en-US/docs/HTML/Element/area) |
| * on MDN. |
| */ |
| @DomName('HTMLAreaElement') |
| class AreaElement extends _HTMLElement native "HTMLAreaElement" { |
| // To suppress missing implicit constructor warnings. |
| factory AreaElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLAreaElement.HTMLAreaElement') |
| @DocsEditable() |
| factory AreaElement() => document.$dom_createElement("area"); |
| |
| @DomName('HTMLAreaElement.alt') |
| @DocsEditable() |
| String alt; |
| |
| @DomName('HTMLAreaElement.coords') |
| @DocsEditable() |
| String coords; |
| |
| @DomName('HTMLAreaElement.hash') |
| @DocsEditable() |
| final String hash; |
| |
| @DomName('HTMLAreaElement.host') |
| @DocsEditable() |
| final String host; |
| |
| @DomName('HTMLAreaElement.hostname') |
| @DocsEditable() |
| final String hostname; |
| |
| @DomName('HTMLAreaElement.href') |
| @DocsEditable() |
| String href; |
| |
| @DomName('HTMLAreaElement.pathname') |
| @DocsEditable() |
| final String pathname; |
| |
| @DomName('HTMLAreaElement.ping') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAreaElement-partial |
| @deprecated // deprecated |
| String ping; |
| |
| @DomName('HTMLAreaElement.port') |
| @DocsEditable() |
| final String port; |
| |
| @DomName('HTMLAreaElement.protocol') |
| @DocsEditable() |
| final String protocol; |
| |
| @DomName('HTMLAreaElement.search') |
| @DocsEditable() |
| final String search; |
| |
| @DomName('HTMLAreaElement.shape') |
| @DocsEditable() |
| String shape; |
| |
| @DomName('HTMLAreaElement.target') |
| @DocsEditable() |
| String target; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLAudioElement') |
| class AudioElement extends MediaElement native "HTMLAudioElement" { |
| // To suppress missing implicit constructor warnings. |
| factory AudioElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLAudioElement.HTMLAudioElement') |
| @DocsEditable() |
| factory AudioElement([String src]) { |
| if (src != null) { |
| return AudioElement._create_1(src); |
| } |
| return AudioElement._create_2(); |
| } |
| static AudioElement _create_1(src) => JS('AudioElement', 'new Audio(#)', src); |
| static AudioElement _create_2() => JS('AudioElement', 'new Audio()'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('AutocompleteErrorEvent') |
| // http://wiki.whatwg.org/wiki/RequestAutocomplete |
| @Experimental() |
| class AutocompleteErrorEvent extends Event native "AutocompleteErrorEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory AutocompleteErrorEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('AutocompleteErrorEvent.reason') |
| @DocsEditable() |
| final String reason; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLBRElement') |
| class BRElement extends _HTMLElement native "HTMLBRElement" { |
| // To suppress missing implicit constructor warnings. |
| factory BRElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLBRElement.HTMLBRElement') |
| @DocsEditable() |
| factory BRElement() => document.$dom_createElement("br"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('BarProp') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#barprop |
| @deprecated // standard |
| class BarProp extends Interceptor native "BarProp" { |
| |
| @DomName('BarProp.visible') |
| @DocsEditable() |
| final bool visible; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLBaseElement') |
| class BaseElement extends _HTMLElement native "HTMLBaseElement" { |
| // To suppress missing implicit constructor warnings. |
| factory BaseElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLBaseElement.HTMLBaseElement') |
| @DocsEditable() |
| factory BaseElement() => document.$dom_createElement("base"); |
| |
| @DomName('HTMLBaseElement.href') |
| @DocsEditable() |
| String href; |
| |
| @DomName('HTMLBaseElement.target') |
| @DocsEditable() |
| String target; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('BeforeLoadEvent') |
| @Experimental() |
| class BeforeLoadEvent extends Event native "BeforeLoadEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory BeforeLoadEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('BeforeLoadEvent.url') |
| @DocsEditable() |
| final String url; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('Blob') |
| class Blob extends Interceptor native "Blob" { |
| |
| @DomName('Blob.size') |
| @DocsEditable() |
| final int size; |
| |
| @DomName('Blob.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('Blob.slice') |
| @DocsEditable() |
| Blob slice([int start, int end, String contentType]) native; |
| |
| factory Blob(List blobParts, [String type, String endings]) { |
| // TODO: validate that blobParts is a JS Array and convert if not. |
| // TODO: any coercions on the elements of blobParts, e.g. coerce a typed |
| // array to ArrayBuffer if it is a total view. |
| if (type == null && endings == null) { |
| return _create_1(blobParts); |
| } |
| var bag = _create_bag(); |
| if (type != null) _bag_set(bag, 'type', type); |
| if (endings != null) _bag_set(bag, 'endings', endings); |
| return _create_2(blobParts, bag); |
| } |
| |
| static _create_1(parts) => JS('Blob', 'new Blob(#)', parts); |
| static _create_2(parts, bag) => JS('Blob', 'new Blob(#, #)', parts, bag); |
| |
| static _create_bag() => JS('var', '{}'); |
| static _bag_set(bag, key, value) { JS('void', '#[#] = #', bag, key, value); } |
| } |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLBodyElement') |
| class BodyElement extends _HTMLElement native "HTMLBodyElement" { |
| // To suppress missing implicit constructor warnings. |
| factory BodyElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLBodyElement.blurEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> blurEvent = const EventStreamProvider<Event>('blur'); |
| |
| @DomName('HTMLBodyElement.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('HTMLBodyElement.focusEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> focusEvent = const EventStreamProvider<Event>('focus'); |
| |
| @DomName('HTMLBodyElement.hashchangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> hashChangeEvent = const EventStreamProvider<Event>('hashchange'); |
| |
| @DomName('HTMLBodyElement.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> loadEvent = const EventStreamProvider<Event>('load'); |
| |
| @DomName('HTMLBodyElement.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('HTMLBodyElement.offlineEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> offlineEvent = const EventStreamProvider<Event>('offline'); |
| |
| @DomName('HTMLBodyElement.onlineEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> onlineEvent = const EventStreamProvider<Event>('online'); |
| |
| @DomName('HTMLBodyElement.popstateEvent') |
| @DocsEditable() |
| static const EventStreamProvider<PopStateEvent> popStateEvent = const EventStreamProvider<PopStateEvent>('popstate'); |
| |
| @DomName('HTMLBodyElement.resizeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> resizeEvent = const EventStreamProvider<Event>('resize'); |
| |
| @DomName('HTMLBodyElement.storageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<StorageEvent> storageEvent = const EventStreamProvider<StorageEvent>('storage'); |
| |
| @DomName('HTMLBodyElement.unloadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> unloadEvent = const EventStreamProvider<Event>('unload'); |
| |
| @DomName('HTMLBodyElement.HTMLBodyElement') |
| @DocsEditable() |
| factory BodyElement() => document.$dom_createElement("body"); |
| |
| @DomName('HTMLBodyElement.onblur') |
| @DocsEditable() |
| ElementStream<Event> get onBlur => blurEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onerror') |
| @DocsEditable() |
| ElementStream<Event> get onError => errorEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onfocus') |
| @DocsEditable() |
| ElementStream<Event> get onFocus => focusEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onhashchange') |
| @DocsEditable() |
| ElementStream<Event> get onHashChange => hashChangeEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onload') |
| @DocsEditable() |
| ElementStream<Event> get onLoad => loadEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onmessage') |
| @DocsEditable() |
| ElementStream<MessageEvent> get onMessage => messageEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onoffline') |
| @DocsEditable() |
| ElementStream<Event> get onOffline => offlineEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.ononline') |
| @DocsEditable() |
| ElementStream<Event> get onOnline => onlineEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onpopstate') |
| @DocsEditable() |
| ElementStream<PopStateEvent> get onPopState => popStateEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onresize') |
| @DocsEditable() |
| ElementStream<Event> get onResize => resizeEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onstorage') |
| @DocsEditable() |
| ElementStream<StorageEvent> get onStorage => storageEvent.forElement(this); |
| |
| @DomName('HTMLBodyElement.onunload') |
| @DocsEditable() |
| ElementStream<Event> get onUnload => unloadEvent.forElement(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLButtonElement') |
| class ButtonElement extends _HTMLElement native "HTMLButtonElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ButtonElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLButtonElement.HTMLButtonElement') |
| @DocsEditable() |
| factory ButtonElement() => document.$dom_createElement("button"); |
| |
| @DomName('HTMLButtonElement.autofocus') |
| @DocsEditable() |
| bool autofocus; |
| |
| @DomName('HTMLButtonElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLButtonElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLButtonElement.formAction') |
| @DocsEditable() |
| String formAction; |
| |
| @DomName('HTMLButtonElement.formEnctype') |
| @DocsEditable() |
| String formEnctype; |
| |
| @DomName('HTMLButtonElement.formMethod') |
| @DocsEditable() |
| String formMethod; |
| |
| @DomName('HTMLButtonElement.formNoValidate') |
| @DocsEditable() |
| bool formNoValidate; |
| |
| @DomName('HTMLButtonElement.formTarget') |
| @DocsEditable() |
| String formTarget; |
| |
| @DomName('HTMLButtonElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLButtonElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLButtonElement.type') |
| @DocsEditable() |
| String type; |
| |
| @DomName('HTMLButtonElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLButtonElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLButtonElement.value') |
| @DocsEditable() |
| String value; |
| |
| @DomName('HTMLButtonElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLButtonElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLButtonElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CDATASection') |
| // http://dom.spec.whatwg.org/#cdatasection |
| @deprecated // deprecated |
| class CDataSection extends Text native "CDATASection" { |
| // To suppress missing implicit constructor warnings. |
| factory CDataSection._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Canvas2DContextAttributes') |
| // http://wiki.whatwg.org/wiki/CanvasOpaque#Suggested_IDL |
| @Experimental() |
| class Canvas2DContextAttributes extends Interceptor native "Canvas2DContextAttributes" { |
| |
| @DomName('Canvas2DContextAttributes.alpha') |
| @DocsEditable() |
| bool alpha; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('HTMLCanvasElement') |
| class CanvasElement extends _HTMLElement implements CanvasImageSource native "HTMLCanvasElement" { |
| // To suppress missing implicit constructor warnings. |
| factory CanvasElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLCanvasElement.webglcontextlostEvent') |
| @DocsEditable() |
| static const EventStreamProvider<gl.ContextEvent> webGlContextLostEvent = const EventStreamProvider<gl.ContextEvent>('webglcontextlost'); |
| |
| @DomName('HTMLCanvasElement.webglcontextrestoredEvent') |
| @DocsEditable() |
| static const EventStreamProvider<gl.ContextEvent> webGlContextRestoredEvent = const EventStreamProvider<gl.ContextEvent>('webglcontextrestored'); |
| |
| @DomName('HTMLCanvasElement.HTMLCanvasElement') |
| @DocsEditable() |
| factory CanvasElement({int width, int height}) { |
| var e = document.$dom_createElement("canvas"); |
| if (width != null) e.width = width; |
| if (height != null) e.height = height; |
| return e; |
| } |
| |
| /// The height of this canvas element in CSS pixels. |
| @DomName('HTMLCanvasElement.height') |
| @DocsEditable() |
| int height; |
| |
| /// The width of this canvas element in CSS pixels. |
| @DomName('HTMLCanvasElement.width') |
| @DocsEditable() |
| int width; |
| |
| @DomName('HTMLCanvasElement.getContext') |
| @DocsEditable() |
| CanvasRenderingContext getContext(String contextId, [Map attrs]) { |
| if (attrs != null) { |
| var attrs_1 = convertDartToNative_Dictionary(attrs); |
| return _getContext_1(contextId, attrs_1); |
| } |
| return _getContext_2(contextId); |
| } |
| @JSName('getContext') |
| @DomName('HTMLCanvasElement.getContext') |
| @DocsEditable() |
| CanvasRenderingContext _getContext_1(contextId, attrs) native; |
| @JSName('getContext') |
| @DomName('HTMLCanvasElement.getContext') |
| @DocsEditable() |
| CanvasRenderingContext _getContext_2(contextId) native; |
| |
| @JSName('toDataURL') |
| /** |
| * Returns a data URI containing a representation of the image in the |
| * format specified by type (defaults to 'image/png'). |
| * |
| * Data Uri format is as follow `data:[<MIME-type>][;charset=<encoding>][;base64],<data>` |
| * |
| * Optional parameter [quality] in the range of 0.0 and 1.0 can be used when requesting [type] |
| * 'image/jpeg' or 'image/webp'. If [quality] is not passed the default |
| * value is used. Note: the default value varies by browser. |
| * |
| * If the height or width of this canvas element is 0, then 'data:' is returned, |
| * representing no data. |
| * |
| * If the type requested is not 'image/png', and the returned value is |
| * 'data:image/png', then the requested type is not supported. |
| * |
| * Example usage: |
| * |
| * CanvasElement canvas = new CanvasElement(); |
| * var ctx = canvas.context2D |
| * ..fillStyle = "rgb(200,0,0)" |
| * ..fillRect(10, 10, 55, 50); |
| * var dataUrl = canvas.toDataUrl("image/jpeg", 0.95); |
| * // The Data Uri would look similar to |
| * // 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA |
| * // AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO |
| * // 9TXL0Y4OHwAAAABJRU5ErkJggg==' |
| * //Create a new image element from the data URI. |
| * var img = new ImageElement(); |
| * img.src = dataUrl; |
| * document.body.children.add(img); |
| * |
| * See also: |
| * |
| * * [Data URI Scheme](http://en.wikipedia.org/wiki/Data_URI_scheme) from Wikipedia. |
| * |
| * * [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/DOM/HTMLCanvasElement) from MDN. |
| * |
| * * [toDataUrl](http://dev.w3.org/html5/spec/the-canvas-element.html#dom-canvas-todataurl) from W3C. |
| */ |
| @DomName('HTMLCanvasElement.toDataURL') |
| @DocsEditable() |
| String $dom_toDataUrl(String type, [num quality]) native; |
| |
| @DomName('HTMLCanvasElement.onwebglcontextlost') |
| @DocsEditable() |
| ElementStream<gl.ContextEvent> get onWebGlContextLost => webGlContextLostEvent.forElement(this); |
| |
| @DomName('HTMLCanvasElement.onwebglcontextrestored') |
| @DocsEditable() |
| ElementStream<gl.ContextEvent> get onWebGlContextRestored => webGlContextRestoredEvent.forElement(this); |
| |
| /** An API for drawing on this canvas. */ |
| CanvasRenderingContext2D get context2D => |
| JS('Null|CanvasRenderingContext2D', '#.getContext(#)', this, '2d'); |
| |
| @deprecated |
| CanvasRenderingContext2D get context2d => this.context2D; |
| |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @Experimental() |
| gl.RenderingContext getContext3d({alpha: true, depth: true, stencil: false, |
| antialias: true, premultipliedAlpha: true, preserveDrawingBuffer: false}) { |
| |
| var options = { |
| 'alpha': alpha, |
| 'depth': depth, |
| 'stencil': stencil, |
| 'antialias': antialias, |
| 'premultipliedAlpha': premultipliedAlpha, |
| 'preserveDrawingBuffer': preserveDrawingBuffer, |
| }; |
| var context = getContext('webgl', options); |
| if (context == null) { |
| context = getContext('experimental-webgl', options); |
| } |
| return context; |
| } |
| |
| String toDataUrl([String type = 'image/png', num quality]) => |
| $dom_toDataUrl(type, quality); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * An opaque canvas object representing a gradient. |
| * |
| * Created by calling [createLinearGradient] or [createRadialGradient] on a |
| * [CanvasRenderingContext2D] object. |
| * |
| * Example usage: |
| * |
| * var canvas = new CanvasElement(width: 600, height: 600); |
| * var ctx = canvas.context2D; |
| * ctx.clearRect(0, 0, 600, 600); |
| * ctx.save(); |
| * // Create radial gradient. |
| * CanvasGradient gradient = ctx.createRadialGradient(0, 0, 0, 0, 0, 600); |
| * gradient.addColorStop(0, '#000'); |
| * gradient.addColorStop(1, 'rgb(255, 255, 255)'); |
| * // Assign gradients to fill. |
| * ctx.fillStyle = gradient; |
| * // Draw a rectangle with a gradient fill. |
| * ctx.fillRect(0, 0, 600, 600); |
| * ctx.save(); |
| * document.body.children.add(canvas); |
| * |
| * See also: |
| * |
| * * [CanvasGradient](https://developer.mozilla.org/en-US/docs/DOM/CanvasGradient) from MDN. |
| * * [CanvasGradient](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasgradient) from whatwg. |
| * * [CanvasGradient](http://www.w3.org/TR/2010/WD-2dcontext-20100304/#canvasgradient) from W3C. |
| */ |
| @DomName('CanvasGradient') |
| class CanvasGradient extends Interceptor native "CanvasGradient" { |
| |
| /** |
| * Adds a color stop to this gradient at the offset. |
| * |
| * The [offset] can range between 0.0 and 1.0. |
| * |
| * See also: |
| * |
| * * [Multiple Color Stops](https://developer.mozilla.org/en-US/docs/CSS/linear-gradient#Gradient_with_multiple_color_stops) from MDN. |
| */ |
| @DomName('CanvasGradient.addColorStop') |
| @DocsEditable() |
| void addColorStop(num offset, String color) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * An opaque object representing a pattern of image, canvas, or video. |
| * |
| * Created by calling [createPattern] on a [CanvasRenderingContext2D] object. |
| * |
| * Example usage: |
| * |
| * var canvas = new CanvasElement(width: 600, height: 600); |
| * var ctx = canvas.context2D; |
| * var img = new ImageElement(); |
| * // Image src needs to be loaded before pattern is applied. |
| * img.onLoad.listen((event) { |
| * // When the image is loaded, create a pattern |
| * // from the ImageElement. |
| * CanvasPattern pattern = ctx.createPattern(img, 'repeat'); |
| * ctx.rect(0, 0, canvas.width, canvas.height); |
| * ctx.fillStyle = pattern; |
| * ctx.fill(); |
| * }); |
| * img.src = "images/foo.jpg"; |
| * document.body.children.add(canvas); |
| * |
| * See also: |
| * * [CanvasPattern](https://developer.mozilla.org/en-US/docs/DOM/CanvasPattern) from MDN. |
| * * [CanvasPattern](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvaspattern) from whatwg. |
| * * [CanvasPattern](http://www.w3.org/TR/2010/WD-2dcontext-20100304/#canvaspattern) from W3C. |
| */ |
| @DomName('CanvasPattern') |
| class CanvasPattern extends Interceptor native "CanvasPattern" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * A rendering context for a canvas element. |
| * |
| * This context is extended by [CanvasRenderingContext2D] and |
| * [WebGLRenderingContext]. |
| */ |
| @DomName('CanvasRenderingContext') |
| class CanvasRenderingContext extends Interceptor native "CanvasRenderingContext" { |
| |
| /// Reference to the canvas element to which this context belongs. |
| @DomName('CanvasRenderingContext.canvas') |
| @DocsEditable() |
| final CanvasElement canvas; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('CanvasRenderingContext2D') |
| class CanvasRenderingContext2D extends CanvasRenderingContext native "CanvasRenderingContext2D" { |
| // To suppress missing implicit constructor warnings. |
| factory CanvasRenderingContext2D._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CanvasRenderingContext2D.currentPath') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects |
| @Experimental() |
| Path currentPath; |
| |
| @DomName('CanvasRenderingContext2D.fillStyle') |
| @DocsEditable() |
| @Creates('String|CanvasGradient|CanvasPattern') |
| @Returns('String|CanvasGradient|CanvasPattern') |
| dynamic fillStyle; |
| |
| @DomName('CanvasRenderingContext2D.font') |
| @DocsEditable() |
| String font; |
| |
| @DomName('CanvasRenderingContext2D.globalAlpha') |
| @DocsEditable() |
| num globalAlpha; |
| |
| @DomName('CanvasRenderingContext2D.globalCompositeOperation') |
| @DocsEditable() |
| String globalCompositeOperation; |
| |
| @DomName('CanvasRenderingContext2D.lineCap') |
| @DocsEditable() |
| String lineCap; |
| |
| @DomName('CanvasRenderingContext2D.lineJoin') |
| @DocsEditable() |
| String lineJoin; |
| |
| @DomName('CanvasRenderingContext2D.lineWidth') |
| @DocsEditable() |
| num lineWidth; |
| |
| @DomName('CanvasRenderingContext2D.miterLimit') |
| @DocsEditable() |
| num miterLimit; |
| |
| @DomName('CanvasRenderingContext2D.shadowBlur') |
| @DocsEditable() |
| num shadowBlur; |
| |
| @DomName('CanvasRenderingContext2D.shadowColor') |
| @DocsEditable() |
| String shadowColor; |
| |
| @DomName('CanvasRenderingContext2D.shadowOffsetX') |
| @DocsEditable() |
| num shadowOffsetX; |
| |
| @DomName('CanvasRenderingContext2D.shadowOffsetY') |
| @DocsEditable() |
| num shadowOffsetY; |
| |
| @DomName('CanvasRenderingContext2D.strokeStyle') |
| @DocsEditable() |
| @Creates('String|CanvasGradient|CanvasPattern') |
| @Returns('String|CanvasGradient|CanvasPattern') |
| dynamic strokeStyle; |
| |
| @DomName('CanvasRenderingContext2D.textAlign') |
| @DocsEditable() |
| String textAlign; |
| |
| @DomName('CanvasRenderingContext2D.textBaseline') |
| @DocsEditable() |
| String textBaseline; |
| |
| @JSName('webkitBackingStorePixelRatio') |
| @DomName('CanvasRenderingContext2D.webkitBackingStorePixelRatio') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final num backingStorePixelRatio; |
| |
| @JSName('webkitImageSmoothingEnabled') |
| @DomName('CanvasRenderingContext2D.webkitImageSmoothingEnabled') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| bool imageSmoothingEnabled; |
| |
| @JSName('arc') |
| @DomName('CanvasRenderingContext2D.arc') |
| @DocsEditable() |
| void $dom_arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) native; |
| |
| @DomName('CanvasRenderingContext2D.arcTo') |
| @DocsEditable() |
| void arcTo(num x1, num y1, num x2, num y2, num radius) native; |
| |
| @DomName('CanvasRenderingContext2D.beginPath') |
| @DocsEditable() |
| void beginPath() native; |
| |
| @DomName('CanvasRenderingContext2D.bezierCurveTo') |
| @DocsEditable() |
| void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) native; |
| |
| @DomName('CanvasRenderingContext2D.clearRect') |
| @DocsEditable() |
| void clearRect(num x, num y, num width, num height) native; |
| |
| @DomName('CanvasRenderingContext2D.clip') |
| @DocsEditable() |
| void clip([String winding]) native; |
| |
| @DomName('CanvasRenderingContext2D.closePath') |
| @DocsEditable() |
| void closePath() native; |
| |
| @DomName('CanvasRenderingContext2D.createImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| ImageData createImageData(num sw, num sh) { |
| return convertNativeToDart_ImageData(_createImageData_1(sw, sh)); |
| } |
| @JSName('createImageData') |
| @DomName('CanvasRenderingContext2D.createImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| _createImageData_1(sw, sh) native; |
| |
| @DomName('CanvasRenderingContext2D.createImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| ImageData createImageDataFromImageData(ImageData imagedata) { |
| var imagedata_1 = convertDartToNative_ImageData(imagedata); |
| return convertNativeToDart_ImageData(_createImageDataFromImageData_1(imagedata_1)); |
| } |
| @JSName('createImageData') |
| @DomName('CanvasRenderingContext2D.createImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| _createImageDataFromImageData_1(imagedata) native; |
| |
| @DomName('CanvasRenderingContext2D.createLinearGradient') |
| @DocsEditable() |
| CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) native; |
| |
| @DomName('CanvasRenderingContext2D.createPattern') |
| @DocsEditable() |
| CanvasPattern createPattern(CanvasElement canvas, String repetitionType) native; |
| |
| @JSName('createPattern') |
| @DomName('CanvasRenderingContext2D.createPattern') |
| @DocsEditable() |
| CanvasPattern createPatternFromImage(ImageElement image, String repetitionType) native; |
| |
| @DomName('CanvasRenderingContext2D.createRadialGradient') |
| @DocsEditable() |
| CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) native; |
| |
| @DomName('CanvasRenderingContext2D.fill') |
| @DocsEditable() |
| void fill([String winding]) native; |
| |
| @DomName('CanvasRenderingContext2D.fillRect') |
| @DocsEditable() |
| void fillRect(num x, num y, num width, num height) native; |
| |
| @DomName('CanvasRenderingContext2D.fillText') |
| @DocsEditable() |
| void fillText(String text, num x, num y, [num maxWidth]) native; |
| |
| @DomName('CanvasRenderingContext2D.getContextAttributes') |
| @DocsEditable() |
| // http://wiki.whatwg.org/wiki/CanvasOpaque#Suggested_IDL |
| @Experimental() |
| Canvas2DContextAttributes getContextAttributes() native; |
| |
| @DomName('CanvasRenderingContext2D.getImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| ImageData getImageData(num sx, num sy, num sw, num sh) { |
| return convertNativeToDart_ImageData(_getImageData_1(sx, sy, sw, sh)); |
| } |
| @JSName('getImageData') |
| @DomName('CanvasRenderingContext2D.getImageData') |
| @DocsEditable() |
| @Creates('ImageData|=Object') |
| _getImageData_1(sx, sy, sw, sh) native; |
| |
| @DomName('CanvasRenderingContext2D.getLineDash') |
| @DocsEditable() |
| List<num> getLineDash() native; |
| |
| @DomName('CanvasRenderingContext2D.isPointInPath') |
| @DocsEditable() |
| bool isPointInPath(num x, num y, [String winding]) native; |
| |
| @DomName('CanvasRenderingContext2D.isPointInStroke') |
| @DocsEditable() |
| bool isPointInStroke(num x, num y) native; |
| |
| @DomName('CanvasRenderingContext2D.lineTo') |
| @DocsEditable() |
| void lineTo(num x, num y) native; |
| |
| @DomName('CanvasRenderingContext2D.measureText') |
| @DocsEditable() |
| TextMetrics measureText(String text) native; |
| |
| @DomName('CanvasRenderingContext2D.moveTo') |
| @DocsEditable() |
| void moveTo(num x, num y) native; |
| |
| @DomName('CanvasRenderingContext2D.putImageData') |
| @DocsEditable() |
| void putImageData(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) { |
| if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) { |
| var imagedata_1 = convertDartToNative_ImageData(imagedata); |
| _putImageData_1(imagedata_1, dx, dy); |
| return; |
| } |
| if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) { |
| var imagedata_2 = convertDartToNative_ImageData(imagedata); |
| _putImageData_2(imagedata_2, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight); |
| return; |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| @JSName('putImageData') |
| @DomName('CanvasRenderingContext2D.putImageData') |
| @DocsEditable() |
| void _putImageData_1(imagedata, dx, dy) native; |
| @JSName('putImageData') |
| @DomName('CanvasRenderingContext2D.putImageData') |
| @DocsEditable() |
| void _putImageData_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native; |
| |
| @DomName('CanvasRenderingContext2D.quadraticCurveTo') |
| @DocsEditable() |
| void quadraticCurveTo(num cpx, num cpy, num x, num y) native; |
| |
| @DomName('CanvasRenderingContext2D.rect') |
| @DocsEditable() |
| void rect(num x, num y, num width, num height) native; |
| |
| @DomName('CanvasRenderingContext2D.restore') |
| @DocsEditable() |
| void restore() native; |
| |
| @DomName('CanvasRenderingContext2D.rotate') |
| @DocsEditable() |
| void rotate(num angle) native; |
| |
| @DomName('CanvasRenderingContext2D.save') |
| @DocsEditable() |
| void save() native; |
| |
| @DomName('CanvasRenderingContext2D.scale') |
| @DocsEditable() |
| void scale(num sx, num sy) native; |
| |
| @DomName('CanvasRenderingContext2D.setLineDash') |
| @DocsEditable() |
| void setLineDash(List<num> dash) native; |
| |
| @DomName('CanvasRenderingContext2D.setTransform') |
| @DocsEditable() |
| void setTransform(num m11, num m12, num m21, num m22, num dx, num dy) native; |
| |
| @DomName('CanvasRenderingContext2D.stroke') |
| @DocsEditable() |
| void stroke() native; |
| |
| @DomName('CanvasRenderingContext2D.strokeRect') |
| @DocsEditable() |
| void strokeRect(num x, num y, num width, num height) native; |
| |
| @DomName('CanvasRenderingContext2D.strokeText') |
| @DocsEditable() |
| void strokeText(String text, num x, num y, [num maxWidth]) native; |
| |
| @DomName('CanvasRenderingContext2D.transform') |
| @DocsEditable() |
| void transform(num m11, num m12, num m21, num m22, num dx, num dy) native; |
| |
| @DomName('CanvasRenderingContext2D.translate') |
| @DocsEditable() |
| void translate(num tx, num ty) native; |
| |
| @DomName('CanvasRenderingContext2D.webkitGetImageDataHD') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Creates('ImageData|=Object') |
| ImageData getImageDataHD(num sx, num sy, num sw, num sh) { |
| return convertNativeToDart_ImageData(_getImageDataHD_1(sx, sy, sw, sh)); |
| } |
| @JSName('webkitGetImageDataHD') |
| @DomName('CanvasRenderingContext2D.webkitGetImageDataHD') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Creates('ImageData|=Object') |
| _getImageDataHD_1(sx, sy, sw, sh) native; |
| |
| @DomName('CanvasRenderingContext2D.webkitPutImageDataHD') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void putImageDataHD(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) { |
| if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) { |
| var imagedata_1 = convertDartToNative_ImageData(imagedata); |
| _putImageDataHD_1(imagedata_1, dx, dy); |
| return; |
| } |
| if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) { |
| var imagedata_2 = convertDartToNative_ImageData(imagedata); |
| _putImageDataHD_2(imagedata_2, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight); |
| return; |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| @JSName('webkitPutImageDataHD') |
| @DomName('CanvasRenderingContext2D.webkitPutImageDataHD') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void _putImageDataHD_1(imagedata, dx, dy) native; |
| @JSName('webkitPutImageDataHD') |
| @DomName('CanvasRenderingContext2D.webkitPutImageDataHD') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void _putImageDataHD_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native; |
| |
| |
| /** |
| * Sets the color used inside shapes. |
| * [r], [g], [b] are 0-255, [a] is 0-1. |
| */ |
| void setFillColorRgb(int r, int g, int b, [num a = 1]) { |
| this.fillStyle = 'rgba($r, $g, $b, $a)'; |
| } |
| |
| /** |
| * Sets the color used inside shapes. |
| * [h] is in degrees, 0-360. |
| * [s], [l] are in percent, 0-100. |
| * [a] is 0-1. |
| */ |
| void setFillColorHsl(int h, num s, num l, [num a = 1]) { |
| this.fillStyle = 'hsla($h, $s%, $l%, $a)'; |
| } |
| |
| /** |
| * Sets the color used for stroking shapes. |
| * [r], [g], [b] are 0-255, [a] is 0-1. |
| */ |
| void setStrokeColorRgb(int r, int g, int b, [num a = 1]) { |
| this.strokeStyle = 'rgba($r, $g, $b, $a)'; |
| } |
| |
| /** |
| * Sets the color used for stroking shapes. |
| * [h] is in degrees, 0-360. |
| * [s], [l] are in percent, 0-100. |
| * [a] is 0-1. |
| */ |
| void setStrokeColorHsl(int h, num s, num l, [num a = 1]) { |
| this.strokeStyle = 'hsla($h, $s%, $l%, $a)'; |
| } |
| |
| @DomName('CanvasRenderingContext2D.arc') |
| void arc(num x, num y, num radius, num startAngle, num endAngle, |
| [bool anticlockwise = false]) { |
| $dom_arc(x, y, radius, startAngle, endAngle, anticlockwise); |
| } |
| |
| /** |
| * Draws an image from a CanvasImageSource to an area of this canvas. |
| * |
| * The image will be drawn to an area of this canvas defined by |
| * [destRect]. [sourceRect] defines the region of the source image that is |
| * drawn. |
| * If [sourceRect] is not provided, then |
| * the entire rectangular image from [source] will be drawn to this context. |
| * |
| * If the image is larger than canvas |
| * will allow, the image will be clipped to fit the available space. |
| * |
| * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| * CanvasRenderingContext2D ctx = canvas.context2D; |
| * ImageElement img = document.query('img'); |
| * img.width = 100; |
| * img.height = 100; |
| * |
| * // Scale the image to 20x20. |
| * ctx.drawImageToRect(img, new Rect(50, 50, 20, 20)); |
| * |
| * VideoElement video = document.query('video'); |
| * video.width = 100; |
| * video.height = 100; |
| * // Take the middle 20x20 pixels from the video and stretch them. |
| * ctx.drawImageToRect(video, new Rect(50, 50, 100, 100), |
| * sourceRect: new Rect(40, 40, 20, 20)); |
| * |
| * // Draw the top 100x20 pixels from the otherCanvas. |
| * CanvasElement otherCanvas = document.query('canvas'); |
| * ctx.drawImageToRect(otherCanvas, new Rect(0, 0, 100, 20), |
| * sourceRect: new Rect(0, 0, 100, 20)); |
| * |
| * See also: |
| * |
| * * [CanvasImageSource] for more information on what data is retrieved |
| * from [source]. |
| * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| void drawImageToRect(CanvasImageSource source, Rect destRect, |
| {Rect sourceRect}) { |
| if (sourceRect == null) { |
| drawImageScaled(source, |
| destRect.left, |
| destRect.top, |
| destRect.width, |
| destRect.height); |
| } else { |
| drawImageScaledFromSource(source, |
| sourceRect.left, |
| sourceRect.top, |
| sourceRect.width, |
| sourceRect.height, |
| destRect.left, |
| destRect.top, |
| destRect.width, |
| destRect.height); |
| } |
| } |
| |
| /** |
| * Draws an image from a CanvasImageSource to this canvas. |
| * |
| * The entire image from [source] will be drawn to this context with its top |
| * left corner at the point ([destX], [destY]). If the image is |
| * larger than canvas will allow, the image will be clipped to fit the |
| * available space. |
| * |
| * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| * CanvasRenderingContext2D ctx = canvas.context2D; |
| * ImageElement img = document.query('img'); |
| * |
| * ctx.drawImage(img, 100, 100); |
| * |
| * VideoElement video = document.query('video'); |
| * ctx.drawImage(video, 0, 0); |
| * |
| * CanvasElement otherCanvas = document.query('canvas'); |
| * otherCanvas.width = 100; |
| * otherCanvas.height = 100; |
| * ctx.drawImage(otherCanvas, 590, 590); // will get clipped |
| * |
| * See also: |
| * |
| * * [CanvasImageSource] for more information on what data is retrieved |
| * from [source]. |
| * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| @JSName('drawImage') |
| void drawImage(CanvasImageSource source, num destX, num destY) native; |
| |
| /** |
| * Draws an image from a CanvasImageSource to an area of this canvas. |
| * |
| * The image will be drawn to this context with its top left corner at the |
| * point ([destX], [destY]) and will be scaled to be [destWidth] wide and |
| * [destHeight] tall. |
| * |
| * If the image is larger than canvas |
| * will allow, the image will be clipped to fit the available space. |
| * |
| * CanvasElement canvas = new CanvasElement(width: 600, height: 600); |
| * CanvasRenderingContext2D ctx = canvas.context2D; |
| * ImageElement img = document.query('img'); |
| * img.width = 100; |
| * img.height = 100; |
| * |
| * // Scale the image to 300x50 at the point (20, 20) |
| * ctx.drawImageScaled(img, 20, 20, 300, 50); |
| * |
| * See also: |
| * |
| * * [CanvasImageSource] for more information on what data is retrieved |
| * from [source]. |
| * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| @JSName('drawImage') |
| void drawImageScaled(CanvasImageSource source, |
| num destX, num destY, num destWidth, num destHeight) native; |
| |
| /** |
| * Draws an image from a CanvasImageSource to an area of this canvas. |
| * |
| * The image is a region of [source] that is [sourceWidth] wide and |
| * [destHeight] tall with top left corner at ([sourceX], [sourceY]). |
| * The image will be drawn to this context with its top left corner at the |
| * point ([destX], [destY]) and will be scaled to be [destWidth] wide and |
| * [destHeight] tall. |
| * |
| * If the image is larger than canvas |
| * will allow, the image will be clipped to fit the available space. |
| * |
| * VideoElement video = document.query('video'); |
| * video.width = 100; |
| * video.height = 100; |
| * // Take the middle 20x20 pixels from the video and stretch them. |
| * ctx.drawImageScaledFromSource(video, 40, 40, 20, 20, 50, 50, 100, 100); |
| * |
| * // Draw the top 100x20 pixels from the otherCanvas to this one. |
| * CanvasElement otherCanvas = document.query('canvas'); |
| * ctx.drawImageScaledFromSource(otherCanvas, 0, 0, 100, 20, 0, 0, 100, 20); |
| * |
| * See also: |
| * |
| * * [CanvasImageSource] for more information on what data is retrieved |
| * from [source]. |
| * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| * from the WHATWG. |
| */ |
| @DomName('CanvasRenderingContext2D.drawImage') |
| @JSName('drawImage') |
| void drawImageScaledFromSource(CanvasImageSource source, |
| num sourceX, num sourceY, num sourceWidth, num sourceHeight, |
| num destX, num destY, num destWidth, num destHeight) native; |
| |
| @DomName('CanvasRenderingContext2D.lineDashOffset') |
| num get lineDashOffset => JS('num', |
| '#.lineDashOffset || #.webkitLineDashOffset', this, this); |
| |
| @DomName('CanvasRenderingContext2D.lineDashOffset') |
| void set lineDashOffset(num value) => JS('void', |
| 'typeof #.lineDashOffset != "undefined" ? #.lineDashOffset = # : ' |
| '#.webkitLineDashOffset = #', this, this, value, this, value); |
| } |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CharacterData') |
| class CharacterData extends Node implements ChildNode native "CharacterData" { |
| // To suppress missing implicit constructor warnings. |
| factory CharacterData._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CharacterData.data') |
| @DocsEditable() |
| String data; |
| |
| @DomName('CharacterData.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('CharacterData.appendData') |
| @DocsEditable() |
| void appendData(String data) native; |
| |
| @DomName('CharacterData.deleteData') |
| @DocsEditable() |
| void deleteData(int offset, int length) native; |
| |
| @DomName('CharacterData.insertData') |
| @DocsEditable() |
| void insertData(int offset, String data) native; |
| |
| @DomName('CharacterData.replaceData') |
| @DocsEditable() |
| void replaceData(int offset, int length, String data) native; |
| |
| @DomName('CharacterData.substringData') |
| @DocsEditable() |
| String substringData(int offset, int length) native; |
| |
| // From ChildNode |
| |
| @DomName('CharacterData.nextElementSibling') |
| @DocsEditable() |
| final Element nextElementSibling; |
| |
| @DomName('CharacterData.previousElementSibling') |
| @DocsEditable() |
| final Element previousElementSibling; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ChildNode') |
| @Experimental() // untriaged |
| abstract class ChildNode extends Interceptor { |
| |
| Element nextElementSibling; |
| |
| Element previousElementSibling; |
| |
| void remove(); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CloseEvent') |
| class CloseEvent extends Event native "CloseEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory CloseEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CloseEvent.code') |
| @DocsEditable() |
| final int code; |
| |
| @DomName('CloseEvent.reason') |
| @DocsEditable() |
| final String reason; |
| |
| @DomName('CloseEvent.wasClean') |
| @DocsEditable() |
| final bool wasClean; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Comment') |
| class Comment extends CharacterData native "Comment" { |
| // To suppress missing implicit constructor warnings. |
| factory Comment._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Comment.Comment') |
| @DocsEditable() |
| factory Comment([String data]) { |
| if (data != null) { |
| return Comment._create_1(data); |
| } |
| return Comment._create_2(); |
| } |
| static Comment _create_1(data) => JS('Comment', 'new Comment(#)', data); |
| static Comment _create_2() => JS('Comment', 'new Comment()'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Composition') |
| // http://www.w3.org/TR/ime-api/#idl-def-Composition |
| @Experimental() |
| class Composition extends Interceptor native "Composition" { |
| |
| @DomName('Composition.selectionEnd') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int selectionEnd; |
| |
| @DomName('Composition.selectionStart') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int selectionStart; |
| |
| @DomName('Composition.text') |
| @DocsEditable() |
| final String text; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('CompositionEvent') |
| class CompositionEvent extends UIEvent native "CompositionEvent" { |
| factory CompositionEvent(String type, |
| {bool canBubble: false, bool cancelable: false, Window view, |
| String data}) { |
| if (view == null) { |
| view = window; |
| } |
| var e = document.$dom_createEvent("CompositionEvent"); |
| e.$dom_initCompositionEvent(type, canBubble, cancelable, view, data); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory CompositionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CompositionEvent.data') |
| @DocsEditable() |
| final String data; |
| |
| @JSName('initCompositionEvent') |
| @DomName('CompositionEvent.initCompositionEvent') |
| @DocsEditable() |
| void $dom_initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('Console') |
| class Console { |
| |
| static Console _safeConsole = new Console(); |
| |
| bool get _isConsoleDefined => JS('bool', 'typeof console != "undefined"'); |
| |
| @DomName('Console.memory') |
| MemoryInfo get memory => _isConsoleDefined ? |
| JS('MemoryInfo', 'console.memory') : null; |
| |
| @DomName('Console.assertCondition') |
| void assertCondition(bool condition, Object arg) => _isConsoleDefined ? |
| JS('void', 'console.assertCondition(#, #)', condition, arg) : null; |
| |
| @DomName('Console.count') |
| void count(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.count(#)', arg) : null; |
| |
| @DomName('Console.debug') |
| void debug(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.debug(#)', arg) : null; |
| |
| @DomName('Console.dir') |
| void dir(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.debug(#)', arg) : null; |
| |
| @DomName('Console.dirxml') |
| void dirxml(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.dirxml(#)', arg) : null; |
| |
| @DomName('Console.error') |
| void error(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.error(#)', arg) : null; |
| |
| @DomName('Console.group') |
| void group(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.group(#)', arg) : null; |
| |
| @DomName('Console.groupCollapsed') |
| void groupCollapsed(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.groupCollapsed(#)', arg) : null; |
| |
| @DomName('Console.groupEnd') |
| void groupEnd() => _isConsoleDefined ? |
| JS('void', 'console.groupEnd()') : null; |
| |
| @DomName('Console.info') |
| void info(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.info(#)', arg) : null; |
| |
| @DomName('Console.log') |
| void log(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.log(#)', arg) : null; |
| |
| @DomName('Console.markTimeline') |
| void markTimeline(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.markTimeline(#)', arg) : null; |
| |
| @DomName('Console.profile') |
| void profile(String title) => _isConsoleDefined ? |
| JS('void', 'console.profile(#)', title) : null; |
| |
| @DomName('Console.profileEnd') |
| void profileEnd(String title) => _isConsoleDefined ? |
| JS('void', 'console.profileEnd(#)', title) : null; |
| |
| @DomName('Console.time') |
| void time(String title) => _isConsoleDefined ? |
| JS('void', 'console.time(#)', title) : null; |
| |
| @DomName('Console.timeEnd') |
| void timeEnd(String title) => _isConsoleDefined ? |
| JS('void', 'console.timeEnd(#)', title) : null; |
| |
| @DomName('Console.timeStamp') |
| void timeStamp(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.timeStamp(#)', arg) : null; |
| |
| @DomName('Console.trace') |
| void trace(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.trace(#)', arg) : null; |
| |
| @DomName('Console.warn') |
| void warn(Object arg) => _isConsoleDefined ? |
| JS('void', 'console.warn(#)', arg) : null; |
| |
| @DomName('Console.clear') |
| @DocsEditable() |
| @Experimental() |
| void clear(Object arg) native; |
| |
| @DomName('Console.table') |
| @DocsEditable() |
| @Experimental() |
| void table(Object arg) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLContentElement') |
| @SupportedBrowser(SupportedBrowser.CHROME, '26') |
| @Experimental() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#content-element |
| class ContentElement extends _HTMLElement native "HTMLContentElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ContentElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLContentElement.HTMLContentElement') |
| @DocsEditable() |
| factory ContentElement() => document.$dom_createElement("content"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('content'); |
| |
| @DomName('HTMLContentElement.resetStyleInheritance') |
| @DocsEditable() |
| bool resetStyleInheritance; |
| |
| @DomName('HTMLContentElement.select') |
| @DocsEditable() |
| String select; |
| |
| @DomName('HTMLContentElement.getDistributedNodes') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getDistributedNodes() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Coordinates') |
| class Coordinates extends Interceptor native "Coordinates" { |
| |
| @DomName('Coordinates.accuracy') |
| @DocsEditable() |
| final num accuracy; |
| |
| @DomName('Coordinates.altitude') |
| @DocsEditable() |
| final num altitude; |
| |
| @DomName('Coordinates.altitudeAccuracy') |
| @DocsEditable() |
| final num altitudeAccuracy; |
| |
| @DomName('Coordinates.heading') |
| @DocsEditable() |
| final num heading; |
| |
| @DomName('Coordinates.latitude') |
| @DocsEditable() |
| final num latitude; |
| |
| @DomName('Coordinates.longitude') |
| @DocsEditable() |
| final num longitude; |
| |
| @DomName('Coordinates.speed') |
| @DocsEditable() |
| final num speed; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Crypto') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/WebCryptoAPI/ |
| class Crypto extends Interceptor native "Crypto" { |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.crypto && window.crypto.getRandomValues)'); |
| |
| @DomName('Crypto.subtle') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final SubtleCrypto subtle; |
| |
| @DomName('Crypto.getRandomValues') |
| @DocsEditable() |
| @Creates('TypedData') |
| @Returns('TypedData|Null') |
| TypedData getRandomValues(TypedData array) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CryptoOperation') |
| @Experimental() // untriaged |
| class CryptoOperation extends Interceptor native "CryptoOperation" { |
| |
| @DomName('CryptoOperation.algorithm') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final Algorithm algorithm; |
| |
| @DomName('CryptoOperation.abort') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Object abort() native; |
| |
| @DomName('CryptoOperation.finish') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Object finish() native; |
| |
| @JSName('process') |
| @DomName('CryptoOperation.process') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation processByteBuffer(ByteBuffer data) native; |
| |
| @JSName('process') |
| @DomName('CryptoOperation.process') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation processTypedData(TypedData data) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSS') |
| // http://www.w3.org/TR/css3-conditional/#the-css-interface |
| @Experimental() // None |
| class Css extends Interceptor native "CSS" { |
| |
| @DomName('CSS.supports') |
| @DocsEditable() |
| bool supports(String property, String value) native; |
| |
| @JSName('supports') |
| @DomName('CSS.supports') |
| @DocsEditable() |
| bool supportsCondition(String conditionText) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSCharsetRule') |
| // http://dev.w3.org/csswg/cssom/#the-csscharsetrule-interface |
| @Experimental() |
| class CssCharsetRule extends CssRule native "CSSCharsetRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssCharsetRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSCharsetRule.encoding') |
| @DocsEditable() |
| String encoding; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSFilterRule') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/filter-effects/ |
| class CssFilterRule extends CssRule native "WebKitCSSFilterRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssFilterRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSFilterRule.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSFilterValue') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| class CssFilterValue extends _CssValueList native "WebKitCSSFilterValue" { |
| // To suppress missing implicit constructor warnings. |
| factory CssFilterValue._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_BLUR') |
| @DocsEditable() |
| static const int CSS_FILTER_BLUR = 10; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS') |
| @DocsEditable() |
| static const int CSS_FILTER_BRIGHTNESS = 8; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_CONTRAST') |
| @DocsEditable() |
| static const int CSS_FILTER_CONTRAST = 9; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_CUSTOM') |
| @DocsEditable() |
| static const int CSS_FILTER_CUSTOM = 12; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW') |
| @DocsEditable() |
| static const int CSS_FILTER_DROP_SHADOW = 11; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE') |
| @DocsEditable() |
| static const int CSS_FILTER_GRAYSCALE = 2; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE') |
| @DocsEditable() |
| static const int CSS_FILTER_HUE_ROTATE = 5; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_INVERT') |
| @DocsEditable() |
| static const int CSS_FILTER_INVERT = 6; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_OPACITY') |
| @DocsEditable() |
| static const int CSS_FILTER_OPACITY = 7; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_REFERENCE') |
| @DocsEditable() |
| static const int CSS_FILTER_REFERENCE = 1; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_SATURATE') |
| @DocsEditable() |
| static const int CSS_FILTER_SATURATE = 4; |
| |
| @DomName('WebKitCSSFilterValue.CSS_FILTER_SEPIA') |
| @DocsEditable() |
| static const int CSS_FILTER_SEPIA = 3; |
| |
| @DomName('WebKitCSSFilterValue.operationType') |
| @DocsEditable() |
| final int operationType; |
| |
| @DomName('WebKitCSSFilterValue.__getter__') |
| @DocsEditable() |
| _CSSValue __getter__(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSFontFaceLoadEvent') |
| // http://www.w3.org/TR/css3-fonts/ |
| @Experimental() |
| class CssFontFaceLoadEvent extends Event native "CSSFontFaceLoadEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory CssFontFaceLoadEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSFontFaceLoadEvent.error') |
| @DocsEditable() |
| final DomError error; |
| |
| @DomName('CSSFontFaceLoadEvent.fontface') |
| @DocsEditable() |
| final CssFontFaceRule fontface; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSFontFaceRule') |
| class CssFontFaceRule extends CssRule native "CSSFontFaceRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssFontFaceRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSFontFaceRule.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSHostRule') |
| @SupportedBrowser(SupportedBrowser.CHROME, '26') |
| @Experimental() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#css-host-rule-interface |
| class CssHostRule extends CssRule native "CSSHostRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssHostRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSHostRule.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| |
| @DomName('CSSHostRule.deleteRule') |
| @DocsEditable() |
| void deleteRule(int index) native; |
| |
| @DomName('CSSHostRule.insertRule') |
| @DocsEditable() |
| int insertRule(String rule, int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSImportRule') |
| class CssImportRule extends CssRule native "CSSImportRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssImportRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSImportRule.href') |
| @DocsEditable() |
| final String href; |
| |
| @DomName('CSSImportRule.media') |
| @DocsEditable() |
| final MediaList media; |
| |
| @DomName('CSSImportRule.styleSheet') |
| @DocsEditable() |
| final CssStyleSheet styleSheet; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSKeyframeRule') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/css3-animations/#CSSKeyframeRule-interface |
| class CssKeyframeRule extends CssRule native "CSSKeyframeRule,MozCSSKeyframeRule,WebKitCSSKeyframeRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssKeyframeRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSKeyframeRule.keyText') |
| @DocsEditable() |
| String keyText; |
| |
| @DomName('WebKitCSSKeyframeRule.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSKeyframesRule') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/css3-animations/#csskeyframesrule |
| class CssKeyframesRule extends CssRule native "CSSKeyframesRule,MozCSSKeyframesRule,WebKitCSSKeyframesRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssKeyframesRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSKeyframesRule.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| |
| @DomName('WebKitCSSKeyframesRule.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('WebKitCSSKeyframesRule.__getter__') |
| @DocsEditable() |
| CssKeyframeRule __getter__(int index) native; |
| |
| @DomName('WebKitCSSKeyframesRule.deleteRule') |
| @DocsEditable() |
| void deleteRule(String key) native; |
| |
| @DomName('WebKitCSSKeyframesRule.findRule') |
| @DocsEditable() |
| CssKeyframeRule findRule(String key) native; |
| |
| |
| void appendRule(String rule) { |
| if (JS('bool', '("appendRule" in #)', this)) { |
| JS('', '#.appendRule(#)', this, rule); |
| } else { |
| JS('', '#.insertRule(#)', this, rule); |
| } |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSMatrix') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| class CssMatrix extends Interceptor native "WebKitCSSMatrix" { |
| |
| @DomName('WebKitCSSMatrix.WebKitCSSMatrix') |
| @DocsEditable() |
| factory CssMatrix([String cssValue]) { |
| if (cssValue != null) { |
| return CssMatrix._create_1(cssValue); |
| } |
| return CssMatrix._create_2(); |
| } |
| static CssMatrix _create_1(cssValue) => JS('CssMatrix', 'new WebKitCSSMatrix(#)', cssValue); |
| static CssMatrix _create_2() => JS('CssMatrix', 'new WebKitCSSMatrix()'); |
| |
| @DomName('WebKitCSSMatrix.a') |
| @DocsEditable() |
| num a; |
| |
| @DomName('WebKitCSSMatrix.b') |
| @DocsEditable() |
| num b; |
| |
| @DomName('WebKitCSSMatrix.c') |
| @DocsEditable() |
| num c; |
| |
| @DomName('WebKitCSSMatrix.d') |
| @DocsEditable() |
| num d; |
| |
| @DomName('WebKitCSSMatrix.e') |
| @DocsEditable() |
| num e; |
| |
| @DomName('WebKitCSSMatrix.f') |
| @DocsEditable() |
| num f; |
| |
| @DomName('WebKitCSSMatrix.m11') |
| @DocsEditable() |
| num m11; |
| |
| @DomName('WebKitCSSMatrix.m12') |
| @DocsEditable() |
| num m12; |
| |
| @DomName('WebKitCSSMatrix.m13') |
| @DocsEditable() |
| num m13; |
| |
| @DomName('WebKitCSSMatrix.m14') |
| @DocsEditable() |
| num m14; |
| |
| @DomName('WebKitCSSMatrix.m21') |
| @DocsEditable() |
| num m21; |
| |
| @DomName('WebKitCSSMatrix.m22') |
| @DocsEditable() |
| num m22; |
| |
| @DomName('WebKitCSSMatrix.m23') |
| @DocsEditable() |
| num m23; |
| |
| @DomName('WebKitCSSMatrix.m24') |
| @DocsEditable() |
| num m24; |
| |
| @DomName('WebKitCSSMatrix.m31') |
| @DocsEditable() |
| num m31; |
| |
| @DomName('WebKitCSSMatrix.m32') |
| @DocsEditable() |
| num m32; |
| |
| @DomName('WebKitCSSMatrix.m33') |
| @DocsEditable() |
| num m33; |
| |
| @DomName('WebKitCSSMatrix.m34') |
| @DocsEditable() |
| num m34; |
| |
| @DomName('WebKitCSSMatrix.m41') |
| @DocsEditable() |
| num m41; |
| |
| @DomName('WebKitCSSMatrix.m42') |
| @DocsEditable() |
| num m42; |
| |
| @DomName('WebKitCSSMatrix.m43') |
| @DocsEditable() |
| num m43; |
| |
| @DomName('WebKitCSSMatrix.m44') |
| @DocsEditable() |
| num m44; |
| |
| @DomName('WebKitCSSMatrix.inverse') |
| @DocsEditable() |
| CssMatrix inverse() native; |
| |
| @DomName('WebKitCSSMatrix.multiply') |
| @DocsEditable() |
| CssMatrix multiply(CssMatrix secondMatrix) native; |
| |
| @DomName('WebKitCSSMatrix.rotate') |
| @DocsEditable() |
| CssMatrix rotate(num rotX, num rotY, num rotZ) native; |
| |
| @DomName('WebKitCSSMatrix.rotateAxisAngle') |
| @DocsEditable() |
| CssMatrix rotateAxisAngle(num x, num y, num z, num angle) native; |
| |
| @DomName('WebKitCSSMatrix.scale') |
| @DocsEditable() |
| CssMatrix scale(num scaleX, num scaleY, num scaleZ) native; |
| |
| @DomName('WebKitCSSMatrix.setMatrixValue') |
| @DocsEditable() |
| void setMatrixValue(String string) native; |
| |
| @DomName('WebKitCSSMatrix.skewX') |
| @DocsEditable() |
| CssMatrix skewX(num angle) native; |
| |
| @DomName('WebKitCSSMatrix.skewY') |
| @DocsEditable() |
| CssMatrix skewY(num angle) native; |
| |
| @DomName('WebKitCSSMatrix.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| @DomName('WebKitCSSMatrix.translate') |
| @DocsEditable() |
| CssMatrix translate(num x, num y, num z) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSMediaRule') |
| class CssMediaRule extends CssRule native "CSSMediaRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssMediaRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSMediaRule.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| |
| @DomName('CSSMediaRule.media') |
| @DocsEditable() |
| final MediaList media; |
| |
| @DomName('CSSMediaRule.deleteRule') |
| @DocsEditable() |
| void deleteRule(int index) native; |
| |
| @DomName('CSSMediaRule.insertRule') |
| @DocsEditable() |
| int insertRule(String rule, int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSMixFunctionValue') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| class CssMixFunctionValue extends _CssValueList native "WebKitCSSMixFunctionValue" { |
| // To suppress missing implicit constructor warnings. |
| factory CssMixFunctionValue._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSPageRule') |
| class CssPageRule extends CssRule native "CSSPageRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssPageRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSPageRule.selectorText') |
| @DocsEditable() |
| String selectorText; |
| |
| @DomName('CSSPageRule.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSRegionRule') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/css-regions/#region-style-rule-interface |
| class CssRegionRule extends CssRule native "WebKitCSSRegionRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssRegionRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSRegionRule.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSRule') |
| class CssRule extends Interceptor native "CSSRule" { |
| |
| @DomName('CSSRule.CHARSET_RULE') |
| @DocsEditable() |
| static const int CHARSET_RULE = 2; |
| |
| @DomName('CSSRule.FONT_FACE_RULE') |
| @DocsEditable() |
| static const int FONT_FACE_RULE = 5; |
| |
| @DomName('CSSRule.HOST_RULE') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-css-rule-host-rule |
| @Experimental() |
| static const int HOST_RULE = 1001; |
| |
| @DomName('CSSRule.IMPORT_RULE') |
| @DocsEditable() |
| static const int IMPORT_RULE = 3; |
| |
| @DomName('CSSRule.MEDIA_RULE') |
| @DocsEditable() |
| static const int MEDIA_RULE = 4; |
| |
| @DomName('CSSRule.PAGE_RULE') |
| @DocsEditable() |
| static const int PAGE_RULE = 6; |
| |
| @DomName('CSSRule.STYLE_RULE') |
| @DocsEditable() |
| static const int STYLE_RULE = 1; |
| |
| @DomName('CSSRule.SUPPORTS_RULE') |
| @DocsEditable() |
| static const int SUPPORTS_RULE = 12; |
| |
| @DomName('CSSRule.UNKNOWN_RULE') |
| @DocsEditable() |
| // http://dev.w3.org/csswg/cssom/#changes-from-dom2 |
| @deprecated // deprecated |
| static const int UNKNOWN_RULE = 0; |
| |
| @DomName('CSSRule.VIEWPORT_RULE') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const int VIEWPORT_RULE = 15; |
| |
| @DomName('CSSRule.WEBKIT_FILTER_RULE') |
| @DocsEditable() |
| // http://www.w3.org/TR/filter-effects/ |
| @Experimental() |
| static const int WEBKIT_FILTER_RULE = 17; |
| |
| @DomName('CSSRule.WEBKIT_KEYFRAMES_RULE') |
| @DocsEditable() |
| // http://www.w3.org/TR/css3-animations/#cssrule |
| @Experimental() |
| static const int WEBKIT_KEYFRAMES_RULE = 7; |
| |
| @DomName('CSSRule.WEBKIT_KEYFRAME_RULE') |
| @DocsEditable() |
| // http://www.w3.org/TR/css3-animations/#cssrule |
| @Experimental() |
| static const int WEBKIT_KEYFRAME_RULE = 8; |
| |
| @DomName('CSSRule.WEBKIT_REGION_RULE') |
| @DocsEditable() |
| // http://dev.w3.org/csswg/css-regions/#region-style-rule-interface |
| @Experimental() |
| static const int WEBKIT_REGION_RULE = 16; |
| |
| @DomName('CSSRule.cssText') |
| @DocsEditable() |
| String cssText; |
| |
| @DomName('CSSRule.parentRule') |
| @DocsEditable() |
| final CssRule parentRule; |
| |
| @DomName('CSSRule.parentStyleSheet') |
| @DocsEditable() |
| final CssStyleSheet parentStyleSheet; |
| |
| @DomName('CSSRule.type') |
| @DocsEditable() |
| final int type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('CSSStyleDeclaration') |
| class CssStyleDeclaration extends Interceptor with |
| CssStyleDeclarationBase native "CSSStyleDeclaration,MSStyleCSSProperties,CSS2Properties" { |
| factory CssStyleDeclaration() => new CssStyleDeclaration.css(''); |
| |
| factory CssStyleDeclaration.css(String css) { |
| final style = new Element.tag('div').style; |
| style.cssText = css; |
| return style; |
| } |
| |
| String getPropertyValue(String propertyName) { |
| var propValue = _getPropertyValue(propertyName); |
| return propValue != null ? propValue : ''; |
| } |
| |
| @DomName('CSSStyleDeclaration.setProperty') |
| void setProperty(String propertyName, String value, [String priority]) { |
| // try/catch for IE9 which throws on unsupported values. |
| try { |
| if (priority == null) { |
| priority = ''; |
| } |
| JS('void', '#.setProperty(#, #, #)', this, propertyName, value, priority); |
| // Bug #2772, IE9 requires a poke to actually apply the value. |
| if (JS('bool', '!!#.setAttribute', this)) { |
| JS('void', '#.setAttribute(#, #)', this, propertyName, value); |
| } |
| } catch (e) {} |
| } |
| |
| /** |
| * Checks to see if CSS Transitions are supported. |
| */ |
| static bool get supportsTransitions { |
| if (JS('bool', '"transition" in document.body.style')) { |
| return true; |
| } |
| var propertyName = '${Device.propertyPrefix}Transition'; |
| return JS('bool', '# in document.body.style', propertyName); |
| } |
| |
| @DomName('CSSStyleDeclaration.cssText') |
| @DocsEditable() |
| String cssText; |
| |
| @DomName('CSSStyleDeclaration.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('CSSStyleDeclaration.parentRule') |
| @DocsEditable() |
| final CssRule parentRule; |
| |
| @JSName('var') |
| @DomName('CSSStyleDeclaration.var') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final CssVariablesMap _var; |
| |
| @DomName('CSSStyleDeclaration.__setter__') |
| @DocsEditable() |
| void __setter__(String propertyName, String propertyValue) native; |
| |
| @DomName('CSSStyleDeclaration.getPropertyPriority') |
| @DocsEditable() |
| String getPropertyPriority(String propertyName) native; |
| |
| @JSName('getPropertyValue') |
| @DomName('CSSStyleDeclaration.getPropertyValue') |
| @DocsEditable() |
| String _getPropertyValue(String propertyName) native; |
| |
| @DomName('CSSStyleDeclaration.item') |
| @DocsEditable() |
| String item(int index) native; |
| |
| @DomName('CSSStyleDeclaration.removeProperty') |
| @DocsEditable() |
| String removeProperty(String propertyName) native; |
| |
| } |
| |
| class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase { |
| final Iterable<Element> _elementIterable; |
| Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable; |
| |
| _CssStyleDeclarationSet(this._elementIterable) { |
| _elementCssStyleDeclarationSetIterable = new List.from( |
| _elementIterable).map((e) => e.style); |
| } |
| |
| String getPropertyValue(String propertyName) => |
| _elementCssStyleDeclarationSetIterable.first.getPropertyValue( |
| propertyName); |
| |
| void setProperty(String propertyName, String value, [String priority]) { |
| _elementCssStyleDeclarationSetIterable.forEach((e) => |
| e.setProperty(propertyName, value, priority)); |
| } |
| // Important note: CssStyleDeclarationSet does NOT implement every method |
| // available in CssStyleDeclaration. Some of the methods don't make so much |
| // sense in terms of having a resonable value to return when you're |
| // considering a list of Elements. You will need to manually add any of the |
| // items in the MEMBERS set if you want that functionality. |
| } |
| |
| abstract class CssStyleDeclarationBase { |
| String getPropertyValue(String propertyName); |
| void setProperty(String propertyName, String value, [String priority]); |
| |
| // TODO(jacobr): generate this list of properties using the existing script. |
| /** Gets the value of "align-content" */ |
| String get alignContent => |
| getPropertyValue('${Device.cssPrefix}align-content'); |
| |
| /** Sets the value of "align-content" */ |
| void set alignContent(String value) { |
| setProperty('${Device.cssPrefix}align-content', value, ''); |
| } |
| |
| /** Gets the value of "align-items" */ |
| String get alignItems => |
| getPropertyValue('${Device.cssPrefix}align-items'); |
| |
| /** Sets the value of "align-items" */ |
| void set alignItems(String value) { |
| setProperty('${Device.cssPrefix}align-items', value, ''); |
| } |
| |
| /** Gets the value of "align-self" */ |
| String get alignSelf => |
| getPropertyValue('${Device.cssPrefix}align-self'); |
| |
| /** Sets the value of "align-self" */ |
| void set alignSelf(String value) { |
| setProperty('${Device.cssPrefix}align-self', value, ''); |
| } |
| |
| /** Gets the value of "animation" */ |
| String get animation => |
| getPropertyValue('${Device.cssPrefix}animation'); |
| |
| /** Sets the value of "animation" */ |
| void set animation(String value) { |
| setProperty('${Device.cssPrefix}animation', value, ''); |
| } |
| |
| /** Gets the value of "animation-delay" */ |
| String get animationDelay => |
| getPropertyValue('${Device.cssPrefix}animation-delay'); |
| |
| /** Sets the value of "animation-delay" */ |
| void set animationDelay(String value) { |
| setProperty('${Device.cssPrefix}animation-delay', value, ''); |
| } |
| |
| /** Gets the value of "animation-direction" */ |
| String get animationDirection => |
| getPropertyValue('${Device.cssPrefix}animation-direction'); |
| |
| /** Sets the value of "animation-direction" */ |
| void set animationDirection(String value) { |
| setProperty('${Device.cssPrefix}animation-direction', value, ''); |
| } |
| |
| /** Gets the value of "animation-duration" */ |
| String get animationDuration => |
| getPropertyValue('${Device.cssPrefix}animation-duration'); |
| |
| /** Sets the value of "animation-duration" */ |
| void set animationDuration(String value) { |
| setProperty('${Device.cssPrefix}animation-duration', value, ''); |
| } |
| |
| /** Gets the value of "animation-fill-mode" */ |
| String get animationFillMode => |
| getPropertyValue('${Device.cssPrefix}animation-fill-mode'); |
| |
| /** Sets the value of "animation-fill-mode" */ |
| void set animationFillMode(String value) { |
| setProperty('${Device.cssPrefix}animation-fill-mode', value, ''); |
| } |
| |
| /** Gets the value of "animation-iteration-count" */ |
| String get animationIterationCount => |
| getPropertyValue('${Device.cssPrefix}animation-iteration-count'); |
| |
| /** Sets the value of "animation-iteration-count" */ |
| void set animationIterationCount(String value) { |
| setProperty('${Device.cssPrefix}animation-iteration-count', value, ''); |
| } |
| |
| /** Gets the value of "animation-name" */ |
| String get animationName => |
| getPropertyValue('${Device.cssPrefix}animation-name'); |
| |
| /** Sets the value of "animation-name" */ |
| void set animationName(String value) { |
| setProperty('${Device.cssPrefix}animation-name', value, ''); |
| } |
| |
| /** Gets the value of "animation-play-state" */ |
| String get animationPlayState => |
| getPropertyValue('${Device.cssPrefix}animation-play-state'); |
| |
| /** Sets the value of "animation-play-state" */ |
| void set animationPlayState(String value) { |
| setProperty('${Device.cssPrefix}animation-play-state', value, ''); |
| } |
| |
| /** Gets the value of "animation-timing-function" */ |
| String get animationTimingFunction => |
| getPropertyValue('${Device.cssPrefix}animation-timing-function'); |
| |
| /** Sets the value of "animation-timing-function" */ |
| void set animationTimingFunction(String value) { |
| setProperty('${Device.cssPrefix}animation-timing-function', value, ''); |
| } |
| |
| /** Gets the value of "app-region" */ |
| String get appRegion => |
| getPropertyValue('${Device.cssPrefix}app-region'); |
| |
| /** Sets the value of "app-region" */ |
| void set appRegion(String value) { |
| setProperty('${Device.cssPrefix}app-region', value, ''); |
| } |
| |
| /** Gets the value of "appearance" */ |
| String get appearance => |
| getPropertyValue('${Device.cssPrefix}appearance'); |
| |
| /** Sets the value of "appearance" */ |
| void set appearance(String value) { |
| setProperty('${Device.cssPrefix}appearance', value, ''); |
| } |
| |
| /** Gets the value of "aspect-ratio" */ |
| String get aspectRatio => |
| getPropertyValue('${Device.cssPrefix}aspect-ratio'); |
| |
| /** Sets the value of "aspect-ratio" */ |
| void set aspectRatio(String value) { |
| setProperty('${Device.cssPrefix}aspect-ratio', value, ''); |
| } |
| |
| /** Gets the value of "backface-visibility" */ |
| String get backfaceVisibility => |
| getPropertyValue('${Device.cssPrefix}backface-visibility'); |
| |
| /** Sets the value of "backface-visibility" */ |
| void set backfaceVisibility(String value) { |
| setProperty('${Device.cssPrefix}backface-visibility', value, ''); |
| } |
| |
| /** Gets the value of "background" */ |
| String get background => |
| getPropertyValue('background'); |
| |
| /** Sets the value of "background" */ |
| void set background(String value) { |
| setProperty('background', value, ''); |
| } |
| |
| /** Gets the value of "background-attachment" */ |
| String get backgroundAttachment => |
| getPropertyValue('background-attachment'); |
| |
| /** Sets the value of "background-attachment" */ |
| void set backgroundAttachment(String value) { |
| setProperty('background-attachment', value, ''); |
| } |
| |
| /** Gets the value of "background-clip" */ |
| String get backgroundClip => |
| getPropertyValue('background-clip'); |
| |
| /** Sets the value of "background-clip" */ |
| void set backgroundClip(String value) { |
| setProperty('background-clip', value, ''); |
| } |
| |
| /** Gets the value of "background-color" */ |
| String get backgroundColor => |
| getPropertyValue('background-color'); |
| |
| /** Sets the value of "background-color" */ |
| void set backgroundColor(String value) { |
| setProperty('background-color', value, ''); |
| } |
| |
| /** Gets the value of "background-composite" */ |
| String get backgroundComposite => |
| getPropertyValue('${Device.cssPrefix}background-composite'); |
| |
| /** Sets the value of "background-composite" */ |
| void set backgroundComposite(String value) { |
| setProperty('${Device.cssPrefix}background-composite', value, ''); |
| } |
| |
| /** Gets the value of "background-image" */ |
| String get backgroundImage => |
| getPropertyValue('background-image'); |
| |
| /** Sets the value of "background-image" */ |
| void set backgroundImage(String value) { |
| setProperty('background-image', value, ''); |
| } |
| |
| /** Gets the value of "background-origin" */ |
| String get backgroundOrigin => |
| getPropertyValue('background-origin'); |
| |
| /** Sets the value of "background-origin" */ |
| void set backgroundOrigin(String value) { |
| setProperty('background-origin', value, ''); |
| } |
| |
| /** Gets the value of "background-position" */ |
| String get backgroundPosition => |
| getPropertyValue('background-position'); |
| |
| /** Sets the value of "background-position" */ |
| void set backgroundPosition(String value) { |
| setProperty('background-position', value, ''); |
| } |
| |
| /** Gets the value of "background-position-x" */ |
| String get backgroundPositionX => |
| getPropertyValue('background-position-x'); |
| |
| /** Sets the value of "background-position-x" */ |
| void set backgroundPositionX(String value) { |
| setProperty('background-position-x', value, ''); |
| } |
| |
| /** Gets the value of "background-position-y" */ |
| String get backgroundPositionY => |
| getPropertyValue('background-position-y'); |
| |
| /** Sets the value of "background-position-y" */ |
| void set backgroundPositionY(String value) { |
| setProperty('background-position-y', value, ''); |
| } |
| |
| /** Gets the value of "background-repeat" */ |
| String get backgroundRepeat => |
| getPropertyValue('background-repeat'); |
| |
| /** Sets the value of "background-repeat" */ |
| void set backgroundRepeat(String value) { |
| setProperty('background-repeat', value, ''); |
| } |
| |
| /** Gets the value of "background-repeat-x" */ |
| String get backgroundRepeatX => |
| getPropertyValue('background-repeat-x'); |
| |
| /** Sets the value of "background-repeat-x" */ |
| void set backgroundRepeatX(String value) { |
| setProperty('background-repeat-x', value, ''); |
| } |
| |
| /** Gets the value of "background-repeat-y" */ |
| String get backgroundRepeatY => |
| getPropertyValue('background-repeat-y'); |
| |
| /** Sets the value of "background-repeat-y" */ |
| void set backgroundRepeatY(String value) { |
| setProperty('background-repeat-y', value, ''); |
| } |
| |
| /** Gets the value of "background-size" */ |
| String get backgroundSize => |
| getPropertyValue('background-size'); |
| |
| /** Sets the value of "background-size" */ |
| void set backgroundSize(String value) { |
| setProperty('background-size', value, ''); |
| } |
| |
| /** Gets the value of "blend-mode" */ |
| String get blendMode => |
| getPropertyValue('${Device.cssPrefix}blend-mode'); |
| |
| /** Sets the value of "blend-mode" */ |
| void set blendMode(String value) { |
| setProperty('${Device.cssPrefix}blend-mode', value, ''); |
| } |
| |
| /** Gets the value of "border" */ |
| String get border => |
| getPropertyValue('border'); |
| |
| /** Sets the value of "border" */ |
| void set border(String value) { |
| setProperty('border', value, ''); |
| } |
| |
| /** Gets the value of "border-after" */ |
| String get borderAfter => |
| getPropertyValue('${Device.cssPrefix}border-after'); |
| |
| /** Sets the value of "border-after" */ |
| void set borderAfter(String value) { |
| setProperty('${Device.cssPrefix}border-after', value, ''); |
| } |
| |
| /** Gets the value of "border-after-color" */ |
| String get borderAfterColor => |
| getPropertyValue('${Device.cssPrefix}border-after-color'); |
| |
| /** Sets the value of "border-after-color" */ |
| void set borderAfterColor(String value) { |
| setProperty('${Device.cssPrefix}border-after-color', value, ''); |
| } |
| |
| /** Gets the value of "border-after-style" */ |
| String get borderAfterStyle => |
| getPropertyValue('${Device.cssPrefix}border-after-style'); |
| |
| /** Sets the value of "border-after-style" */ |
| void set borderAfterStyle(String value) { |
| setProperty('${Device.cssPrefix}border-after-style', value, ''); |
| } |
| |
| /** Gets the value of "border-after-width" */ |
| String get borderAfterWidth => |
| getPropertyValue('${Device.cssPrefix}border-after-width'); |
| |
| /** Sets the value of "border-after-width" */ |
| void set borderAfterWidth(String value) { |
| setProperty('${Device.cssPrefix}border-after-width', value, ''); |
| } |
| |
| /** Gets the value of "border-before" */ |
| String get borderBefore => |
| getPropertyValue('${Device.cssPrefix}border-before'); |
| |
| /** Sets the value of "border-before" */ |
| void set borderBefore(String value) { |
| setProperty('${Device.cssPrefix}border-before', value, ''); |
| } |
| |
| /** Gets the value of "border-before-color" */ |
| String get borderBeforeColor => |
| getPropertyValue('${Device.cssPrefix}border-before-color'); |
| |
| /** Sets the value of "border-before-color" */ |
| void set borderBeforeColor(String value) { |
| setProperty('${Device.cssPrefix}border-before-color', value, ''); |
| } |
| |
| /** Gets the value of "border-before-style" */ |
| String get borderBeforeStyle => |
| getPropertyValue('${Device.cssPrefix}border-before-style'); |
| |
| /** Sets the value of "border-before-style" */ |
| void set borderBeforeStyle(String value) { |
| setProperty('${Device.cssPrefix}border-before-style', value, ''); |
| } |
| |
| /** Gets the value of "border-before-width" */ |
| String get borderBeforeWidth => |
| getPropertyValue('${Device.cssPrefix}border-before-width'); |
| |
| /** Sets the value of "border-before-width" */ |
| void set borderBeforeWidth(String value) { |
| setProperty('${Device.cssPrefix}border-before-width', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom" */ |
| String get borderBottom => |
| getPropertyValue('border-bottom'); |
| |
| /** Sets the value of "border-bottom" */ |
| void set borderBottom(String value) { |
| setProperty('border-bottom', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom-color" */ |
| String get borderBottomColor => |
| getPropertyValue('border-bottom-color'); |
| |
| /** Sets the value of "border-bottom-color" */ |
| void set borderBottomColor(String value) { |
| setProperty('border-bottom-color', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom-left-radius" */ |
| String get borderBottomLeftRadius => |
| getPropertyValue('border-bottom-left-radius'); |
| |
| /** Sets the value of "border-bottom-left-radius" */ |
| void set borderBottomLeftRadius(String value) { |
| setProperty('border-bottom-left-radius', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom-right-radius" */ |
| String get borderBottomRightRadius => |
| getPropertyValue('border-bottom-right-radius'); |
| |
| /** Sets the value of "border-bottom-right-radius" */ |
| void set borderBottomRightRadius(String value) { |
| setProperty('border-bottom-right-radius', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom-style" */ |
| String get borderBottomStyle => |
| getPropertyValue('border-bottom-style'); |
| |
| /** Sets the value of "border-bottom-style" */ |
| void set borderBottomStyle(String value) { |
| setProperty('border-bottom-style', value, ''); |
| } |
| |
| /** Gets the value of "border-bottom-width" */ |
| String get borderBottomWidth => |
| getPropertyValue('border-bottom-width'); |
| |
| /** Sets the value of "border-bottom-width" */ |
| void set borderBottomWidth(String value) { |
| setProperty('border-bottom-width', value, ''); |
| } |
| |
| /** Gets the value of "border-collapse" */ |
| String get borderCollapse => |
| getPropertyValue('border-collapse'); |
| |
| /** Sets the value of "border-collapse" */ |
| void set borderCollapse(String value) { |
| setProperty('border-collapse', value, ''); |
| } |
| |
| /** Gets the value of "border-color" */ |
| String get borderColor => |
| getPropertyValue('border-color'); |
| |
| /** Sets the value of "border-color" */ |
| void set borderColor(String value) { |
| setProperty('border-color', value, ''); |
| } |
| |
| /** Gets the value of "border-end" */ |
| String get borderEnd => |
| getPropertyValue('${Device.cssPrefix}border-end'); |
| |
| /** Sets the value of "border-end" */ |
| void set borderEnd(String value) { |
| setProperty('${Device.cssPrefix}border-end', value, ''); |
| } |
| |
| /** Gets the value of "border-end-color" */ |
| String get borderEndColor => |
| getPropertyValue('${Device.cssPrefix}border-end-color'); |
| |
| /** Sets the value of "border-end-color" */ |
| void set borderEndColor(String value) { |
| setProperty('${Device.cssPrefix}border-end-color', value, ''); |
| } |
| |
| /** Gets the value of "border-end-style" */ |
| String get borderEndStyle => |
| getPropertyValue('${Device.cssPrefix}border-end-style'); |
| |
| /** Sets the value of "border-end-style" */ |
| void set borderEndStyle(String value) { |
| setProperty('${Device.cssPrefix}border-end-style', value, ''); |
| } |
| |
| /** Gets the value of "border-end-width" */ |
| String get borderEndWidth => |
| getPropertyValue('${Device.cssPrefix}border-end-width'); |
| |
| /** Sets the value of "border-end-width" */ |
| void set borderEndWidth(String value) { |
| setProperty('${Device.cssPrefix}border-end-width', value, ''); |
| } |
| |
| /** Gets the value of "border-fit" */ |
| String get borderFit => |
| getPropertyValue('${Device.cssPrefix}border-fit'); |
| |
| /** Sets the value of "border-fit" */ |
| void set borderFit(String value) { |
| setProperty('${Device.cssPrefix}border-fit', value, ''); |
| } |
| |
| /** Gets the value of "border-horizontal-spacing" */ |
| String get borderHorizontalSpacing => |
| getPropertyValue('${Device.cssPrefix}border-horizontal-spacing'); |
| |
| /** Sets the value of "border-horizontal-spacing" */ |
| void set borderHorizontalSpacing(String value) { |
| setProperty('${Device.cssPrefix}border-horizontal-spacing', value, ''); |
| } |
| |
| /** Gets the value of "border-image" */ |
| String get borderImage => |
| getPropertyValue('border-image'); |
| |
| /** Sets the value of "border-image" */ |
| void set borderImage(String value) { |
| setProperty('border-image', value, ''); |
| } |
| |
| /** Gets the value of "border-image-outset" */ |
| String get borderImageOutset => |
| getPropertyValue('border-image-outset'); |
| |
| /** Sets the value of "border-image-outset" */ |
| void set borderImageOutset(String value) { |
| setProperty('border-image-outset', value, ''); |
| } |
| |
| /** Gets the value of "border-image-repeat" */ |
| String get borderImageRepeat => |
| getPropertyValue('border-image-repeat'); |
| |
| /** Sets the value of "border-image-repeat" */ |
| void set borderImageRepeat(String value) { |
| setProperty('border-image-repeat', value, ''); |
| } |
| |
| /** Gets the value of "border-image-slice" */ |
| String get borderImageSlice => |
| getPropertyValue('border-image-slice'); |
| |
| /** Sets the value of "border-image-slice" */ |
| void set borderImageSlice(String value) { |
| setProperty('border-image-slice', value, ''); |
| } |
| |
| /** Gets the value of "border-image-source" */ |
| String get borderImageSource => |
| getPropertyValue('border-image-source'); |
| |
| /** Sets the value of "border-image-source" */ |
| void set borderImageSource(String value) { |
| setProperty('border-image-source', value, ''); |
| } |
| |
| /** Gets the value of "border-image-width" */ |
| String get borderImageWidth => |
| getPropertyValue('border-image-width'); |
| |
| /** Sets the value of "border-image-width" */ |
| void set borderImageWidth(String value) { |
| setProperty('border-image-width', value, ''); |
| } |
| |
| /** Gets the value of "border-left" */ |
| String get borderLeft => |
| getPropertyValue('border-left'); |
| |
| /** Sets the value of "border-left" */ |
| void set borderLeft(String value) { |
| setProperty('border-left', value, ''); |
| } |
| |
| /** Gets the value of "border-left-color" */ |
| String get borderLeftColor => |
| getPropertyValue('border-left-color'); |
| |
| /** Sets the value of "border-left-color" */ |
| void set borderLeftColor(String value) { |
| setProperty('border-left-color', value, ''); |
| } |
| |
| /** Gets the value of "border-left-style" */ |
| String get borderLeftStyle => |
| getPropertyValue('border-left-style'); |
| |
| /** Sets the value of "border-left-style" */ |
| void set borderLeftStyle(String value) { |
| setProperty('border-left-style', value, ''); |
| } |
| |
| /** Gets the value of "border-left-width" */ |
| String get borderLeftWidth => |
| getPropertyValue('border-left-width'); |
| |
| /** Sets the value of "border-left-width" */ |
| void set borderLeftWidth(String value) { |
| setProperty('border-left-width', value, ''); |
| } |
| |
| /** Gets the value of "border-radius" */ |
| String get borderRadius => |
| getPropertyValue('border-radius'); |
| |
| /** Sets the value of "border-radius" */ |
| void set borderRadius(String value) { |
| setProperty('border-radius', value, ''); |
| } |
| |
| /** Gets the value of "border-right" */ |
| String get borderRight => |
| getPropertyValue('border-right'); |
| |
| /** Sets the value of "border-right" */ |
| void set borderRight(String value) { |
| setProperty('border-right', value, ''); |
| } |
| |
| /** Gets the value of "border-right-color" */ |
| String get borderRightColor => |
| getPropertyValue('border-right-color'); |
| |
| /** Sets the value of "border-right-color" */ |
| void set borderRightColor(String value) { |
| setProperty('border-right-color', value, ''); |
| } |
| |
| /** Gets the value of "border-right-style" */ |
| String get borderRightStyle => |
| getPropertyValue('border-right-style'); |
| |
| /** Sets the value of "border-right-style" */ |
| void set borderRightStyle(String value) { |
| setProperty('border-right-style', value, ''); |
| } |
| |
| /** Gets the value of "border-right-width" */ |
| String get borderRightWidth => |
| getPropertyValue('border-right-width'); |
| |
| /** Sets the value of "border-right-width" */ |
| void set borderRightWidth(String value) { |
| setProperty('border-right-width', value, ''); |
| } |
| |
| /** Gets the value of "border-spacing" */ |
| String get borderSpacing => |
| getPropertyValue('border-spacing'); |
| |
| /** Sets the value of "border-spacing" */ |
| void set borderSpacing(String value) { |
| setProperty('border-spacing', value, ''); |
| } |
| |
| /** Gets the value of "border-start" */ |
| String get borderStart => |
| getPropertyValue('${Device.cssPrefix}border-start'); |
| |
| /** Sets the value of "border-start" */ |
| void set borderStart(String value) { |
| setProperty('${Device.cssPrefix}border-start', value, ''); |
| } |
| |
| /** Gets the value of "border-start-color" */ |
| String get borderStartColor => |
| getPropertyValue('${Device.cssPrefix}border-start-color'); |
| |
| /** Sets the value of "border-start-color" */ |
| void set borderStartColor(String value) { |
| setProperty('${Device.cssPrefix}border-start-color', value, ''); |
| } |
| |
| /** Gets the value of "border-start-style" */ |
| String get borderStartStyle => |
| getPropertyValue('${Device.cssPrefix}border-start-style'); |
| |
| /** Sets the value of "border-start-style" */ |
| void set borderStartStyle(String value) { |
| setProperty('${Device.cssPrefix}border-start-style', value, ''); |
| } |
| |
| /** Gets the value of "border-start-width" */ |
| String get borderStartWidth => |
| getPropertyValue('${Device.cssPrefix}border-start-width'); |
| |
| /** Sets the value of "border-start-width" */ |
| void set borderStartWidth(String value) { |
| setProperty('${Device.cssPrefix}border-start-width', value, ''); |
| } |
| |
| /** Gets the value of "border-style" */ |
| String get borderStyle => |
| getPropertyValue('border-style'); |
| |
| /** Sets the value of "border-style" */ |
| void set borderStyle(String value) { |
| setProperty('border-style', value, ''); |
| } |
| |
| /** Gets the value of "border-top" */ |
| String get borderTop => |
| getPropertyValue('border-top'); |
| |
| /** Sets the value of "border-top" */ |
| void set borderTop(String value) { |
| setProperty('border-top', value, ''); |
| } |
| |
| /** Gets the value of "border-top-color" */ |
| String get borderTopColor => |
| getPropertyValue('border-top-color'); |
| |
| /** Sets the value of "border-top-color" */ |
| void set borderTopColor(String value) { |
| setProperty('border-top-color', value, ''); |
| } |
| |
| /** Gets the value of "border-top-left-radius" */ |
| String get borderTopLeftRadius => |
| getPropertyValue('border-top-left-radius'); |
| |
| /** Sets the value of "border-top-left-radius" */ |
| void set borderTopLeftRadius(String value) { |
| setProperty('border-top-left-radius', value, ''); |
| } |
| |
| /** Gets the value of "border-top-right-radius" */ |
| String get borderTopRightRadius => |
| getPropertyValue('border-top-right-radius'); |
| |
| /** Sets the value of "border-top-right-radius" */ |
| void set borderTopRightRadius(String value) { |
| setProperty('border-top-right-radius', value, ''); |
| } |
| |
| /** Gets the value of "border-top-style" */ |
| String get borderTopStyle => |
| getPropertyValue('border-top-style'); |
| |
| /** Sets the value of "border-top-style" */ |
| void set borderTopStyle(String value) { |
| setProperty('border-top-style', value, ''); |
| } |
| |
| /** Gets the value of "border-top-width" */ |
| String get borderTopWidth => |
| getPropertyValue('border-top-width'); |
| |
| /** Sets the value of "border-top-width" */ |
| void set borderTopWidth(String value) { |
| setProperty('border-top-width', value, ''); |
| } |
| |
| /** Gets the value of "border-vertical-spacing" */ |
| String get borderVerticalSpacing => |
| getPropertyValue('${Device.cssPrefix}border-vertical-spacing'); |
| |
| /** Sets the value of "border-vertical-spacing" */ |
| void set borderVerticalSpacing(String value) { |
| setProperty('${Device.cssPrefix}border-vertical-spacing', value, ''); |
| } |
| |
| /** Gets the value of "border-width" */ |
| String get borderWidth => |
| getPropertyValue('border-width'); |
| |
| /** Sets the value of "border-width" */ |
| void set borderWidth(String value) { |
| setProperty('border-width', value, ''); |
| } |
| |
| /** Gets the value of "bottom" */ |
| String get bottom => |
| getPropertyValue('bottom'); |
| |
| /** Sets the value of "bottom" */ |
| void set bottom(String value) { |
| setProperty('bottom', value, ''); |
| } |
| |
| /** Gets the value of "box-align" */ |
| String get boxAlign => |
| getPropertyValue('${Device.cssPrefix}box-align'); |
| |
| /** Sets the value of "box-align" */ |
| void set boxAlign(String value) { |
| setProperty('${Device.cssPrefix}box-align', value, ''); |
| } |
| |
| /** Gets the value of "box-decoration-break" */ |
| String get boxDecorationBreak => |
| getPropertyValue('${Device.cssPrefix}box-decoration-break'); |
| |
| /** Sets the value of "box-decoration-break" */ |
| void set boxDecorationBreak(String value) { |
| setProperty('${Device.cssPrefix}box-decoration-break', value, ''); |
| } |
| |
| /** Gets the value of "box-direction" */ |
| String get boxDirection => |
| getPropertyValue('${Device.cssPrefix}box-direction'); |
| |
| /** Sets the value of "box-direction" */ |
| void set boxDirection(String value) { |
| setProperty('${Device.cssPrefix}box-direction', value, ''); |
| } |
| |
| /** Gets the value of "box-flex" */ |
| String get boxFlex => |
| getPropertyValue('${Device.cssPrefix}box-flex'); |
| |
| /** Sets the value of "box-flex" */ |
| void set boxFlex(String value) { |
| setProperty('${Device.cssPrefix}box-flex', value, ''); |
| } |
| |
| /** Gets the value of "box-flex-group" */ |
| String get boxFlexGroup => |
| getPropertyValue('${Device.cssPrefix}box-flex-group'); |
| |
| /** Sets the value of "box-flex-group" */ |
| void set boxFlexGroup(String value) { |
| setProperty('${Device.cssPrefix}box-flex-group', value, ''); |
| } |
| |
| /** Gets the value of "box-lines" */ |
| String get boxLines => |
| getPropertyValue('${Device.cssPrefix}box-lines'); |
| |
| /** Sets the value of "box-lines" */ |
| void set boxLines(String value) { |
| setProperty('${Device.cssPrefix}box-lines', value, ''); |
| } |
| |
| /** Gets the value of "box-ordinal-group" */ |
| String get boxOrdinalGroup => |
| getPropertyValue('${Device.cssPrefix}box-ordinal-group'); |
| |
| /** Sets the value of "box-ordinal-group" */ |
| void set boxOrdinalGroup(String value) { |
| setProperty('${Device.cssPrefix}box-ordinal-group', value, ''); |
| } |
| |
| /** Gets the value of "box-orient" */ |
| String get boxOrient => |
| getPropertyValue('${Device.cssPrefix}box-orient'); |
| |
| /** Sets the value of "box-orient" */ |
| void set boxOrient(String value) { |
| setProperty('${Device.cssPrefix}box-orient', value, ''); |
| } |
| |
| /** Gets the value of "box-pack" */ |
| String get boxPack => |
| getPropertyValue('${Device.cssPrefix}box-pack'); |
| |
| /** Sets the value of "box-pack" */ |
| void set boxPack(String value) { |
| setProperty('${Device.cssPrefix}box-pack', value, ''); |
| } |
| |
| /** Gets the value of "box-reflect" */ |
| String get boxReflect => |
| getPropertyValue('${Device.cssPrefix}box-reflect'); |
| |
| /** Sets the value of "box-reflect" */ |
| void set boxReflect(String value) { |
| setProperty('${Device.cssPrefix}box-reflect', value, ''); |
| } |
| |
| /** Gets the value of "box-shadow" */ |
| String get boxShadow => |
| getPropertyValue('box-shadow'); |
| |
| /** Sets the value of "box-shadow" */ |
| void set boxShadow(String value) { |
| setProperty('box-shadow', value, ''); |
| } |
| |
| /** Gets the value of "box-sizing" */ |
| String get boxSizing => Device.isFirefox ? |
| getPropertyValue('${Device.cssPrefix}box-sizing') : |
| getPropertyValue('box-sizing'); |
| |
| /** Sets the value of "box-sizing" */ |
| void set boxSizing(String value) { |
| if (Device.isFirefox) { |
| setProperty('${Device.cssPrefix}box-sizing', value, ''); |
| } else { |
| setProperty('box-sizing', value, ''); |
| } |
| } |
| |
| /** Gets the value of "caption-side" */ |
| String get captionSide => |
| getPropertyValue('caption-side'); |
| |
| /** Sets the value of "caption-side" */ |
| void set captionSide(String value) { |
| setProperty('caption-side', value, ''); |
| } |
| |
| /** Gets the value of "clear" */ |
| String get clear => |
| getPropertyValue('clear'); |
| |
| /** Sets the value of "clear" */ |
| void set clear(String value) { |
| setProperty('clear', value, ''); |
| } |
| |
| /** Gets the value of "clip" */ |
| String get clip => |
| getPropertyValue('clip'); |
| |
| /** Sets the value of "clip" */ |
| void set clip(String value) { |
| setProperty('clip', value, ''); |
| } |
| |
| /** Gets the value of "clip-path" */ |
| String get clipPath => |
| getPropertyValue('${Device.cssPrefix}clip-path'); |
| |
| /** Sets the value of "clip-path" */ |
| void set clipPath(String value) { |
| setProperty('${Device.cssPrefix}clip-path', value, ''); |
| } |
| |
| /** Gets the value of "color" */ |
| String get color => |
| getPropertyValue('color'); |
| |
| /** Sets the value of "color" */ |
| void set color(String value) { |
| setProperty('color', value, ''); |
| } |
| |
| /** Gets the value of "color-correction" */ |
| String get colorCorrection => |
| getPropertyValue('${Device.cssPrefix}color-correction'); |
| |
| /** Sets the value of "color-correction" */ |
| void set colorCorrection(String value) { |
| setProperty('${Device.cssPrefix}color-correction', value, ''); |
| } |
| |
| /** Gets the value of "column-axis" */ |
| String get columnAxis => |
| getPropertyValue('${Device.cssPrefix}column-axis'); |
| |
| /** Sets the value of "column-axis" */ |
| void set columnAxis(String value) { |
| setProperty('${Device.cssPrefix}column-axis', value, ''); |
| } |
| |
| /** Gets the value of "column-break-after" */ |
| String get columnBreakAfter => |
| getPropertyValue('${Device.cssPrefix}column-break-after'); |
| |
| /** Sets the value of "column-break-after" */ |
| void set columnBreakAfter(String value) { |
| setProperty('${Device.cssPrefix}column-break-after', value, ''); |
| } |
| |
| /** Gets the value of "column-break-before" */ |
| String get columnBreakBefore => |
| getPropertyValue('${Device.cssPrefix}column-break-before'); |
| |
| /** Sets the value of "column-break-before" */ |
| void set columnBreakBefore(String value) { |
| setProperty('${Device.cssPrefix}column-break-before', value, ''); |
| } |
| |
| /** Gets the value of "column-break-inside" */ |
| String get columnBreakInside => |
| getPropertyValue('${Device.cssPrefix}column-break-inside'); |
| |
| /** Sets the value of "column-break-inside" */ |
| void set columnBreakInside(String value) { |
| setProperty('${Device.cssPrefix}column-break-inside', value, ''); |
| } |
| |
| /** Gets the value of "column-count" */ |
| String get columnCount => |
| getPropertyValue('${Device.cssPrefix}column-count'); |
| |
| /** Sets the value of "column-count" */ |
| void set columnCount(String value) { |
| setProperty('${Device.cssPrefix}column-count', value, ''); |
| } |
| |
| /** Gets the value of "column-gap" */ |
| String get columnGap => |
| getPropertyValue('${Device.cssPrefix}column-gap'); |
| |
| /** Sets the value of "column-gap" */ |
| void set columnGap(String value) { |
| setProperty('${Device.cssPrefix}column-gap', value, ''); |
| } |
| |
| /** Gets the value of "column-progression" */ |
| String get columnProgression => |
| getPropertyValue('${Device.cssPrefix}column-progression'); |
| |
| /** Sets the value of "column-progression" */ |
| void set columnProgression(String value) { |
| setProperty('${Device.cssPrefix}column-progression', value, ''); |
| } |
| |
| /** Gets the value of "column-rule" */ |
| String get columnRule => |
| getPropertyValue('${Device.cssPrefix}column-rule'); |
| |
| /** Sets the value of "column-rule" */ |
| void set columnRule(String value) { |
| setProperty('${Device.cssPrefix}column-rule', value, ''); |
| } |
| |
| /** Gets the value of "column-rule-color" */ |
| String get columnRuleColor => |
| getPropertyValue('${Device.cssPrefix}column-rule-color'); |
| |
| /** Sets the value of "column-rule-color" */ |
| void set columnRuleColor(String value) { |
| setProperty('${Device.cssPrefix}column-rule-color', value, ''); |
| } |
| |
| /** Gets the value of "column-rule-style" */ |
| String get columnRuleStyle => |
| getPropertyValue('${Device.cssPrefix}column-rule-style'); |
| |
| /** Sets the value of "column-rule-style" */ |
| void set columnRuleStyle(String value) { |
| setProperty('${Device.cssPrefix}column-rule-style', value, ''); |
| } |
| |
| /** Gets the value of "column-rule-width" */ |
| String get columnRuleWidth => |
| getPropertyValue('${Device.cssPrefix}column-rule-width'); |
| |
| /** Sets the value of "column-rule-width" */ |
| void set columnRuleWidth(String value) { |
| setProperty('${Device.cssPrefix}column-rule-width', value, ''); |
| } |
| |
| /** Gets the value of "column-span" */ |
| String get columnSpan => |
| getPropertyValue('${Device.cssPrefix}column-span'); |
| |
| /** Sets the value of "column-span" */ |
| void set columnSpan(String value) { |
| setProperty('${Device.cssPrefix}column-span', value, ''); |
| } |
| |
| /** Gets the value of "column-width" */ |
| String get columnWidth => |
| getPropertyValue('${Device.cssPrefix}column-width'); |
| |
| /** Sets the value of "column-width" */ |
| void set columnWidth(String value) { |
| setProperty('${Device.cssPrefix}column-width', value, ''); |
| } |
| |
| /** Gets the value of "columns" */ |
| String get columns => |
| getPropertyValue('${Device.cssPrefix}columns'); |
| |
| /** Sets the value of "columns" */ |
| void set columns(String value) { |
| setProperty('${Device.cssPrefix}columns', value, ''); |
| } |
| |
| /** Gets the value of "content" */ |
| String get content => |
| getPropertyValue('content'); |
| |
| /** Sets the value of "content" */ |
| void set content(String value) { |
| setProperty('content', value, ''); |
| } |
| |
| /** Gets the value of "counter-increment" */ |
| String get counterIncrement => |
| getPropertyValue('counter-increment'); |
| |
| /** Sets the value of "counter-increment" */ |
| void set counterIncrement(String value) { |
| setProperty('counter-increment', value, ''); |
| } |
| |
| /** Gets the value of "counter-reset" */ |
| String get counterReset => |
| getPropertyValue('counter-reset'); |
| |
| /** Sets the value of "counter-reset" */ |
| void set counterReset(String value) { |
| setProperty('counter-reset', value, ''); |
| } |
| |
| /** Gets the value of "cursor" */ |
| String get cursor => |
| getPropertyValue('cursor'); |
| |
| /** Sets the value of "cursor" */ |
| void set cursor(String value) { |
| setProperty('cursor', value, ''); |
| } |
| |
| /** Gets the value of "dashboard-region" */ |
| String get dashboardRegion => |
| getPropertyValue('${Device.cssPrefix}dashboard-region'); |
| |
| /** Sets the value of "dashboard-region" */ |
| void set dashboardRegion(String value) { |
| setProperty('${Device.cssPrefix}dashboard-region', value, ''); |
| } |
| |
| /** Gets the value of "direction" */ |
| String get direction => |
| getPropertyValue('direction'); |
| |
| /** Sets the value of "direction" */ |
| void set direction(String value) { |
| setProperty('direction', value, ''); |
| } |
| |
| /** Gets the value of "display" */ |
| String get display => |
| getPropertyValue('display'); |
| |
| /** Sets the value of "display" */ |
| void set display(String value) { |
| setProperty('display', value, ''); |
| } |
| |
| /** Gets the value of "empty-cells" */ |
| String get emptyCells => |
| getPropertyValue('empty-cells'); |
| |
| /** Sets the value of "empty-cells" */ |
| void set emptyCells(String value) { |
| setProperty('empty-cells', value, ''); |
| } |
| |
| /** Gets the value of "filter" */ |
| String get filter => |
| getPropertyValue('${Device.cssPrefix}filter'); |
| |
| /** Sets the value of "filter" */ |
| void set filter(String value) { |
| setProperty('${Device.cssPrefix}filter', value, ''); |
| } |
| |
| /** Gets the value of "flex" */ |
| String get flex => |
| getPropertyValue('${Device.cssPrefix}flex'); |
| |
| /** Sets the value of "flex" */ |
| void set flex(String value) { |
| setProperty('${Device.cssPrefix}flex', value, ''); |
| } |
| |
| /** Gets the value of "flex-basis" */ |
| String get flexBasis => |
| getPropertyValue('${Device.cssPrefix}flex-basis'); |
| |
| /** Sets the value of "flex-basis" */ |
| void set flexBasis(String value) { |
| setProperty('${Device.cssPrefix}flex-basis', value, ''); |
| } |
| |
| /** Gets the value of "flex-direction" */ |
| String get flexDirection => |
| getPropertyValue('${Device.cssPrefix}flex-direction'); |
| |
| /** Sets the value of "flex-direction" */ |
| void set flexDirection(String value) { |
| setProperty('${Device.cssPrefix}flex-direction', value, ''); |
| } |
| |
| /** Gets the value of "flex-flow" */ |
| String get flexFlow => |
| getPropertyValue('${Device.cssPrefix}flex-flow'); |
| |
| /** Sets the value of "flex-flow" */ |
| void set flexFlow(String value) { |
| setProperty('${Device.cssPrefix}flex-flow', value, ''); |
| } |
| |
| /** Gets the value of "flex-grow" */ |
| String get flexGrow => |
| getPropertyValue('${Device.cssPrefix}flex-grow'); |
| |
| /** Sets the value of "flex-grow" */ |
| void set flexGrow(String value) { |
| setProperty('${Device.cssPrefix}flex-grow', value, ''); |
| } |
| |
| /** Gets the value of "flex-shrink" */ |
| String get flexShrink => |
| getPropertyValue('${Device.cssPrefix}flex-shrink'); |
| |
| /** Sets the value of "flex-shrink" */ |
| void set flexShrink(String value) { |
| setProperty('${Device.cssPrefix}flex-shrink', value, ''); |
| } |
| |
| /** Gets the value of "flex-wrap" */ |
| String get flexWrap => |
| getPropertyValue('${Device.cssPrefix}flex-wrap'); |
| |
| /** Sets the value of "flex-wrap" */ |
| void set flexWrap(String value) { |
| setProperty('${Device.cssPrefix}flex-wrap', value, ''); |
| } |
| |
| /** Gets the value of "float" */ |
| String get float => |
| getPropertyValue('float'); |
| |
| /** Sets the value of "float" */ |
| void set float(String value) { |
| setProperty('float', value, ''); |
| } |
| |
| /** Gets the value of "flow-from" */ |
| String get flowFrom => |
| getPropertyValue('${Device.cssPrefix}flow-from'); |
| |
| /** Sets the value of "flow-from" */ |
| void set flowFrom(String value) { |
| setProperty('${Device.cssPrefix}flow-from', value, ''); |
| } |
| |
| /** Gets the value of "flow-into" */ |
| String get flowInto => |
| getPropertyValue('${Device.cssPrefix}flow-into'); |
| |
| /** Sets the value of "flow-into" */ |
| void set flowInto(String value) { |
| setProperty('${Device.cssPrefix}flow-into', value, ''); |
| } |
| |
| /** Gets the value of "font" */ |
| String get font => |
| getPropertyValue('font'); |
| |
| /** Sets the value of "font" */ |
| void set font(String value) { |
| setProperty('font', value, ''); |
| } |
| |
| /** Gets the value of "font-family" */ |
| String get fontFamily => |
| getPropertyValue('font-family'); |
| |
| /** Sets the value of "font-family" */ |
| void set fontFamily(String value) { |
| setProperty('font-family', value, ''); |
| } |
| |
| /** Gets the value of "font-feature-settings" */ |
| String get fontFeatureSettings => |
| getPropertyValue('${Device.cssPrefix}font-feature-settings'); |
| |
| /** Sets the value of "font-feature-settings" */ |
| void set fontFeatureSettings(String value) { |
| setProperty('${Device.cssPrefix}font-feature-settings', value, ''); |
| } |
| |
| /** Gets the value of "font-kerning" */ |
| String get fontKerning => |
| getPropertyValue('${Device.cssPrefix}font-kerning'); |
| |
| /** Sets the value of "font-kerning" */ |
| void set fontKerning(String value) { |
| setProperty('${Device.cssPrefix}font-kerning', value, ''); |
| } |
| |
| /** Gets the value of "font-size" */ |
| String get fontSize => |
| getPropertyValue('font-size'); |
| |
| /** Sets the value of "font-size" */ |
| void set fontSize(String value) { |
| setProperty('font-size', value, ''); |
| } |
| |
| /** Gets the value of "font-size-delta" */ |
| String get fontSizeDelta => |
| getPropertyValue('${Device.cssPrefix}font-size-delta'); |
| |
| /** Sets the value of "font-size-delta" */ |
| void set fontSizeDelta(String value) { |
| setProperty('${Device.cssPrefix}font-size-delta', value, ''); |
| } |
| |
| /** Gets the value of "font-smoothing" */ |
| String get fontSmoothing => |
| getPropertyValue('${Device.cssPrefix}font-smoothing'); |
| |
| /** Sets the value of "font-smoothing" */ |
| void set fontSmoothing(String value) { |
| setProperty('${Device.cssPrefix}font-smoothing', value, ''); |
| } |
| |
| /** Gets the value of "font-stretch" */ |
| String get fontStretch => |
| getPropertyValue('font-stretch'); |
| |
| /** Sets the value of "font-stretch" */ |
| void set fontStretch(String value) { |
| setProperty('font-stretch', value, ''); |
| } |
| |
| /** Gets the value of "font-style" */ |
| String get fontStyle => |
| getPropertyValue('font-style'); |
| |
| /** Sets the value of "font-style" */ |
| void set fontStyle(String value) { |
| setProperty('font-style', value, ''); |
| } |
| |
| /** Gets the value of "font-variant" */ |
| String get fontVariant => |
| getPropertyValue('font-variant'); |
| |
| /** Sets the value of "font-variant" */ |
| void set fontVariant(String value) { |
| setProperty('font-variant', value, ''); |
| } |
| |
| /** Gets the value of "font-variant-ligatures" */ |
| String get fontVariantLigatures => |
| getPropertyValue('${Device.cssPrefix}font-variant-ligatures'); |
| |
| /** Sets the value of "font-variant-ligatures" */ |
| void set fontVariantLigatures(String value) { |
| setProperty('${Device.cssPrefix}font-variant-ligatures', value, ''); |
| } |
| |
| /** Gets the value of "font-weight" */ |
| String get fontWeight => |
| getPropertyValue('font-weight'); |
| |
| /** Sets the value of "font-weight" */ |
| void set fontWeight(String value) { |
| setProperty('font-weight', value, ''); |
| } |
| |
| /** Gets the value of "grid-column" */ |
| String get gridColumn => |
| getPropertyValue('${Device.cssPrefix}grid-column'); |
| |
| /** Sets the value of "grid-column" */ |
| void set gridColumn(String value) { |
| setProperty('${Device.cssPrefix}grid-column', value, ''); |
| } |
| |
| /** Gets the value of "grid-columns" */ |
| String get gridColumns => |
| getPropertyValue('${Device.cssPrefix}grid-columns'); |
| |
| /** Sets the value of "grid-columns" */ |
| void set gridColumns(String value) { |
| setProperty('${Device.cssPrefix}grid-columns', value, ''); |
| } |
| |
| /** Gets the value of "grid-row" */ |
| String get gridRow => |
| getPropertyValue('${Device.cssPrefix}grid-row'); |
| |
| /** Sets the value of "grid-row" */ |
| void set gridRow(String value) { |
| setProperty('${Device.cssPrefix}grid-row', value, ''); |
| } |
| |
| /** Gets the value of "grid-rows" */ |
| String get gridRows => |
| getPropertyValue('${Device.cssPrefix}grid-rows'); |
| |
| /** Sets the value of "grid-rows" */ |
| void set gridRows(String value) { |
| setProperty('${Device.cssPrefix}grid-rows', value, ''); |
| } |
| |
| /** Gets the value of "height" */ |
| String get height => |
| getPropertyValue('height'); |
| |
| /** Sets the value of "height" */ |
| void set height(String value) { |
| setProperty('height', value, ''); |
| } |
| |
| /** Gets the value of "highlight" */ |
| String get highlight => |
| getPropertyValue('${Device.cssPrefix}highlight'); |
| |
| /** Sets the value of "highlight" */ |
| void set highlight(String value) { |
| setProperty('${Device.cssPrefix}highlight', value, ''); |
| } |
| |
| /** Gets the value of "hyphenate-character" */ |
| String get hyphenateCharacter => |
| getPropertyValue('${Device.cssPrefix}hyphenate-character'); |
| |
| /** Sets the value of "hyphenate-character" */ |
| void set hyphenateCharacter(String value) { |
| setProperty('${Device.cssPrefix}hyphenate-character', value, ''); |
| } |
| |
| /** Gets the value of "hyphenate-limit-after" */ |
| String get hyphenateLimitAfter => |
| getPropertyValue('${Device.cssPrefix}hyphenate-limit-after'); |
| |
| /** Sets the value of "hyphenate-limit-after" */ |
| void set hyphenateLimitAfter(String value) { |
| setProperty('${Device.cssPrefix}hyphenate-limit-after', value, ''); |
| } |
| |
| /** Gets the value of "hyphenate-limit-before" */ |
| String get hyphenateLimitBefore => |
| getPropertyValue('${Device.cssPrefix}hyphenate-limit-before'); |
| |
| /** Sets the value of "hyphenate-limit-before" */ |
| void set hyphenateLimitBefore(String value) { |
| setProperty('${Device.cssPrefix}hyphenate-limit-before', value, ''); |
| } |
| |
| /** Gets the value of "hyphenate-limit-lines" */ |
| String get hyphenateLimitLines => |
| getPropertyValue('${Device.cssPrefix}hyphenate-limit-lines'); |
| |
| /** Sets the value of "hyphenate-limit-lines" */ |
| void set hyphenateLimitLines(String value) { |
| setProperty('${Device.cssPrefix}hyphenate-limit-lines', value, ''); |
| } |
| |
| /** Gets the value of "hyphens" */ |
| String get hyphens => |
| getPropertyValue('${Device.cssPrefix}hyphens'); |
| |
| /** Sets the value of "hyphens" */ |
| void set hyphens(String value) { |
| setProperty('${Device.cssPrefix}hyphens', value, ''); |
| } |
| |
| /** Gets the value of "image-orientation" */ |
| String get imageOrientation => |
| getPropertyValue('image-orientation'); |
| |
| /** Sets the value of "image-orientation" */ |
| void set imageOrientation(String value) { |
| setProperty('image-orientation', value, ''); |
| } |
| |
| /** Gets the value of "image-rendering" */ |
| String get imageRendering => |
| getPropertyValue('image-rendering'); |
| |
| /** Sets the value of "image-rendering" */ |
| void set imageRendering(String value) { |
| setProperty('image-rendering', value, ''); |
| } |
| |
| /** Gets the value of "image-resolution" */ |
| String get imageResolution => |
| getPropertyValue('image-resolution'); |
| |
| /** Sets the value of "image-resolution" */ |
| void set imageResolution(String value) { |
| setProperty('image-resolution', value, ''); |
| } |
| |
| /** Gets the value of "justify-content" */ |
| String get justifyContent => |
| getPropertyValue('${Device.cssPrefix}justify-content'); |
| |
| /** Sets the value of "justify-content" */ |
| void set justifyContent(String value) { |
| setProperty('${Device.cssPrefix}justify-content', value, ''); |
| } |
| |
| /** Gets the value of "left" */ |
| String get left => |
| getPropertyValue('left'); |
| |
| /** Sets the value of "left" */ |
| void set left(String value) { |
| setProperty('left', value, ''); |
| } |
| |
| /** Gets the value of "letter-spacing" */ |
| String get letterSpacing => |
| getPropertyValue('letter-spacing'); |
| |
| /** Sets the value of "letter-spacing" */ |
| void set letterSpacing(String value) { |
| setProperty('letter-spacing', value, ''); |
| } |
| |
| /** Gets the value of "line-align" */ |
| String get lineAlign => |
| getPropertyValue('${Device.cssPrefix}line-align'); |
| |
| /** Sets the value of "line-align" */ |
| void set lineAlign(String value) { |
| setProperty('${Device.cssPrefix}line-align', value, ''); |
| } |
| |
| /** Gets the value of "line-box-contain" */ |
| String get lineBoxContain => |
| getPropertyValue('${Device.cssPrefix}line-box-contain'); |
| |
| /** Sets the value of "line-box-contain" */ |
| void set lineBoxContain(String value) { |
| setProperty('${Device.cssPrefix}line-box-contain', value, ''); |
| } |
| |
| /** Gets the value of "line-break" */ |
| String get lineBreak => |
| getPropertyValue('${Device.cssPrefix}line-break'); |
| |
| /** Sets the value of "line-break" */ |
| void set lineBreak(String value) { |
| setProperty('${Device.cssPrefix}line-break', value, ''); |
| } |
| |
| /** Gets the value of "line-clamp" */ |
| String get lineClamp => |
| getPropertyValue('${Device.cssPrefix}line-clamp'); |
| |
| /** Sets the value of "line-clamp" */ |
| void set lineClamp(String value) { |
| setProperty('${Device.cssPrefix}line-clamp', value, ''); |
| } |
| |
| /** Gets the value of "line-grid" */ |
| String get lineGrid => |
| getPropertyValue('${Device.cssPrefix}line-grid'); |
| |
| /** Sets the value of "line-grid" */ |
| void set lineGrid(String value) { |
| setProperty('${Device.cssPrefix}line-grid', value, ''); |
| } |
| |
| /** Gets the value of "line-height" */ |
| String get lineHeight => |
| getPropertyValue('line-height'); |
| |
| /** Sets the value of "line-height" */ |
| void set lineHeight(String value) { |
| setProperty('line-height', value, ''); |
| } |
| |
| /** Gets the value of "line-snap" */ |
| String get lineSnap => |
| getPropertyValue('${Device.cssPrefix}line-snap'); |
| |
| /** Sets the value of "line-snap" */ |
| void set lineSnap(String value) { |
| setProperty('${Device.cssPrefix}line-snap', value, ''); |
| } |
| |
| /** Gets the value of "list-style" */ |
| String get listStyle => |
| getPropertyValue('list-style'); |
| |
| /** Sets the value of "list-style" */ |
| void set listStyle(String value) { |
| setProperty('list-style', value, ''); |
| } |
| |
| /** Gets the value of "list-style-image" */ |
| String get listStyleImage => |
| getPropertyValue('list-style-image'); |
| |
| /** Sets the value of "list-style-image" */ |
| void set listStyleImage(String value) { |
| setProperty('list-style-image', value, ''); |
| } |
| |
| /** Gets the value of "list-style-position" */ |
| String get listStylePosition => |
| getPropertyValue('list-style-position'); |
| |
| /** Sets the value of "list-style-position" */ |
| void set listStylePosition(String value) { |
| setProperty('list-style-position', value, ''); |
| } |
| |
| /** Gets the value of "list-style-type" */ |
| String get listStyleType => |
| getPropertyValue('list-style-type'); |
| |
| /** Sets the value of "list-style-type" */ |
| void set listStyleType(String value) { |
| setProperty('list-style-type', value, ''); |
| } |
| |
| /** Gets the value of "locale" */ |
| String get locale => |
| getPropertyValue('${Device.cssPrefix}locale'); |
| |
| /** Sets the value of "locale" */ |
| void set locale(String value) { |
| setProperty('${Device.cssPrefix}locale', value, ''); |
| } |
| |
| /** Gets the value of "logical-height" */ |
| String get logicalHeight => |
| getPropertyValue('${Device.cssPrefix}logical-height'); |
| |
| /** Sets the value of "logical-height" */ |
| void set logicalHeight(String value) { |
| setProperty('${Device.cssPrefix}logical-height', value, ''); |
| } |
| |
| /** Gets the value of "logical-width" */ |
| String get logicalWidth => |
| getPropertyValue('${Device.cssPrefix}logical-width'); |
| |
| /** Sets the value of "logical-width" */ |
| void set logicalWidth(String value) { |
| setProperty('${Device.cssPrefix}logical-width', value, ''); |
| } |
| |
| /** Gets the value of "margin" */ |
| String get margin => |
| getPropertyValue('margin'); |
| |
| /** Sets the value of "margin" */ |
| void set margin(String value) { |
| setProperty('margin', value, ''); |
| } |
| |
| /** Gets the value of "margin-after" */ |
| String get marginAfter => |
| getPropertyValue('${Device.cssPrefix}margin-after'); |
| |
| /** Sets the value of "margin-after" */ |
| void set marginAfter(String value) { |
| setProperty('${Device.cssPrefix}margin-after', value, ''); |
| } |
| |
| /** Gets the value of "margin-after-collapse" */ |
| String get marginAfterCollapse => |
| getPropertyValue('${Device.cssPrefix}margin-after-collapse'); |
| |
| /** Sets the value of "margin-after-collapse" */ |
| void set marginAfterCollapse(String value) { |
| setProperty('${Device.cssPrefix}margin-after-collapse', value, ''); |
| } |
| |
| /** Gets the value of "margin-before" */ |
| String get marginBefore => |
| getPropertyValue('${Device.cssPrefix}margin-before'); |
| |
| /** Sets the value of "margin-before" */ |
| void set marginBefore(String value) { |
| setProperty('${Device.cssPrefix}margin-before', value, ''); |
| } |
| |
| /** Gets the value of "margin-before-collapse" */ |
| String get marginBeforeCollapse => |
| getPropertyValue('${Device.cssPrefix}margin-before-collapse'); |
| |
| /** Sets the value of "margin-before-collapse" */ |
| void set marginBeforeCollapse(String value) { |
| setProperty('${Device.cssPrefix}margin-before-collapse', value, ''); |
| } |
| |
| /** Gets the value of "margin-bottom" */ |
| String get marginBottom => |
| getPropertyValue('margin-bottom'); |
| |
| /** Sets the value of "margin-bottom" */ |
| void set marginBottom(String value) { |
| setProperty('margin-bottom', value, ''); |
| } |
| |
| /** Gets the value of "margin-bottom-collapse" */ |
| String get marginBottomCollapse => |
| getPropertyValue('${Device.cssPrefix}margin-bottom-collapse'); |
| |
| /** Sets the value of "margin-bottom-collapse" */ |
| void set marginBottomCollapse(String value) { |
| setProperty('${Device.cssPrefix}margin-bottom-collapse', value, ''); |
| } |
| |
| /** Gets the value of "margin-collapse" */ |
| String get marginCollapse => |
| getPropertyValue('${Device.cssPrefix}margin-collapse'); |
| |
| /** Sets the value of "margin-collapse" */ |
| void set marginCollapse(String value) { |
| setProperty('${Device.cssPrefix}margin-collapse', value, ''); |
| } |
| |
| /** Gets the value of "margin-end" */ |
| String get marginEnd => |
| getPropertyValue('${Device.cssPrefix}margin-end'); |
| |
| /** Sets the value of "margin-end" */ |
| void set marginEnd(String value) { |
| setProperty('${Device.cssPrefix}margin-end', value, ''); |
| } |
| |
| /** Gets the value of "margin-left" */ |
| String get marginLeft => |
| getPropertyValue('margin-left'); |
| |
| /** Sets the value of "margin-left" */ |
| void set marginLeft(String value) { |
| setProperty('margin-left', value, ''); |
| } |
| |
| /** Gets the value of "margin-right" */ |
| String get marginRight => |
| getPropertyValue('margin-right'); |
| |
| /** Sets the value of "margin-right" */ |
| void set marginRight(String value) { |
| setProperty('margin-right', value, ''); |
| } |
| |
| /** Gets the value of "margin-start" */ |
| String get marginStart => |
| getPropertyValue('${Device.cssPrefix}margin-start'); |
| |
| /** Sets the value of "margin-start" */ |
| void set marginStart(String value) { |
| setProperty('${Device.cssPrefix}margin-start', value, ''); |
| } |
| |
| /** Gets the value of "margin-top" */ |
| String get marginTop => |
| getPropertyValue('margin-top'); |
| |
| /** Sets the value of "margin-top" */ |
| void set marginTop(String value) { |
| setProperty('margin-top', value, ''); |
| } |
| |
| /** Gets the value of "margin-top-collapse" */ |
| String get marginTopCollapse => |
| getPropertyValue('${Device.cssPrefix}margin-top-collapse'); |
| |
| /** Sets the value of "margin-top-collapse" */ |
| void set marginTopCollapse(String value) { |
| setProperty('${Device.cssPrefix}margin-top-collapse', value, ''); |
| } |
| |
| /** Gets the value of "marquee" */ |
| String get marquee => |
| getPropertyValue('${Device.cssPrefix}marquee'); |
| |
| /** Sets the value of "marquee" */ |
| void set marquee(String value) { |
| setProperty('${Device.cssPrefix}marquee', value, ''); |
| } |
| |
| /** Gets the value of "marquee-direction" */ |
| String get marqueeDirection => |
| getPropertyValue('${Device.cssPrefix}marquee-direction'); |
| |
| /** Sets the value of "marquee-direction" */ |
| void set marqueeDirection(String value) { |
| setProperty('${Device.cssPrefix}marquee-direction', value, ''); |
| } |
| |
| /** Gets the value of "marquee-increment" */ |
| String get marqueeIncrement => |
| getPropertyValue('${Device.cssPrefix}marquee-increment'); |
| |
| /** Sets the value of "marquee-increment" */ |
| void set marqueeIncrement(String value) { |
| setProperty('${Device.cssPrefix}marquee-increment', value, ''); |
| } |
| |
| /** Gets the value of "marquee-repetition" */ |
| String get marqueeRepetition => |
| getPropertyValue('${Device.cssPrefix}marquee-repetition'); |
| |
| /** Sets the value of "marquee-repetition" */ |
| void set marqueeRepetition(String value) { |
| setProperty('${Device.cssPrefix}marquee-repetition', value, ''); |
| } |
| |
| /** Gets the value of "marquee-speed" */ |
| String get marqueeSpeed => |
| getPropertyValue('${Device.cssPrefix}marquee-speed'); |
| |
| /** Sets the value of "marquee-speed" */ |
| void set marqueeSpeed(String value) { |
| setProperty('${Device.cssPrefix}marquee-speed', value, ''); |
| } |
| |
| /** Gets the value of "marquee-style" */ |
| String get marqueeStyle => |
| getPropertyValue('${Device.cssPrefix}marquee-style'); |
| |
| /** Sets the value of "marquee-style" */ |
| void set marqueeStyle(String value) { |
| setProperty('${Device.cssPrefix}marquee-style', value, ''); |
| } |
| |
| /** Gets the value of "mask" */ |
| String get mask => |
| getPropertyValue('${Device.cssPrefix}mask'); |
| |
| /** Sets the value of "mask" */ |
| void set mask(String value) { |
| setProperty('${Device.cssPrefix}mask', value, ''); |
| } |
| |
| /** Gets the value of "mask-attachment" */ |
| String get maskAttachment => |
| getPropertyValue('${Device.cssPrefix}mask-attachment'); |
| |
| /** Sets the value of "mask-attachment" */ |
| void set maskAttachment(String value) { |
| setProperty('${Device.cssPrefix}mask-attachment', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image" */ |
| String get maskBoxImage => |
| getPropertyValue('${Device.cssPrefix}mask-box-image'); |
| |
| /** Sets the value of "mask-box-image" */ |
| void set maskBoxImage(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image-outset" */ |
| String get maskBoxImageOutset => |
| getPropertyValue('${Device.cssPrefix}mask-box-image-outset'); |
| |
| /** Sets the value of "mask-box-image-outset" */ |
| void set maskBoxImageOutset(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image-outset', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image-repeat" */ |
| String get maskBoxImageRepeat => |
| getPropertyValue('${Device.cssPrefix}mask-box-image-repeat'); |
| |
| /** Sets the value of "mask-box-image-repeat" */ |
| void set maskBoxImageRepeat(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image-repeat', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image-slice" */ |
| String get maskBoxImageSlice => |
| getPropertyValue('${Device.cssPrefix}mask-box-image-slice'); |
| |
| /** Sets the value of "mask-box-image-slice" */ |
| void set maskBoxImageSlice(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image-slice', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image-source" */ |
| String get maskBoxImageSource => |
| getPropertyValue('${Device.cssPrefix}mask-box-image-source'); |
| |
| /** Sets the value of "mask-box-image-source" */ |
| void set maskBoxImageSource(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image-source', value, ''); |
| } |
| |
| /** Gets the value of "mask-box-image-width" */ |
| String get maskBoxImageWidth => |
| getPropertyValue('${Device.cssPrefix}mask-box-image-width'); |
| |
| /** Sets the value of "mask-box-image-width" */ |
| void set maskBoxImageWidth(String value) { |
| setProperty('${Device.cssPrefix}mask-box-image-width', value, ''); |
| } |
| |
| /** Gets the value of "mask-clip" */ |
| String get maskClip => |
| getPropertyValue('${Device.cssPrefix}mask-clip'); |
| |
| /** Sets the value of "mask-clip" */ |
| void set maskClip(String value) { |
| setProperty('${Device.cssPrefix}mask-clip', value, ''); |
| } |
| |
| /** Gets the value of "mask-composite" */ |
| String get maskComposite => |
| getPropertyValue('${Device.cssPrefix}mask-composite'); |
| |
| /** Sets the value of "mask-composite" */ |
| void set maskComposite(String value) { |
| setProperty('${Device.cssPrefix}mask-composite', value, ''); |
| } |
| |
| /** Gets the value of "mask-image" */ |
| String get maskImage => |
| getPropertyValue('${Device.cssPrefix}mask-image'); |
| |
| /** Sets the value of "mask-image" */ |
| void set maskImage(String value) { |
| setProperty('${Device.cssPrefix}mask-image', value, ''); |
| } |
| |
| /** Gets the value of "mask-origin" */ |
| String get maskOrigin => |
| getPropertyValue('${Device.cssPrefix}mask-origin'); |
| |
| /** Sets the value of "mask-origin" */ |
| void set maskOrigin(String value) { |
| setProperty('${Device.cssPrefix}mask-origin', value, ''); |
| } |
| |
| /** Gets the value of "mask-position" */ |
| String get maskPosition => |
| getPropertyValue('${Device.cssPrefix}mask-position'); |
| |
| /** Sets the value of "mask-position" */ |
| void set maskPosition(String value) { |
| setProperty('${Device.cssPrefix}mask-position', value, ''); |
| } |
| |
| /** Gets the value of "mask-position-x" */ |
| String get maskPositionX => |
| getPropertyValue('${Device.cssPrefix}mask-position-x'); |
| |
| /** Sets the value of "mask-position-x" */ |
| void set maskPositionX(String value) { |
| setProperty('${Device.cssPrefix}mask-position-x', value, ''); |
| } |
| |
| /** Gets the value of "mask-position-y" */ |
| String get maskPositionY => |
| getPropertyValue('${Device.cssPrefix}mask-position-y'); |
| |
| /** Sets the value of "mask-position-y" */ |
| void set maskPositionY(String value) { |
| setProperty('${Device.cssPrefix}mask-position-y', value, ''); |
| } |
| |
| /** Gets the value of "mask-repeat" */ |
| String get maskRepeat => |
| getPropertyValue('${Device.cssPrefix}mask-repeat'); |
| |
| /** Sets the value of "mask-repeat" */ |
| void set maskRepeat(String value) { |
| setProperty('${Device.cssPrefix}mask-repeat', value, ''); |
| } |
| |
| /** Gets the value of "mask-repeat-x" */ |
| String get maskRepeatX => |
| getPropertyValue('${Device.cssPrefix}mask-repeat-x'); |
| |
| /** Sets the value of "mask-repeat-x" */ |
| void set maskRepeatX(String value) { |
| setProperty('${Device.cssPrefix}mask-repeat-x', value, ''); |
| } |
| |
| /** Gets the value of "mask-repeat-y" */ |
| String get maskRepeatY => |
| getPropertyValue('${Device.cssPrefix}mask-repeat-y'); |
| |
| /** Sets the value of "mask-repeat-y" */ |
| void set maskRepeatY(String value) { |
| setProperty('${Device.cssPrefix}mask-repeat-y', value, ''); |
| } |
| |
| /** Gets the value of "mask-size" */ |
| String get maskSize => |
| getPropertyValue('${Device.cssPrefix}mask-size'); |
| |
| /** Sets the value of "mask-size" */ |
| void set maskSize(String value) { |
| setProperty('${Device.cssPrefix}mask-size', value, ''); |
| } |
| |
| /** Gets the value of "max-height" */ |
| String get maxHeight => |
| getPropertyValue('max-height'); |
| |
| /** Sets the value of "max-height" */ |
| void set maxHeight(String value) { |
| setProperty('max-height', value, ''); |
| } |
| |
| /** Gets the value of "max-logical-height" */ |
| String get maxLogicalHeight => |
| getPropertyValue('${Device.cssPrefix}max-logical-height'); |
| |
| /** Sets the value of "max-logical-height" */ |
| void set maxLogicalHeight(String value) { |
| setProperty('${Device.cssPrefix}max-logical-height', value, ''); |
| } |
| |
| /** Gets the value of "max-logical-width" */ |
| String get maxLogicalWidth => |
| getPropertyValue('${Device.cssPrefix}max-logical-width'); |
| |
| /** Sets the value of "max-logical-width" */ |
| void set maxLogicalWidth(String value) { |
| setProperty('${Device.cssPrefix}max-logical-width', value, ''); |
| } |
| |
| /** Gets the value of "max-width" */ |
| String get maxWidth => |
| getPropertyValue('max-width'); |
| |
| /** Sets the value of "max-width" */ |
| void set maxWidth(String value) { |
| setProperty('max-width', value, ''); |
| } |
| |
| /** Gets the value of "max-zoom" */ |
| String get maxZoom => |
| getPropertyValue('max-zoom'); |
| |
| /** Sets the value of "max-zoom" */ |
| void set maxZoom(String value) { |
| setProperty('max-zoom', value, ''); |
| } |
| |
| /** Gets the value of "min-height" */ |
| String get minHeight => |
| getPropertyValue('min-height'); |
| |
| /** Sets the value of "min-height" */ |
| void set minHeight(String value) { |
| setProperty('min-height', value, ''); |
| } |
| |
| /** Gets the value of "min-logical-height" */ |
| String get minLogicalHeight => |
| getPropertyValue('${Device.cssPrefix}min-logical-height'); |
| |
| /** Sets the value of "min-logical-height" */ |
| void set minLogicalHeight(String value) { |
| setProperty('${Device.cssPrefix}min-logical-height', value, ''); |
| } |
| |
| /** Gets the value of "min-logical-width" */ |
| String get minLogicalWidth => |
| getPropertyValue('${Device.cssPrefix}min-logical-width'); |
| |
| /** Sets the value of "min-logical-width" */ |
| void set minLogicalWidth(String value) { |
| setProperty('${Device.cssPrefix}min-logical-width', value, ''); |
| } |
| |
| /** Gets the value of "min-width" */ |
| String get minWidth => |
| getPropertyValue('min-width'); |
| |
| /** Sets the value of "min-width" */ |
| void set minWidth(String value) { |
| setProperty('min-width', value, ''); |
| } |
| |
| /** Gets the value of "min-zoom" */ |
| String get minZoom => |
| getPropertyValue('min-zoom'); |
| |
| /** Sets the value of "min-zoom" */ |
| void set minZoom(String value) { |
| setProperty('min-zoom', value, ''); |
| } |
| |
| /** Gets the value of "nbsp-mode" */ |
| String get nbspMode => |
| getPropertyValue('${Device.cssPrefix}nbsp-mode'); |
| |
| /** Sets the value of "nbsp-mode" */ |
| void set nbspMode(String value) { |
| setProperty('${Device.cssPrefix}nbsp-mode', value, ''); |
| } |
| |
| /** Gets the value of "opacity" */ |
| String get opacity => |
| getPropertyValue('opacity'); |
| |
| /** Sets the value of "opacity" */ |
| void set opacity(String value) { |
| setProperty('opacity', value, ''); |
| } |
| |
| /** Gets the value of "order" */ |
| String get order => |
| getPropertyValue('${Device.cssPrefix}order'); |
| |
| /** Sets the value of "order" */ |
| void set order(String value) { |
| setProperty('${Device.cssPrefix}order', value, ''); |
| } |
| |
| /** Gets the value of "orientation" */ |
| String get orientation => |
| getPropertyValue('orientation'); |
| |
| /** Sets the value of "orientation" */ |
| void set orientation(String value) { |
| setProperty('orientation', value, ''); |
| } |
| |
| /** Gets the value of "orphans" */ |
| String get orphans => |
| getPropertyValue('orphans'); |
| |
| /** Sets the value of "orphans" */ |
| void set orphans(String value) { |
| setProperty('orphans', value, ''); |
| } |
| |
| /** Gets the value of "outline" */ |
| String get outline => |
| getPropertyValue('outline'); |
| |
| /** Sets the value of "outline" */ |
| void set outline(String value) { |
| setProperty('outline', value, ''); |
| } |
| |
| /** Gets the value of "outline-color" */ |
| String get outlineColor => |
| getPropertyValue('outline-color'); |
| |
| /** Sets the value of "outline-color" */ |
| void set outlineColor(String value) { |
| setProperty('outline-color', value, ''); |
| } |
| |
| /** Gets the value of "outline-offset" */ |
| String get outlineOffset => |
| getPropertyValue('outline-offset'); |
| |
| /** Sets the value of "outline-offset" */ |
| void set outlineOffset(String value) { |
| setProperty('outline-offset', value, ''); |
| } |
| |
| /** Gets the value of "outline-style" */ |
| String get outlineStyle => |
| getPropertyValue('outline-style'); |
| |
| /** Sets the value of "outline-style" */ |
| void set outlineStyle(String value) { |
| setProperty('outline-style', value, ''); |
| } |
| |
| /** Gets the value of "outline-width" */ |
| String get outlineWidth => |
| getPropertyValue('outline-width'); |
| |
| /** Sets the value of "outline-width" */ |
| void set outlineWidth(String value) { |
| setProperty('outline-width', value, ''); |
| } |
| |
| /** Gets the value of "overflow" */ |
| String get overflow => |
| getPropertyValue('overflow'); |
| |
| /** Sets the value of "overflow" */ |
| void set overflow(String value) { |
| setProperty('overflow', value, ''); |
| } |
| |
| /** Gets the value of "overflow-scrolling" */ |
| String get overflowScrolling => |
| getPropertyValue('${Device.cssPrefix}overflow-scrolling'); |
| |
| /** Sets the value of "overflow-scrolling" */ |
| void set overflowScrolling(String value) { |
| setProperty('${Device.cssPrefix}overflow-scrolling', value, ''); |
| } |
| |
| /** Gets the value of "overflow-wrap" */ |
| String get overflowWrap => |
| getPropertyValue('overflow-wrap'); |
| |
| /** Sets the value of "overflow-wrap" */ |
| void set overflowWrap(String value) { |
| setProperty('overflow-wrap', value, ''); |
| } |
| |
| /** Gets the value of "overflow-x" */ |
| String get overflowX => |
| getPropertyValue('overflow-x'); |
| |
| /** Sets the value of "overflow-x" */ |
| void set overflowX(String value) { |
| setProperty('overflow-x', value, ''); |
| } |
| |
| /** Gets the value of "overflow-y" */ |
| String get overflowY => |
| getPropertyValue('overflow-y'); |
| |
| /** Sets the value of "overflow-y" */ |
| void set overflowY(String value) { |
| setProperty('overflow-y', value, ''); |
| } |
| |
| /** Gets the value of "padding" */ |
| String get padding => |
| getPropertyValue('padding'); |
| |
| /** Sets the value of "padding" */ |
| void set padding(String value) { |
| setProperty('padding', value, ''); |
| } |
| |
| /** Gets the value of "padding-after" */ |
| String get paddingAfter => |
| getPropertyValue('${Device.cssPrefix}padding-after'); |
| |
| /** Sets the value of "padding-after" */ |
| void set paddingAfter(String value) { |
| setProperty('${Device.cssPrefix}padding-after', value, ''); |
| } |
| |
| /** Gets the value of "padding-before" */ |
| String get paddingBefore => |
| getPropertyValue('${Device.cssPrefix}padding-before'); |
| |
| /** Sets the value of "padding-before" */ |
| void set paddingBefore(String value) { |
| setProperty('${Device.cssPrefix}padding-before', value, ''); |
| } |
| |
| /** Gets the value of "padding-bottom" */ |
| String get paddingBottom => |
| getPropertyValue('padding-bottom'); |
| |
| /** Sets the value of "padding-bottom" */ |
| void set paddingBottom(String value) { |
| setProperty('padding-bottom', value, ''); |
| } |
| |
| /** Gets the value of "padding-end" */ |
| String get paddingEnd => |
| getPropertyValue('${Device.cssPrefix}padding-end'); |
| |
| /** Sets the value of "padding-end" */ |
| void set paddingEnd(String value) { |
| setProperty('${Device.cssPrefix}padding-end', value, ''); |
| } |
| |
| /** Gets the value of "padding-left" */ |
| String get paddingLeft => |
| getPropertyValue('padding-left'); |
| |
| /** Sets the value of "padding-left" */ |
| void set paddingLeft(String value) { |
| setProperty('padding-left', value, ''); |
| } |
| |
| /** Gets the value of "padding-right" */ |
| String get paddingRight => |
| getPropertyValue('padding-right'); |
| |
| /** Sets the value of "padding-right" */ |
| void set paddingRight(String value) { |
| setProperty('padding-right', value, ''); |
| } |
| |
| /** Gets the value of "padding-start" */ |
| String get paddingStart => |
| getPropertyValue('${Device.cssPrefix}padding-start'); |
| |
| /** Sets the value of "padding-start" */ |
| void set paddingStart(String value) { |
| setProperty('${Device.cssPrefix}padding-start', value, ''); |
| } |
| |
| /** Gets the value of "padding-top" */ |
| String get paddingTop => |
| getPropertyValue('padding-top'); |
| |
| /** Sets the value of "padding-top" */ |
| void set paddingTop(String value) { |
| setProperty('padding-top', value, ''); |
| } |
| |
| /** Gets the value of "page" */ |
| String get page => |
| getPropertyValue('page'); |
| |
| /** Sets the value of "page" */ |
| void set page(String value) { |
| setProperty('page', value, ''); |
| } |
| |
| /** Gets the value of "page-break-after" */ |
| String get pageBreakAfter => |
| getPropertyValue('page-break-after'); |
| |
| /** Sets the value of "page-break-after" */ |
| void set pageBreakAfter(String value) { |
| setProperty('page-break-after', value, ''); |
| } |
| |
| /** Gets the value of "page-break-before" */ |
| String get pageBreakBefore => |
| getPropertyValue('page-break-before'); |
| |
| /** Sets the value of "page-break-before" */ |
| void set pageBreakBefore(String value) { |
| setProperty('page-break-before', value, ''); |
| } |
| |
| /** Gets the value of "page-break-inside" */ |
| String get pageBreakInside => |
| getPropertyValue('page-break-inside'); |
| |
| /** Sets the value of "page-break-inside" */ |
| void set pageBreakInside(String value) { |
| setProperty('page-break-inside', value, ''); |
| } |
| |
| /** Gets the value of "perspective" */ |
| String get perspective => |
| getPropertyValue('${Device.cssPrefix}perspective'); |
| |
| /** Sets the value of "perspective" */ |
| void set perspective(String value) { |
| setProperty('${Device.cssPrefix}perspective', value, ''); |
| } |
| |
| /** Gets the value of "perspective-origin" */ |
| String get perspectiveOrigin => |
| getPropertyValue('${Device.cssPrefix}perspective-origin'); |
| |
| /** Sets the value of "perspective-origin" */ |
| void set perspectiveOrigin(String value) { |
| setProperty('${Device.cssPrefix}perspective-origin', value, ''); |
| } |
| |
| /** Gets the value of "perspective-origin-x" */ |
| String get perspectiveOriginX => |
| getPropertyValue('${Device.cssPrefix}perspective-origin-x'); |
| |
| /** Sets the value of "perspective-origin-x" */ |
| void set perspectiveOriginX(String value) { |
| setProperty('${Device.cssPrefix}perspective-origin-x', value, ''); |
| } |
| |
| /** Gets the value of "perspective-origin-y" */ |
| String get perspectiveOriginY => |
| getPropertyValue('${Device.cssPrefix}perspective-origin-y'); |
| |
| /** Sets the value of "perspective-origin-y" */ |
| void set perspectiveOriginY(String value) { |
| setProperty('${Device.cssPrefix}perspective-origin-y', value, ''); |
| } |
| |
| /** Gets the value of "pointer-events" */ |
| String get pointerEvents => |
| getPropertyValue('pointer-events'); |
| |
| /** Sets the value of "pointer-events" */ |
| void set pointerEvents(String value) { |
| setProperty('pointer-events', value, ''); |
| } |
| |
| /** Gets the value of "position" */ |
| String get position => |
| getPropertyValue('position'); |
| |
| /** Sets the value of "position" */ |
| void set position(String value) { |
| setProperty('position', value, ''); |
| } |
| |
| /** Gets the value of "print-color-adjust" */ |
| String get printColorAdjust => |
| getPropertyValue('${Device.cssPrefix}print-color-adjust'); |
| |
| /** Sets the value of "print-color-adjust" */ |
| void set printColorAdjust(String value) { |
| setProperty('${Device.cssPrefix}print-color-adjust', value, ''); |
| } |
| |
| /** Gets the value of "quotes" */ |
| String get quotes => |
| getPropertyValue('quotes'); |
| |
| /** Sets the value of "quotes" */ |
| void set quotes(String value) { |
| setProperty('quotes', value, ''); |
| } |
| |
| /** Gets the value of "region-break-after" */ |
| String get regionBreakAfter => |
| getPropertyValue('${Device.cssPrefix}region-break-after'); |
| |
| /** Sets the value of "region-break-after" */ |
| void set regionBreakAfter(String value) { |
| setProperty('${Device.cssPrefix}region-break-after', value, ''); |
| } |
| |
| /** Gets the value of "region-break-before" */ |
| String get regionBreakBefore => |
| getPropertyValue('${Device.cssPrefix}region-break-before'); |
| |
| /** Sets the value of "region-break-before" */ |
| void set regionBreakBefore(String value) { |
| setProperty('${Device.cssPrefix}region-break-before', value, ''); |
| } |
| |
| /** Gets the value of "region-break-inside" */ |
| String get regionBreakInside => |
| getPropertyValue('${Device.cssPrefix}region-break-inside'); |
| |
| /** Sets the value of "region-break-inside" */ |
| void set regionBreakInside(String value) { |
| setProperty('${Device.cssPrefix}region-break-inside', value, ''); |
| } |
| |
| /** Gets the value of "region-overflow" */ |
| String get regionOverflow => |
| getPropertyValue('${Device.cssPrefix}region-overflow'); |
| |
| /** Sets the value of "region-overflow" */ |
| void set regionOverflow(String value) { |
| setProperty('${Device.cssPrefix}region-overflow', value, ''); |
| } |
| |
| /** Gets the value of "resize" */ |
| String get resize => |
| getPropertyValue('resize'); |
| |
| /** Sets the value of "resize" */ |
| void set resize(String value) { |
| setProperty('resize', value, ''); |
| } |
| |
| /** Gets the value of "right" */ |
| String get right => |
| getPropertyValue('right'); |
| |
| /** Sets the value of "right" */ |
| void set right(String value) { |
| setProperty('right', value, ''); |
| } |
| |
| /** Gets the value of "rtl-ordering" */ |
| String get rtlOrdering => |
| getPropertyValue('${Device.cssPrefix}rtl-ordering'); |
| |
| /** Sets the value of "rtl-ordering" */ |
| void set rtlOrdering(String value) { |
| setProperty('${Device.cssPrefix}rtl-ordering', value, ''); |
| } |
| |
| /** Gets the value of "shape-inside" */ |
| String get shapeInside => |
| getPropertyValue('${Device.cssPrefix}shape-inside'); |
| |
| /** Sets the value of "shape-inside" */ |
| void set shapeInside(String value) { |
| setProperty('${Device.cssPrefix}shape-inside', value, ''); |
| } |
| |
| /** Gets the value of "shape-margin" */ |
| String get shapeMargin => |
| getPropertyValue('${Device.cssPrefix}shape-margin'); |
| |
| /** Sets the value of "shape-margin" */ |
| void set shapeMargin(String value) { |
| setProperty('${Device.cssPrefix}shape-margin', value, ''); |
| } |
| |
| /** Gets the value of "shape-outside" */ |
| String get shapeOutside => |
| getPropertyValue('${Device.cssPrefix}shape-outside'); |
| |
| /** Sets the value of "shape-outside" */ |
| void set shapeOutside(String value) { |
| setProperty('${Device.cssPrefix}shape-outside', value, ''); |
| } |
| |
| /** Gets the value of "shape-padding" */ |
| String get shapePadding => |
| getPropertyValue('${Device.cssPrefix}shape-padding'); |
| |
| /** Sets the value of "shape-padding" */ |
| void set shapePadding(String value) { |
| setProperty('${Device.cssPrefix}shape-padding', value, ''); |
| } |
| |
| /** Gets the value of "size" */ |
| String get size => |
| getPropertyValue('size'); |
| |
| /** Sets the value of "size" */ |
| void set size(String value) { |
| setProperty('size', value, ''); |
| } |
| |
| /** Gets the value of "speak" */ |
| String get speak => |
| getPropertyValue('speak'); |
| |
| /** Sets the value of "speak" */ |
| void set speak(String value) { |
| setProperty('speak', value, ''); |
| } |
| |
| /** Gets the value of "src" */ |
| String get src => |
| getPropertyValue('src'); |
| |
| /** Sets the value of "src" */ |
| void set src(String value) { |
| setProperty('src', value, ''); |
| } |
| |
| /** Gets the value of "tab-size" */ |
| String get tabSize => |
| getPropertyValue('tab-size'); |
| |
| /** Sets the value of "tab-size" */ |
| void set tabSize(String value) { |
| setProperty('tab-size', value, ''); |
| } |
| |
| /** Gets the value of "table-layout" */ |
| String get tableLayout => |
| getPropertyValue('table-layout'); |
| |
| /** Sets the value of "table-layout" */ |
| void set tableLayout(String value) { |
| setProperty('table-layout', value, ''); |
| } |
| |
| /** Gets the value of "tap-highlight-color" */ |
| String get tapHighlightColor => |
| getPropertyValue('${Device.cssPrefix}tap-highlight-color'); |
| |
| /** Sets the value of "tap-highlight-color" */ |
| void set tapHighlightColor(String value) { |
| setProperty('${Device.cssPrefix}tap-highlight-color', value, ''); |
| } |
| |
| /** Gets the value of "text-align" */ |
| String get textAlign => |
| getPropertyValue('text-align'); |
| |
| /** Sets the value of "text-align" */ |
| void set textAlign(String value) { |
| setProperty('text-align', value, ''); |
| } |
| |
| /** Gets the value of "text-align-last" */ |
| String get textAlignLast => |
| getPropertyValue('${Device.cssPrefix}text-align-last'); |
| |
| /** Sets the value of "text-align-last" */ |
| void set textAlignLast(String value) { |
| setProperty('${Device.cssPrefix}text-align-last', value, ''); |
| } |
| |
| /** Gets the value of "text-combine" */ |
| String get textCombine => |
| getPropertyValue('${Device.cssPrefix}text-combine'); |
| |
| /** Sets the value of "text-combine" */ |
| void set textCombine(String value) { |
| setProperty('${Device.cssPrefix}text-combine', value, ''); |
| } |
| |
| /** Gets the value of "text-decoration" */ |
| String get textDecoration => |
| getPropertyValue('text-decoration'); |
| |
| /** Sets the value of "text-decoration" */ |
| void set textDecoration(String value) { |
| setProperty('text-decoration', value, ''); |
| } |
| |
| /** Gets the value of "text-decoration-line" */ |
| String get textDecorationLine => |
| getPropertyValue('${Device.cssPrefix}text-decoration-line'); |
| |
| /** Sets the value of "text-decoration-line" */ |
| void set textDecorationLine(String value) { |
| setProperty('${Device.cssPrefix}text-decoration-line', value, ''); |
| } |
| |
| /** Gets the value of "text-decoration-style" */ |
| String get textDecorationStyle => |
| getPropertyValue('${Device.cssPrefix}text-decoration-style'); |
| |
| /** Sets the value of "text-decoration-style" */ |
| void set textDecorationStyle(String value) { |
| setProperty('${Device.cssPrefix}text-decoration-style', value, ''); |
| } |
| |
| /** Gets the value of "text-decorations-in-effect" */ |
| String get textDecorationsInEffect => |
| getPropertyValue('${Device.cssPrefix}text-decorations-in-effect'); |
| |
| /** Sets the value of "text-decorations-in-effect" */ |
| void set textDecorationsInEffect(String value) { |
| setProperty('${Device.cssPrefix}text-decorations-in-effect', value, ''); |
| } |
| |
| /** Gets the value of "text-emphasis" */ |
| String get textEmphasis => |
| getPropertyValue('${Device.cssPrefix}text-emphasis'); |
| |
| /** Sets the value of "text-emphasis" */ |
| void set textEmphasis(String value) { |
| setProperty('${Device.cssPrefix}text-emphasis', value, ''); |
| } |
| |
| /** Gets the value of "text-emphasis-color" */ |
| String get textEmphasisColor => |
| getPropertyValue('${Device.cssPrefix}text-emphasis-color'); |
| |
| /** Sets the value of "text-emphasis-color" */ |
| void set textEmphasisColor(String value) { |
| setProperty('${Device.cssPrefix}text-emphasis-color', value, ''); |
| } |
| |
| /** Gets the value of "text-emphasis-position" */ |
| String get textEmphasisPosition => |
| getPropertyValue('${Device.cssPrefix}text-emphasis-position'); |
| |
| /** Sets the value of "text-emphasis-position" */ |
| void set textEmphasisPosition(String value) { |
| setProperty('${Device.cssPrefix}text-emphasis-position', value, ''); |
| } |
| |
| /** Gets the value of "text-emphasis-style" */ |
| String get textEmphasisStyle => |
| getPropertyValue('${Device.cssPrefix}text-emphasis-style'); |
| |
| /** Sets the value of "text-emphasis-style" */ |
| void set textEmphasisStyle(String value) { |
| setProperty('${Device.cssPrefix}text-emphasis-style', value, ''); |
| } |
| |
| /** Gets the value of "text-fill-color" */ |
| String get textFillColor => |
| getPropertyValue('${Device.cssPrefix}text-fill-color'); |
| |
| /** Sets the value of "text-fill-color" */ |
| void set textFillColor(String value) { |
| setProperty('${Device.cssPrefix}text-fill-color', value, ''); |
| } |
| |
| /** Gets the value of "text-indent" */ |
| String get textIndent => |
| getPropertyValue('text-indent'); |
| |
| /** Sets the value of "text-indent" */ |
| void set textIndent(String value) { |
| setProperty('text-indent', value, ''); |
| } |
| |
| /** Gets the value of "text-line-through" */ |
| String get textLineThrough => |
| getPropertyValue('text-line-through'); |
| |
| /** Sets the value of "text-line-through" */ |
| void set textLineThrough(String value) { |
| setProperty('text-line-through', value, ''); |
| } |
| |
| /** Gets the value of "text-line-through-color" */ |
| String get textLineThroughColor => |
| getPropertyValue('text-line-through-color'); |
| |
| /** Sets the value of "text-line-through-color" */ |
| void set textLineThroughColor(String value) { |
| setProperty('text-line-through-color', value, ''); |
| } |
| |
| /** Gets the value of "text-line-through-mode" */ |
| String get textLineThroughMode => |
| getPropertyValue('text-line-through-mode'); |
| |
| /** Sets the value of "text-line-through-mode" */ |
| void set textLineThroughMode(String value) { |
| setProperty('text-line-through-mode', value, ''); |
| } |
| |
| /** Gets the value of "text-line-through-style" */ |
| String get textLineThroughStyle => |
| getPropertyValue('text-line-through-style'); |
| |
| /** Sets the value of "text-line-through-style" */ |
| void set textLineThroughStyle(String value) { |
| setProperty('text-line-through-style', value, ''); |
| } |
| |
| /** Gets the value of "text-line-through-width" */ |
| String get textLineThroughWidth => |
| getPropertyValue('text-line-through-width'); |
| |
| /** Sets the value of "text-line-through-width" */ |
| void set textLineThroughWidth(String value) { |
| setProperty('text-line-through-width', value, ''); |
| } |
| |
| /** Gets the value of "text-orientation" */ |
| String get textOrientation => |
| getPropertyValue('${Device.cssPrefix}text-orientation'); |
| |
| /** Sets the value of "text-orientation" */ |
| void set textOrientation(String value) { |
| setProperty('${Device.cssPrefix}text-orientation', value, ''); |
| } |
| |
| /** Gets the value of "text-overflow" */ |
| String get textOverflow => |
| getPropertyValue('text-overflow'); |
| |
| /** Sets the value of "text-overflow" */ |
| void set textOverflow(String value) { |
| setProperty('text-overflow', value, ''); |
| } |
| |
| /** Gets the value of "text-overline" */ |
| String get textOverline => |
| getPropertyValue('text-overline'); |
| |
| /** Sets the value of "text-overline" */ |
| void set textOverline(String value) { |
| setProperty('text-overline', value, ''); |
| } |
| |
| /** Gets the value of "text-overline-color" */ |
| String get textOverlineColor => |
| getPropertyValue('text-overline-color'); |
| |
| /** Sets the value of "text-overline-color" */ |
| void set textOverlineColor(String value) { |
| setProperty('text-overline-color', value, ''); |
| } |
| |
| /** Gets the value of "text-overline-mode" */ |
| String get textOverlineMode => |
| getPropertyValue('text-overline-mode'); |
| |
| /** Sets the value of "text-overline-mode" */ |
| void set textOverlineMode(String value) { |
| setProperty('text-overline-mode', value, ''); |
| } |
| |
| /** Gets the value of "text-overline-style" */ |
| String get textOverlineStyle => |
| getPropertyValue('text-overline-style'); |
| |
| /** Sets the value of "text-overline-style" */ |
| void set textOverlineStyle(String value) { |
| setProperty('text-overline-style', value, ''); |
| } |
| |
| /** Gets the value of "text-overline-width" */ |
| String get textOverlineWidth => |
| getPropertyValue('text-overline-width'); |
| |
| /** Sets the value of "text-overline-width" */ |
| void set textOverlineWidth(String value) { |
| setProperty('text-overline-width', value, ''); |
| } |
| |
| /** Gets the value of "text-rendering" */ |
| String get textRendering => |
| getPropertyValue('text-rendering'); |
| |
| /** Sets the value of "text-rendering" */ |
| void set textRendering(String value) { |
| setProperty('text-rendering', value, ''); |
| } |
| |
| /** Gets the value of "text-security" */ |
| String get textSecurity => |
| getPropertyValue('${Device.cssPrefix}text-security'); |
| |
| /** Sets the value of "text-security" */ |
| void set textSecurity(String value) { |
| setProperty('${Device.cssPrefix}text-security', value, ''); |
| } |
| |
| /** Gets the value of "text-shadow" */ |
| String get textShadow => |
| getPropertyValue('text-shadow'); |
| |
| /** Sets the value of "text-shadow" */ |
| void set textShadow(String value) { |
| setProperty('text-shadow', value, ''); |
| } |
| |
| /** Gets the value of "text-size-adjust" */ |
| String get textSizeAdjust => |
| getPropertyValue('${Device.cssPrefix}text-size-adjust'); |
| |
| /** Sets the value of "text-size-adjust" */ |
| void set textSizeAdjust(String value) { |
| setProperty('${Device.cssPrefix}text-size-adjust', value, ''); |
| } |
| |
| /** Gets the value of "text-stroke" */ |
| String get textStroke => |
| getPropertyValue('${Device.cssPrefix}text-stroke'); |
| |
| /** Sets the value of "text-stroke" */ |
| void set textStroke(String value) { |
| setProperty('${Device.cssPrefix}text-stroke', value, ''); |
| } |
| |
| /** Gets the value of "text-stroke-color" */ |
| String get textStrokeColor => |
| getPropertyValue('${Device.cssPrefix}text-stroke-color'); |
| |
| /** Sets the value of "text-stroke-color" */ |
| void set textStrokeColor(String value) { |
| setProperty('${Device.cssPrefix}text-stroke-color', value, ''); |
| } |
| |
| /** Gets the value of "text-stroke-width" */ |
| String get textStrokeWidth => |
| getPropertyValue('${Device.cssPrefix}text-stroke-width'); |
| |
| /** Sets the value of "text-stroke-width" */ |
| void set textStrokeWidth(String value) { |
| setProperty('${Device.cssPrefix}text-stroke-width', value, ''); |
| } |
| |
| /** Gets the value of "text-transform" */ |
| String get textTransform => |
| getPropertyValue('text-transform'); |
| |
| /** Sets the value of "text-transform" */ |
| void set textTransform(String value) { |
| setProperty('text-transform', value, ''); |
| } |
| |
| /** Gets the value of "text-underline" */ |
| String get textUnderline => |
| getPropertyValue('text-underline'); |
| |
| /** Sets the value of "text-underline" */ |
| void set textUnderline(String value) { |
| setProperty('text-underline', value, ''); |
| } |
| |
| /** Gets the value of "text-underline-color" */ |
| String get textUnderlineColor => |
| getPropertyValue('text-underline-color'); |
| |
| /** Sets the value of "text-underline-color" */ |
| void set textUnderlineColor(String value) { |
| setProperty('text-underline-color', value, ''); |
| } |
| |
| /** Gets the value of "text-underline-mode" */ |
| String get textUnderlineMode => |
| getPropertyValue('text-underline-mode'); |
| |
| /** Sets the value of "text-underline-mode" */ |
| void set textUnderlineMode(String value) { |
| setProperty('text-underline-mode', value, ''); |
| } |
| |
| /** Gets the value of "text-underline-style" */ |
| String get textUnderlineStyle => |
| getPropertyValue('text-underline-style'); |
| |
| /** Sets the value of "text-underline-style" */ |
| void set textUnderlineStyle(String value) { |
| setProperty('text-underline-style', value, ''); |
| } |
| |
| /** Gets the value of "text-underline-width" */ |
| String get textUnderlineWidth => |
| getPropertyValue('text-underline-width'); |
| |
| /** Sets the value of "text-underline-width" */ |
| void set textUnderlineWidth(String value) { |
| setProperty('text-underline-width', value, ''); |
| } |
| |
| /** Gets the value of "top" */ |
| String get top => |
| getPropertyValue('top'); |
| |
| /** Sets the value of "top" */ |
| void set top(String value) { |
| setProperty('top', value, ''); |
| } |
| |
| /** Gets the value of "transform" */ |
| String get transform => |
| getPropertyValue('${Device.cssPrefix}transform'); |
| |
| /** Sets the value of "transform" */ |
| void set transform(String value) { |
| setProperty('${Device.cssPrefix}transform', value, ''); |
| } |
| |
| /** Gets the value of "transform-origin" */ |
| String get transformOrigin => |
| getPropertyValue('${Device.cssPrefix}transform-origin'); |
| |
| /** Sets the value of "transform-origin" */ |
| void set transformOrigin(String value) { |
| setProperty('${Device.cssPrefix}transform-origin', value, ''); |
| } |
| |
| /** Gets the value of "transform-origin-x" */ |
| String get transformOriginX => |
| getPropertyValue('${Device.cssPrefix}transform-origin-x'); |
| |
| /** Sets the value of "transform-origin-x" */ |
| void set transformOriginX(String value) { |
| setProperty('${Device.cssPrefix}transform-origin-x', value, ''); |
| } |
| |
| /** Gets the value of "transform-origin-y" */ |
| String get transformOriginY => |
| getPropertyValue('${Device.cssPrefix}transform-origin-y'); |
| |
| /** Sets the value of "transform-origin-y" */ |
| void set transformOriginY(String value) { |
| setProperty('${Device.cssPrefix}transform-origin-y', value, ''); |
| } |
| |
| /** Gets the value of "transform-origin-z" */ |
| String get transformOriginZ => |
| getPropertyValue('${Device.cssPrefix}transform-origin-z'); |
| |
| /** Sets the value of "transform-origin-z" */ |
| void set transformOriginZ(String value) { |
| setProperty('${Device.cssPrefix}transform-origin-z', value, ''); |
| } |
| |
| /** Gets the value of "transform-style" */ |
| String get transformStyle => |
| getPropertyValue('${Device.cssPrefix}transform-style'); |
| |
| /** Sets the value of "transform-style" */ |
| void set transformStyle(String value) { |
| setProperty('${Device.cssPrefix}transform-style', value, ''); |
| } |
| |
| /** Gets the value of "transition" */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| String get transition => |
| getPropertyValue('${Device.cssPrefix}transition'); |
| |
| /** Sets the value of "transition" */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| void set transition(String value) { |
| setProperty('${Device.cssPrefix}transition', value, ''); |
| } |
| |
| /** Gets the value of "transition-delay" */ |
| String get transitionDelay => |
| getPropertyValue('${Device.cssPrefix}transition-delay'); |
| |
| /** Sets the value of "transition-delay" */ |
| void set transitionDelay(String value) { |
| setProperty('${Device.cssPrefix}transition-delay', value, ''); |
| } |
| |
| /** Gets the value of "transition-duration" */ |
| String get transitionDuration => |
| getPropertyValue('${Device.cssPrefix}transition-duration'); |
| |
| /** Sets the value of "transition-duration" */ |
| void set transitionDuration(String value) { |
| setProperty('${Device.cssPrefix}transition-duration', value, ''); |
| } |
| |
| /** Gets the value of "transition-property" */ |
| String get transitionProperty => |
| getPropertyValue('${Device.cssPrefix}transition-property'); |
| |
| /** Sets the value of "transition-property" */ |
| void set transitionProperty(String value) { |
| setProperty('${Device.cssPrefix}transition-property', value, ''); |
| } |
| |
| /** Gets the value of "transition-timing-function" */ |
| String get transitionTimingFunction => |
| getPropertyValue('${Device.cssPrefix}transition-timing-function'); |
| |
| /** Sets the value of "transition-timing-function" */ |
| void set transitionTimingFunction(String value) { |
| setProperty('${Device.cssPrefix}transition-timing-function', value, ''); |
| } |
| |
| /** Gets the value of "unicode-bidi" */ |
| String get unicodeBidi => |
| getPropertyValue('unicode-bidi'); |
| |
| /** Sets the value of "unicode-bidi" */ |
| void set unicodeBidi(String value) { |
| setProperty('unicode-bidi', value, ''); |
| } |
| |
| /** Gets the value of "unicode-range" */ |
| String get unicodeRange => |
| getPropertyValue('unicode-range'); |
| |
| /** Sets the value of "unicode-range" */ |
| void set unicodeRange(String value) { |
| setProperty('unicode-range', value, ''); |
| } |
| |
| /** Gets the value of "user-drag" */ |
| String get userDrag => |
| getPropertyValue('${Device.cssPrefix}user-drag'); |
| |
| /** Sets the value of "user-drag" */ |
| void set userDrag(String value) { |
| setProperty('${Device.cssPrefix}user-drag', value, ''); |
| } |
| |
| /** Gets the value of "user-modify" */ |
| String get userModify => |
| getPropertyValue('${Device.cssPrefix}user-modify'); |
| |
| /** Sets the value of "user-modify" */ |
| void set userModify(String value) { |
| setProperty('${Device.cssPrefix}user-modify', value, ''); |
| } |
| |
| /** Gets the value of "user-select" */ |
| String get userSelect => |
| getPropertyValue('${Device.cssPrefix}user-select'); |
| |
| /** Sets the value of "user-select" */ |
| void set userSelect(String value) { |
| setProperty('${Device.cssPrefix}user-select', value, ''); |
| } |
| |
| /** Gets the value of "user-zoom" */ |
| String get userZoom => |
| getPropertyValue('user-zoom'); |
| |
| /** Sets the value of "user-zoom" */ |
| void set userZoom(String value) { |
| setProperty('user-zoom', value, ''); |
| } |
| |
| /** Gets the value of "vertical-align" */ |
| String get verticalAlign => |
| getPropertyValue('vertical-align'); |
| |
| /** Sets the value of "vertical-align" */ |
| void set verticalAlign(String value) { |
| setProperty('vertical-align', value, ''); |
| } |
| |
| /** Gets the value of "visibility" */ |
| String get visibility => |
| getPropertyValue('visibility'); |
| |
| /** Sets the value of "visibility" */ |
| void set visibility(String value) { |
| setProperty('visibility', value, ''); |
| } |
| |
| /** Gets the value of "white-space" */ |
| String get whiteSpace => |
| getPropertyValue('white-space'); |
| |
| /** Sets the value of "white-space" */ |
| void set whiteSpace(String value) { |
| setProperty('white-space', value, ''); |
| } |
| |
| /** Gets the value of "widows" */ |
| String get widows => |
| getPropertyValue('widows'); |
| |
| /** Sets the value of "widows" */ |
| void set widows(String value) { |
| setProperty('widows', value, ''); |
| } |
| |
| /** Gets the value of "width" */ |
| String get width => |
| getPropertyValue('width'); |
| |
| /** Sets the value of "width" */ |
| void set width(String value) { |
| setProperty('width', value, ''); |
| } |
| |
| /** Gets the value of "word-break" */ |
| String get wordBreak => |
| getPropertyValue('word-break'); |
| |
| /** Sets the value of "word-break" */ |
| void set wordBreak(String value) { |
| setProperty('word-break', value, ''); |
| } |
| |
| /** Gets the value of "word-spacing" */ |
| String get wordSpacing => |
| getPropertyValue('word-spacing'); |
| |
| /** Sets the value of "word-spacing" */ |
| void set wordSpacing(String value) { |
| setProperty('word-spacing', value, ''); |
| } |
| |
| /** Gets the value of "word-wrap" */ |
| String get wordWrap => |
| getPropertyValue('word-wrap'); |
| |
| /** Sets the value of "word-wrap" */ |
| void set wordWrap(String value) { |
| setProperty('word-wrap', value, ''); |
| } |
| |
| /** Gets the value of "wrap" */ |
| String get wrap => |
| getPropertyValue('${Device.cssPrefix}wrap'); |
| |
| /** Sets the value of "wrap" */ |
| void set wrap(String value) { |
| setProperty('${Device.cssPrefix}wrap', value, ''); |
| } |
| |
| /** Gets the value of "wrap-flow" */ |
| String get wrapFlow => |
| getPropertyValue('${Device.cssPrefix}wrap-flow'); |
| |
| /** Sets the value of "wrap-flow" */ |
| void set wrapFlow(String value) { |
| setProperty('${Device.cssPrefix}wrap-flow', value, ''); |
| } |
| |
| /** Gets the value of "wrap-through" */ |
| String get wrapThrough => |
| getPropertyValue('${Device.cssPrefix}wrap-through'); |
| |
| /** Sets the value of "wrap-through" */ |
| void set wrapThrough(String value) { |
| setProperty('${Device.cssPrefix}wrap-through', value, ''); |
| } |
| |
| /** Gets the value of "writing-mode" */ |
| String get writingMode => |
| getPropertyValue('${Device.cssPrefix}writing-mode'); |
| |
| /** Sets the value of "writing-mode" */ |
| void set writingMode(String value) { |
| setProperty('${Device.cssPrefix}writing-mode', value, ''); |
| } |
| |
| /** Gets the value of "z-index" */ |
| String get zIndex => |
| getPropertyValue('z-index'); |
| |
| /** Sets the value of "z-index" */ |
| void set zIndex(String value) { |
| setProperty('z-index', value, ''); |
| } |
| |
| /** Gets the value of "zoom" */ |
| String get zoom => |
| getPropertyValue('zoom'); |
| |
| /** Sets the value of "zoom" */ |
| void set zoom(String value) { |
| setProperty('zoom', value, ''); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSStyleRule') |
| class CssStyleRule extends CssRule native "CSSStyleRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssStyleRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSStyleRule.selectorText') |
| @DocsEditable() |
| String selectorText; |
| |
| @DomName('CSSStyleRule.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSStyleSheet') |
| class CssStyleSheet extends StyleSheet native "CSSStyleSheet" { |
| // To suppress missing implicit constructor warnings. |
| factory CssStyleSheet._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSStyleSheet.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| |
| @DomName('CSSStyleSheet.ownerRule') |
| @DocsEditable() |
| final CssRule ownerRule; |
| |
| @DomName('CSSStyleSheet.rules') |
| @DocsEditable() |
| @Experimental() // non-standard |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> rules; |
| |
| @DomName('CSSStyleSheet.addRule') |
| @DocsEditable() |
| @Experimental() // non-standard |
| int addRule(String selector, String style, [int index]) native; |
| |
| @DomName('CSSStyleSheet.deleteRule') |
| @DocsEditable() |
| void deleteRule(int index) native; |
| |
| @DomName('CSSStyleSheet.insertRule') |
| @DocsEditable() |
| int insertRule(String rule, int index) native; |
| |
| @DomName('CSSStyleSheet.removeRule') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void removeRule(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSSupportsRule') |
| class CssSupportsRule extends CssRule native "CSSSupportsRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssSupportsRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSSupportsRule.conditionText') |
| @DocsEditable() |
| final String conditionText; |
| |
| @DomName('CSSSupportsRule.cssRules') |
| @DocsEditable() |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| final List<CssRule> cssRules; |
| |
| @DomName('CSSSupportsRule.deleteRule') |
| @DocsEditable() |
| void deleteRule(int index) native; |
| |
| @DomName('CSSSupportsRule.insertRule') |
| @DocsEditable() |
| int insertRule(String rule, int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitCSSTransformValue') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| class CssTransformValue extends _CssValueList native "WebKitCSSTransformValue" { |
| // To suppress missing implicit constructor warnings. |
| factory CssTransformValue._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitCSSTransformValue.CSS_MATRIX') |
| @DocsEditable() |
| static const int CSS_MATRIX = 11; |
| |
| @DomName('WebKitCSSTransformValue.CSS_MATRIX3D') |
| @DocsEditable() |
| static const int CSS_MATRIX3D = 21; |
| |
| @DomName('WebKitCSSTransformValue.CSS_PERSPECTIVE') |
| @DocsEditable() |
| static const int CSS_PERSPECTIVE = 20; |
| |
| @DomName('WebKitCSSTransformValue.CSS_ROTATE') |
| @DocsEditable() |
| static const int CSS_ROTATE = 4; |
| |
| @DomName('WebKitCSSTransformValue.CSS_ROTATE3D') |
| @DocsEditable() |
| static const int CSS_ROTATE3D = 17; |
| |
| @DomName('WebKitCSSTransformValue.CSS_ROTATEX') |
| @DocsEditable() |
| static const int CSS_ROTATEX = 14; |
| |
| @DomName('WebKitCSSTransformValue.CSS_ROTATEY') |
| @DocsEditable() |
| static const int CSS_ROTATEY = 15; |
| |
| @DomName('WebKitCSSTransformValue.CSS_ROTATEZ') |
| @DocsEditable() |
| static const int CSS_ROTATEZ = 16; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SCALE') |
| @DocsEditable() |
| static const int CSS_SCALE = 5; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SCALE3D') |
| @DocsEditable() |
| static const int CSS_SCALE3D = 19; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SCALEX') |
| @DocsEditable() |
| static const int CSS_SCALEX = 6; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SCALEY') |
| @DocsEditable() |
| static const int CSS_SCALEY = 7; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SCALEZ') |
| @DocsEditable() |
| static const int CSS_SCALEZ = 18; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SKEW') |
| @DocsEditable() |
| static const int CSS_SKEW = 8; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SKEWX') |
| @DocsEditable() |
| static const int CSS_SKEWX = 9; |
| |
| @DomName('WebKitCSSTransformValue.CSS_SKEWY') |
| @DocsEditable() |
| static const int CSS_SKEWY = 10; |
| |
| @DomName('WebKitCSSTransformValue.CSS_TRANSLATE') |
| @DocsEditable() |
| static const int CSS_TRANSLATE = 1; |
| |
| @DomName('WebKitCSSTransformValue.CSS_TRANSLATE3D') |
| @DocsEditable() |
| static const int CSS_TRANSLATE3D = 13; |
| |
| @DomName('WebKitCSSTransformValue.CSS_TRANSLATEX') |
| @DocsEditable() |
| static const int CSS_TRANSLATEX = 2; |
| |
| @DomName('WebKitCSSTransformValue.CSS_TRANSLATEY') |
| @DocsEditable() |
| static const int CSS_TRANSLATEY = 3; |
| |
| @DomName('WebKitCSSTransformValue.CSS_TRANSLATEZ') |
| @DocsEditable() |
| static const int CSS_TRANSLATEZ = 12; |
| |
| @DomName('WebKitCSSTransformValue.operationType') |
| @DocsEditable() |
| final int operationType; |
| |
| @DomName('WebKitCSSTransformValue.__getter__') |
| @DocsEditable() |
| _CSSValue __getter__(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSUnknownRule') |
| // http://dev.w3.org/csswg/cssom/#the-cssstylesheet-interface |
| @deprecated // deprecated |
| class CssUnknownRule extends CssRule native "CSSUnknownRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssUnknownRule._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSVariablesMap') |
| @Experimental() // untriaged |
| class CssVariablesMap extends Interceptor native "CSSVariablesMap" { |
| |
| @DomName('CSSVariablesMap.size') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int size; |
| |
| @DomName('CSSVariablesMap.clear') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void clear() native; |
| |
| @DomName('CSSVariablesMap.delete') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool delete(String name) native; |
| |
| @DomName('CSSVariablesMap.get') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String get(String name) native; |
| |
| @DomName('CSSVariablesMap.has') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool has(String name) native; |
| |
| @DomName('CSSVariablesMap.set') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void set(String name, String value) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSViewportRule') |
| @Experimental() // untriaged |
| class CssViewportRule extends CssRule native "CSSViewportRule" { |
| // To suppress missing implicit constructor warnings. |
| factory CssViewportRule._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSViewportRule.style') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final CssStyleDeclaration style; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('CustomEvent') |
| class CustomEvent extends Event native "CustomEvent" { |
| factory CustomEvent(String type, |
| {bool canBubble: true, bool cancelable: true, Object detail}) { |
| |
| final CustomEvent e = document.$dom_createEvent('CustomEvent'); |
| |
| detail = convertDartToNative_SerializedScriptValue(detail); |
| e.$dom_initCustomEvent(type, canBubble, cancelable, detail); |
| |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory CustomEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| dynamic get detail => convertNativeToDart_SerializedScriptValue(this._get_detail); |
| @JSName('detail') |
| @DomName('CustomEvent.detail') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_detail; |
| |
| @JSName('initCustomEvent') |
| @DomName('CustomEvent.initCustomEvent') |
| @DocsEditable() |
| void $dom_initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLDListElement') |
| class DListElement extends _HTMLElement native "HTMLDListElement" { |
| // To suppress missing implicit constructor warnings. |
| factory DListElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDListElement.HTMLDListElement') |
| @DocsEditable() |
| factory DListElement() => document.$dom_createElement("dl"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLDataListElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| class DataListElement extends _HTMLElement native "HTMLDataListElement" { |
| // To suppress missing implicit constructor warnings. |
| factory DataListElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDataListElement.HTMLDataListElement') |
| @DocsEditable() |
| factory DataListElement() => document.$dom_createElement("datalist"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('datalist'); |
| |
| @DomName('HTMLDataListElement.options') |
| @DocsEditable() |
| final HtmlCollection options; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Clipboard') |
| class DataTransfer extends Interceptor native "Clipboard" { |
| |
| @DomName('Clipboard.dropEffect') |
| @DocsEditable() |
| String dropEffect; |
| |
| @DomName('Clipboard.effectAllowed') |
| @DocsEditable() |
| String effectAllowed; |
| |
| @DomName('Clipboard.files') |
| @DocsEditable() |
| @Returns('FileList') |
| @Creates('FileList') |
| final List<File> files; |
| |
| @DomName('Clipboard.items') |
| @DocsEditable() |
| final DataTransferItemList items; |
| |
| @DomName('Clipboard.types') |
| @DocsEditable() |
| final List types; |
| |
| @DomName('Clipboard.clearData') |
| @DocsEditable() |
| void clearData([String type]) native; |
| |
| /** |
| * Gets the data for the specified type. |
| * |
| * The data is only available from within a drop operation (such as an |
| * [Element.onDrop] event) and will return `null` before the event is |
| * triggered. |
| * |
| * Data transfer is prohibited across domains. If a drag originates |
| * from content from another domain or protocol (HTTP vs HTTPS) then the |
| * data cannot be accessed. |
| * |
| * The [type] can have values such as: |
| * |
| * * `'Text'` |
| * * `'URL'` |
| */ |
| @DomName('Clipboard.getData') |
| @DocsEditable() |
| String getData(String type) native; |
| |
| @DomName('Clipboard.setData') |
| @DocsEditable() |
| bool setData(String type, String data) native; |
| |
| @DomName('Clipboard.setDragImage') |
| @DocsEditable() |
| void setDragImage(Element element, int x, int y) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DataTransferItem') |
| // http://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#the-datatransferitem-interface |
| @Experimental() |
| class DataTransferItem extends Interceptor native "DataTransferItem" { |
| |
| @DomName('DataTransferItem.kind') |
| @DocsEditable() |
| final String kind; |
| |
| @DomName('DataTransferItem.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('DataTransferItem.getAsFile') |
| @DocsEditable() |
| Blob getAsFile() native; |
| |
| @JSName('getAsString') |
| @DomName('DataTransferItem.getAsString') |
| @DocsEditable() |
| void _getAsString([_StringCallback callback]) native; |
| |
| @JSName('getAsString') |
| @DomName('DataTransferItem.getAsString') |
| @DocsEditable() |
| Future<String> getAsString() { |
| var completer = new Completer<String>(); |
| _getAsString( |
| (value) { completer.complete(value); }); |
| return completer.future; |
| } |
| |
| @JSName('webkitGetAsEntry') |
| @DomName('DataTransferItem.webkitGetAsEntry') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Entry getAsEntry() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DataTransferItemList') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-datatransferitemlist-interface |
| @Experimental() |
| class DataTransferItemList extends Interceptor native "DataTransferItemList" { |
| |
| @DomName('DataTransferItemList.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('DataTransferItemList.add') |
| @DocsEditable() |
| void add(data_OR_file, [String type]) native; |
| |
| @JSName('add') |
| @DomName('DataTransferItemList.add') |
| @DocsEditable() |
| void addData(String data, String type) native; |
| |
| @JSName('add') |
| @DomName('DataTransferItemList.add') |
| @DocsEditable() |
| void addFile(File file) native; |
| |
| @DomName('DataTransferItemList.clear') |
| @DocsEditable() |
| void clear() native; |
| |
| @DomName('DataTransferItemList.item') |
| @DocsEditable() |
| DataTransferItem item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('DatabaseCallback') |
| // http://www.w3.org/TR/webdatabase/#databasecallback |
| @Experimental() // deprecated |
| typedef void DatabaseCallback(database); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DedicatedWorkerGlobalScope') |
| @Experimental() // untriaged |
| class DedicatedWorkerGlobalScope extends WorkerGlobalScope native "DedicatedWorkerGlobalScope" { |
| // To suppress missing implicit constructor warnings. |
| factory DedicatedWorkerGlobalScope._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DedicatedWorkerGlobalScope.messageEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('DedicatedWorkerGlobalScope.postMessage') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void postMessage(Object message, [List messagePorts]) native; |
| |
| @DomName('DedicatedWorkerGlobalScope.onmessage') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLDetailsElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| class DetailsElement extends _HTMLElement native "HTMLDetailsElement" { |
| // To suppress missing implicit constructor warnings. |
| factory DetailsElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDetailsElement.HTMLDetailsElement') |
| @DocsEditable() |
| factory DetailsElement() => document.$dom_createElement("details"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('details'); |
| |
| @DomName('HTMLDetailsElement.open') |
| @DocsEditable() |
| bool open; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DeviceAcceleration') |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| class DeviceAcceleration extends Interceptor native "DeviceAcceleration" { |
| |
| @DomName('DeviceAcceleration.x') |
| @DocsEditable() |
| final num x; |
| |
| @DomName('DeviceAcceleration.y') |
| @DocsEditable() |
| final num y; |
| |
| @DomName('DeviceAcceleration.z') |
| @DocsEditable() |
| final num z; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DeviceMotionEvent') |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| class DeviceMotionEvent extends Event native "DeviceMotionEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory DeviceMotionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DeviceMotionEvent.acceleration') |
| @DocsEditable() |
| final DeviceAcceleration acceleration; |
| |
| @DomName('DeviceMotionEvent.accelerationIncludingGravity') |
| @DocsEditable() |
| final DeviceAcceleration accelerationIncludingGravity; |
| |
| @DomName('DeviceMotionEvent.interval') |
| @DocsEditable() |
| final num interval; |
| |
| @DomName('DeviceMotionEvent.rotationRate') |
| @DocsEditable() |
| final DeviceRotationRate rotationRate; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| @DomName('DeviceOrientationEvent') |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| class DeviceOrientationEvent extends Event native "DeviceOrientationEvent" { |
| factory DeviceOrientationEvent(String type, |
| {bool canBubble: true, bool cancelable: true, num alpha: 0, num beta: 0, |
| num gamma: 0, bool absolute: false}) { |
| var e = document.$dom_createEvent("DeviceOrientationEvent"); |
| e.$dom_initDeviceOrientationEvent(type, canBubble, cancelable, alpha, beta, |
| gamma, absolute); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory DeviceOrientationEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DeviceOrientationEvent.absolute') |
| @DocsEditable() |
| final bool absolute; |
| |
| @DomName('DeviceOrientationEvent.alpha') |
| @DocsEditable() |
| final num alpha; |
| |
| @DomName('DeviceOrientationEvent.beta') |
| @DocsEditable() |
| final num beta; |
| |
| @DomName('DeviceOrientationEvent.gamma') |
| @DocsEditable() |
| final num gamma; |
| |
| @JSName('initDeviceOrientationEvent') |
| @DomName('DeviceOrientationEvent.initDeviceOrientationEvent') |
| @DocsEditable() |
| void $dom_initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DeviceRotationRate') |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| class DeviceRotationRate extends Interceptor native "DeviceRotationRate" { |
| |
| @DomName('DeviceRotationRate.alpha') |
| @DocsEditable() |
| final num alpha; |
| |
| @DomName('DeviceRotationRate.beta') |
| @DocsEditable() |
| final num beta; |
| |
| @DomName('DeviceRotationRate.gamma') |
| @DocsEditable() |
| final num gamma; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLDialogElement') |
| @Unstable() |
| class DialogElement extends _HTMLElement native "HTMLDialogElement" { |
| // To suppress missing implicit constructor warnings. |
| factory DialogElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDialogElement.open') |
| @DocsEditable() |
| bool open; |
| |
| @DomName('HTMLDialogElement.returnValue') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String returnValue; |
| |
| @DomName('HTMLDialogElement.close') |
| @DocsEditable() |
| void close(String returnValue) native; |
| |
| @DomName('HTMLDialogElement.show') |
| @DocsEditable() |
| void show() native; |
| |
| @DomName('HTMLDialogElement.showModal') |
| @DocsEditable() |
| void showModal() native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('DirectoryEntry') |
| // http://www.w3.org/TR/file-system-api/#the-directoryentry-interface |
| @Experimental() |
| class DirectoryEntry extends Entry native "DirectoryEntry" { |
| |
| /** |
| * Create a new directory with the specified `path`. If `exclusive` is true, |
| * the returned Future will complete with an error if a directory already |
| * exists with the specified `path`. |
| */ |
| Future<Entry> createDirectory(String path, {bool exclusive: false}) { |
| return _getDirectory(path, options: |
| {'create': true, 'exclusive': exclusive}); |
| } |
| |
| /** |
| * Retrieve an already existing directory entry. The returned future will |
| * result in an error if a directory at `path` does not exist or if the item |
| * at `path` is not a directory. |
| */ |
| Future<Entry> getDirectory(String path) { |
| return _getDirectory(path); |
| } |
| |
| /** |
| * Create a new file with the specified `path`. If `exclusive` is true, |
| * the returned Future will complete with an error if a file already |
| * exists at the specified `path`. |
| */ |
| Future<Entry> createFile(String path, {bool exclusive: false}) { |
| return _getFile(path, options: {'create': true, 'exclusive': exclusive}); |
| } |
| |
| /** |
| * Retrieve an already existing file entry. The returned future will |
| * result in an error if a file at `path` does not exist or if the item at |
| * `path` is not a file. |
| */ |
| Future<Entry> getFile(String path) { |
| return _getFile(path); |
| } |
| // To suppress missing implicit constructor warnings. |
| factory DirectoryEntry._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DirectoryEntry.createReader') |
| @DocsEditable() |
| DirectoryReader createReader() native; |
| |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| void __getDirectory(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) { |
| if (errorCallback != null) { |
| var options_1 = convertDartToNative_Dictionary(options); |
| __getDirectory_1(path, options_1, successCallback, errorCallback); |
| return; |
| } |
| if (successCallback != null) { |
| var options_2 = convertDartToNative_Dictionary(options); |
| __getDirectory_2(path, options_2, successCallback); |
| return; |
| } |
| if (options != null) { |
| var options_3 = convertDartToNative_Dictionary(options); |
| __getDirectory_3(path, options_3); |
| return; |
| } |
| __getDirectory_4(path); |
| return; |
| } |
| @JSName('getDirectory') |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| void __getDirectory_1(path, options, _EntryCallback successCallback, _ErrorCallback errorCallback) native; |
| @JSName('getDirectory') |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| void __getDirectory_2(path, options, _EntryCallback successCallback) native; |
| @JSName('getDirectory') |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| void __getDirectory_3(path, options) native; |
| @JSName('getDirectory') |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| void __getDirectory_4(path) native; |
| |
| @JSName('getDirectory') |
| @DomName('DirectoryEntry.getDirectory') |
| @DocsEditable() |
| Future<Entry> _getDirectory(String path, {Map options}) { |
| var completer = new Completer<Entry>(); |
| __getDirectory(path, options : options, |
| successCallback : (value) { completer.complete(value); }, |
| errorCallback : (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) { |
| if (errorCallback != null) { |
| var options_1 = convertDartToNative_Dictionary(options); |
| __getFile_1(path, options_1, successCallback, errorCallback); |
| return; |
| } |
| if (successCallback != null) { |
| var options_2 = convertDartToNative_Dictionary(options); |
| __getFile_2(path, options_2, successCallback); |
| return; |
| } |
| if (options != null) { |
| var options_3 = convertDartToNative_Dictionary(options); |
| __getFile_3(path, options_3); |
| return; |
| } |
| __getFile_4(path); |
| return; |
| } |
| @JSName('getFile') |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| void __getFile_1(path, options, _EntryCallback successCallback, _ErrorCallback errorCallback) native; |
| @JSName('getFile') |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| void __getFile_2(path, options, _EntryCallback successCallback) native; |
| @JSName('getFile') |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| void __getFile_3(path, options) native; |
| @JSName('getFile') |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| void __getFile_4(path) native; |
| |
| @JSName('getFile') |
| @DomName('DirectoryEntry.getFile') |
| @DocsEditable() |
| Future<Entry> _getFile(String path, {Map options}) { |
| var completer = new Completer<Entry>(); |
| __getFile(path, options : options, |
| successCallback : (value) { completer.complete(value); }, |
| errorCallback : (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('removeRecursively') |
| @DomName('DirectoryEntry.removeRecursively') |
| @DocsEditable() |
| void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('removeRecursively') |
| @DomName('DirectoryEntry.removeRecursively') |
| @DocsEditable() |
| Future removeRecursively() { |
| var completer = new Completer(); |
| _removeRecursively( |
| () { completer.complete(); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| } |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DirectoryReader') |
| // http://www.w3.org/TR/file-system-api/#the-directoryreader-interface |
| @Experimental() |
| class DirectoryReader extends Interceptor native "DirectoryReader" { |
| |
| @JSName('readEntries') |
| @DomName('DirectoryReader.readEntries') |
| @DocsEditable() |
| void _readEntries(_EntriesCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('readEntries') |
| @DomName('DirectoryReader.readEntries') |
| @DocsEditable() |
| Future<List<Entry>> readEntries() { |
| var completer = new Completer<List<Entry>>(); |
| _readEntries( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * Represents an HTML <div> element. |
| * |
| * The [DivElement] is a generic container for content and does not have any |
| * special significance. It is functionally similar to [SpanElement]. |
| * |
| * The [DivElement] is a block-level element, as opposed to [SpanElement], |
| * which is an inline-level element. |
| * |
| * Example usage: |
| * |
| * DivElement div = new DivElement(); |
| * div.text = 'Here's my new DivElem |
| * document.body.elements.add(elem); |
| * |
| * See also: |
| * |
| * * [HTML <div> element](http://www.w3.org/TR/html-markup/div.html) from W3C. |
| * * [Block-level element](http://www.w3.org/TR/CSS2/visuren.html#block-boxes) from W3C. |
| * * [Inline-level element](http://www.w3.org/TR/CSS2/visuren.html#inline-boxes) from W3C. |
| */ |
| @DomName('HTMLDivElement') |
| class DivElement extends _HTMLElement native "HTMLDivElement" { |
| // To suppress missing implicit constructor warnings. |
| factory DivElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDivElement.HTMLDivElement') |
| @DocsEditable() |
| factory DivElement() => document.$dom_createElement("div"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * The base class for all documents. |
| * |
| * Each web page loaded in the browser has its own [Document] object, which is |
| * typically an [HtmlDocument]. |
| * |
| * If you aren't comfortable with DOM concepts, see the Dart tutorial |
| * [Target 2: Connect Dart & HTML](http://www.dartlang.org/docs/tutorials/connect-dart-html/). |
| */ |
| @DomName('Document') |
| class Document extends Node native "Document" |
| { |
| |
| // To suppress missing implicit constructor warnings. |
| factory Document._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Document.readystatechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> readyStateChangeEvent = const EventStreamProvider<Event>('readystatechange'); |
| |
| @DomName('Document.securitypolicyviolationEvent') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#widl-Document-onsecuritypolicyviolation |
| @Experimental() |
| static const EventStreamProvider<SecurityPolicyViolationEvent> securityPolicyViolationEvent = const EventStreamProvider<SecurityPolicyViolationEvent>('securitypolicyviolation'); |
| |
| @DomName('Document.selectionchangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> selectionChangeEvent = const EventStreamProvider<Event>('selectionchange'); |
| |
| @DomName('Document.webkitpointerlockchangeEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockchange |
| static const EventStreamProvider<Event> pointerLockChangeEvent = const EventStreamProvider<Event>('webkitpointerlockchange'); |
| |
| @DomName('Document.webkitpointerlockerrorEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockerror |
| static const EventStreamProvider<Event> pointerLockErrorEvent = const EventStreamProvider<Event>('webkitpointerlockerror'); |
| |
| @JSName('body') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.body') |
| @DocsEditable() |
| Element $dom_body; |
| |
| @DomName('Document.charset') |
| @DocsEditable() |
| @deprecated // nonstandard |
| String charset; |
| |
| @DomName('Document.cookie') |
| @DocsEditable() |
| String cookie; |
| |
| @DomName('Document.currentScript') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final ScriptElement currentScript; |
| |
| WindowBase get window => _convertNativeToDart_Window(this._get_window); |
| @JSName('defaultView') |
| @DomName('Document.window') |
| @DocsEditable() |
| @Experimental() // untriaged |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| @Creates('Window|=Object|Null') |
| @Returns('Window|=Object|Null') |
| final dynamic _get_window; |
| |
| @DomName('Document.documentElement') |
| @DocsEditable() |
| final Element documentElement; |
| |
| @DomName('Document.domain') |
| @DocsEditable() |
| final String domain; |
| |
| @DomName('Document.fontloader') |
| @DocsEditable() |
| // http://www.w3.org/TR/css3-fonts/#document-fontloader |
| @Experimental() |
| final FontLoader fontloader; |
| |
| @JSName('head') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.head') |
| @DocsEditable() |
| final HeadElement $dom_head; |
| |
| @DomName('Document.implementation') |
| @DocsEditable() |
| final DomImplementation implementation; |
| |
| @JSName('lastModified') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.lastModified') |
| @DocsEditable() |
| final String $dom_lastModified; |
| |
| @JSName('preferredStylesheetSet') |
| @DomName('Document.preferredStylesheetSet') |
| @DocsEditable() |
| final String $dom_preferredStylesheetSet; |
| |
| @DomName('Document.readyState') |
| @DocsEditable() |
| final String readyState; |
| |
| @JSName('referrer') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.referrer') |
| @DocsEditable() |
| final String $dom_referrer; |
| |
| @DomName('Document.securityPolicy') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#idl-def-SecurityPolicy |
| @Experimental() |
| final SecurityPolicy securityPolicy; |
| |
| @JSName('selectedStylesheetSet') |
| @DomName('Document.selectedStylesheetSet') |
| @DocsEditable() |
| String $dom_selectedStylesheetSet; |
| |
| @JSName('styleSheets') |
| /// Moved to [HtmlDocument] |
| @DomName('Document.styleSheets') |
| @DocsEditable() |
| @Returns('_StyleSheetList') |
| @Creates('_StyleSheetList') |
| final List<StyleSheet> $dom_styleSheets; |
| |
| @JSName('title') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.title') |
| @DocsEditable() |
| String $dom_title; |
| |
| @JSName('webkitFullscreenElement') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitFullscreenElement') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenelement |
| final Element $dom_webkitFullscreenElement; |
| |
| @JSName('webkitFullscreenEnabled') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitFullscreenEnabled') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenenabled |
| final bool $dom_webkitFullscreenEnabled; |
| |
| @JSName('webkitHidden') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitHidden') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#document |
| final bool $dom_webkitHidden; |
| |
| @JSName('webkitIsFullScreen') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitIsFullScreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @deprecated // deprecated |
| final bool $dom_webkitIsFullScreen; |
| |
| @JSName('webkitPointerLockElement') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitPointerLockElement') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-pointerLockElement |
| final Element $dom_webkitPointerLockElement; |
| |
| @JSName('webkitVisibilityState') |
| @DomName('Document.webkitVisibilityState') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#dom-document-visibilitystate |
| final String $dom_webkitVisibilityState; |
| |
| @DomName('Document.adoptNode') |
| @DocsEditable() |
| Node adoptNode(Node source) native; |
| |
| @JSName('caretRangeFromPoint') |
| /// Use the [Range] constructor instead. |
| @DomName('Document.caretRangeFromPoint') |
| @DocsEditable() |
| // http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint |
| @Experimental() |
| Range $dom_caretRangeFromPoint(int x, int y) native; |
| |
| @JSName('createCDATASection') |
| @DomName('Document.createCDATASection') |
| @DocsEditable() |
| // http://dom.spec.whatwg.org/#dom-document-createcdatasection |
| @deprecated // deprecated |
| CDataSection createCDataSection(String data) native; |
| |
| @DomName('Document.createDocumentFragment') |
| @DocsEditable() |
| DocumentFragment createDocumentFragment() native; |
| |
| @JSName('createElement') |
| /// Deprecated: use new Element.tag(tagName) instead. |
| @DomName('Document.createElement') |
| @DocsEditable() |
| Element $dom_createElement(String localName_OR_tagName, [String typeExtension]) native; |
| |
| @JSName('createElementNS') |
| @DomName('Document.createElementNS') |
| @DocsEditable() |
| Element $dom_createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) native; |
| |
| @JSName('createEvent') |
| @DomName('Document.createEvent') |
| @DocsEditable() |
| Event $dom_createEvent(String eventType) native; |
| |
| @JSName('createNodeIterator') |
| @DomName('Document.createNodeIterator') |
| @DocsEditable() |
| @Unstable() |
| NodeIterator $dom_createNodeIterator(Node root, [int whatToShow, NodeFilter filter, bool expandEntityReferences]) native; |
| |
| @JSName('createRange') |
| @DomName('Document.createRange') |
| @DocsEditable() |
| Range $dom_createRange() native; |
| |
| @JSName('createTextNode') |
| @DomName('Document.createTextNode') |
| @DocsEditable() |
| Text $dom_createTextNode(String data) native; |
| |
| @DomName('Document.createTouch') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Touch $dom_createTouch(Window window, EventTarget target, int identifier, int pageX, int pageY, int screenX, int screenY, int webkitRadiusX, int webkitRadiusY, num webkitRotationAngle, num webkitForce) { |
| var target_1 = _convertDartToNative_EventTarget(target); |
| return _$dom_createTouch_1(window, target_1, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce); |
| } |
| @JSName('createTouch') |
| @DomName('Document.createTouch') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Touch _$dom_createTouch_1(Window window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce) native; |
| |
| @JSName('createTouchList') |
| /// Use the [TouchList] constructor instead. |
| @DomName('Document.createTouchList') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| TouchList $dom_createTouchList() native; |
| |
| @JSName('createTreeWalker') |
| @DomName('Document.createTreeWalker') |
| @DocsEditable() |
| TreeWalker $dom_createTreeWalker(Node root, [int whatToShow, NodeFilter filter, bool expandEntityReferences]) native; |
| |
| @JSName('elementFromPoint') |
| @DomName('Document.elementFromPoint') |
| @DocsEditable() |
| Element $dom_elementFromPoint(int x, int y) native; |
| |
| @DomName('Document.execCommand') |
| @DocsEditable() |
| bool execCommand(String command, bool userInterface, String value) native; |
| |
| @JSName('getCSSCanvasContext') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.getCSSCanvasContext') |
| @DocsEditable() |
| // https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html |
| @Experimental() // non-standard |
| CanvasRenderingContext $dom_getCssCanvasContext(String contextId, String name, int width, int height) native; |
| |
| @DomName('Document.getElementById') |
| @DocsEditable() |
| Element getElementById(String elementId) native; |
| |
| @DomName('Document.getElementsByClassName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByClassName(String tagname) native; |
| |
| @DomName('Document.getElementsByName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByName(String elementName) native; |
| |
| @DomName('Document.getElementsByTagName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByTagName(String tagname) native; |
| |
| @DomName('Document.importNode') |
| @DocsEditable() |
| Node importNode(Node importedNode, [bool deep]) native; |
| |
| @DomName('Document.queryCommandEnabled') |
| @DocsEditable() |
| bool queryCommandEnabled(String command) native; |
| |
| @DomName('Document.queryCommandIndeterm') |
| @DocsEditable() |
| bool queryCommandIndeterm(String command) native; |
| |
| @DomName('Document.queryCommandState') |
| @DocsEditable() |
| bool queryCommandState(String command) native; |
| |
| @DomName('Document.queryCommandSupported') |
| @DocsEditable() |
| bool queryCommandSupported(String command) native; |
| |
| @DomName('Document.queryCommandValue') |
| @DocsEditable() |
| String queryCommandValue(String command) native; |
| |
| @JSName('querySelector') |
| /** |
| * Finds the first descendant element of this document that matches the |
| * specified group of selectors. |
| * |
| * Unless your webpage contains multiple documents, the top-level query |
| * method behaves the same as this method, so you should use it instead to |
| * save typing a few characters. |
| * |
| * [selectors] should be a string using CSS selector syntax. |
| * var element1 = document.query('.className'); |
| * var element2 = document.query('#id'); |
| * |
| * For details about CSS selector syntax, see the |
| * [CSS selector specification](http://www.w3.org/TR/css3-selectors/). |
| */ |
| @DomName('Document.querySelector') |
| @DocsEditable() |
| Element query(String selectors) native; |
| |
| @JSName('querySelectorAll') |
| /// Deprecated: use query("#$elementId") instead. |
| @DomName('Document.querySelectorAll') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> $dom_querySelectorAll(String selectors) native; |
| |
| @JSName('webkitCancelFullScreen') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitCancelFullScreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @deprecated // deprecated |
| void $dom_webkitCancelFullScreen() native; |
| |
| @JSName('webkitExitFullscreen') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitExitFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen |
| void $dom_webkitExitFullscreen() native; |
| |
| @JSName('webkitExitPointerLock') |
| /// Moved to [HtmlDocument]. |
| @DomName('Document.webkitExitPointerLock') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-exitPointerLock-void |
| void $dom_webkitExitPointerLock() native; |
| |
| @JSName('webkitGetNamedFlows') |
| @DomName('Document.webkitGetNamedFlows') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/css3-regions/#dom-named-flow-collection |
| NamedFlowCollection getNamedFlows() native; |
| |
| // From ParentNode |
| |
| @JSName('childElementCount') |
| @DomName('Document.childElementCount') |
| @DocsEditable() |
| final int $dom_childElementCount; |
| |
| @JSName('children') |
| @DomName('Document.children') |
| @DocsEditable() |
| final HtmlCollection $dom_children; |
| |
| @JSName('firstElementChild') |
| @DomName('Document.firstElementChild') |
| @DocsEditable() |
| final Element $dom_firstElementChild; |
| |
| @JSName('lastElementChild') |
| @DomName('Document.lastElementChild') |
| @DocsEditable() |
| final Element $dom_lastElementChild; |
| |
| @DomName('Document.onabort') |
| @DocsEditable() |
| Stream<Event> get onAbort => Element.abortEvent.forTarget(this); |
| |
| @DomName('Document.onbeforecopy') |
| @DocsEditable() |
| Stream<Event> get onBeforeCopy => Element.beforeCopyEvent.forTarget(this); |
| |
| @DomName('Document.onbeforecut') |
| @DocsEditable() |
| Stream<Event> get onBeforeCut => Element.beforeCutEvent.forTarget(this); |
| |
| @DomName('Document.onbeforepaste') |
| @DocsEditable() |
| Stream<Event> get onBeforePaste => Element.beforePasteEvent.forTarget(this); |
| |
| @DomName('Document.onblur') |
| @DocsEditable() |
| Stream<Event> get onBlur => Element.blurEvent.forTarget(this); |
| |
| @DomName('Document.onchange') |
| @DocsEditable() |
| Stream<Event> get onChange => Element.changeEvent.forTarget(this); |
| |
| @DomName('Document.onclick') |
| @DocsEditable() |
| Stream<MouseEvent> get onClick => Element.clickEvent.forTarget(this); |
| |
| @DomName('Document.oncontextmenu') |
| @DocsEditable() |
| Stream<MouseEvent> get onContextMenu => Element.contextMenuEvent.forTarget(this); |
| |
| @DomName('Document.oncopy') |
| @DocsEditable() |
| Stream<Event> get onCopy => Element.copyEvent.forTarget(this); |
| |
| @DomName('Document.oncut') |
| @DocsEditable() |
| Stream<Event> get onCut => Element.cutEvent.forTarget(this); |
| |
| @DomName('Document.ondblclick') |
| @DocsEditable() |
| Stream<Event> get onDoubleClick => Element.doubleClickEvent.forTarget(this); |
| |
| @DomName('Document.ondrag') |
| @DocsEditable() |
| Stream<MouseEvent> get onDrag => Element.dragEvent.forTarget(this); |
| |
| @DomName('Document.ondragend') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragEnd => Element.dragEndEvent.forTarget(this); |
| |
| @DomName('Document.ondragenter') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragEnter => Element.dragEnterEvent.forTarget(this); |
| |
| @DomName('Document.ondragleave') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragLeave => Element.dragLeaveEvent.forTarget(this); |
| |
| @DomName('Document.ondragover') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragOver => Element.dragOverEvent.forTarget(this); |
| |
| @DomName('Document.ondragstart') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragStart => Element.dragStartEvent.forTarget(this); |
| |
| @DomName('Document.ondrop') |
| @DocsEditable() |
| Stream<MouseEvent> get onDrop => Element.dropEvent.forTarget(this); |
| |
| @DomName('Document.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => Element.errorEvent.forTarget(this); |
| |
| @DomName('Document.onfocus') |
| @DocsEditable() |
| Stream<Event> get onFocus => Element.focusEvent.forTarget(this); |
| |
| @DomName('Document.oninput') |
| @DocsEditable() |
| Stream<Event> get onInput => Element.inputEvent.forTarget(this); |
| |
| @DomName('Document.oninvalid') |
| @DocsEditable() |
| Stream<Event> get onInvalid => Element.invalidEvent.forTarget(this); |
| |
| @DomName('Document.onkeydown') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyDown => Element.keyDownEvent.forTarget(this); |
| |
| @DomName('Document.onkeypress') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyPress => Element.keyPressEvent.forTarget(this); |
| |
| @DomName('Document.onkeyup') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyUp => Element.keyUpEvent.forTarget(this); |
| |
| @DomName('Document.onload') |
| @DocsEditable() |
| Stream<Event> get onLoad => Element.loadEvent.forTarget(this); |
| |
| @DomName('Document.onmousedown') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseDown => Element.mouseDownEvent.forTarget(this); |
| |
| @DomName('Document.onmouseenter') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<MouseEvent> get onMouseEnter => Element.mouseEnterEvent.forTarget(this); |
| |
| @DomName('Document.onmouseleave') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<MouseEvent> get onMouseLeave => Element.mouseLeaveEvent.forTarget(this); |
| |
| @DomName('Document.onmousemove') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseMove => Element.mouseMoveEvent.forTarget(this); |
| |
| @DomName('Document.onmouseout') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseOut => Element.mouseOutEvent.forTarget(this); |
| |
| @DomName('Document.onmouseover') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseOver => Element.mouseOverEvent.forTarget(this); |
| |
| @DomName('Document.onmouseup') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseUp => Element.mouseUpEvent.forTarget(this); |
| |
| @DomName('Document.onmousewheel') |
| @DocsEditable() |
| Stream<WheelEvent> get onMouseWheel => Element.mouseWheelEvent.forTarget(this); |
| |
| @DomName('Document.onpaste') |
| @DocsEditable() |
| Stream<Event> get onPaste => Element.pasteEvent.forTarget(this); |
| |
| @DomName('Document.onreadystatechange') |
| @DocsEditable() |
| Stream<Event> get onReadyStateChange => readyStateChangeEvent.forTarget(this); |
| |
| @DomName('Document.onreset') |
| @DocsEditable() |
| Stream<Event> get onReset => Element.resetEvent.forTarget(this); |
| |
| @DomName('Document.onscroll') |
| @DocsEditable() |
| Stream<Event> get onScroll => Element.scrollEvent.forTarget(this); |
| |
| @DomName('Document.onsearch') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| Stream<Event> get onSearch => Element.searchEvent.forTarget(this); |
| |
| @DomName('Document.onsecuritypolicyviolation') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#widl-Document-onsecuritypolicyviolation |
| @Experimental() |
| Stream<SecurityPolicyViolationEvent> get onSecurityPolicyViolation => securityPolicyViolationEvent.forTarget(this); |
| |
| @DomName('Document.onselect') |
| @DocsEditable() |
| Stream<Event> get onSelect => Element.selectEvent.forTarget(this); |
| |
| @DomName('Document.onselectionchange') |
| @DocsEditable() |
| Stream<Event> get onSelectionChange => selectionChangeEvent.forTarget(this); |
| |
| @DomName('Document.onselectstart') |
| @DocsEditable() |
| Stream<Event> get onSelectStart => Element.selectStartEvent.forTarget(this); |
| |
| @DomName('Document.onsubmit') |
| @DocsEditable() |
| Stream<Event> get onSubmit => Element.submitEvent.forTarget(this); |
| |
| @DomName('Document.ontouchcancel') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchCancel => Element.touchCancelEvent.forTarget(this); |
| |
| @DomName('Document.ontouchend') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchEnd => Element.touchEndEvent.forTarget(this); |
| |
| @DomName('Document.ontouchmove') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchMove => Element.touchMoveEvent.forTarget(this); |
| |
| @DomName('Document.ontouchstart') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchStart => Element.touchStartEvent.forTarget(this); |
| |
| @DomName('Document.onwebkitfullscreenchange') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| Stream<Event> get onFullscreenChange => Element.fullscreenChangeEvent.forTarget(this); |
| |
| @DomName('Document.onwebkitfullscreenerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| Stream<Event> get onFullscreenError => Element.fullscreenErrorEvent.forTarget(this); |
| |
| @DomName('Document.onwebkitpointerlockchange') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockchange |
| @Experimental() |
| Stream<Event> get onPointerLockChange => pointerLockChangeEvent.forTarget(this); |
| |
| @DomName('Document.onwebkitpointerlockerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockerror |
| @Experimental() |
| Stream<Event> get onPointerLockError => pointerLockErrorEvent.forTarget(this); |
| |
| |
| /** |
| * Finds all descendant elements of this document that match the specified |
| * group of selectors. |
| * |
| * Unless your webpage contains multiple documents, the top-level queryAll |
| * method behaves the same as this method, so you should use it instead to |
| * save typing a few characters. |
| * |
| * [selectors] should be a string using CSS selector syntax. |
| * var items = document.queryAll('.itemClassName'); |
| * |
| * For details about CSS selector syntax, see the |
| * [CSS selector specification](http://www.w3.org/TR/css3-selectors/). |
| */ |
| ElementList queryAll(String selectors) { |
| return new _FrozenElementList._wrap($dom_querySelectorAll(selectors)); |
| } |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('DocumentFragment') |
| class DocumentFragment extends Node implements ParentNode native "DocumentFragment" { |
| factory DocumentFragment() => document.createDocumentFragment(); |
| |
| factory DocumentFragment.html(String html) { |
| final fragment = new DocumentFragment(); |
| fragment.innerHtml = html; |
| return fragment; |
| } |
| |
| factory DocumentFragment.svg(String svgContent) { |
| final fragment = new DocumentFragment(); |
| final e = new svg.SvgSvgElement(); |
| e.innerHtml = svgContent; |
| |
| // Copy list first since we don't want liveness during iteration. |
| final List nodes = new List.from(e.nodes); |
| fragment.nodes.addAll(nodes); |
| return fragment; |
| } |
| |
| // Native field is used only by Dart code so does not lead to instantiation |
| // of native classes |
| @Creates('Null') |
| List<Element> _children; |
| |
| List<Element> get children { |
| if (_children == null) { |
| _children = new FilteredElementList(this); |
| } |
| return _children; |
| } |
| |
| void set children(List<Element> value) { |
| // Copy list first since we don't want liveness during iteration. |
| List copy = new List.from(value); |
| var children = this.children; |
| children.clear(); |
| children.addAll(copy); |
| } |
| |
| Element query(String selectors) => $dom_querySelector(selectors); |
| |
| List<Element> queryAll(String selectors) => |
| new _FrozenElementList._wrap($dom_querySelectorAll(selectors)); |
| |
| String get innerHtml { |
| final e = new Element.tag("div"); |
| e.append(this.clone(true)); |
| return e.innerHtml; |
| } |
| |
| // TODO(nweiz): Do we want to support some variant of innerHtml for XML and/or |
| // SVG strings? |
| void set innerHtml(String value) { |
| this.nodes.clear(); |
| |
| final e = new Element.tag("div"); |
| e.innerHtml = value; |
| |
| // Copy list first since we don't want liveness during iteration. |
| List nodes = new List.from(e.nodes, growable: false); |
| this.nodes.addAll(nodes); |
| } |
| |
| /** |
| * Adds the specified text as a text node after the last child of this |
| * document fragment. |
| */ |
| void appendText(String text) { |
| this.append(new Text(text)); |
| } |
| |
| |
| /** |
| * Parses the specified text as HTML and adds the resulting node after the |
| * last child of this document fragment. |
| */ |
| void appendHtml(String text) { |
| this.append(new DocumentFragment.html(text)); |
| } |
| |
| // To suppress missing implicit constructor warnings. |
| factory DocumentFragment._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('querySelector') |
| @DomName('DocumentFragment.querySelector') |
| @DocsEditable() |
| Element $dom_querySelector(String selectors) native; |
| |
| @JSName('querySelectorAll') |
| @DomName('DocumentFragment.querySelectorAll') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> $dom_querySelectorAll(String selectors) native; |
| |
| // From ParentNode |
| |
| @JSName('childElementCount') |
| @DomName('DocumentFragment.childElementCount') |
| @DocsEditable() |
| final int $dom_childElementCount; |
| |
| @JSName('firstElementChild') |
| @DomName('DocumentFragment.firstElementChild') |
| @DocsEditable() |
| final Element $dom_firstElementChild; |
| |
| @JSName('lastElementChild') |
| @DomName('DocumentFragment.lastElementChild') |
| @DocsEditable() |
| final Element $dom_lastElementChild; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DocumentType') |
| // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927 |
| @deprecated // stable |
| class DocumentType extends Node implements ChildNode native "DocumentType" { |
| // To suppress missing implicit constructor warnings. |
| factory DocumentType._() { throw new UnsupportedError("Not supported"); } |
| |
| // From ChildNode |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMError') |
| class DomError extends Interceptor native "DOMError" { |
| |
| @DomName('DOMError.message') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String message; |
| |
| @DomName('DOMError.name') |
| @DocsEditable() |
| final String name; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('DOMException') |
| @Unstable() |
| class DomException extends Interceptor native "DOMException" { |
| |
| static const String INDEX_SIZE = 'IndexSizeError'; |
| static const String HIERARCHY_REQUEST = 'HierarchyRequestError'; |
| static const String WRONG_DOCUMENT = 'WrongDocumentError'; |
| static const String INVALID_CHARACTER = 'InvalidCharacterError'; |
| static const String NO_MODIFICATION_ALLOWED = 'NoModificationAllowedError'; |
| static const String NOT_FOUND = 'NotFoundError'; |
| static const String NOT_SUPPORTED = 'NotSupportedError'; |
| static const String INVALID_STATE = 'InvalidStateError'; |
| static const String SYNTAX = 'SyntaxError'; |
| static const String INVALID_MODIFICATION = 'InvalidModificationError'; |
| static const String NAMESPACE = 'NamespaceError'; |
| static const String INVALID_ACCESS = 'InvalidAccessError'; |
| static const String TYPE_MISMATCH = 'TypeMismatchError'; |
| static const String SECURITY = 'SecurityError'; |
| static const String NETWORK = 'NetworkError'; |
| static const String ABORT = 'AbortError'; |
| static const String URL_MISMATCH = 'URLMismatchError'; |
| static const String QUOTA_EXCEEDED = 'QuotaExceededError'; |
| static const String TIMEOUT = 'TimeoutError'; |
| static const String INVALID_NODE_TYPE = 'InvalidNodeTypeError'; |
| static const String DATA_CLONE = 'DataCloneError'; |
| |
| String get name { |
| var errorName = JS('String', '#.name', this); |
| // Although Safari nightly has updated the name to SecurityError, Safari 5 |
| // and 6 still return SECURITY_ERR. |
| if (Device.isWebKit && errorName == 'SECURITY_ERR') return 'SecurityError'; |
| // Chrome release still uses old string, remove this line when Chrome stable |
| // also prints out SyntaxError. |
| if (Device.isWebKit && errorName == 'SYNTAX_ERR') return 'SyntaxError'; |
| return errorName; |
| } |
| |
| @DomName('DOMException.message') |
| @DocsEditable() |
| final String message; |
| |
| @DomName('DOMException.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMImplementation') |
| class DomImplementation extends Interceptor native "DOMImplementation" { |
| |
| @JSName('createCSSStyleSheet') |
| @DomName('DOMImplementation.createCSSStyleSheet') |
| @DocsEditable() |
| @Experimental() // non-standard |
| CssStyleSheet createCssStyleSheet(String title, String media) native; |
| |
| @DomName('DOMImplementation.createDocument') |
| @DocsEditable() |
| Document createDocument(String namespaceURI, String qualifiedName, DocumentType doctype) native; |
| |
| @DomName('DOMImplementation.createDocumentType') |
| @DocsEditable() |
| DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) native; |
| |
| @JSName('createHTMLDocument') |
| @DomName('DOMImplementation.createHTMLDocument') |
| @DocsEditable() |
| HtmlDocument createHtmlDocument(String title) native; |
| |
| @DomName('DOMImplementation.hasFeature') |
| @DocsEditable() |
| bool hasFeature(String feature, String version) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMParser') |
| class DomParser extends Interceptor native "DOMParser" { |
| |
| @DomName('DOMParser.DOMParser') |
| @DocsEditable() |
| factory DomParser() { |
| return DomParser._create_1(); |
| } |
| static DomParser _create_1() => JS('DomParser', 'new DOMParser()'); |
| |
| @DomName('DOMParser.parseFromString') |
| @DocsEditable() |
| Document parseFromString(String str, String contentType) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMSettableTokenList') |
| class DomSettableTokenList extends DomTokenList native "DOMSettableTokenList" { |
| // To suppress missing implicit constructor warnings. |
| factory DomSettableTokenList._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('DOMSettableTokenList.value') |
| @DocsEditable() |
| String value; |
| |
| @DomName('DOMSettableTokenList.__getter__') |
| @DocsEditable() |
| String __getter__(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMStringList') |
| class DomStringList extends Interceptor with ListMixin<String>, ImmutableListMixin<String> implements JavaScriptIndexingBehavior, List<String> native "DOMStringList" { |
| |
| @DomName('DOMStringList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| String operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("String", "#[#]", this, index); |
| } |
| void operator[]=(int index, String value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<String> mixins. |
| // String is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| String get first { |
| if (this.length > 0) { |
| return JS('String', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| String get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('String', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| String get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('String', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| String elementAt(int index) => this[index]; |
| // -- end List<String> mixins. |
| |
| @DomName('DOMStringList.contains') |
| @DocsEditable() |
| bool contains(String string) native; |
| |
| @DomName('DOMStringList.item') |
| @DocsEditable() |
| String item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMStringMap') |
| abstract class DomStringMap extends Interceptor { |
| |
| bool __delete__(String name); |
| |
| String __getter__(String name); |
| |
| void __setter__(String name, String value); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMTokenList') |
| class DomTokenList extends Interceptor native "DOMTokenList" { |
| |
| @DomName('DOMTokenList.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('DOMTokenList.contains') |
| @DocsEditable() |
| bool contains(String token) native; |
| |
| @DomName('DOMTokenList.item') |
| @DocsEditable() |
| String item(int index) native; |
| |
| @DomName('DOMTokenList.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| @DomName('DOMTokenList.toggle') |
| @DocsEditable() |
| bool toggle(String token, [bool force]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| class _ChildrenElementList extends ListBase<Element> { |
| // Raw Element. |
| final Element _element; |
| final HtmlCollection _childElements; |
| |
| _ChildrenElementList._wrap(Element element) |
| : _childElements = element.$dom_children, |
| _element = element; |
| |
| bool contains(Object element) => _childElements.contains(element); |
| |
| |
| bool get isEmpty { |
| return _element.$dom_firstElementChild == null; |
| } |
| |
| int get length { |
| return _childElements.length; |
| } |
| |
| Element operator [](int index) { |
| return _childElements[index]; |
| } |
| |
| void operator []=(int index, Element value) { |
| _element.$dom_replaceChild(value, _childElements[index]); |
| } |
| |
| void set length(int newLength) { |
| // TODO(jacobr): remove children when length is reduced. |
| throw new UnsupportedError('Cannot resize element lists'); |
| } |
| |
| Element add(Element value) { |
| _element.append(value); |
| return value; |
| } |
| |
| Iterator<Element> get iterator => toList().iterator; |
| |
| void addAll(Iterable<Element> iterable) { |
| if (iterable is _ChildNodeListLazy) { |
| iterable = new List.from(iterable); |
| } |
| |
| for (Element element in iterable) { |
| _element.append(element); |
| } |
| } |
| |
| void sort([int compare(Element a, Element b)]) { |
| throw new UnsupportedError('Cannot sort element lists'); |
| } |
| |
| void removeWhere(bool test(Element element)) { |
| _filter(test, false); |
| } |
| |
| void retainWhere(bool test(Element element)) { |
| _filter(test, true); |
| } |
| |
| void _filter(bool test(var element), bool retainMatching) { |
| var removed; |
| if (retainMatching) { |
| removed = _element.children.where((e) => !test(e)); |
| } else { |
| removed = _element.children.where(test); |
| } |
| for (var e in removed) e.remove(); |
| } |
| |
| void setRange(int start, int end, Iterable<Element> iterable, |
| [int skipCount = 0]) { |
| throw new UnimplementedError(); |
| } |
| |
| void replaceRange(int start, int end, Iterable<Element> iterable) { |
| throw new UnimplementedError(); |
| } |
| |
| void fillRange(int start, int end, [Element fillValue]) { |
| throw new UnimplementedError(); |
| } |
| |
| bool remove(Object object) { |
| if (object is Element) { |
| Element element = object; |
| if (identical(element.parentNode, _element)) { |
| _element.$dom_removeChild(element); |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| void insert(int index, Element element) { |
| if (index < 0 || index > length) { |
| throw new RangeError.range(index, 0, length); |
| } |
| if (index == length) { |
| _element.append(element); |
| } else { |
| _element.insertBefore(element, this[index]); |
| } |
| } |
| |
| void setAll(int index, Iterable<Element> iterable) { |
| throw new UnimplementedError(); |
| } |
| |
| void clear() { |
| // It is unclear if we want to keep non element nodes? |
| _element.text = ''; |
| } |
| |
| Element removeAt(int index) { |
| final result = this[index]; |
| if (result != null) { |
| _element.$dom_removeChild(result); |
| } |
| return result; |
| } |
| |
| Element removeLast() { |
| final result = this.last; |
| if (result != null) { |
| _element.$dom_removeChild(result); |
| } |
| return result; |
| } |
| |
| Element get first { |
| Element result = _element.$dom_firstElementChild; |
| if (result == null) throw new StateError("No elements"); |
| return result; |
| } |
| |
| |
| Element get last { |
| Element result = _element.$dom_lastElementChild; |
| if (result == null) throw new StateError("No elements"); |
| return result; |
| } |
| |
| Element get single { |
| if (length > 1) throw new StateError("More than one element"); |
| return first; |
| } |
| } |
| |
| /** |
| * An immutable list containing HTML elements. This list contains some |
| * additional methods when compared to regular lists for ease of CSS |
| * manipulation on a group of elements. |
| */ |
| abstract class ElementList<T extends Element> extends ListBase<T> { |
| /** |
| * The union of all CSS classes applied to the elements in this list. |
| * |
| * This set makes it easy to add, remove or toggle (add if not present, remove |
| * if present) the classes applied to a collection of elements. |
| * |
| * htmlList.classes.add('selected'); |
| * htmlList.classes.toggle('isOnline'); |
| * htmlList.classes.remove('selected'); |
| */ |
| CssClassSet get classes; |
| |
| /** Replace the classes with `value` for every element in this list. */ |
| set classes(Iterable<String> value); |
| |
| /** |
| * Access the union of all [CssStyleDeclaration]s that are associated with an |
| * [ElementList]. |
| * |
| * Grouping the style objects all together provides easy editing of specific |
| * properties of a collection of elements. Setting a specific property value |
| * will set that property in all [Element]s in the [ElementList]. Getting a |
| * specific property value will return the value of the property of the first |
| * element in the [ElementList]. |
| */ |
| CssStyleDeclarationBase get style; |
| |
| /** |
| * Access dimensions and position of the Elements in this list. |
| * |
| * Setting the height or width properties will set the height or width |
| * property for all elements in the list. This returns a rectangle with the |
| * dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Getting the height or width returns the height or width of the |
| * first Element in this list. |
| * |
| * Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. |
| */ |
| @Experimental() |
| CssRect get contentEdge; |
| |
| /** |
| * Access dimensions and position of the first Element's content + padding box |
| * in this list. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's `innerHeight` value for an element. This |
| * is also a rectangle equalling the dimensions of clientHeight and |
| * clientWidth. |
| */ |
| @Experimental() |
| CssRect get paddingEdge; |
| |
| /** |
| * Access dimensions and position of the first Element's content + padding + |
| * border box in this list. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's `outerHeight` value for an element. |
| */ |
| @Experimental() |
| CssRect get borderEdge; |
| |
| /** |
| * Access dimensions and position of the first Element's content + padding + |
| * border + margin box in this list. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's `outerHeight` value for an element. |
| */ |
| @Experimental() |
| CssRect get marginEdge; |
| |
| @DomName('Element.onabort') |
| @DocsEditable() |
| ElementStream<Event> get onAbort; |
| |
| @DomName('Element.onbeforecopy') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCopy; |
| |
| @DomName('Element.onbeforecut') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCut; |
| |
| @DomName('Element.onbeforepaste') |
| @DocsEditable() |
| ElementStream<Event> get onBeforePaste; |
| |
| @DomName('Element.onblur') |
| @DocsEditable() |
| ElementStream<Event> get onBlur; |
| |
| @DomName('Element.onchange') |
| @DocsEditable() |
| ElementStream<Event> get onChange; |
| |
| @DomName('Element.onclick') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onClick; |
| |
| @DomName('Element.oncontextmenu') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onContextMenu; |
| |
| @DomName('Element.oncopy') |
| @DocsEditable() |
| ElementStream<Event> get onCopy; |
| |
| @DomName('Element.oncut') |
| @DocsEditable() |
| ElementStream<Event> get onCut; |
| |
| @DomName('Element.ondblclick') |
| @DocsEditable() |
| ElementStream<Event> get onDoubleClick; |
| |
| @DomName('Element.ondrag') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrag; |
| |
| @DomName('Element.ondragend') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnd; |
| |
| @DomName('Element.ondragenter') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnter; |
| |
| @DomName('Element.ondragleave') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragLeave; |
| |
| @DomName('Element.ondragover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragOver; |
| |
| @DomName('Element.ondragstart') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragStart; |
| |
| @DomName('Element.ondrop') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrop; |
| |
| @DomName('Element.onerror') |
| @DocsEditable() |
| ElementStream<Event> get onError; |
| |
| @DomName('Element.onfocus') |
| @DocsEditable() |
| ElementStream<Event> get onFocus; |
| |
| @DomName('Element.oninput') |
| @DocsEditable() |
| ElementStream<Event> get onInput; |
| |
| @DomName('Element.oninvalid') |
| @DocsEditable() |
| ElementStream<Event> get onInvalid; |
| |
| @DomName('Element.onkeydown') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyDown; |
| |
| @DomName('Element.onkeypress') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyPress; |
| |
| @DomName('Element.onkeyup') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyUp; |
| |
| @DomName('Element.onload') |
| @DocsEditable() |
| ElementStream<Event> get onLoad; |
| |
| @DomName('Element.onmousedown') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseDown; |
| |
| @DomName('Element.onmouseenter') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseEnter; |
| |
| @DomName('Element.onmouseleave') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseLeave; |
| |
| @DomName('Element.onmousemove') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseMove; |
| |
| @DomName('Element.onmouseout') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOut; |
| |
| @DomName('Element.onmouseover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOver; |
| |
| @DomName('Element.onmouseup') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseUp; |
| |
| @DomName('Element.onmousewheel') |
| @DocsEditable() |
| // http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents |
| @Experimental() // non-standard |
| ElementStream<WheelEvent> get onMouseWheel; |
| |
| @DomName('Element.onpaste') |
| @DocsEditable() |
| ElementStream<Event> get onPaste; |
| |
| @DomName('Element.onreset') |
| @DocsEditable() |
| ElementStream<Event> get onReset; |
| |
| @DomName('Element.onscroll') |
| @DocsEditable() |
| ElementStream<Event> get onScroll; |
| |
| @DomName('Element.onsearch') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| ElementStream<Event> get onSearch; |
| |
| @DomName('Element.onselect') |
| @DocsEditable() |
| ElementStream<Event> get onSelect; |
| |
| @DomName('Element.onselectstart') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| ElementStream<Event> get onSelectStart; |
| |
| @DomName('Element.onsubmit') |
| @DocsEditable() |
| ElementStream<Event> get onSubmit; |
| |
| @DomName('Element.ontouchcancel') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchCancel; |
| |
| @DomName('Element.ontouchend') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnd; |
| |
| @DomName('Element.ontouchenter') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnter; |
| |
| @DomName('Element.ontouchleave') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchLeave; |
| |
| @DomName('Element.ontouchmove') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchMove; |
| |
| @DomName('Element.ontouchstart') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchStart; |
| |
| @DomName('Element.ontransitionend') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| ElementStream<TransitionEvent> get onTransitionEnd; |
| |
| @DomName('Element.onwebkitfullscreenchange') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenChange; |
| |
| @DomName('Element.onwebkitfullscreenerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenError; |
| |
| } |
| |
| // TODO(jacobr): this is an inefficient implementation but it is hard to see |
| // a better option given that we cannot quite force NodeList to be an |
| // ElementList as there are valid cases where a NodeList JavaScript object |
| // contains Node objects that are not Elements. |
| class _FrozenElementList<T extends Element> extends ListBase<T> implements ElementList { |
| final List<Node> _nodeList; |
| // The subset of _nodeList that are Elements. |
| List<Element> _elementList; |
| |
| _FrozenElementList._wrap(this._nodeList) { |
| _elementList = _nodeList.where((e) => e is Element).toList(); |
| } |
| |
| int get length => _nodeList.length; |
| |
| Element operator [](int index) => _nodeList[index]; |
| |
| void operator []=(int index, Element value) { |
| throw new UnsupportedError('Cannot modify list'); |
| } |
| |
| void set length(int newLength) { |
| throw new UnsupportedError('Cannot modify list'); |
| } |
| |
| void sort([Comparator<Element> compare]) { |
| throw new UnsupportedError('Cannot sort list'); |
| } |
| |
| Element get first => _nodeList.first; |
| |
| Element get last => _nodeList.last; |
| |
| Element get single => _nodeList.single; |
| |
| CssClassSet get classes => new _MultiElementCssClassSet(_elementList); |
| |
| CssStyleDeclarationBase get style => |
| new _CssStyleDeclarationSet(_elementList); |
| |
| void set classes(Iterable<String> value) { |
| _elementList.forEach((e) => e.classes = value); |
| } |
| |
| CssRect get contentEdge => new _ContentCssListRect(_elementList); |
| |
| CssRect get paddingEdge => _elementList.first.paddingEdge; |
| |
| CssRect get borderEdge => _elementList.first.borderEdge; |
| |
| CssRect get marginEdge => _elementList.first.marginEdge; |
| |
| @DomName('Element.onabort') |
| @DocsEditable() |
| ElementStream<Event> get onAbort => Element.abortEvent._forElementList(this); |
| |
| @DomName('Element.onbeforecopy') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCopy => Element.beforeCopyEvent._forElementList(this); |
| |
| @DomName('Element.onbeforecut') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCut => Element.beforeCutEvent._forElementList(this); |
| |
| @DomName('Element.onbeforepaste') |
| @DocsEditable() |
| ElementStream<Event> get onBeforePaste => Element.beforePasteEvent._forElementList(this); |
| |
| @DomName('Element.onblur') |
| @DocsEditable() |
| ElementStream<Event> get onBlur => Element.blurEvent._forElementList(this); |
| |
| @DomName('Element.onchange') |
| @DocsEditable() |
| ElementStream<Event> get onChange => Element.changeEvent._forElementList(this); |
| |
| @DomName('Element.onclick') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onClick => Element.clickEvent._forElementList(this); |
| |
| @DomName('Element.oncontextmenu') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onContextMenu => Element.contextMenuEvent._forElementList(this); |
| |
| @DomName('Element.oncopy') |
| @DocsEditable() |
| ElementStream<Event> get onCopy => Element.copyEvent._forElementList(this); |
| |
| @DomName('Element.oncut') |
| @DocsEditable() |
| ElementStream<Event> get onCut => Element.cutEvent._forElementList(this); |
| |
| @DomName('Element.ondblclick') |
| @DocsEditable() |
| ElementStream<Event> get onDoubleClick => Element.doubleClickEvent._forElementList(this); |
| |
| @DomName('Element.ondrag') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrag => Element.dragEvent._forElementList(this); |
| |
| @DomName('Element.ondragend') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnd => Element.dragEndEvent._forElementList(this); |
| |
| @DomName('Element.ondragenter') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnter => Element.dragEnterEvent._forElementList(this); |
| |
| @DomName('Element.ondragleave') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragLeave => Element.dragLeaveEvent._forElementList(this); |
| |
| @DomName('Element.ondragover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragOver => Element.dragOverEvent._forElementList(this); |
| |
| @DomName('Element.ondragstart') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragStart => Element.dragStartEvent._forElementList(this); |
| |
| @DomName('Element.ondrop') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrop => Element.dropEvent._forElementList(this); |
| |
| @DomName('Element.onerror') |
| @DocsEditable() |
| ElementStream<Event> get onError => Element.errorEvent._forElementList(this); |
| |
| @DomName('Element.onfocus') |
| @DocsEditable() |
| ElementStream<Event> get onFocus => Element.focusEvent._forElementList(this); |
| |
| @DomName('Element.oninput') |
| @DocsEditable() |
| ElementStream<Event> get onInput => Element.inputEvent._forElementList(this); |
| |
| @DomName('Element.oninvalid') |
| @DocsEditable() |
| ElementStream<Event> get onInvalid => Element.invalidEvent._forElementList(this); |
| |
| @DomName('Element.onkeydown') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyDown => Element.keyDownEvent._forElementList(this); |
| |
| @DomName('Element.onkeypress') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyPress => Element.keyPressEvent._forElementList(this); |
| |
| @DomName('Element.onkeyup') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyUp => Element.keyUpEvent._forElementList(this); |
| |
| @DomName('Element.onload') |
| @DocsEditable() |
| ElementStream<Event> get onLoad => Element.loadEvent._forElementList(this); |
| |
| @DomName('Element.onmousedown') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseDown => Element.mouseDownEvent._forElementList(this); |
| |
| @DomName('Element.onmouseenter') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseEnter => Element.mouseEnterEvent._forElementList(this); |
| |
| @DomName('Element.onmouseleave') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseLeave => Element.mouseLeaveEvent._forElementList(this); |
| |
| @DomName('Element.onmousemove') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseMove => Element.mouseMoveEvent._forElementList(this); |
| |
| @DomName('Element.onmouseout') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOut => Element.mouseOutEvent._forElementList(this); |
| |
| @DomName('Element.onmouseover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOver => Element.mouseOverEvent._forElementList(this); |
| |
| @DomName('Element.onmouseup') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseUp => Element.mouseUpEvent._forElementList(this); |
| |
| @DomName('Element.onmousewheel') |
| @DocsEditable() |
| // http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents |
| @Experimental() // non-standard |
| ElementStream<WheelEvent> get onMouseWheel => Element.mouseWheelEvent._forElementList(this); |
| |
| @DomName('Element.onpaste') |
| @DocsEditable() |
| ElementStream<Event> get onPaste => Element.pasteEvent._forElementList(this); |
| |
| @DomName('Element.onreset') |
| @DocsEditable() |
| ElementStream<Event> get onReset => Element.resetEvent._forElementList(this); |
| |
| @DomName('Element.onscroll') |
| @DocsEditable() |
| ElementStream<Event> get onScroll => Element.scrollEvent._forElementList(this); |
| |
| @DomName('Element.onsearch') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| ElementStream<Event> get onSearch => Element.searchEvent._forElementList(this); |
| |
| @DomName('Element.onselect') |
| @DocsEditable() |
| ElementStream<Event> get onSelect => Element.selectEvent._forElementList(this); |
| |
| @DomName('Element.onselectstart') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| ElementStream<Event> get onSelectStart => Element.selectStartEvent._forElementList(this); |
| |
| @DomName('Element.onsubmit') |
| @DocsEditable() |
| ElementStream<Event> get onSubmit => Element.submitEvent._forElementList(this); |
| |
| @DomName('Element.ontouchcancel') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchCancel => Element.touchCancelEvent._forElementList(this); |
| |
| @DomName('Element.ontouchend') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnd => Element.touchEndEvent._forElementList(this); |
| |
| @DomName('Element.ontouchenter') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnter => Element.touchEnterEvent._forElementList(this); |
| |
| @DomName('Element.ontouchleave') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchLeave => Element.touchLeaveEvent._forElementList(this); |
| |
| @DomName('Element.ontouchmove') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchMove => Element.touchMoveEvent._forElementList(this); |
| |
| @DomName('Element.ontouchstart') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchStart => Element.touchStartEvent._forElementList(this); |
| |
| @DomName('Element.ontransitionend') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| ElementStream<TransitionEvent> get onTransitionEnd => Element.transitionEndEvent._forElementList(this); |
| |
| @DomName('Element.onwebkitfullscreenchange') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenChange => Element.fullscreenChangeEvent._forElementList(this); |
| |
| @DomName('Element.onwebkitfullscreenerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenError => Element.fullscreenErrorEvent._forElementList(this); |
| |
| } |
| |
| /** |
| * An abstract class, which all HTML elements extend. |
| */ |
| @DomName('Element') |
| abstract class Element extends Node implements ParentNode, ChildNode native "Element" { |
| |
| /** |
| * Creates an HTML element from a valid fragment of HTML. |
| * |
| * The [html] fragment must represent valid HTML with a single element root, |
| * which will be parsed and returned. |
| * |
| * Important: the contents of [html] should not contain any user-supplied |
| * data. Without strict data validation it is impossible to prevent script |
| * injection exploits. |
| * |
| * It is instead recommended that elements be constructed via [Element.tag] |
| * and text be added via [text]. |
| * |
| * var element = new Element.html('<div class="foo">content</div>'); |
| */ |
| factory Element.html(String html) => |
| _ElementFactoryProvider.createElement_html(html); |
| |
| /** |
| * Creates the HTML element specified by the tag name. |
| * |
| * This is similar to [Document.createElement]. |
| * [tag] should be a valid HTML tag name. If [tag] is an unknown tag then |
| * this will create an [UnknownElement]. |
| * |
| * var divElement = new Element.tag('div'); |
| * print(divElement is DivElement); // 'true' |
| * var myElement = new Element.tag('unknownTag'); |
| * print(myElement is UnknownElement); // 'true' |
| * |
| * For standard elements it is more preferable to use the type constructors: |
| * var element = new DivElement(); |
| * |
| * See also: |
| * |
| * * [isTagSupported] |
| */ |
| factory Element.tag(String tag) => |
| _ElementFactoryProvider.createElement_tag(tag); |
| |
| /// Creates a new `<a>` element. |
| /// |
| /// This is identical to calling `new Element.tag('a')`. |
| factory Element.a() => new Element.tag('a'); |
| |
| /// Creates a new `<article>` element. |
| /// |
| /// This is identical to calling `new Element.tag('article')`. |
| factory Element.article() => new Element.tag('article'); |
| |
| /// Creates a new `<aside>` element. |
| /// |
| /// This is identical to calling `new Element.tag('aside')`. |
| factory Element.aside() => new Element.tag('aside'); |
| |
| /// Creates a new `<audio>` element. |
| /// |
| /// This is identical to calling `new Element.tag('audio')`. |
| factory Element.audio() => new Element.tag('audio'); |
| |
| /// Creates a new `<br>` element. |
| /// |
| /// This is identical to calling `new Element.tag('br')`. |
| factory Element.br() => new Element.tag('br'); |
| |
| /// Creates a new `<canvas>` element. |
| /// |
| /// This is identical to calling `new Element.tag('canvas')`. |
| factory Element.canvas() => new Element.tag('canvas'); |
| |
| /// Creates a new `<div>` element. |
| /// |
| /// This is identical to calling `new Element.tag('div')`. |
| factory Element.div() => new Element.tag('div'); |
| |
| /// Creates a new `<footer>` element. |
| /// |
| /// This is identical to calling `new Element.tag('footer')`. |
| factory Element.footer() => new Element.tag('footer'); |
| |
| /// Creates a new `<header>` element. |
| /// |
| /// This is identical to calling `new Element.tag('header')`. |
| factory Element.header() => new Element.tag('header'); |
| |
| /// Creates a new `<hr>` element. |
| /// |
| /// This is identical to calling `new Element.tag('hr')`. |
| factory Element.hr() => new Element.tag('hr'); |
| |
| /// Creates a new `<iframe>` element. |
| /// |
| /// This is identical to calling `new Element.tag('iframe')`. |
| factory Element.iframe() => new Element.tag('iframe'); |
| |
| /// Creates a new `<img>` element. |
| /// |
| /// This is identical to calling `new Element.tag('img')`. |
| factory Element.img() => new Element.tag('img'); |
| |
| /// Creates a new `<li>` element. |
| /// |
| /// This is identical to calling `new Element.tag('li')`. |
| factory Element.li() => new Element.tag('li'); |
| |
| /// Creates a new `<nav>` element. |
| /// |
| /// This is identical to calling `new Element.tag('nav')`. |
| factory Element.nav() => new Element.tag('nav'); |
| |
| /// Creates a new `<ol>` element. |
| /// |
| /// This is identical to calling `new Element.tag('ol')`. |
| factory Element.ol() => new Element.tag('ol'); |
| |
| /// Creates a new `<option>` element. |
| /// |
| /// This is identical to calling `new Element.tag('option')`. |
| factory Element.option() => new Element.tag('option'); |
| |
| /// Creates a new `<p>` element. |
| /// |
| /// This is identical to calling `new Element.tag('p')`. |
| factory Element.p() => new Element.tag('p'); |
| |
| /// Creates a new `<pre>` element. |
| /// |
| /// This is identical to calling `new Element.tag('pre')`. |
| factory Element.pre() => new Element.tag('pre'); |
| |
| /// Creates a new `<section>` element. |
| /// |
| /// This is identical to calling `new Element.tag('section')`. |
| factory Element.section() => new Element.tag('section'); |
| |
| /// Creates a new `<select>` element. |
| /// |
| /// This is identical to calling `new Element.tag('select')`. |
| factory Element.select() => new Element.tag('select'); |
| |
| /// Creates a new `<span>` element. |
| /// |
| /// This is identical to calling `new Element.tag('span')`. |
| factory Element.span() => new Element.tag('span'); |
| |
| /// Creates a new `<svg>` element. |
| /// |
| /// This is identical to calling `new Element.tag('svg')`. |
| factory Element.svg() => new Element.tag('svg'); |
| |
| /// Creates a new `<table>` element. |
| /// |
| /// This is identical to calling `new Element.tag('table')`. |
| factory Element.table() => new Element.tag('table'); |
| |
| /// Creates a new `<td>` element. |
| /// |
| /// This is identical to calling `new Element.tag('td')`. |
| factory Element.td() => new Element.tag('td'); |
| |
| /// Creates a new `<textarea>` element. |
| /// |
| /// This is identical to calling `new Element.tag('textarea')`. |
| factory Element.textarea() => new Element.tag('textarea'); |
| |
| /// Creates a new `<th>` element. |
| /// |
| /// This is identical to calling `new Element.tag('th')`. |
| factory Element.th() => new Element.tag('th'); |
| |
| /// Creates a new `<tr>` element. |
| /// |
| /// This is identical to calling `new Element.tag('tr')`. |
| factory Element.tr() => new Element.tag('tr'); |
| |
| /// Creates a new `<ul>` element. |
| /// |
| /// This is identical to calling `new Element.tag('ul')`. |
| factory Element.ul() => new Element.tag('ul'); |
| |
| /// Creates a new `<video>` element. |
| /// |
| /// This is identical to calling `new Element.tag('video')`. |
| factory Element.video() => new Element.tag('video'); |
| |
| /** |
| * All attributes on this element. |
| * |
| * Any modifications to the attribute map will automatically be applied to |
| * this element. |
| * |
| * This only includes attributes which are not in a namespace |
| * (such as 'xlink:href'), additional attributes can be accessed via |
| * [getNamespacedAttributes]. |
| */ |
| Map<String, String> get attributes => new _ElementAttributeMap(this); |
| |
| void set attributes(Map<String, String> value) { |
| Map<String, String> attributes = this.attributes; |
| attributes.clear(); |
| for (String key in value.keys) { |
| attributes[key] = value[key]; |
| } |
| } |
| |
| /** |
| * List of the direct children of this element. |
| * |
| * This collection can be used to add and remove elements from the document. |
| * |
| * var item = new DivElement(); |
| * item.text = 'Something'; |
| * document.body.children.add(item) // Item is now displayed on the page. |
| * for (var element in document.body.children) { |
| * element.style.background = 'red'; // Turns every child of body red. |
| * } |
| */ |
| List<Element> get children => new _ChildrenElementList._wrap(this); |
| |
| void set children(List<Element> value) { |
| // Copy list first since we don't want liveness during iteration. |
| List copy = new List.from(value); |
| var children = this.children; |
| children.clear(); |
| children.addAll(copy); |
| } |
| |
| /** |
| * Finds all descendent elements of this element that match the specified |
| * group of selectors. |
| * |
| * [selectors] should be a string using CSS selector syntax. |
| * |
| * var items = element.query('.itemClassName'); |
| */ |
| ElementList queryAll(String selectors) => |
| new _FrozenElementList._wrap($dom_querySelectorAll(selectors)); |
| |
| /** |
| * The set of CSS classes applied to this element. |
| * |
| * This set makes it easy to add, remove or toggle the classes applied to |
| * this element. |
| * |
| * element.classes.add('selected'); |
| * element.classes.toggle('isOnline'); |
| * element.classes.remove('selected'); |
| */ |
| CssClassSet get classes => new _ElementCssClassSet(this); |
| |
| void set classes(Iterable<String> value) { |
| CssClassSet classSet = classes; |
| classSet.clear(); |
| classSet.addAll(value); |
| } |
| |
| /** |
| * Allows access to all custom data attributes (data-*) set on this element. |
| * |
| * The keys for the map must follow these rules: |
| * |
| * * The name must not begin with 'xml'. |
| * * The name cannot contain a semi-colon (';'). |
| * * The name cannot contain any capital letters. |
| * |
| * Any keys from markup will be converted to camel-cased keys in the map. |
| * |
| * For example, HTML specified as: |
| * |
| * <div data-my-random-value='value'></div> |
| * |
| * Would be accessed in Dart as: |
| * |
| * var value = element.dataset['myRandomValue']; |
| * |
| * See also: |
| * |
| * * [Custom data attributes](http://www.w3.org/TR/html5/global-attributes.html#custom-data-attribute) |
| */ |
| Map<String, String> get dataset => |
| new _DataAttributeMap(attributes); |
| |
| void set dataset(Map<String, String> value) { |
| final data = this.dataset; |
| data.clear(); |
| for (String key in value.keys) { |
| data[key] = value[key]; |
| } |
| } |
| |
| /** |
| * Gets a map for manipulating the attributes of a particular namespace. |
| * |
| * This is primarily useful for SVG attributes such as xref:link. |
| */ |
| Map<String, String> getNamespacedAttributes(String namespace) { |
| return new _NamespacedAttributeMap(this, namespace); |
| } |
| |
| /** |
| * The set of all CSS values applied to this element, including inherited |
| * and default values. |
| * |
| * The computedStyle contains values that are inherited from other |
| * sources, such as parent elements or stylesheets. This differs from the |
| * [style] property, which contains only the values specified directly on this |
| * element. |
| * |
| * PseudoElement can be values such as `::after`, `::before`, `::marker`, |
| * `::line-marker`. |
| * |
| * See also: |
| * |
| * * [CSS Inheritance and Cascade](http://docs.webplatform.org/wiki/tutorials/inheritance_and_cascade) |
| * * [Pseudo-elements](http://docs.webplatform.org/wiki/css/selectors/pseudo-elements) |
| */ |
| CssStyleDeclaration getComputedStyle([String pseudoElement]) { |
| if (pseudoElement == null) { |
| pseudoElement = ''; |
| } |
| // TODO(jacobr): last param should be null, see b/5045788 |
| return window.$dom_getComputedStyle(this, pseudoElement); |
| } |
| |
| /** |
| * Gets the position of this element relative to the client area of the page. |
| */ |
| Rect get client => new Rect(clientLeft, clientTop, clientWidth, clientHeight); |
| |
| /** |
| * Gets the offset of this element relative to its offsetParent. |
| */ |
| Rect get offset => new Rect(offsetLeft, offsetTop, offsetWidth, offsetHeight); |
| |
| /** |
| * Adds the specified text after the last child of this element. |
| */ |
| void appendText(String text) { |
| this.insertAdjacentText('beforeend', text); |
| } |
| |
| /** |
| * Parses the specified text as HTML and adds the resulting node after the |
| * last child of this element. |
| */ |
| void appendHtml(String text) { |
| this.insertAdjacentHtml('beforeend', text); |
| } |
| |
| /** |
| * Checks to see if the tag name is supported by the current platform. |
| * |
| * The tag should be a valid HTML tag name. |
| */ |
| static bool isTagSupported(String tag) { |
| var e = _ElementFactoryProvider.createElement_tag(tag); |
| return e is Element && !(e is UnknownElement); |
| } |
| |
| /** |
| * Called by the DOM when this element has been instantiated. |
| */ |
| @Experimental() |
| void onCreated() {} |
| |
| // Hooks to support custom WebComponents. |
| |
| @Creates('Null') // Set from Dart code; does not instantiate a native type. |
| Element _xtag; |
| |
| /** |
| * Experimental support for [web components][wc]. This field stores a |
| * reference to the component implementation. It was inspired by Mozilla's |
| * [x-tags][] project. Please note: in the future it may be possible to |
| * `extend Element` from your class, in which case this field will be |
| * deprecated. |
| * |
| * If xtag has not been set, it will simply return `this` [Element]. |
| * |
| * [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html |
| * [x-tags]: http://x-tags.org/ |
| */ |
| // Note: return type is `dynamic` for convenience to suppress warnings when |
| // members of the component are used. The actual type is a subtype of Element. |
| get xtag => _xtag != null ? _xtag : this; |
| |
| void set xtag(Element value) { |
| _xtag = value; |
| } |
| |
| @DomName('Element.localName') |
| @DocsEditable() |
| String get localName => $dom_localName; |
| |
| @DomName('Element.namespaceUri') |
| @DocsEditable() |
| String get namespaceUri => $dom_namespaceUri; |
| |
| String toString() => localName; |
| |
| /** |
| * Scrolls this element into view. |
| * |
| * Only one of of the alignment options may be specified at a time. |
| * |
| * If no options are specified then this will attempt to scroll the minimum |
| * amount needed to bring the element into view. |
| * |
| * Note that alignCenter is currently only supported on WebKit platforms. If |
| * alignCenter is specified but not supported then this will fall back to |
| * alignTop. |
| * |
| * See also: |
| * |
| * * [scrollIntoView](http://docs.webplatform.org/wiki/dom/methods/scrollIntoView) |
| * * [scrollIntoViewIfNeeded](http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded) |
| */ |
| void scrollIntoView([ScrollAlignment alignment]) { |
| var hasScrollIntoViewIfNeeded = false; |
| hasScrollIntoViewIfNeeded = |
| JS('bool', '!!(#.scrollIntoViewIfNeeded)', this); |
| if (alignment == ScrollAlignment.TOP) { |
| this.$dom_scrollIntoView(true); |
| } else if (alignment == ScrollAlignment.BOTTOM) { |
| this.$dom_scrollIntoView(false); |
| } else if (hasScrollIntoViewIfNeeded) { |
| if (alignment == ScrollAlignment.CENTER) { |
| this.$dom_scrollIntoViewIfNeeded(true); |
| } else { |
| this.$dom_scrollIntoViewIfNeeded(); |
| } |
| } else { |
| this.$dom_scrollIntoView(); |
| } |
| } |
| |
| @DomName('Element.mouseWheelEvent') |
| static const EventStreamProvider<WheelEvent> mouseWheelEvent = |
| const _CustomEventStreamProvider<WheelEvent>( |
| Element._determineMouseWheelEventType); |
| |
| static String _determineMouseWheelEventType(EventTarget e) { |
| if (JS('bool', '#.onwheel !== undefined', e)) { |
| // W3C spec, and should be IE9+, but IE has a bug exposing onwheel. |
| return 'wheel'; |
| } else if (JS('bool', '#.onmousewheel !== undefined', e)) { |
| // Chrome & IE |
| return 'mousewheel'; |
| } else { |
| // Firefox |
| return 'DOMMouseScroll'; |
| } |
| } |
| |
| @DomName('Element.transitionEndEvent') |
| static const EventStreamProvider<TransitionEvent> transitionEndEvent = |
| const _CustomEventStreamProvider<TransitionEvent>( |
| Element._determineTransitionEventType); |
| |
| static String _determineTransitionEventType(EventTarget e) { |
| // Unfortunately the normal 'ontransitionend' style checks don't work here. |
| if (Device.isWebKit) { |
| return 'webkitTransitionEnd'; |
| } else if (Device.isOpera) { |
| return 'oTransitionEnd'; |
| } |
| return 'transitionend'; |
| } |
| /** |
| * Inserts text into the DOM at the specified location. |
| * |
| * To see the possible values for [where], read the doc for |
| * [insertAdjacentHtml]. |
| * |
| * See also: |
| * |
| * * [insertAdjacentHtml] |
| */ |
| void insertAdjacentText(String where, String text) { |
| if (JS('bool', '!!#.insertAdjacentText', this)) { |
| _insertAdjacentText(where, text); |
| } else { |
| _insertAdjacentNode(where, new Text(text)); |
| } |
| } |
| |
| @JSName('insertAdjacentText') |
| void _insertAdjacentText(String where, String text) native; |
| |
| /** |
| * Parses text as an HTML fragment and inserts it into the DOM at the |
| * specified location. |
| * |
| * The [where] parameter indicates where to insert the HTML fragment: |
| * |
| * * 'beforeBegin': Immediately before this element. |
| * * 'afterBegin': As the first child of this element. |
| * * 'beforeEnd': As the last child of this element. |
| * * 'afterEnd': Immediately after this element. |
| * |
| * var html = '<div class="something">content</div>'; |
| * // Inserts as the first child |
| * document.body.insertAdjacentHtml('afterBegin', html); |
| * var createdElement = document.body.children[0]; |
| * print(createdElement.classes[0]); // Prints 'something' |
| * |
| * See also: |
| * |
| * * [insertAdjacentText] |
| * * [insertAdjacentElement] |
| */ |
| void insertAdjacentHtml(String where, String html) { |
| if (JS('bool', '!!#.insertAdjacentHTML', this)) { |
| _insertAdjacentHtml(where, html); |
| } else { |
| _insertAdjacentNode(where, new DocumentFragment.html(html)); |
| } |
| } |
| |
| @JSName('insertAdjacentHTML') |
| void _insertAdjacentHtml(String where, String text) native; |
| |
| /** |
| * Inserts [element] into the DOM at the specified location. |
| * |
| * To see the possible values for [where], read the doc for |
| * [insertAdjacentHtml]. |
| * |
| * See also: |
| * |
| * * [insertAdjacentHtml] |
| */ |
| Element insertAdjacentElement(String where, Element element) { |
| if (JS('bool', '!!#.insertAdjacentElement', this)) { |
| _insertAdjacentElement(where, element); |
| } else { |
| _insertAdjacentNode(where, element); |
| } |
| return element; |
| } |
| |
| @JSName('insertAdjacentElement') |
| void _insertAdjacentElement(String where, Element element) native; |
| |
| void _insertAdjacentNode(String where, Node node) { |
| switch (where.toLowerCase()) { |
| case 'beforebegin': |
| this.parentNode.insertBefore(node, this); |
| break; |
| case 'afterbegin': |
| var first = this.nodes.length > 0 ? this.nodes[0] : null; |
| this.insertBefore(node, first); |
| break; |
| case 'beforeend': |
| this.append(node); |
| break; |
| case 'afterend': |
| this.parentNode.insertBefore(node, this.nextNode); |
| break; |
| default: |
| throw new ArgumentError("Invalid position ${where}"); |
| } |
| } |
| |
| /** |
| * Checks if this element matches the CSS selectors. |
| */ |
| @Experimental() |
| bool matches(String selectors) { |
| if (JS('bool', '!!#.matches', this)) { |
| return JS('bool', '#.matches(#)', this, selectors); |
| } else if (JS('bool', '!!#.webkitMatchesSelector', this)) { |
| return JS('bool', '#.webkitMatchesSelector(#)', this, selectors); |
| } else if (JS('bool', '!!#.mozMatchesSelector', this)) { |
| return JS('bool', '#.mozMatchesSelector(#)', this, selectors); |
| } else if (JS('bool', '!!#.msMatchesSelector', this)) { |
| return matches = JS('bool', '#.msMatchesSelector(#)', this, selectors); |
| } else { |
| throw new UnsupportedError("Not supported on this platform"); |
| } |
| } |
| |
| /** Checks if this element or any of its parents match the CSS selectors. */ |
| @Experimental() |
| bool matchesWithAncestors(String selectors) { |
| var elem = this; |
| do { |
| if (elem.matches(selectors)) return true; |
| elem = elem.parent; |
| } while(elem != null); |
| return false; |
| } |
| |
| @Creates('Null') // Set from Dart code; does not instantiate a native type. |
| Element _templateInstanceRef; |
| |
| // Note: only used if `this is! TemplateElement` |
| @Creates('Null') // Set from Dart code; does not instantiate a native type. |
| DocumentFragment _templateContent; |
| |
| bool _templateIsDecorated; |
| |
| @DomName('Element.createShadowRoot') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| ShadowRoot createShadowRoot() { |
| return JS('ShadowRoot', |
| '(#.createShadowRoot || #.webkitCreateShadowRoot).call(#)', |
| this, this, this); |
| } |
| |
| |
| /** |
| * Gets the template this node refers to. |
| * This is only supported if [isTemplate] is true. |
| */ |
| @Experimental() |
| Element get ref { |
| _ensureTemplate(); |
| |
| Element result = null; |
| var refId = attributes['ref']; |
| if (refId != null) { |
| var treeScope = this; |
| while (treeScope.parentNode != null) { |
| treeScope = treeScope.parentNode; |
| } |
| |
| // Note: JS code tests that getElementById is present. We can't do that |
| // easily, so instead check for the types known to implement it. |
| if (treeScope is Document || |
| treeScope is ShadowRoot || |
| treeScope is svg.SvgSvgElement) { |
| |
| result = treeScope.getElementById(refId); |
| } |
| } |
| |
| if (result == null) { |
| result = _templateInstanceRef; |
| if (result == null) return this; |
| } |
| |
| var nextRef = result.ref; |
| return nextRef != null ? nextRef : result; |
| } |
| |
| /** |
| * Gets the content of this template. |
| * This is only supported if [isTemplate] is true. |
| */ |
| @Experimental() |
| DocumentFragment get content { |
| _ensureTemplate(); |
| return _templateContent; |
| } |
| |
| /** |
| * Creates an instance of the template, using the provided model and optional |
| * binding delegate. |
| * |
| * This is only supported if [isTemplate] is true. |
| */ |
| @Experimental() |
| DocumentFragment createInstance(model, [BindingDelegate delegate]) { |
| _ensureTemplate(); |
| return TemplateElement.mdvPackage(this).createInstance(model, delegate); |
| } |
| |
| /** |
| * The data model which is inherited through the tree. |
| * This is only supported if [isTemplate] is true. |
| */ |
| @Experimental() |
| get model => TemplateElement.mdvPackage(this).model; |
| |
| @Experimental() |
| void set model(value) { |
| _ensureTemplate(); |
| TemplateElement.mdvPackage(this).model = value; |
| } |
| |
| /** |
| * The binding delegate which is inherited through the tree. It can be used |
| * to configure custom syntax for `{{bindings}}` inside this template. |
| * |
| * This is only supported if [isTemplate] is true. |
| */ |
| @Experimental() |
| BindingDelegate get bindingDelegate => |
| TemplateElement.mdvPackage(this).bindingDelegate; |
| |
| @Experimental() |
| void set bindingDelegate(BindingDelegate value) { |
| _ensureTemplate(); |
| TemplateElement.mdvPackage(this).bindingDelegate = value; |
| } |
| |
| // TODO(jmesserly): const set would be better |
| static const _TABLE_TAGS = const { |
| 'caption': null, |
| 'col': null, |
| 'colgroup': null, |
| 'tbody': null, |
| 'td': null, |
| 'tfoot': null, |
| 'th': null, |
| 'thead': null, |
| 'tr': null, |
| }; |
| |
| bool get _isAttributeTemplate => attributes.containsKey('template') && |
| (localName == 'option' || localName == 'optgroup' || |
| _TABLE_TAGS.containsKey(localName)); |
| |
| /** |
| * Returns true if this node is a template. |
| * |
| * A node is a template if [tagName] is TEMPLATE, or the node has the |
| * 'template' attribute and this tag supports attribute form for backwards |
| * compatibility with existing HTML parsers. The nodes that can use attribute |
| * form are table elments (THEAD, TBODY, TFOOT, TH, TR, TD, CAPTION, COLGROUP |
| * and COL), OPTION, and OPTGROUP. |
| */ |
| // TODO(jmesserly): this is not a public MDV API, but it seems like a useful |
| // place to document which tags our polyfill considers to be templates. |
| // Otherwise I'd be repeating it in several other places. |
| // See if we can replace this with a TemplateMixin. |
| @Experimental() |
| bool get isTemplate => tagName == 'TEMPLATE' || _isAttributeTemplate; |
| |
| void _ensureTemplate() { |
| if (!isTemplate) { |
| throw new UnsupportedError('$this is not a template.'); |
| } |
| TemplateElement.decorate(this); |
| } |
| |
| /** |
| * Access this element's content position. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. |
| * |
| * _Important_ _note_: use of this method _will_ perform CSS calculations that |
| * can trigger a browser reflow. Therefore, use of this property _during_ an |
| * animation frame is discouraged. See also: |
| * [Browser Reflow](https://developers.google.com/speed/articles/reflow) |
| */ |
| @Experimental() |
| CssRect get contentEdge => new _ContentCssRect(this); |
| |
| /** |
| * Access the dimensions and position of this element's content + padding box. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's |
| * [innerHeight](http://api.jquery.com/innerHeight/) value for an element. |
| * This is also a rectangle equalling the dimensions of clientHeight and |
| * clientWidth. |
| * |
| * _Important_ _note_: use of this method _will_ perform CSS calculations that |
| * can trigger a browser reflow. Therefore, use of this property _during_ an |
| * animation frame is discouraged. See also: |
| * [Browser Reflow](https://developers.google.com/speed/articles/reflow) |
| */ |
| @Experimental() |
| CssRect get paddingEdge => new _PaddingCssRect(this); |
| |
| /** |
| * Access the dimensions and position of this element's content + padding + |
| * border box. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's |
| * [outerHeight](http://api.jquery.com/outerHeight/) value for an element. |
| * |
| * _Important_ _note_: use of this method _will_ perform CSS calculations that |
| * can trigger a browser reflow. Therefore, use of this property _during_ an |
| * animation frame is discouraged. See also: |
| * [Browser Reflow](https://developers.google.com/speed/articles/reflow) |
| */ |
| @Experimental() |
| CssRect get borderEdge => new _BorderCssRect(this); |
| |
| /** |
| * Access the dimensions and position of this element's content + padding + |
| * border + margin box. |
| * |
| * This returns a rectangle with the dimenions actually available for content |
| * in this element, in pixels, regardless of this element's box-sizing |
| * property. Unlike [getBoundingClientRect], the dimensions of this rectangle |
| * will return the same numerical height if the element is hidden or not. This |
| * can be used to retrieve jQuery's |
| * [outerHeight](http://api.jquery.com/outerHeight/) value for an element. |
| * |
| * _Important_ _note_: use of this method will perform CSS calculations that |
| * can trigger a browser reflow. Therefore, use of this property _during_ an |
| * animation frame is discouraged. See also: |
| * [Browser Reflow](https://developers.google.com/speed/articles/reflow) |
| */ |
| @Experimental() |
| CssRect get marginEdge => new _MarginCssRect(this); |
| |
| /** |
| * Provides the coordinates of the element relative to the top of the |
| * document. |
| * |
| * This method is the Dart equivalent to jQuery's |
| * [offset](http://api.jquery.com/offset/) method. |
| */ |
| Point get documentOffset => offsetTo(document.documentElement); |
| |
| /** |
| * Provides the offset of this element's [borderEdge] relative to the |
| * specified [parent]. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [position](http://api.jquery.com/position/) method. Unlike jQuery's |
| * position, however, [parent] can be any parent element of `this`, |
| * rather than only `this`'s immediate [offsetParent]. If the specified |
| * element is _not_ an offset parent or transitive offset parent to this |
| * element, an [ArgumentError] is thrown. |
| */ |
| Point offsetTo(Element parent) { |
| return Element._offsetToHelper(this, parent); |
| } |
| |
| static Point _offsetToHelper(Element current, Element parent) { |
| // We're hopping from _offsetParent_ to offsetParent (not just parent), so |
| // offsetParent, "tops out" at BODY. But people could conceivably pass in |
| // the document.documentElement and I want it to return an absolute offset, |
| // so we have the special case checking for HTML. |
| bool foundAsParent = identical(current, parent) || parent.tagName == 'HTML'; |
| if (current == null || identical(current, parent)) { |
| if (foundAsParent) return new Point(0, 0); |
| throw new ArgumentError("Specified element is not a transitive offset " |
| "parent of this element."); |
| } |
| Element parentOffset = current.offsetParent; |
| Point p = Element._offsetToHelper(parentOffset, parent); |
| return new Point(p.x + current.offsetLeft, p.y + current.offsetTop); |
| } |
| // To suppress missing implicit constructor warnings. |
| factory Element._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Element.abortEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> abortEvent = const EventStreamProvider<Event>('abort'); |
| |
| @DomName('Element.beforecopyEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> beforeCopyEvent = const EventStreamProvider<Event>('beforecopy'); |
| |
| @DomName('Element.beforecutEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> beforeCutEvent = const EventStreamProvider<Event>('beforecut'); |
| |
| @DomName('Element.beforepasteEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> beforePasteEvent = const EventStreamProvider<Event>('beforepaste'); |
| |
| @DomName('Element.blurEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> blurEvent = const EventStreamProvider<Event>('blur'); |
| |
| @DomName('Element.changeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change'); |
| |
| @DomName('Element.clickEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> clickEvent = const EventStreamProvider<MouseEvent>('click'); |
| |
| @DomName('Element.contextmenuEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> contextMenuEvent = const EventStreamProvider<MouseEvent>('contextmenu'); |
| |
| @DomName('Element.copyEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> copyEvent = const EventStreamProvider<Event>('copy'); |
| |
| @DomName('Element.cutEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> cutEvent = const EventStreamProvider<Event>('cut'); |
| |
| @DomName('Element.dblclickEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> doubleClickEvent = const EventStreamProvider<Event>('dblclick'); |
| |
| @DomName('Element.dragEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragEvent = const EventStreamProvider<MouseEvent>('drag'); |
| |
| @DomName('Element.dragendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragEndEvent = const EventStreamProvider<MouseEvent>('dragend'); |
| |
| @DomName('Element.dragenterEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragEnterEvent = const EventStreamProvider<MouseEvent>('dragenter'); |
| |
| @DomName('Element.dragleaveEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragLeaveEvent = const EventStreamProvider<MouseEvent>('dragleave'); |
| |
| @DomName('Element.dragoverEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragOverEvent = const EventStreamProvider<MouseEvent>('dragover'); |
| |
| @DomName('Element.dragstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dragStartEvent = const EventStreamProvider<MouseEvent>('dragstart'); |
| |
| @DomName('Element.dropEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> dropEvent = const EventStreamProvider<MouseEvent>('drop'); |
| |
| @DomName('Element.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('Element.focusEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> focusEvent = const EventStreamProvider<Event>('focus'); |
| |
| @DomName('Element.inputEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> inputEvent = const EventStreamProvider<Event>('input'); |
| |
| @DomName('Element.invalidEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> invalidEvent = const EventStreamProvider<Event>('invalid'); |
| |
| @DomName('Element.keydownEvent') |
| @DocsEditable() |
| static const EventStreamProvider<KeyboardEvent> keyDownEvent = const EventStreamProvider<KeyboardEvent>('keydown'); |
| |
| @DomName('Element.keypressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<KeyboardEvent> keyPressEvent = const EventStreamProvider<KeyboardEvent>('keypress'); |
| |
| @DomName('Element.keyupEvent') |
| @DocsEditable() |
| static const EventStreamProvider<KeyboardEvent> keyUpEvent = const EventStreamProvider<KeyboardEvent>('keyup'); |
| |
| @DomName('Element.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> loadEvent = const EventStreamProvider<Event>('load'); |
| |
| @DomName('Element.mousedownEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> mouseDownEvent = const EventStreamProvider<MouseEvent>('mousedown'); |
| |
| @DomName('Element.mouseenterEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const EventStreamProvider<MouseEvent> mouseEnterEvent = const EventStreamProvider<MouseEvent>('mouseenter'); |
| |
| @DomName('Element.mouseleaveEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const EventStreamProvider<MouseEvent> mouseLeaveEvent = const EventStreamProvider<MouseEvent>('mouseleave'); |
| |
| @DomName('Element.mousemoveEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> mouseMoveEvent = const EventStreamProvider<MouseEvent>('mousemove'); |
| |
| @DomName('Element.mouseoutEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> mouseOutEvent = const EventStreamProvider<MouseEvent>('mouseout'); |
| |
| @DomName('Element.mouseoverEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> mouseOverEvent = const EventStreamProvider<MouseEvent>('mouseover'); |
| |
| @DomName('Element.mouseupEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MouseEvent> mouseUpEvent = const EventStreamProvider<MouseEvent>('mouseup'); |
| |
| @DomName('Element.pasteEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> pasteEvent = const EventStreamProvider<Event>('paste'); |
| |
| @DomName('Element.resetEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> resetEvent = const EventStreamProvider<Event>('reset'); |
| |
| @DomName('Element.scrollEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> scrollEvent = const EventStreamProvider<Event>('scroll'); |
| |
| @DomName('Element.searchEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| static const EventStreamProvider<Event> searchEvent = const EventStreamProvider<Event>('search'); |
| |
| @DomName('Element.selectEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> selectEvent = const EventStreamProvider<Event>('select'); |
| |
| @DomName('Element.selectstartEvent') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const EventStreamProvider<Event> selectStartEvent = const EventStreamProvider<Event>('selectstart'); |
| |
| @DomName('Element.submitEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> submitEvent = const EventStreamProvider<Event>('submit'); |
| |
| @DomName('Element.touchcancelEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchCancelEvent = const EventStreamProvider<TouchEvent>('touchcancel'); |
| |
| @DomName('Element.touchendEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchEndEvent = const EventStreamProvider<TouchEvent>('touchend'); |
| |
| @DomName('Element.touchenterEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchEnterEvent = const EventStreamProvider<TouchEvent>('touchenter'); |
| |
| @DomName('Element.touchleaveEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchLeaveEvent = const EventStreamProvider<TouchEvent>('touchleave'); |
| |
| @DomName('Element.touchmoveEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchMoveEvent = const EventStreamProvider<TouchEvent>('touchmove'); |
| |
| @DomName('Element.touchstartEvent') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| static const EventStreamProvider<TouchEvent> touchStartEvent = const EventStreamProvider<TouchEvent>('touchstart'); |
| |
| @DomName('Element.webkitfullscreenchangeEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| static const EventStreamProvider<Event> fullscreenChangeEvent = const EventStreamProvider<Event>('webkitfullscreenchange'); |
| |
| @DomName('Element.webkitfullscreenerrorEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| static const EventStreamProvider<Event> fullscreenErrorEvent = const EventStreamProvider<Event>('webkitfullscreenerror'); |
| |
| @DomName('Element.contentEditable') |
| @DocsEditable() |
| String contentEditable; |
| |
| @DomName('Element.dir') |
| @DocsEditable() |
| String dir; |
| |
| @DomName('Element.draggable') |
| @DocsEditable() |
| bool draggable; |
| |
| @DomName('Element.hidden') |
| @DocsEditable() |
| bool hidden; |
| |
| @DomName('Element.id') |
| @DocsEditable() |
| String id; |
| |
| @JSName('innerHTML') |
| @DomName('Element.innerHTML') |
| @DocsEditable() |
| String innerHtml; |
| |
| @DomName('Element.isContentEditable') |
| @DocsEditable() |
| final bool isContentEditable; |
| |
| @DomName('Element.lang') |
| @DocsEditable() |
| String lang; |
| |
| @JSName('outerHTML') |
| @DomName('Element.outerHTML') |
| @DocsEditable() |
| final String outerHtml; |
| |
| @DomName('Element.spellcheck') |
| @DocsEditable() |
| // http://blog.whatwg.org/the-road-to-html-5-spellchecking |
| @Experimental() // nonstandard |
| bool spellcheck; |
| |
| @DomName('Element.tabIndex') |
| @DocsEditable() |
| int tabIndex; |
| |
| @DomName('Element.title') |
| @DocsEditable() |
| String title; |
| |
| @DomName('Element.translate') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-translate-attribute |
| @Experimental() |
| bool translate; |
| |
| @JSName('webkitdropzone') |
| @DomName('Element.webkitdropzone') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute |
| String dropzone; |
| |
| @DomName('Element.click') |
| @DocsEditable() |
| void click() native; |
| |
| @DomName('Element.getInputContext') |
| @DocsEditable() |
| // http://www.w3.org/TR/ime-api/#the-getinputcontext-method |
| @Experimental() |
| InputMethodContext getInputContext() native; |
| |
| @DomName('Element.ALLOW_KEYBOARD_INPUT') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen |
| @deprecated // deprecated |
| static const int ALLOW_KEYBOARD_INPUT = 1; |
| |
| @JSName('attributes') |
| @DomName('Element.attributes') |
| @DocsEditable() |
| final _NamedNodeMap $dom_attributes; |
| |
| @DomName('Element.className') |
| @DocsEditable() |
| String className; |
| |
| @DomName('Element.clientHeight') |
| @DocsEditable() |
| final int clientHeight; |
| |
| @DomName('Element.clientLeft') |
| @DocsEditable() |
| final int clientLeft; |
| |
| @DomName('Element.clientTop') |
| @DocsEditable() |
| final int clientTop; |
| |
| @DomName('Element.clientWidth') |
| @DocsEditable() |
| final int clientWidth; |
| |
| @DomName('Element.offsetHeight') |
| @DocsEditable() |
| final int offsetHeight; |
| |
| @DomName('Element.offsetLeft') |
| @DocsEditable() |
| final int offsetLeft; |
| |
| @DomName('Element.offsetParent') |
| @DocsEditable() |
| final Element offsetParent; |
| |
| @DomName('Element.offsetTop') |
| @DocsEditable() |
| final int offsetTop; |
| |
| @DomName('Element.offsetWidth') |
| @DocsEditable() |
| final int offsetWidth; |
| |
| @DomName('Element.pseudo') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String pseudo; |
| |
| @DomName('Element.scrollHeight') |
| @DocsEditable() |
| final int scrollHeight; |
| |
| @DomName('Element.scrollLeft') |
| @DocsEditable() |
| int scrollLeft; |
| |
| @DomName('Element.scrollTop') |
| @DocsEditable() |
| int scrollTop; |
| |
| @DomName('Element.scrollWidth') |
| @DocsEditable() |
| final int scrollWidth; |
| |
| @DomName('Element.shadowRoot') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-aware-create-shadow-root |
| @Experimental() |
| final ShadowRoot shadowRoot; |
| |
| @DomName('Element.style') |
| @DocsEditable() |
| final CssStyleDeclaration style; |
| |
| @DomName('Element.tagName') |
| @DocsEditable() |
| final String tagName; |
| |
| @JSName('webkitRegionOverset') |
| @DomName('Element.webkitRegionOverset') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/css-regions/#dom-region-regionoverset |
| final String regionOverset; |
| |
| @DomName('Element.blur') |
| @DocsEditable() |
| void blur() native; |
| |
| @DomName('Element.focus') |
| @DocsEditable() |
| void focus() native; |
| |
| @JSName('getAttribute') |
| @DomName('Element.getAttribute') |
| @DocsEditable() |
| String $dom_getAttribute(String name) native; |
| |
| @JSName('getAttributeNS') |
| @DomName('Element.getAttributeNS') |
| @DocsEditable() |
| String $dom_getAttributeNS(String namespaceURI, String localName) native; |
| |
| @DomName('Element.getBoundingClientRect') |
| @DocsEditable() |
| Rect getBoundingClientRect() native; |
| |
| @DomName('Element.getClientRects') |
| @DocsEditable() |
| @Returns('_ClientRectList') |
| @Creates('_ClientRectList') |
| List<Rect> getClientRects() native; |
| |
| @DomName('Element.getElementsByClassName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByClassName(String name) native; |
| |
| @JSName('getElementsByTagName') |
| @DomName('Element.getElementsByTagName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> $dom_getElementsByTagName(String name) native; |
| |
| @JSName('hasAttribute') |
| @DomName('Element.hasAttribute') |
| @DocsEditable() |
| bool $dom_hasAttribute(String name) native; |
| |
| @JSName('hasAttributeNS') |
| @DomName('Element.hasAttributeNS') |
| @DocsEditable() |
| bool $dom_hasAttributeNS(String namespaceURI, String localName) native; |
| |
| @JSName('querySelector') |
| /** |
| * Finds the first descendant element of this element that matches the |
| * specified group of selectors. |
| * |
| * [selectors] should be a string using CSS selector syntax. |
| * |
| * // Gets the first descendant with the class 'classname' |
| * var element = element.query('.className'); |
| * // Gets the element with id 'id' |
| * var element = element.query('#id'); |
| * // Gets the first descendant [ImageElement] |
| * var img = element.query('img'); |
| * |
| * See also: |
| * |
| * * [CSS Selectors](http://docs.webplatform.org/wiki/css/selectors) |
| */ |
| @DomName('Element.querySelector') |
| @DocsEditable() |
| Element query(String selectors) native; |
| |
| @JSName('querySelectorAll') |
| @DomName('Element.querySelectorAll') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> $dom_querySelectorAll(String selectors) native; |
| |
| @JSName('removeAttribute') |
| @DomName('Element.removeAttribute') |
| @DocsEditable() |
| void $dom_removeAttribute(String name) native; |
| |
| @JSName('removeAttributeNS') |
| @DomName('Element.removeAttributeNS') |
| @DocsEditable() |
| void $dom_removeAttributeNS(String namespaceURI, String localName) native; |
| |
| @DomName('Element.scrollByLines') |
| @DocsEditable() |
| void scrollByLines(int lines) native; |
| |
| @DomName('Element.scrollByPages') |
| @DocsEditable() |
| void scrollByPages(int pages) native; |
| |
| @JSName('scrollIntoView') |
| @DomName('Element.scrollIntoView') |
| @DocsEditable() |
| void $dom_scrollIntoView([bool alignWithTop]) native; |
| |
| @JSName('scrollIntoViewIfNeeded') |
| @DomName('Element.scrollIntoViewIfNeeded') |
| @DocsEditable() |
| // http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded |
| @Experimental() // non-standard |
| void $dom_scrollIntoViewIfNeeded([bool centerIfNeeded]) native; |
| |
| @JSName('setAttribute') |
| @DomName('Element.setAttribute') |
| @DocsEditable() |
| void $dom_setAttribute(String name, String value) native; |
| |
| @JSName('setAttributeNS') |
| @DomName('Element.setAttributeNS') |
| @DocsEditable() |
| void $dom_setAttributeNS(String namespaceURI, String qualifiedName, String value) native; |
| |
| @JSName('webkitGetRegionFlowRanges') |
| @DomName('Element.webkitGetRegionFlowRanges') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/css-regions/#dom-region-getregionflowranges |
| List<Range> getRegionFlowRanges() native; |
| |
| @JSName('webkitRequestFullScreen') |
| @DomName('Element.webkitRequestFullScreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen |
| @deprecated // deprecated |
| void requestFullScreen(int flags) native; |
| |
| @JSName('webkitRequestFullscreen') |
| @DomName('Element.webkitRequestFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen |
| void requestFullscreen() native; |
| |
| @JSName('webkitRequestPointerLock') |
| @DomName('Element.webkitRequestPointerLock') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Element-requestPointerLock-void |
| void requestPointerLock() native; |
| |
| // From ChildNode |
| |
| @DomName('Element.nextElementSibling') |
| @DocsEditable() |
| final Element nextElementSibling; |
| |
| @DomName('Element.previousElementSibling') |
| @DocsEditable() |
| final Element previousElementSibling; |
| |
| // From ParentNode |
| |
| @JSName('childElementCount') |
| @DomName('Element.childElementCount') |
| @DocsEditable() |
| final int $dom_childElementCount; |
| |
| @JSName('children') |
| @DomName('Element.children') |
| @DocsEditable() |
| final HtmlCollection $dom_children; |
| |
| @JSName('firstElementChild') |
| @DomName('Element.firstElementChild') |
| @DocsEditable() |
| final Element $dom_firstElementChild; |
| |
| @JSName('lastElementChild') |
| @DomName('Element.lastElementChild') |
| @DocsEditable() |
| final Element $dom_lastElementChild; |
| |
| @DomName('Element.onabort') |
| @DocsEditable() |
| ElementStream<Event> get onAbort => abortEvent.forElement(this); |
| |
| @DomName('Element.onbeforecopy') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCopy => beforeCopyEvent.forElement(this); |
| |
| @DomName('Element.onbeforecut') |
| @DocsEditable() |
| ElementStream<Event> get onBeforeCut => beforeCutEvent.forElement(this); |
| |
| @DomName('Element.onbeforepaste') |
| @DocsEditable() |
| ElementStream<Event> get onBeforePaste => beforePasteEvent.forElement(this); |
| |
| @DomName('Element.onblur') |
| @DocsEditable() |
| ElementStream<Event> get onBlur => blurEvent.forElement(this); |
| |
| @DomName('Element.onchange') |
| @DocsEditable() |
| ElementStream<Event> get onChange => changeEvent.forElement(this); |
| |
| @DomName('Element.onclick') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onClick => clickEvent.forElement(this); |
| |
| @DomName('Element.oncontextmenu') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onContextMenu => contextMenuEvent.forElement(this); |
| |
| @DomName('Element.oncopy') |
| @DocsEditable() |
| ElementStream<Event> get onCopy => copyEvent.forElement(this); |
| |
| @DomName('Element.oncut') |
| @DocsEditable() |
| ElementStream<Event> get onCut => cutEvent.forElement(this); |
| |
| @DomName('Element.ondblclick') |
| @DocsEditable() |
| ElementStream<Event> get onDoubleClick => doubleClickEvent.forElement(this); |
| |
| @DomName('Element.ondrag') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrag => dragEvent.forElement(this); |
| |
| @DomName('Element.ondragend') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnd => dragEndEvent.forElement(this); |
| |
| @DomName('Element.ondragenter') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragEnter => dragEnterEvent.forElement(this); |
| |
| @DomName('Element.ondragleave') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragLeave => dragLeaveEvent.forElement(this); |
| |
| @DomName('Element.ondragover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragOver => dragOverEvent.forElement(this); |
| |
| @DomName('Element.ondragstart') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDragStart => dragStartEvent.forElement(this); |
| |
| @DomName('Element.ondrop') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onDrop => dropEvent.forElement(this); |
| |
| @DomName('Element.onerror') |
| @DocsEditable() |
| ElementStream<Event> get onError => errorEvent.forElement(this); |
| |
| @DomName('Element.onfocus') |
| @DocsEditable() |
| ElementStream<Event> get onFocus => focusEvent.forElement(this); |
| |
| @DomName('Element.oninput') |
| @DocsEditable() |
| ElementStream<Event> get onInput => inputEvent.forElement(this); |
| |
| @DomName('Element.oninvalid') |
| @DocsEditable() |
| ElementStream<Event> get onInvalid => invalidEvent.forElement(this); |
| |
| @DomName('Element.onkeydown') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyDown => keyDownEvent.forElement(this); |
| |
| @DomName('Element.onkeypress') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyPress => keyPressEvent.forElement(this); |
| |
| @DomName('Element.onkeyup') |
| @DocsEditable() |
| ElementStream<KeyboardEvent> get onKeyUp => keyUpEvent.forElement(this); |
| |
| @DomName('Element.onload') |
| @DocsEditable() |
| ElementStream<Event> get onLoad => loadEvent.forElement(this); |
| |
| @DomName('Element.onmousedown') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseDown => mouseDownEvent.forElement(this); |
| |
| @DomName('Element.onmouseenter') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseEnter => mouseEnterEvent.forElement(this); |
| |
| @DomName('Element.onmouseleave') |
| @DocsEditable() |
| @Experimental() // untriaged |
| ElementStream<MouseEvent> get onMouseLeave => mouseLeaveEvent.forElement(this); |
| |
| @DomName('Element.onmousemove') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseMove => mouseMoveEvent.forElement(this); |
| |
| @DomName('Element.onmouseout') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOut => mouseOutEvent.forElement(this); |
| |
| @DomName('Element.onmouseover') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseOver => mouseOverEvent.forElement(this); |
| |
| @DomName('Element.onmouseup') |
| @DocsEditable() |
| ElementStream<MouseEvent> get onMouseUp => mouseUpEvent.forElement(this); |
| |
| @DomName('Element.onmousewheel') |
| @DocsEditable() |
| // http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents |
| @Experimental() // non-standard |
| ElementStream<WheelEvent> get onMouseWheel => mouseWheelEvent.forElement(this); |
| |
| @DomName('Element.onpaste') |
| @DocsEditable() |
| ElementStream<Event> get onPaste => pasteEvent.forElement(this); |
| |
| @DomName('Element.onreset') |
| @DocsEditable() |
| ElementStream<Event> get onReset => resetEvent.forElement(this); |
| |
| @DomName('Element.onscroll') |
| @DocsEditable() |
| ElementStream<Event> get onScroll => scrollEvent.forElement(this); |
| |
| @DomName('Element.onsearch') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| ElementStream<Event> get onSearch => searchEvent.forElement(this); |
| |
| @DomName('Element.onselect') |
| @DocsEditable() |
| ElementStream<Event> get onSelect => selectEvent.forElement(this); |
| |
| @DomName('Element.onselectstart') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| ElementStream<Event> get onSelectStart => selectStartEvent.forElement(this); |
| |
| @DomName('Element.onsubmit') |
| @DocsEditable() |
| ElementStream<Event> get onSubmit => submitEvent.forElement(this); |
| |
| @DomName('Element.ontouchcancel') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchCancel => touchCancelEvent.forElement(this); |
| |
| @DomName('Element.ontouchend') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnd => touchEndEvent.forElement(this); |
| |
| @DomName('Element.ontouchenter') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchEnter => touchEnterEvent.forElement(this); |
| |
| @DomName('Element.ontouchleave') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchLeave => touchLeaveEvent.forElement(this); |
| |
| @DomName('Element.ontouchmove') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchMove => touchMoveEvent.forElement(this); |
| |
| @DomName('Element.ontouchstart') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| ElementStream<TouchEvent> get onTouchStart => touchStartEvent.forElement(this); |
| |
| @DomName('Element.ontransitionend') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| ElementStream<TransitionEvent> get onTransitionEnd => transitionEndEvent.forElement(this); |
| |
| @DomName('Element.onwebkitfullscreenchange') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenChange => fullscreenChangeEvent.forElement(this); |
| |
| @DomName('Element.onwebkitfullscreenerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @Experimental() |
| ElementStream<Event> get onFullscreenError => fullscreenErrorEvent.forElement(this); |
| |
| } |
| |
| final _START_TAG_REGEXP = new RegExp('<(\\w+)'); |
| class _ElementFactoryProvider { |
| static const _CUSTOM_PARENT_TAG_MAP = const { |
| 'body' : 'html', |
| 'head' : 'html', |
| 'caption' : 'table', |
| 'td': 'tr', |
| 'th': 'tr', |
| 'colgroup': 'table', |
| 'col' : 'colgroup', |
| 'tr' : 'tbody', |
| 'tbody' : 'table', |
| 'tfoot' : 'table', |
| 'thead' : 'table', |
| 'track' : 'audio', |
| }; |
| |
| @DomName('Document.createElement') |
| static Element createElement_html(String html) { |
| // TODO(jacobr): this method can be made more robust and performant. |
| // 1) Cache the dummy parent elements required to use innerHTML rather than |
| // creating them every call. |
| // 2) Verify that the html does not contain leading or trailing text nodes. |
| // 3) Verify that the html does not contain both <head> and <body> tags. |
| // 4) Detatch the created element from its dummy parent. |
| String parentTag = 'div'; |
| String tag; |
| final match = _START_TAG_REGEXP.firstMatch(html); |
| if (match != null) { |
| tag = match.group(1).toLowerCase(); |
| if (Device.isIE && Element._TABLE_TAGS.containsKey(tag)) { |
| return _createTableForIE(html, tag); |
| } |
| parentTag = _CUSTOM_PARENT_TAG_MAP[tag]; |
| if (parentTag == null) parentTag = 'div'; |
| } |
| |
| final temp = new Element.tag(parentTag); |
| temp.innerHtml = html; |
| |
| Element element; |
| if (temp.children.length == 1) { |
| element = temp.children[0]; |
| } else if (parentTag == 'html' && temp.children.length == 2) { |
| // In html5 the root <html> tag will always have a <body> and a <head>, |
| // even though the inner html only contains one of them. |
| element = temp.children[tag == 'head' ? 0 : 1]; |
| } else { |
| _singleNode(temp.children); |
| } |
| element.remove(); |
| return element; |
| } |
| |
| /** |
| * IE table elements don't support innerHTML (even in standards mode). |
| * Instead we use a div and inject the table element in the innerHtml string. |
| * This technique works on other browsers too, but it's probably slower, |
| * so we only use it when running on IE. |
| * |
| * See also innerHTML: |
| * <http://msdn.microsoft.com/en-us/library/ie/ms533897(v=vs.85).aspx> |
| * and Building Tables Dynamically: |
| * <http://msdn.microsoft.com/en-us/library/ie/ms532998(v=vs.85).aspx>. |
| */ |
| static Element _createTableForIE(String html, String tag) { |
| var div = new Element.tag('div'); |
| div.innerHtml = '<table>$html</table>'; |
| var table = _singleNode(div.children); |
| Element element; |
| switch (tag) { |
| case 'td': |
| case 'th': |
| TableRowElement row = _singleNode(table.rows); |
| element = _singleNode(row.cells); |
| break; |
| case 'tr': |
| element = _singleNode(table.rows); |
| break; |
| case 'tbody': |
| element = _singleNode(table.tBodies); |
| break; |
| case 'thead': |
| element = table.tHead; |
| break; |
| case 'tfoot': |
| element = table.tFoot; |
| break; |
| case 'caption': |
| element = table.caption; |
| break; |
| case 'colgroup': |
| element = _getColgroup(table); |
| break; |
| case 'col': |
| element = _singleNode(_getColgroup(table).children); |
| break; |
| } |
| element.remove(); |
| return element; |
| } |
| |
| static TableColElement _getColgroup(TableElement table) { |
| // TODO(jmesserly): is there a better way to do this? |
| return _singleNode(table.children.where((n) => n.tagName == 'COLGROUP') |
| .toList()); |
| } |
| |
| static Node _singleNode(List<Node> list) { |
| if (list.length == 1) return list[0]; |
| throw new ArgumentError('HTML had ${list.length} ' |
| 'top level elements but 1 expected'); |
| } |
| |
| @DomName('Document.createElement') |
| // Optimization to improve performance until the dart2js compiler inlines this |
| // method. |
| static dynamic createElement_tag(String tag) => |
| // Firefox may return a JS function for some types (Embed, Object). |
| JS('Element|=Object', 'document.createElement(#)', tag); |
| } |
| |
| |
| /** |
| * Options for Element.scrollIntoView. |
| */ |
| class ScrollAlignment { |
| final _value; |
| const ScrollAlignment._internal(this._value); |
| toString() => 'ScrollAlignment.$_value'; |
| |
| /// Attempt to align the element to the top of the scrollable area. |
| static const TOP = const ScrollAlignment._internal('TOP'); |
| /// Attempt to center the element in the scrollable area. |
| static const CENTER = const ScrollAlignment._internal('CENTER'); |
| /// Attempt to align the element to the bottom of the scrollable area. |
| static const BOTTOM = const ScrollAlignment._internal('BOTTOM'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLEmbedElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.IE) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class EmbedElement extends _HTMLElement native "HTMLEmbedElement" { |
| // To suppress missing implicit constructor warnings. |
| factory EmbedElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLEmbedElement.HTMLEmbedElement') |
| @DocsEditable() |
| factory EmbedElement() => document.$dom_createElement("embed"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('embed'); |
| |
| @DomName('HTMLEmbedElement.align') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLEmbedElement-partial |
| @deprecated // deprecated |
| String align; |
| |
| @DomName('HTMLEmbedElement.height') |
| @DocsEditable() |
| String height; |
| |
| @DomName('HTMLEmbedElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLEmbedElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLEmbedElement.type') |
| @DocsEditable() |
| String type; |
| |
| @DomName('HTMLEmbedElement.width') |
| @DocsEditable() |
| String width; |
| |
| @DomName('HTMLEmbedElement.__getter__') |
| @DocsEditable() |
| bool __getter__(index_OR_name) native; |
| |
| @DomName('HTMLEmbedElement.__setter__') |
| @DocsEditable() |
| void __setter__(index_OR_name, Node value) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('EntriesCallback') |
| // http://www.w3.org/TR/file-system-api/#the-entriescallback-interface |
| @Experimental() |
| typedef void _EntriesCallback(List<Entry> entries); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Entry') |
| // http://www.w3.org/TR/file-system-api/#the-entry-interface |
| @Experimental() |
| class Entry extends Interceptor native "Entry" { |
| |
| @DomName('Entry.filesystem') |
| @DocsEditable() |
| final FileSystem filesystem; |
| |
| @DomName('Entry.fullPath') |
| @DocsEditable() |
| final String fullPath; |
| |
| @DomName('Entry.isDirectory') |
| @DocsEditable() |
| final bool isDirectory; |
| |
| @DomName('Entry.isFile') |
| @DocsEditable() |
| final bool isFile; |
| |
| @DomName('Entry.name') |
| @DocsEditable() |
| final String name; |
| |
| @JSName('copyTo') |
| @DomName('Entry.copyTo') |
| @DocsEditable() |
| void _copyTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) native; |
| |
| @JSName('copyTo') |
| @DomName('Entry.copyTo') |
| @DocsEditable() |
| Future<Entry> copyTo(DirectoryEntry parent, {String name}) { |
| var completer = new Completer<Entry>(); |
| _copyTo(parent, name : name, |
| successCallback : (value) { completer.complete(value); }, |
| errorCallback : (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('getMetadata') |
| @DomName('Entry.getMetadata') |
| @DocsEditable() |
| void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('getMetadata') |
| @DomName('Entry.getMetadata') |
| @DocsEditable() |
| Future<Metadata> getMetadata() { |
| var completer = new Completer<Metadata>(); |
| _getMetadata( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('getParent') |
| @DomName('Entry.getParent') |
| @DocsEditable() |
| void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) native; |
| |
| @JSName('getParent') |
| @DomName('Entry.getParent') |
| @DocsEditable() |
| Future<Entry> getParent() { |
| var completer = new Completer<Entry>(); |
| _getParent( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('moveTo') |
| @DomName('Entry.moveTo') |
| @DocsEditable() |
| void _moveTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) native; |
| |
| @JSName('moveTo') |
| @DomName('Entry.moveTo') |
| @DocsEditable() |
| Future<Entry> moveTo(DirectoryEntry parent, {String name}) { |
| var completer = new Completer<Entry>(); |
| _moveTo(parent, name : name, |
| successCallback : (value) { completer.complete(value); }, |
| errorCallback : (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('remove') |
| @DomName('Entry.remove') |
| @DocsEditable() |
| void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('remove') |
| @DomName('Entry.remove') |
| @DocsEditable() |
| Future remove() { |
| var completer = new Completer(); |
| _remove( |
| () { completer.complete(); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('toURL') |
| @DomName('Entry.toURL') |
| @DocsEditable() |
| String toUrl() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('EntryCallback') |
| // http://www.w3.org/TR/file-system-api/#the-entrycallback-interface |
| @Experimental() |
| typedef void _EntryCallback(Entry entry); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('ErrorCallback') |
| // http://www.w3.org/TR/file-system-api/#the-errorcallback-interface |
| @Experimental() |
| typedef void _ErrorCallback(FileError error); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ErrorEvent') |
| @Unstable() |
| class ErrorEvent extends Event native "ErrorEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory ErrorEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('ErrorEvent.filename') |
| @DocsEditable() |
| final String filename; |
| |
| @DomName('ErrorEvent.lineno') |
| @DocsEditable() |
| final int lineno; |
| |
| @DomName('ErrorEvent.message') |
| @DocsEditable() |
| final String message; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('Event') |
| class Event extends Interceptor native "Event" { |
| // In JS, canBubble and cancelable are technically required parameters to |
| // init*Event. In practice, though, if they aren't provided they simply |
| // default to false (since that's Boolean(undefined)). |
| // |
| // Contrary to JS, we default canBubble and cancelable to true, since that's |
| // what people want most of the time anyway. |
| factory Event(String type, |
| {bool canBubble: true, bool cancelable: true}) { |
| return new Event.eventType('Event', type, canBubble: canBubble, |
| cancelable: cancelable); |
| } |
| |
| /** |
| * Creates a new Event object of the specified type. |
| * |
| * This is analogous to document.createEvent. |
| * Normally events should be created via their constructors, if available. |
| * |
| * var e = new Event.type('MouseEvent', 'mousedown', true, true); |
| */ |
| factory Event.eventType(String type, String name, {bool canBubble: true, |
| bool cancelable: true}) { |
| final Event e = document.$dom_createEvent(type); |
| e.$dom_initEvent(name, canBubble, cancelable); |
| return e; |
| } |
| |
| @DomName('Event.AT_TARGET') |
| @DocsEditable() |
| static const int AT_TARGET = 2; |
| |
| @DomName('Event.BLUR') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int BLUR = 8192; |
| |
| @DomName('Event.BUBBLING_PHASE') |
| @DocsEditable() |
| static const int BUBBLING_PHASE = 3; |
| |
| @DomName('Event.CAPTURING_PHASE') |
| @DocsEditable() |
| static const int CAPTURING_PHASE = 1; |
| |
| @DomName('Event.CHANGE') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int CHANGE = 32768; |
| |
| @DomName('Event.CLICK') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int CLICK = 64; |
| |
| @DomName('Event.DBLCLICK') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int DBLCLICK = 128; |
| |
| @DomName('Event.DRAGDROP') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int DRAGDROP = 2048; |
| |
| @DomName('Event.FOCUS') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int FOCUS = 4096; |
| |
| @DomName('Event.KEYDOWN') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int KEYDOWN = 256; |
| |
| @DomName('Event.KEYPRESS') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int KEYPRESS = 1024; |
| |
| @DomName('Event.KEYUP') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int KEYUP = 512; |
| |
| @DomName('Event.MOUSEDOWN') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEDOWN = 1; |
| |
| @DomName('Event.MOUSEDRAG') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEDRAG = 32; |
| |
| @DomName('Event.MOUSEMOVE') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEMOVE = 16; |
| |
| @DomName('Event.MOUSEOUT') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEOUT = 8; |
| |
| @DomName('Event.MOUSEOVER') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEOVER = 4; |
| |
| @DomName('Event.MOUSEUP') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int MOUSEUP = 2; |
| |
| @DomName('Event.NONE') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int NONE = 0; |
| |
| @DomName('Event.SELECT') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents |
| @deprecated // deprecated |
| static const int SELECT = 16384; |
| |
| @DomName('Event.bubbles') |
| @DocsEditable() |
| final bool bubbles; |
| |
| @DomName('Event.cancelBubble') |
| @DocsEditable() |
| // http://www.w3.org/TR/DOM-Level-3-Events/#events-event-type-stopPropagation |
| @deprecated // deprecated |
| bool cancelBubble; |
| |
| @DomName('Event.cancelable') |
| @DocsEditable() |
| final bool cancelable; |
| |
| @DomName('Event.clipboardData') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // Part of copy/paste |
| @Experimental() // nonstandard |
| final DataTransfer clipboardData; |
| |
| EventTarget get currentTarget => _convertNativeToDart_EventTarget(this._get_currentTarget); |
| @JSName('currentTarget') |
| @DomName('Event.currentTarget') |
| @DocsEditable() |
| @Creates('Null') |
| @Returns('EventTarget|=Object') |
| final dynamic _get_currentTarget; |
| |
| @DomName('Event.defaultPrevented') |
| @DocsEditable() |
| final bool defaultPrevented; |
| |
| @DomName('Event.eventPhase') |
| @DocsEditable() |
| final int eventPhase; |
| |
| @DomName('Event.path') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event |
| @Experimental() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> path; |
| |
| EventTarget get target => _convertNativeToDart_EventTarget(this._get_target); |
| @JSName('target') |
| @DomName('Event.target') |
| @DocsEditable() |
| @Creates('Node') |
| @Returns('EventTarget|=Object') |
| final dynamic _get_target; |
| |
| @DomName('Event.timeStamp') |
| @DocsEditable() |
| final int timeStamp; |
| |
| @DomName('Event.type') |
| @DocsEditable() |
| final String type; |
| |
| @JSName('initEvent') |
| @DomName('Event.initEvent') |
| @DocsEditable() |
| void $dom_initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) native; |
| |
| @DomName('Event.preventDefault') |
| @DocsEditable() |
| void preventDefault() native; |
| |
| @DomName('Event.stopImmediatePropagation') |
| @DocsEditable() |
| void stopImmediatePropagation() native; |
| |
| @DomName('Event.stopPropagation') |
| @DocsEditable() |
| void stopPropagation() native; |
| |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('EventSource') |
| // http://www.w3.org/TR/eventsource/#the-eventsource-interface |
| @Experimental() // stable |
| class EventSource extends EventTarget native "EventSource" { |
| factory EventSource(String title, {withCredentials: false}) { |
| var parsedOptions = { |
| 'withCredentials': withCredentials, |
| }; |
| return EventSource._factoryEventSource(title, parsedOptions); |
| } |
| // To suppress missing implicit constructor warnings. |
| factory EventSource._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('EventSource.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('EventSource.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('EventSource.openEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> openEvent = const EventStreamProvider<Event>('open'); |
| |
| @DomName('EventSource.EventSource') |
| @DocsEditable() |
| static EventSource _factoryEventSource(String url, [Map eventSourceInit]) { |
| if (eventSourceInit != null) { |
| return EventSource._create_1(url, eventSourceInit); |
| } |
| return EventSource._create_2(url); |
| } |
| static EventSource _create_1(url, eventSourceInit) => JS('EventSource', 'new EventSource(#,#)', url, eventSourceInit); |
| static EventSource _create_2(url) => JS('EventSource', 'new EventSource(#)', url); |
| |
| @DomName('EventSource.CLOSED') |
| @DocsEditable() |
| static const int CLOSED = 2; |
| |
| @DomName('EventSource.CONNECTING') |
| @DocsEditable() |
| static const int CONNECTING = 0; |
| |
| @DomName('EventSource.OPEN') |
| @DocsEditable() |
| static const int OPEN = 1; |
| |
| @DomName('EventSource.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('EventSource.url') |
| @DocsEditable() |
| final String url; |
| |
| @DomName('EventSource.withCredentials') |
| @DocsEditable() |
| final bool withCredentials; |
| |
| @DomName('EventSource.close') |
| @DocsEditable() |
| void close() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('EventSource.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('EventSource.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('EventSource.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('EventSource.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('EventSource.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| |
| @DomName('EventSource.onopen') |
| @DocsEditable() |
| Stream<Event> get onOpen => openEvent.forTarget(this); |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Base class that supports listening for and dispatching browser events. |
| * |
| * Normally events are accessed via the Stream getter: |
| * |
| * element.onMouseOver.listen((e) => print('Mouse over!')); |
| * |
| * To access bubbling events which are declared on one element, but may bubble |
| * up to another element type (common for MediaElement events): |
| * |
| * MediaElement.pauseEvent.forTarget(document.body).listen(...); |
| * |
| * To useCapture on events: |
| * |
| * Element.keyDownEvent.forTarget(element, useCapture: true).listen(...); |
| * |
| * Custom events can be declared as: |
| * |
| * class DataGenerator { |
| * static EventStreamProvider<Event> dataEvent = |
| * new EventStreamProvider('data'); |
| * } |
| * |
| * Then listeners should access the event with: |
| * |
| * DataGenerator.dataEvent.forTarget(element).listen(...); |
| * |
| * Custom events can also be accessed as: |
| * |
| * element.on['some_event'].listen(...); |
| * |
| * This approach is generally discouraged as it loses the event typing and |
| * some DOM events may have multiple platform-dependent event names under the |
| * covers. By using the standard Stream getters you will get the platform |
| * specific event name automatically. |
| */ |
| class Events { |
| /* Raw event target. */ |
| final EventTarget _ptr; |
| |
| Events(this._ptr); |
| |
| Stream operator [](String type) { |
| return new _EventStream(_ptr, type, false); |
| } |
| } |
| |
| /** |
| * Base class for all browser objects that support events. |
| * |
| * Use the [on] property to add, and remove events (rather than |
| * [$dom_addEventListener] and [$dom_removeEventListener] |
| * for compile-time type checks and a more concise API. |
| */ |
| @DomName('EventTarget') |
| class EventTarget extends Interceptor native "EventTarget" { |
| |
| /** |
| * This is an ease-of-use accessor for event streams which should only be |
| * used when an explicit accessor is not available. |
| */ |
| Events get on => new Events(this); |
| |
| @JSName('addEventListener') |
| @DomName('EventTarget.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('EventTarget.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('EventTarget.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFieldSetElement') |
| @Unstable() |
| class FieldSetElement extends _HTMLElement native "HTMLFieldSetElement" { |
| // To suppress missing implicit constructor warnings. |
| factory FieldSetElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLFieldSetElement.HTMLFieldSetElement') |
| @DocsEditable() |
| factory FieldSetElement() => document.$dom_createElement("fieldset"); |
| |
| @DomName('HTMLFieldSetElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLFieldSetElement.elements') |
| @DocsEditable() |
| final HtmlCollection elements; |
| |
| @DomName('HTMLFieldSetElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLFieldSetElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLFieldSetElement.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('HTMLFieldSetElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLFieldSetElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLFieldSetElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLFieldSetElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLFieldSetElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('File') |
| class File extends Blob native "File" { |
| // To suppress missing implicit constructor warnings. |
| factory File._() { throw new UnsupportedError("Not supported"); } |
| |
| DateTime get lastModifiedDate => convertNativeToDart_DateTime(this._get_lastModifiedDate); |
| @JSName('lastModifiedDate') |
| @DomName('File.lastModifiedDate') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_lastModifiedDate; |
| |
| @DomName('File.name') |
| @DocsEditable() |
| final String name; |
| |
| @JSName('webkitRelativePath') |
| @DomName('File.webkitRelativePath') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3 |
| final String relativePath; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('FileCallback') |
| // http://www.w3.org/TR/file-system-api/#the-filecallback-interface |
| @Experimental() |
| typedef void _FileCallback(File file); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileEntry') |
| // http://www.w3.org/TR/file-system-api/#the-fileentry-interface |
| @Experimental() |
| class FileEntry extends Entry native "FileEntry" { |
| // To suppress missing implicit constructor warnings. |
| factory FileEntry._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('createWriter') |
| @DomName('FileEntry.createWriter') |
| @DocsEditable() |
| void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('createWriter') |
| @DomName('FileEntry.createWriter') |
| @DocsEditable() |
| Future<FileWriter> createWriter() { |
| var completer = new Completer<FileWriter>(); |
| _createWriter( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('file') |
| @DomName('FileEntry.file') |
| @DocsEditable() |
| void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('file') |
| @DomName('FileEntry.file') |
| @DocsEditable() |
| Future<File> file() { |
| var completer = new Completer<File>(); |
| _file( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileError') |
| // http://dev.w3.org/2009/dap/file-system/pub/FileSystem/ |
| @Experimental() |
| class FileError extends Interceptor native "FileError" { |
| |
| @DomName('FileError.ABORT_ERR') |
| @DocsEditable() |
| static const int ABORT_ERR = 3; |
| |
| @DomName('FileError.ENCODING_ERR') |
| @DocsEditable() |
| static const int ENCODING_ERR = 5; |
| |
| @DomName('FileError.INVALID_MODIFICATION_ERR') |
| @DocsEditable() |
| static const int INVALID_MODIFICATION_ERR = 9; |
| |
| @DomName('FileError.INVALID_STATE_ERR') |
| @DocsEditable() |
| static const int INVALID_STATE_ERR = 7; |
| |
| @DomName('FileError.NOT_FOUND_ERR') |
| @DocsEditable() |
| static const int NOT_FOUND_ERR = 1; |
| |
| @DomName('FileError.NOT_READABLE_ERR') |
| @DocsEditable() |
| static const int NOT_READABLE_ERR = 4; |
| |
| @DomName('FileError.NO_MODIFICATION_ALLOWED_ERR') |
| @DocsEditable() |
| static const int NO_MODIFICATION_ALLOWED_ERR = 6; |
| |
| @DomName('FileError.PATH_EXISTS_ERR') |
| @DocsEditable() |
| static const int PATH_EXISTS_ERR = 12; |
| |
| @DomName('FileError.QUOTA_EXCEEDED_ERR') |
| @DocsEditable() |
| static const int QUOTA_EXCEEDED_ERR = 10; |
| |
| @DomName('FileError.SECURITY_ERR') |
| @DocsEditable() |
| static const int SECURITY_ERR = 2; |
| |
| @DomName('FileError.SYNTAX_ERR') |
| @DocsEditable() |
| static const int SYNTAX_ERR = 8; |
| |
| @DomName('FileError.TYPE_MISMATCH_ERR') |
| @DocsEditable() |
| static const int TYPE_MISMATCH_ERR = 11; |
| |
| @DomName('FileError.code') |
| @DocsEditable() |
| final int code; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileList') |
| class FileList extends Interceptor with ListMixin<File>, ImmutableListMixin<File> implements JavaScriptIndexingBehavior, List<File> native "FileList" { |
| |
| @DomName('FileList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| File operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("File", "#[#]", this, index); |
| } |
| void operator[]=(int index, File value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<File> mixins. |
| // File is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| File get first { |
| if (this.length > 0) { |
| return JS('File', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| File get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('File', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| File get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('File', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| File elementAt(int index) => this[index]; |
| // -- end List<File> mixins. |
| |
| @DomName('FileList.item') |
| @DocsEditable() |
| File item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileReader') |
| class FileReader extends EventTarget native "FileReader" { |
| // To suppress missing implicit constructor warnings. |
| factory FileReader._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('FileReader.abortEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> abortEvent = const EventStreamProvider<ProgressEvent>('abort'); |
| |
| @DomName('FileReader.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('FileReader.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEvent = const EventStreamProvider<ProgressEvent>('load'); |
| |
| @DomName('FileReader.loadendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEndEvent = const EventStreamProvider<ProgressEvent>('loadend'); |
| |
| @DomName('FileReader.loadstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadStartEvent = const EventStreamProvider<ProgressEvent>('loadstart'); |
| |
| @DomName('FileReader.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress'); |
| |
| @DomName('FileReader.FileReader') |
| @DocsEditable() |
| factory FileReader() { |
| return FileReader._create_1(); |
| } |
| static FileReader _create_1() => JS('FileReader', 'new FileReader()'); |
| |
| @DomName('FileReader.DONE') |
| @DocsEditable() |
| static const int DONE = 2; |
| |
| @DomName('FileReader.EMPTY') |
| @DocsEditable() |
| static const int EMPTY = 0; |
| |
| @DomName('FileReader.LOADING') |
| @DocsEditable() |
| static const int LOADING = 1; |
| |
| @DomName('FileReader.error') |
| @DocsEditable() |
| final FileError error; |
| |
| @DomName('FileReader.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('FileReader.result') |
| @DocsEditable() |
| @Creates('String|ByteBuffer|Null') |
| final Object result; |
| |
| @DomName('FileReader.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| @DomName('FileReader.readAsArrayBuffer') |
| @DocsEditable() |
| void readAsArrayBuffer(Blob blob) native; |
| |
| @DomName('FileReader.readAsBinaryString') |
| @DocsEditable() |
| // http://blog.whatwg.org/weekly-stream-autocomplete |
| @deprecated // deprecated |
| void readAsBinaryString(Blob blob) native; |
| |
| @JSName('readAsDataURL') |
| @DomName('FileReader.readAsDataURL') |
| @DocsEditable() |
| void readAsDataUrl(Blob blob) native; |
| |
| @DomName('FileReader.readAsText') |
| @DocsEditable() |
| void readAsText(Blob blob, [String encoding]) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('FileReader.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FileReader.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('FileReader.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FileReader.onabort') |
| @DocsEditable() |
| Stream<ProgressEvent> get onAbort => abortEvent.forTarget(this); |
| |
| @DomName('FileReader.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('FileReader.onload') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoad => loadEvent.forTarget(this); |
| |
| @DomName('FileReader.onloadend') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoadEnd => loadEndEvent.forTarget(this); |
| |
| @DomName('FileReader.onloadstart') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoadStart => loadStartEvent.forTarget(this); |
| |
| @DomName('FileReader.onprogress') |
| @DocsEditable() |
| Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Stream') |
| @Experimental() // untriaged |
| class FileStream extends Interceptor native "Stream" { |
| |
| @DomName('Stream.type') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMFileSystem') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/ |
| class FileSystem extends Interceptor native "DOMFileSystem" { |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.webkitRequestFileSystem)'); |
| |
| @DomName('DOMFileSystem.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('DOMFileSystem.root') |
| @DocsEditable() |
| final DirectoryEntry root; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('FileSystemCallback') |
| // http://www.w3.org/TR/file-system-api/#the-filesystemcallback-interface |
| @Experimental() |
| typedef void _FileSystemCallback(FileSystem fileSystem); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileWriter') |
| // http://www.w3.org/TR/file-writer-api/#the-filewriter-interface |
| @Experimental() |
| class FileWriter extends EventTarget native "FileWriter" { |
| // To suppress missing implicit constructor warnings. |
| factory FileWriter._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('FileWriter.abortEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> abortEvent = const EventStreamProvider<ProgressEvent>('abort'); |
| |
| @DomName('FileWriter.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('FileWriter.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress'); |
| |
| @DomName('FileWriter.writeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> writeEvent = const EventStreamProvider<ProgressEvent>('write'); |
| |
| @DomName('FileWriter.writeendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> writeEndEvent = const EventStreamProvider<ProgressEvent>('writeend'); |
| |
| @DomName('FileWriter.writestartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> writeStartEvent = const EventStreamProvider<ProgressEvent>('writestart'); |
| |
| @DomName('FileWriter.DONE') |
| @DocsEditable() |
| static const int DONE = 2; |
| |
| @DomName('FileWriter.INIT') |
| @DocsEditable() |
| static const int INIT = 0; |
| |
| @DomName('FileWriter.WRITING') |
| @DocsEditable() |
| static const int WRITING = 1; |
| |
| @DomName('FileWriter.error') |
| @DocsEditable() |
| final FileError error; |
| |
| @DomName('FileWriter.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('FileWriter.position') |
| @DocsEditable() |
| final int position; |
| |
| @DomName('FileWriter.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('FileWriter.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| @DomName('FileWriter.seek') |
| @DocsEditable() |
| void seek(int position) native; |
| |
| @DomName('FileWriter.truncate') |
| @DocsEditable() |
| void truncate(int size) native; |
| |
| @DomName('FileWriter.write') |
| @DocsEditable() |
| void write(Blob data) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('FileWriter.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FileWriter.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('FileWriter.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FileWriter.onabort') |
| @DocsEditable() |
| Stream<ProgressEvent> get onAbort => abortEvent.forTarget(this); |
| |
| @DomName('FileWriter.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('FileWriter.onprogress') |
| @DocsEditable() |
| Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this); |
| |
| @DomName('FileWriter.onwrite') |
| @DocsEditable() |
| Stream<ProgressEvent> get onWrite => writeEvent.forTarget(this); |
| |
| @DomName('FileWriter.onwriteend') |
| @DocsEditable() |
| Stream<ProgressEvent> get onWriteEnd => writeEndEvent.forTarget(this); |
| |
| @DomName('FileWriter.onwritestart') |
| @DocsEditable() |
| Stream<ProgressEvent> get onWriteStart => writeStartEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('FileWriterCallback') |
| // http://www.w3.org/TR/file-writer-api/#idl-def-FileWriter |
| @Experimental() |
| typedef void _FileWriterCallback(FileWriter fileWriter); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FocusEvent') |
| class FocusEvent extends UIEvent native "FocusEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory FocusEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| EventTarget get relatedTarget => _convertNativeToDart_EventTarget(this._get_relatedTarget); |
| @JSName('relatedTarget') |
| @DomName('FocusEvent.relatedTarget') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_relatedTarget; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FontLoader') |
| // http://www.w3.org/TR/css3-fonts/#document-fontloader |
| @Experimental() |
| class FontLoader extends EventTarget native "FontLoader" { |
| // To suppress missing implicit constructor warnings. |
| factory FontLoader._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('FontLoader.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('FontLoader.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<CssFontFaceLoadEvent> loadEvent = const EventStreamProvider<CssFontFaceLoadEvent>('load'); |
| |
| @DomName('FontLoader.loadingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<CssFontFaceLoadEvent> loadingEvent = const EventStreamProvider<CssFontFaceLoadEvent>('loading'); |
| |
| @DomName('FontLoader.loadingdoneEvent') |
| @DocsEditable() |
| static const EventStreamProvider<CssFontFaceLoadEvent> loadingDoneEvent = const EventStreamProvider<CssFontFaceLoadEvent>('loadingdone'); |
| |
| @DomName('FontLoader.loadstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<CssFontFaceLoadEvent> loadStartEvent = const EventStreamProvider<CssFontFaceLoadEvent>('loadstart'); |
| |
| @DomName('FontLoader.loading') |
| @DocsEditable() |
| final bool loading; |
| |
| @DomName('FontLoader.checkFont') |
| @DocsEditable() |
| bool checkFont(String font, String text) native; |
| |
| @DomName('FontLoader.loadFont') |
| @DocsEditable() |
| void loadFont(Map params) { |
| var params_1 = convertDartToNative_Dictionary(params); |
| _loadFont_1(params_1); |
| return; |
| } |
| @JSName('loadFont') |
| @DomName('FontLoader.loadFont') |
| @DocsEditable() |
| void _loadFont_1(params) native; |
| |
| @DomName('FontLoader.notifyWhenFontsReady') |
| @DocsEditable() |
| void notifyWhenFontsReady(VoidCallback callback) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('FontLoader.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FontLoader.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('FontLoader.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('FontLoader.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('FontLoader.onload') |
| @DocsEditable() |
| Stream<CssFontFaceLoadEvent> get onLoad => loadEvent.forTarget(this); |
| |
| @DomName('FontLoader.onloading') |
| @DocsEditable() |
| Stream<CssFontFaceLoadEvent> get onLoading => loadingEvent.forTarget(this); |
| |
| @DomName('FontLoader.onloadingdone') |
| @DocsEditable() |
| Stream<CssFontFaceLoadEvent> get onLoadingDone => loadingDoneEvent.forTarget(this); |
| |
| @DomName('FontLoader.onloadstart') |
| @DocsEditable() |
| Stream<CssFontFaceLoadEvent> get onLoadStart => loadStartEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FormData') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| class FormData extends Interceptor native "FormData" { |
| |
| @DomName('FormData.FormData') |
| @DocsEditable() |
| factory FormData([FormElement form]) { |
| if (form != null) { |
| return FormData._create_1(form); |
| } |
| return FormData._create_2(); |
| } |
| static FormData _create_1(form) => JS('FormData', 'new FormData(#)', form); |
| static FormData _create_2() => JS('FormData', 'new FormData()'); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.FormData)'); |
| |
| @DomName('FormData.append') |
| @DocsEditable() |
| void append(String name, String value) native; |
| |
| @JSName('append') |
| @DomName('FormData.append') |
| @DocsEditable() |
| void appendBlob(String name, Blob value, [String filename]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFormElement') |
| class FormElement extends _HTMLElement native "HTMLFormElement" { |
| // To suppress missing implicit constructor warnings. |
| factory FormElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLFormElement.autocompleteEvent') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute |
| @Experimental() |
| static const EventStreamProvider<Event> autocompleteEvent = const EventStreamProvider<Event>('autocomplete'); |
| |
| @DomName('HTMLFormElement.autocompleteerrorEvent') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute |
| @Experimental() |
| static const EventStreamProvider<AutocompleteErrorEvent> autocompleteErrorEvent = const EventStreamProvider<AutocompleteErrorEvent>('autocompleteerror'); |
| |
| @DomName('HTMLFormElement.HTMLFormElement') |
| @DocsEditable() |
| factory FormElement() => document.$dom_createElement("form"); |
| |
| @DomName('HTMLFormElement.acceptCharset') |
| @DocsEditable() |
| String acceptCharset; |
| |
| @DomName('HTMLFormElement.action') |
| @DocsEditable() |
| String action; |
| |
| @DomName('HTMLFormElement.autocomplete') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute |
| @Experimental() |
| String autocomplete; |
| |
| @DomName('HTMLFormElement.encoding') |
| @DocsEditable() |
| String encoding; |
| |
| @DomName('HTMLFormElement.enctype') |
| @DocsEditable() |
| String enctype; |
| |
| @DomName('HTMLFormElement.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('HTMLFormElement.method') |
| @DocsEditable() |
| String method; |
| |
| @DomName('HTMLFormElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLFormElement.noValidate') |
| @DocsEditable() |
| bool noValidate; |
| |
| @DomName('HTMLFormElement.target') |
| @DocsEditable() |
| String target; |
| |
| @DomName('HTMLFormElement.__getter__') |
| @DocsEditable() |
| Node __getter__(int index) native; |
| |
| @DomName('HTMLFormElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLFormElement.requestAutocomplete') |
| @DocsEditable() |
| // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html |
| @Experimental() |
| void requestAutocomplete() native; |
| |
| @DomName('HTMLFormElement.reset') |
| @DocsEditable() |
| void reset() native; |
| |
| @DomName('HTMLFormElement.submit') |
| @DocsEditable() |
| void submit() native; |
| |
| @DomName('HTMLFormElement.onautocomplete') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute |
| @Experimental() |
| ElementStream<Event> get onAutocomplete => autocompleteEvent.forElement(this); |
| |
| @DomName('HTMLFormElement.onautocompleteerror') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute |
| @Experimental() |
| ElementStream<AutocompleteErrorEvent> get onAutocompleteError => autocompleteErrorEvent.forElement(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Gamepad') |
| // https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepad-interface |
| @Experimental() |
| class Gamepad extends Interceptor native "Gamepad" { |
| |
| @DomName('Gamepad.axes') |
| @DocsEditable() |
| final List<num> axes; |
| |
| @DomName('Gamepad.buttons') |
| @DocsEditable() |
| final List<num> buttons; |
| |
| @DomName('Gamepad.id') |
| @DocsEditable() |
| final String id; |
| |
| @DomName('Gamepad.index') |
| @DocsEditable() |
| final int index; |
| |
| @DomName('Gamepad.timestamp') |
| @DocsEditable() |
| final int timestamp; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Geolocation') |
| @Unstable() |
| class Geolocation extends Interceptor native "Geolocation" { |
| |
| @DomName('Geolocation.getCurrentPosition') |
| Future<Geoposition> getCurrentPosition({bool enableHighAccuracy, |
| Duration timeout, Duration maximumAge}) { |
| var options = {}; |
| if (enableHighAccuracy != null) { |
| options['enableHighAccuracy'] = enableHighAccuracy; |
| } |
| if (timeout != null) { |
| options['timeout'] = timeout.inMilliseconds; |
| } |
| if (maximumAge != null) { |
| options['maximumAge'] = maximumAge.inMilliseconds; |
| } |
| var completer = new Completer<Geoposition>(); |
| try { |
| $dom_getCurrentPosition( |
| (position) { |
| completer.complete(_ensurePosition(position)); |
| }, |
| (error) { |
| completer.completeError(error); |
| }, |
| options); |
| } catch (e, stacktrace) { |
| completer.completeError(e, stacktrace); |
| } |
| return completer.future; |
| } |
| |
| @DomName('Geolocation.watchPosition') |
| Stream<Geoposition> watchPosition({bool enableHighAccuracy, |
| Duration timeout, Duration maximumAge}) { |
| |
| var options = {}; |
| if (enableHighAccuracy != null) { |
| options['enableHighAccuracy'] = enableHighAccuracy; |
| } |
| if (timeout != null) { |
| options['timeout'] = timeout.inMilliseconds; |
| } |
| if (maximumAge != null) { |
| options['maximumAge'] = maximumAge.inMilliseconds; |
| } |
| |
| int watchId; |
| var controller; |
| controller = new StreamController<Geoposition>(sync: true, |
| onListen: () { |
| assert(watchId == null); |
| watchId = $dom_watchPosition( |
| (position) { |
| controller.add(_ensurePosition(position)); |
| }, |
| (error) { |
| controller.addError(error); |
| }, |
| options); |
| }, |
| onCancel: () { |
| assert(watchId != null); |
| $dom_clearWatch(watchId); |
| }); |
| |
| return controller.stream; |
| } |
| |
| Geoposition _ensurePosition(domPosition) { |
| try { |
| // Firefox may throw on this. |
| if (domPosition is Geoposition) { |
| return domPosition; |
| } |
| } catch(e) {} |
| return new _GeopositionWrapper(domPosition); |
| } |
| |
| |
| @JSName('clearWatch') |
| @DomName('Geolocation.clearWatch') |
| @DocsEditable() |
| void $dom_clearWatch(int watchID) native; |
| |
| @JSName('getCurrentPosition') |
| @DomName('Geolocation.getCurrentPosition') |
| @DocsEditable() |
| void $dom_getCurrentPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Object options]) native; |
| |
| @JSName('watchPosition') |
| @DomName('Geolocation.watchPosition') |
| @DocsEditable() |
| int $dom_watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Object options]) native; |
| } |
| |
| /** |
| * Wrapper for Firefox- it returns an object which we cannot map correctly. |
| * Basically Firefox was returning a [xpconnect wrapped nsIDOMGeoPosition] but |
| * which has further oddities. |
| */ |
| class _GeopositionWrapper implements Geoposition { |
| var _ptr; |
| _GeopositionWrapper(this._ptr); |
| |
| Coordinates get coords => JS('Coordinates', '#.coords', _ptr); |
| int get timestamp => JS('int', '#.timestamp', _ptr); |
| } |
| |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Geoposition') |
| @Unstable() |
| class Geoposition extends Interceptor native "Geoposition" { |
| |
| @DomName('Geoposition.coords') |
| @DocsEditable() |
| final Coordinates coords; |
| |
| @DomName('Geoposition.timestamp') |
| @DocsEditable() |
| final int timestamp; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * An `<hr>` tag. |
| */ |
| @DomName('HTMLHRElement') |
| class HRElement extends _HTMLElement native "HTMLHRElement" { |
| // To suppress missing implicit constructor warnings. |
| factory HRElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLHRElement.HTMLHRElement') |
| @DocsEditable() |
| factory HRElement() => document.$dom_createElement("hr"); |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| @DomName('HashChangeEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class HashChangeEvent extends Event native "HashChangeEvent" { |
| factory HashChangeEvent(String type, |
| {bool canBubble: true, bool cancelable: true, String oldUrl, |
| String newUrl}) { |
| var event = document.$dom_createEvent("HashChangeEvent"); |
| event.$dom_initHashChangeEvent(type, canBubble, cancelable, oldUrl, newUrl); |
| return event; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory HashChangeEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Device.isEventTypeSupported('HashChangeEvent'); |
| |
| @JSName('newURL') |
| @DomName('HashChangeEvent.newURL') |
| @DocsEditable() |
| final String newUrl; |
| |
| @JSName('oldURL') |
| @DomName('HashChangeEvent.oldURL') |
| @DocsEditable() |
| final String oldUrl; |
| |
| @JSName('initHashChangeEvent') |
| @DomName('HashChangeEvent.initHashChangeEvent') |
| @DocsEditable() |
| void $dom_initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLHeadElement') |
| class HeadElement extends _HTMLElement native "HTMLHeadElement" { |
| // To suppress missing implicit constructor warnings. |
| factory HeadElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLHeadElement.HTMLHeadElement') |
| @DocsEditable() |
| factory HeadElement() => document.$dom_createElement("head"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLHeadingElement') |
| class HeadingElement extends _HTMLElement native "HTMLHeadingElement" { |
| // To suppress missing implicit constructor warnings. |
| factory HeadingElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h1() => document.$dom_createElement("h1"); |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h2() => document.$dom_createElement("h2"); |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h3() => document.$dom_createElement("h3"); |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h4() => document.$dom_createElement("h4"); |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h5() => document.$dom_createElement("h5"); |
| |
| @DomName('HTMLHeadingElement.HTMLHeadingElement') |
| @DocsEditable() |
| factory HeadingElement.h6() => document.$dom_createElement("h6"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('History') |
| class History extends Interceptor implements HistoryBase native "History" { |
| |
| /** |
| * Checks if the State APIs are supported on the current platform. |
| * |
| * See also: |
| * |
| * * [pushState] |
| * * [replaceState] |
| * * [state] |
| */ |
| static bool get supportsState => JS('bool', '!!window.history.pushState'); |
| |
| @DomName('History.length') |
| @DocsEditable() |
| final int length; |
| |
| dynamic get state => convertNativeToDart_SerializedScriptValue(this._get_state); |
| @JSName('state') |
| @DomName('History.state') |
| @DocsEditable() |
| @annotation_Creates_SerializedScriptValue |
| @annotation_Returns_SerializedScriptValue |
| final dynamic _get_state; |
| |
| @DomName('History.back') |
| @DocsEditable() |
| void back() native; |
| |
| @DomName('History.forward') |
| @DocsEditable() |
| void forward() native; |
| |
| @DomName('History.go') |
| @DocsEditable() |
| void go(int distance) native; |
| |
| @DomName('History.pushState') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| void pushState(Object data, String title, [String url]) native; |
| |
| @DomName('History.replaceState') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| void replaceState(Object data, String title, [String url]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HmacParams') |
| @Experimental() // untriaged |
| class HmacParams extends Algorithm native "HmacParams" { |
| // To suppress missing implicit constructor warnings. |
| factory HmacParams._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HmacParams.hash') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final Algorithm hash; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLAllCollection') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-all |
| @deprecated // deprecated |
| class HtmlAllCollection extends Interceptor with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> native "HTMLAllCollection" { |
| |
| @DomName('HTMLAllCollection.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Node operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return this.item(index); |
| } |
| void operator[]=(int index, Node value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Node> mixins. |
| // Node is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Node get first { |
| if (this.length > 0) { |
| return JS('Node', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Node', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Node', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Node elementAt(int index) => this[index]; |
| // -- end List<Node> mixins. |
| |
| @DomName('HTMLAllCollection.__getter__') |
| @DocsEditable() |
| Node __getter__(int index) native; |
| |
| @DomName('HTMLAllCollection.item') |
| @DocsEditable() |
| Node item(int index) native; |
| |
| @DomName('HTMLAllCollection.namedItem') |
| @DocsEditable() |
| Node namedItem(String name) native; |
| |
| @DomName('HTMLAllCollection.tags') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> tags(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLCollection') |
| class HtmlCollection extends Interceptor with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> native "HTMLCollection" { |
| |
| @DomName('HTMLCollection.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Node operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Node", "#[#]", this, index); |
| } |
| void operator[]=(int index, Node value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Node> mixins. |
| // Node is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Node get first { |
| if (this.length > 0) { |
| return JS('Node', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Node', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Node', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Node elementAt(int index) => this[index]; |
| // -- end List<Node> mixins. |
| |
| @DomName('HTMLCollection.__getter__') |
| @DocsEditable() |
| Node __getter__(String name) native; |
| |
| @DomName('HTMLCollection.item') |
| @DocsEditable() |
| Node item(int index) native; |
| |
| @DomName('HTMLCollection.namedItem') |
| @DocsEditable() |
| Node namedItem(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('HTMLDocument') |
| class HtmlDocument extends Document native "HTMLDocument" { |
| // To suppress missing implicit constructor warnings. |
| factory HtmlDocument._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLDocument.activeElement') |
| @DocsEditable() |
| final Element activeElement; |
| |
| |
| @DomName('Document.body') |
| BodyElement body; |
| |
| @DomName('Document.caretRangeFromPoint') |
| Range caretRangeFromPoint(int x, int y) { |
| return $dom_caretRangeFromPoint(x, y); |
| } |
| |
| @DomName('Document.elementFromPoint') |
| Element elementFromPoint(int x, int y) { |
| return $dom_elementFromPoint(x, y); |
| } |
| |
| /** |
| * Checks if the getCssCanvasContext API is supported on the current platform. |
| * |
| * See also: |
| * |
| * * [getCssCanvasContext] |
| */ |
| static bool get supportsCssCanvasContext => |
| JS('bool', '!!(document.getCSSCanvasContext)'); |
| |
| |
| /** |
| * Gets a CanvasRenderingContext which can be used as the CSS background of an |
| * element. |
| * |
| * CSS: |
| * |
| * background: -webkit-canvas(backgroundCanvas) |
| * |
| * Generate the canvas: |
| * |
| * var context = document.getCssCanvasContext('2d', 'backgroundCanvas', |
| * 100, 100); |
| * context.fillStyle = 'red'; |
| * context.fillRect(0, 0, 100, 100); |
| * |
| * See also: |
| * |
| * * [supportsCssCanvasContext] |
| * * [CanvasElement.getContext] |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @DomName('Document.getCSSCanvasContext') |
| CanvasRenderingContext getCssCanvasContext(String contextId, String name, |
| int width, int height) { |
| return $dom_getCssCanvasContext(contextId, name, width, height); |
| } |
| |
| @DomName('Document.head') |
| HeadElement get head => $dom_head; |
| |
| @DomName('Document.lastModified') |
| String get lastModified => $dom_lastModified; |
| |
| @DomName('Document.preferredStylesheetSet') |
| String get preferredStylesheetSet => $dom_preferredStylesheetSet; |
| |
| @DomName('Document.referrer') |
| String get referrer => $dom_referrer; |
| |
| @DomName('Document.selectedStylesheetSet') |
| String get selectedStylesheetSet => $dom_selectedStylesheetSet; |
| void set selectedStylesheetSet(String value) { |
| $dom_selectedStylesheetSet = value; |
| } |
| |
| @DomName('Document.styleSheets') |
| List<StyleSheet> get styleSheets => $dom_styleSheets; |
| |
| @DomName('Document.title') |
| String get title => $dom_title; |
| |
| @DomName('Document.title') |
| void set title(String value) { |
| $dom_title = value; |
| } |
| |
| @DomName('Document.webkitCancelFullScreen') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void cancelFullScreen() { |
| $dom_webkitCancelFullScreen(); |
| } |
| |
| @DomName('Document.webkitExitFullscreen') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void exitFullscreen() { |
| $dom_webkitExitFullscreen(); |
| } |
| |
| @DomName('Document.webkitExitPointerLock') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| void exitPointerLock() { |
| $dom_webkitExitPointerLock(); |
| } |
| |
| @DomName('Document.webkitFullscreenElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Element get fullscreenElement => $dom_webkitFullscreenElement; |
| |
| @DomName('Document.webkitFullscreenEnabled') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| bool get fullscreenEnabled => $dom_webkitFullscreenEnabled; |
| |
| @DomName('Document.webkitHidden') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| bool get hidden => $dom_webkitHidden; |
| |
| @DomName('Document.webkitIsFullScreen') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| bool get isFullScreen => $dom_webkitIsFullScreen; |
| |
| @DomName('Document.webkitPointerLockElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Element get pointerLockElement => |
| $dom_webkitPointerLockElement; |
| |
| @DomName('Document.webkitVisibilityState') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| String get visibilityState => $dom_webkitVisibilityState; |
| |
| |
| @Creates('Null') // Set from Dart code; does not instantiate a native type. |
| // Note: used to polyfill <template> |
| Document _templateContentsOwner; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLHtmlElement') |
| class HtmlElement extends _HTMLElement native "HTMLHtmlElement" { |
| // To suppress missing implicit constructor warnings. |
| factory HtmlElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLHtmlElement.HTMLHtmlElement') |
| @DocsEditable() |
| factory HtmlElement() => document.$dom_createElement("html"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFormControlsCollection') |
| class HtmlFormControlsCollection extends HtmlCollection native "HTMLFormControlsCollection" { |
| // To suppress missing implicit constructor warnings. |
| factory HtmlFormControlsCollection._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLFormControlsCollection.__getter__') |
| @DocsEditable() |
| Node __getter__(int index) native; |
| |
| @DomName('HTMLFormControlsCollection.namedItem') |
| @DocsEditable() |
| Node namedItem(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLOptionsCollection') |
| class HtmlOptionsCollection extends HtmlCollection native "HTMLOptionsCollection" { |
| // To suppress missing implicit constructor warnings. |
| factory HtmlOptionsCollection._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * A utility for retrieving data from a URL. |
| * |
| * HttpRequest can be used to obtain data from http, ftp, and file |
| * protocols. |
| * |
| * For example, suppose we're developing these API docs, and we |
| * wish to retrieve the HTML of the top-level page and print it out. |
| * The easiest way to do that would be: |
| * |
| * HttpRequest.getString('http://api.dartlang.org').then((response) { |
| * print(response); |
| * }); |
| * |
| * **Important**: With the default behavior of this class, your |
| * code making the request should be served from the same origin (domain name, |
| * port, and application layer protocol) as the URL you are trying to access |
| * with HttpRequest. However, there are ways to |
| * [get around this restriction](http://www.dartlang.org/articles/json-web-service/#note-on-jsonp). |
| * |
| * See also: |
| * |
| * * [Dart article on using HttpRequests](http://www.dartlang.org/articles/json-web-service/#getting-data) |
| * * [JS XMLHttpRequest](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest) |
| * * [Using XMLHttpRequest](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest) |
| */ |
| @DomName('XMLHttpRequest') |
| class HttpRequest extends EventTarget native "XMLHttpRequest" { |
| |
| /** |
| * Creates a URL get request for the specified [url]. |
| * |
| * The server response must be a `text/` mime type for this request to |
| * succeed. |
| * |
| * This is similar to [request] but specialized for HTTP GET requests which |
| * return text content. |
| * |
| * See also: |
| * |
| * * [request] |
| */ |
| static Future<String> getString(String url, |
| {bool withCredentials, void onProgress(ProgressEvent e)}) { |
| return request(url, withCredentials: withCredentials, |
| onProgress: onProgress).then((xhr) => xhr.responseText); |
| } |
| |
| /** |
| * Makes a server POST request with the specified data encoded as form data. |
| * |
| * This is similar to sending a FormData object with broader browser |
| * support but limited to string values. |
| * |
| * See also: |
| * |
| * * [request] |
| */ |
| static Future<HttpRequest> postFormData(String url, Map<String, String> data, |
| {bool withCredentials, String responseType, |
| Map<String, String> requestHeaders, |
| void onProgress(ProgressEvent e)}) { |
| |
| var parts = []; |
| data.forEach((key, value) { |
| parts.add('${Uri.encodeQueryComponent(key)}=' |
| '${Uri.encodeQueryComponent(value)}'); |
| }); |
| var formData = parts.join('&'); |
| |
| if (requestHeaders == null) { |
| requestHeaders = <String, String>{}; |
| } |
| requestHeaders.putIfAbsent('Content-Type', |
| () => 'application/x-www-form-urlencoded; charset=UTF-8'); |
| |
| return request(url, method: 'POST', withCredentials: withCredentials, |
| responseType: responseType, |
| requestHeaders: requestHeaders, sendData: formData, |
| onProgress: onProgress); |
| } |
| |
| /** |
| * Creates a URL request for the specified [url]. |
| * |
| * By default this will do an HTTP GET request, this can be overridden with |
| * [method]. |
| * |
| * The Future is completed when the response is available. |
| * |
| * The [withCredentials] parameter specified that credentials such as a cookie |
| * (already) set in the header or |
| * [authorization headers](http://tools.ietf.org/html/rfc1945#section-10.2) |
| * should be specified for the request. Details to keep in mind when using |
| * credentials: |
| * |
| * * Using credentials is only useful for cross-origin requests. |
| * * The `Access-Control-Allow-Origin` header of `url` cannot contain a wildcard (*). |
| * * The `Access-Control-Allow-Credentials` header of `url` must be set to true. |
| * * If `Access-Control-Expose-Headers` has not been set to true, only a subset of all the response headers will be returned when calling [getAllRequestHeaders]. |
| * |
| * Note that requests for file:// URIs are only supported by Chrome extensions |
| * with appropriate permissions in their manifest. Requests to file:// URIs |
| * will also never fail- the Future will always complete successfully, even |
| * when the file cannot be found. |
| * |
| * See also: [authorization headers](http://en.wikipedia.org/wiki/Basic_access_authentication). |
| */ |
| static Future<HttpRequest> request(String url, |
| {String method, bool withCredentials, String responseType, |
| String mimeType, Map<String, String> requestHeaders, sendData, |
| void onProgress(ProgressEvent e)}) { |
| var completer = new Completer<HttpRequest>(); |
| |
| var xhr = new HttpRequest(); |
| if (method == null) { |
| method = 'GET'; |
| } |
| xhr.open(method, url, async: true); |
| |
| if (withCredentials != null) { |
| xhr.withCredentials = withCredentials; |
| } |
| |
| if (responseType != null) { |
| xhr.responseType = responseType; |
| } |
| |
| if (mimeType != null) { |
| xhr.overrideMimeType(mimeType); |
| } |
| |
| if (requestHeaders != null) { |
| requestHeaders.forEach((header, value) { |
| xhr.setRequestHeader(header, value); |
| }); |
| } |
| |
| if (onProgress != null) { |
| xhr.onProgress.listen(onProgress); |
| } |
| |
| xhr.onLoad.listen((e) { |
| // Note: file:// URIs have status of 0. |
| if ((xhr.status >= 200 && xhr.status < 300) || |
| xhr.status == 0 || xhr.status == 304) { |
| completer.complete(xhr); |
| } else { |
| completer.completeError(e); |
| } |
| }); |
| |
| xhr.onError.listen((e) { |
| completer.completeError(e); |
| }); |
| |
| if (sendData != null) { |
| xhr.send(sendData); |
| } else { |
| xhr.send(); |
| } |
| |
| return completer.future; |
| } |
| |
| /** |
| * Checks to see if the Progress event is supported on the current platform. |
| */ |
| static bool get supportsProgressEvent { |
| var xhr = new HttpRequest(); |
| return JS('bool', '("onprogress" in #)', xhr); |
| } |
| |
| /** |
| * Checks to see if the current platform supports making cross origin |
| * requests. |
| * |
| * Note that even if cross origin requests are supported, they still may fail |
| * if the destination server does not support CORS requests. |
| */ |
| static bool get supportsCrossOrigin { |
| var xhr = new HttpRequest(); |
| return JS('bool', '("withCredentials" in #)', xhr); |
| } |
| |
| /** |
| * Checks to see if the LoadEnd event is supported on the current platform. |
| */ |
| static bool get supportsLoadEndEvent { |
| var xhr = new HttpRequest(); |
| return JS('bool', '("onloadend" in #)', xhr); |
| } |
| |
| /** |
| * Checks to see if the overrideMimeType method is supported on the current |
| * platform. |
| */ |
| static bool get supportsOverrideMimeType { |
| var xhr = new HttpRequest(); |
| return JS('bool', '("overrideMimeType" in #)', xhr); |
| } |
| |
| // To suppress missing implicit constructor warnings. |
| factory HttpRequest._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('XMLHttpRequest.abortEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> abortEvent = const EventStreamProvider<ProgressEvent>('abort'); |
| |
| @DomName('XMLHttpRequest.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> errorEvent = const EventStreamProvider<ProgressEvent>('error'); |
| |
| @DomName('XMLHttpRequest.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEvent = const EventStreamProvider<ProgressEvent>('load'); |
| |
| @DomName('XMLHttpRequest.loadendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEndEvent = const EventStreamProvider<ProgressEvent>('loadend'); |
| |
| @DomName('XMLHttpRequest.loadstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadStartEvent = const EventStreamProvider<ProgressEvent>('loadstart'); |
| |
| @DomName('XMLHttpRequest.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress'); |
| |
| @DomName('XMLHttpRequest.readystatechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> readyStateChangeEvent = const EventStreamProvider<ProgressEvent>('readystatechange'); |
| |
| /** |
| * General constructor for any type of request (GET, POST, etc). |
| * |
| * This call is used in conjunction with [open]: |
| * |
| * var request = new HttpRequest(); |
| * request.open('GET', 'http://dartlang.org') |
| * request.onLoad.listen((event) => print('Request complete')); |
| * |
| * is the (more verbose) equivalent of |
| * |
| * HttpRequest.getString('http://dartlang.org').then( |
| * (result) => print('Request complete: $result')); |
| */ |
| @DomName('XMLHttpRequest.XMLHttpRequest') |
| @DocsEditable() |
| factory HttpRequest() { |
| return HttpRequest._create_1(); |
| } |
| static HttpRequest _create_1() => JS('HttpRequest', 'new XMLHttpRequest()'); |
| |
| @DomName('XMLHttpRequest.DONE') |
| @DocsEditable() |
| static const int DONE = 4; |
| |
| @DomName('XMLHttpRequest.HEADERS_RECEIVED') |
| @DocsEditable() |
| static const int HEADERS_RECEIVED = 2; |
| |
| @DomName('XMLHttpRequest.LOADING') |
| @DocsEditable() |
| static const int LOADING = 3; |
| |
| @DomName('XMLHttpRequest.OPENED') |
| @DocsEditable() |
| static const int OPENED = 1; |
| |
| @DomName('XMLHttpRequest.UNSENT') |
| @DocsEditable() |
| static const int UNSENT = 0; |
| |
| /** |
| * Indicator of the current state of the request: |
| * |
| * <table> |
| * <tr> |
| * <td>Value</td> |
| * <td>State</td> |
| * <td>Meaning</td> |
| * </tr> |
| * <tr> |
| * <td>0</td> |
| * <td>unsent</td> |
| * <td><code>open()</code> has not yet been called</td> |
| * </tr> |
| * <tr> |
| * <td>1</td> |
| * <td>opened</td> |
| * <td><code>send()</code> has not yet been called</td> |
| * </tr> |
| * <tr> |
| * <td>2</td> |
| * <td>headers received</td> |
| * <td><code>sent()</code> has been called; response headers and <code>status</code> are available</td> |
| * </tr> |
| * <tr> |
| * <td>3</td> <td>loading</td> <td><code>responseText</code> holds some data</td> |
| * </tr> |
| * <tr> |
| * <td>4</td> <td>done</td> <td>request is complete</td> |
| * </tr> |
| * </table> |
| */ |
| @DomName('XMLHttpRequest.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| /** |
| * The data received as a reponse from the request. |
| * |
| * The data could be in the |
| * form of a [String], [ByteBuffer], [Document], [Blob], or json (also a |
| * [String]). `null` indicates request failure. |
| */ |
| @DomName('XMLHttpRequest.response') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Creates('ByteBuffer|Blob|Document|=Object|JSExtendableArray|String|num') |
| final Object response; |
| |
| /** |
| * The response in string form or `null on failure. |
| */ |
| @DomName('XMLHttpRequest.responseText') |
| @DocsEditable() |
| final String responseText; |
| |
| /** |
| * [String] telling the server the desired response format. |
| * |
| * Default is `String`. |
| * Other options are one of 'arraybuffer', 'blob', 'document', 'json', |
| * 'text'. Some newer browsers will throw NS_ERROR_DOM_INVALID_ACCESS_ERR if |
| * `responseType` is set while performing a synchronous request. |
| * |
| * See also: [MDN responseType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType) |
| */ |
| @DomName('XMLHttpRequest.responseType') |
| @DocsEditable() |
| String responseType; |
| |
| @JSName('responseXML') |
| /** |
| * The request response, or null on failure. |
| * |
| * The response is processed as |
| * `text/xml` stream, unless responseType = 'document' and the request is |
| * synchronous. |
| */ |
| @DomName('XMLHttpRequest.responseXML') |
| @DocsEditable() |
| final Document responseXml; |
| |
| /** |
| * The http result code from the request (200, 404, etc). |
| * See also: [Http Status Codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes) |
| */ |
| @DomName('XMLHttpRequest.status') |
| @DocsEditable() |
| final int status; |
| |
| /** |
| * The request response string (such as \"200 OK\"). |
| * See also: [Http Status Codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes) |
| */ |
| @DomName('XMLHttpRequest.statusText') |
| @DocsEditable() |
| final String statusText; |
| |
| @DomName('XMLHttpRequest.timeout') |
| @DocsEditable() |
| @Experimental() // untriaged |
| int timeout; |
| |
| /** |
| * [EventTarget] that can hold listeners to track the progress of the request. |
| * The events fired will be members of [HttpRequestUploadEvents]. |
| */ |
| @DomName('XMLHttpRequest.upload') |
| @DocsEditable() |
| @Unstable() |
| final HttpRequestUpload upload; |
| |
| /** |
| * True if cross-site requests should use credentials such as cookies |
| * or authorization headers; false otherwise. |
| * |
| * This value is ignored for same-site requests. |
| */ |
| @DomName('XMLHttpRequest.withCredentials') |
| @DocsEditable() |
| bool withCredentials; |
| |
| /** |
| * Stop the current request. |
| * |
| * The request can only be stopped if readyState is `HEADERS_RECIEVED` or |
| * `LOADING`. If this method is not in the process of being sent, the method |
| * has no effect. |
| */ |
| @DomName('XMLHttpRequest.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| /** |
| * Retrieve all the response headers from a request. |
| * |
| * `null` if no headers have been received. For multipart requests, |
| * `getAllResponseHeaders` will return the response headers for the current |
| * part of the request. |
| * |
| * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses) |
| * for a list of common response headers. |
| */ |
| @DomName('XMLHttpRequest.getAllResponseHeaders') |
| @DocsEditable() |
| @Unstable() |
| String getAllResponseHeaders() native; |
| |
| /** |
| * Return the response header named `header`, or `null` if not found. |
| * |
| * See also [HTTP response headers](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses) |
| * for a list of common response headers. |
| */ |
| @DomName('XMLHttpRequest.getResponseHeader') |
| @DocsEditable() |
| @Unstable() |
| String getResponseHeader(String header) native; |
| |
| /** |
| * Specify the desired `url`, and `method` to use in making the request. |
| * |
| * By default the request is done asyncronously, with no user or password |
| * authentication information. If `async` is false, the request will be send |
| * synchronously. |
| * |
| * Calling `open` again on a currently active request is equivalent to |
| * calling `abort`. |
| */ |
| @DomName('XMLHttpRequest.open') |
| @DocsEditable() |
| void open(String method, String url, {bool async, String user, String password}) native; |
| |
| /** |
| * Specify a particular MIME type (such as `text/xml`) desired for the |
| * response. |
| * |
| * This value must be set before the request has been sent. See also the list |
| * of [common MIME types](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types) |
| */ |
| @DomName('XMLHttpRequest.overrideMimeType') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| void overrideMimeType(String override) native; |
| |
| /** |
| * Send the request with any given `data`. |
| * |
| * See also: |
| * |
| * * [send](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#send%28%29) |
| * from MDN. |
| */ |
| @DomName('XMLHttpRequest.send') |
| @DocsEditable() |
| void send([data]) native; |
| |
| @DomName('XMLHttpRequest.setRequestHeader') |
| @DocsEditable() |
| void setRequestHeader(String header, String value) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('XMLHttpRequest.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('XMLHttpRequest.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('XMLHttpRequest.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| /** |
| * Event listeners to be notified when request has been aborted, |
| * generally due to calling `httpRequest.abort()`. |
| */ |
| @DomName('XMLHttpRequest.onabort') |
| @DocsEditable() |
| Stream<ProgressEvent> get onAbort => abortEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified when a request has failed, such as when a |
| * cross-domain error occurred or the file wasn't found on the server. |
| */ |
| @DomName('XMLHttpRequest.onerror') |
| @DocsEditable() |
| Stream<ProgressEvent> get onError => errorEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified once the request has completed |
| * *successfully*. |
| */ |
| @DomName('XMLHttpRequest.onload') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoad => loadEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified once the request has completed (on |
| * either success or failure). |
| */ |
| @DomName('XMLHttpRequest.onloadend') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| Stream<ProgressEvent> get onLoadEnd => loadEndEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified when the request starts, once |
| * `httpRequest.send()` has been called. |
| */ |
| @DomName('XMLHttpRequest.onloadstart') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoadStart => loadStartEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified when data for the request |
| * is being sent or loaded. |
| * |
| * Progress events are fired every 50ms or for every byte transmitted, |
| * whichever is less frequent. |
| */ |
| @DomName('XMLHttpRequest.onprogress') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this); |
| |
| /** |
| * Event listeners to be notified every time the [HttpRequest] |
| * object's `readyState` changes values. |
| */ |
| @DomName('XMLHttpRequest.onreadystatechange') |
| @DocsEditable() |
| Stream<ProgressEvent> get onReadyStateChange => readyStateChangeEvent.forTarget(this); |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XMLHttpRequestProgressEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| class HttpRequestProgressEvent extends ProgressEvent native "XMLHttpRequestProgressEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory HttpRequestProgressEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Device.isEventTypeSupported('XMLHttpRequestProgressEvent'); |
| |
| @DomName('XMLHttpRequestProgressEvent.position') |
| @DocsEditable() |
| final int position; |
| |
| @DomName('XMLHttpRequestProgressEvent.totalSize') |
| @DocsEditable() |
| final int totalSize; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XMLHttpRequestUpload') |
| // http://xhr.spec.whatwg.org/#xmlhttprequestupload |
| @Experimental() |
| class HttpRequestUpload extends EventTarget native "XMLHttpRequestUpload,XMLHttpRequestEventTarget" { |
| // To suppress missing implicit constructor warnings. |
| factory HttpRequestUpload._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('XMLHttpRequestUpload.abortEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> abortEvent = const EventStreamProvider<ProgressEvent>('abort'); |
| |
| @DomName('XMLHttpRequestUpload.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> errorEvent = const EventStreamProvider<ProgressEvent>('error'); |
| |
| @DomName('XMLHttpRequestUpload.loadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEvent = const EventStreamProvider<ProgressEvent>('load'); |
| |
| @DomName('XMLHttpRequestUpload.loadendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadEndEvent = const EventStreamProvider<ProgressEvent>('loadend'); |
| |
| @DomName('XMLHttpRequestUpload.loadstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> loadStartEvent = const EventStreamProvider<ProgressEvent>('loadstart'); |
| |
| @DomName('XMLHttpRequestUpload.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<ProgressEvent> progressEvent = const EventStreamProvider<ProgressEvent>('progress'); |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('XMLHttpRequestUpload.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('XMLHttpRequestUpload.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('XMLHttpRequestUpload.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('XMLHttpRequestUpload.onabort') |
| @DocsEditable() |
| Stream<ProgressEvent> get onAbort => abortEvent.forTarget(this); |
| |
| @DomName('XMLHttpRequestUpload.onerror') |
| @DocsEditable() |
| Stream<ProgressEvent> get onError => errorEvent.forTarget(this); |
| |
| @DomName('XMLHttpRequestUpload.onload') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoad => loadEvent.forTarget(this); |
| |
| @DomName('XMLHttpRequestUpload.onloadend') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoadEnd => loadEndEvent.forTarget(this); |
| |
| @DomName('XMLHttpRequestUpload.onloadstart') |
| @DocsEditable() |
| Stream<ProgressEvent> get onLoadStart => loadStartEvent.forTarget(this); |
| |
| @DomName('XMLHttpRequestUpload.onprogress') |
| @DocsEditable() |
| Stream<ProgressEvent> get onProgress => progressEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLIFrameElement') |
| class IFrameElement extends _HTMLElement native "HTMLIFrameElement" { |
| // To suppress missing implicit constructor warnings. |
| factory IFrameElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLIFrameElement.HTMLIFrameElement') |
| @DocsEditable() |
| factory IFrameElement() => document.$dom_createElement("iframe"); |
| |
| WindowBase get contentWindow => _convertNativeToDart_Window(this._get_contentWindow); |
| @JSName('contentWindow') |
| @DomName('HTMLIFrameElement.contentWindow') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_contentWindow; |
| |
| @DomName('HTMLIFrameElement.height') |
| @DocsEditable() |
| String height; |
| |
| @DomName('HTMLIFrameElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLIFrameElement.sandbox') |
| @DocsEditable() |
| String sandbox; |
| |
| @DomName('HTMLIFrameElement.seamless') |
| @DocsEditable() |
| bool seamless; |
| |
| @DomName('HTMLIFrameElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLIFrameElement.srcdoc') |
| @DocsEditable() |
| String srcdoc; |
| |
| @DomName('HTMLIFrameElement.width') |
| @DocsEditable() |
| String width; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ImageBitmap') |
| @Experimental() // untriaged |
| class ImageBitmap extends Interceptor native "ImageBitmap" { |
| |
| @DomName('ImageBitmap.height') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int height; |
| |
| @DomName('ImageBitmap.width') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int width; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('ImageBitmapCallback') |
| @Experimental() // untriaged |
| typedef void ImageBitmapCallback(ImageBitmap bitmap); |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| @DomName('ImageData') |
| class ImageData extends Interceptor native "ImageData" { |
| |
| |
| @DomName('ImageData.data') |
| @DocsEditable() |
| final List<int> data; |
| |
| @DomName('ImageData.height') |
| @DocsEditable() |
| final int height; |
| |
| @DomName('ImageData.width') |
| @DocsEditable() |
| final int width; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('HTMLImageElement') |
| class ImageElement extends _HTMLElement implements CanvasImageSource native "HTMLImageElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ImageElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLImageElement.HTMLImageElement') |
| @DocsEditable() |
| factory ImageElement({String src, int width, int height}) { |
| var e = document.$dom_createElement("img"); |
| if (src != null) e.src = src; |
| if (width != null) e.width = width; |
| if (height != null) e.height = height; |
| return e; |
| } |
| |
| @DomName('HTMLImageElement.alt') |
| @DocsEditable() |
| String alt; |
| |
| @DomName('HTMLImageElement.border') |
| @DocsEditable() |
| @deprecated // deprecated |
| String border; |
| |
| @DomName('HTMLImageElement.complete') |
| @DocsEditable() |
| final bool complete; |
| |
| @DomName('HTMLImageElement.crossOrigin') |
| @DocsEditable() |
| String crossOrigin; |
| |
| @DomName('HTMLImageElement.height') |
| @DocsEditable() |
| int height; |
| |
| @DomName('HTMLImageElement.isMap') |
| @DocsEditable() |
| bool isMap; |
| |
| @DomName('HTMLImageElement.lowsrc') |
| @DocsEditable() |
| @deprecated // deprecated |
| String lowsrc; |
| |
| @DomName('HTMLImageElement.naturalHeight') |
| @DocsEditable() |
| final int naturalHeight; |
| |
| @DomName('HTMLImageElement.naturalWidth') |
| @DocsEditable() |
| final int naturalWidth; |
| |
| @DomName('HTMLImageElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLImageElement.useMap') |
| @DocsEditable() |
| String useMap; |
| |
| @DomName('HTMLImageElement.width') |
| @DocsEditable() |
| int width; |
| |
| @DomName('HTMLImageElement.x') |
| @DocsEditable() |
| @deprecated // deprecated |
| final int x; |
| |
| @DomName('HTMLImageElement.y') |
| @DocsEditable() |
| @deprecated // deprecated |
| final int y; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('HTMLInputElement') |
| class InputElement extends _HTMLElement implements |
| HiddenInputElement, |
| SearchInputElement, |
| TextInputElement, |
| UrlInputElement, |
| TelephoneInputElement, |
| EmailInputElement, |
| PasswordInputElement, |
| DateInputElement, |
| MonthInputElement, |
| WeekInputElement, |
| TimeInputElement, |
| LocalDateTimeInputElement, |
| NumberInputElement, |
| RangeInputElement, |
| CheckboxInputElement, |
| RadioButtonInputElement, |
| FileUploadInputElement, |
| SubmitButtonInputElement, |
| ImageButtonInputElement, |
| ResetButtonInputElement, |
| ButtonInputElement |
| native "HTMLInputElement" { |
| |
| factory InputElement({String type}) { |
| var e = document.$dom_createElement("input"); |
| if (type != null) { |
| try { |
| // IE throws an exception for unknown types. |
| e.type = type; |
| } catch(_) {} |
| } |
| return e; |
| } |
| |
| // To suppress missing implicit constructor warnings. |
| factory InputElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLInputElement.webkitSpeechChangeEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#extending_html_elements |
| static const EventStreamProvider<Event> speechChangeEvent = const EventStreamProvider<Event>('webkitSpeechChange'); |
| |
| @DomName('HTMLInputElement.accept') |
| @DocsEditable() |
| String accept; |
| |
| @DomName('HTMLInputElement.alt') |
| @DocsEditable() |
| String alt; |
| |
| @DomName('HTMLInputElement.autocomplete') |
| @DocsEditable() |
| String autocomplete; |
| |
| @DomName('HTMLInputElement.autofocus') |
| @DocsEditable() |
| bool autofocus; |
| |
| @DomName('HTMLInputElement.checked') |
| @DocsEditable() |
| bool checked; |
| |
| @DomName('HTMLInputElement.defaultChecked') |
| @DocsEditable() |
| bool defaultChecked; |
| |
| @DomName('HTMLInputElement.defaultValue') |
| @DocsEditable() |
| String defaultValue; |
| |
| @DomName('HTMLInputElement.dirName') |
| @DocsEditable() |
| String dirName; |
| |
| @DomName('HTMLInputElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLInputElement.files') |
| @DocsEditable() |
| @Returns('FileList') |
| @Creates('FileList') |
| List<File> files; |
| |
| @DomName('HTMLInputElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLInputElement.formAction') |
| @DocsEditable() |
| String formAction; |
| |
| @DomName('HTMLInputElement.formEnctype') |
| @DocsEditable() |
| String formEnctype; |
| |
| @DomName('HTMLInputElement.formMethod') |
| @DocsEditable() |
| String formMethod; |
| |
| @DomName('HTMLInputElement.formNoValidate') |
| @DocsEditable() |
| bool formNoValidate; |
| |
| @DomName('HTMLInputElement.formTarget') |
| @DocsEditable() |
| String formTarget; |
| |
| @DomName('HTMLInputElement.height') |
| @DocsEditable() |
| int height; |
| |
| @DomName('HTMLInputElement.incremental') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| bool incremental; |
| |
| @DomName('HTMLInputElement.indeterminate') |
| @DocsEditable() |
| bool indeterminate; |
| |
| @DomName('HTMLInputElement.inputMode') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String inputMode; |
| |
| @DomName('HTMLInputElement.labels') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLInputElement.list') |
| @DocsEditable() |
| final Element list; |
| |
| @DomName('HTMLInputElement.max') |
| @DocsEditable() |
| String max; |
| |
| @DomName('HTMLInputElement.maxLength') |
| @DocsEditable() |
| int maxLength; |
| |
| @DomName('HTMLInputElement.min') |
| @DocsEditable() |
| String min; |
| |
| @DomName('HTMLInputElement.multiple') |
| @DocsEditable() |
| bool multiple; |
| |
| @DomName('HTMLInputElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLInputElement.pattern') |
| @DocsEditable() |
| String pattern; |
| |
| @DomName('HTMLInputElement.placeholder') |
| @DocsEditable() |
| String placeholder; |
| |
| @DomName('HTMLInputElement.readOnly') |
| @DocsEditable() |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| @DocsEditable() |
| bool required; |
| |
| @DomName('HTMLInputElement.selectionDirection') |
| @DocsEditable() |
| String selectionDirection; |
| |
| @DomName('HTMLInputElement.selectionEnd') |
| @DocsEditable() |
| int selectionEnd; |
| |
| @DomName('HTMLInputElement.selectionStart') |
| @DocsEditable() |
| int selectionStart; |
| |
| @DomName('HTMLInputElement.size') |
| @DocsEditable() |
| int size; |
| |
| @DomName('HTMLInputElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLInputElement.step') |
| @DocsEditable() |
| String step; |
| |
| @DomName('HTMLInputElement.type') |
| @DocsEditable() |
| String type; |
| |
| @DomName('HTMLInputElement.useMap') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLInputElement-partial |
| @deprecated // deprecated |
| String useMap; |
| |
| @DomName('HTMLInputElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLInputElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLInputElement.value') |
| @DocsEditable() |
| String value; |
| |
| DateTime get valueAsDate => convertNativeToDart_DateTime(this._get_valueAsDate); |
| @JSName('valueAsDate') |
| @DomName('HTMLInputElement.valueAsDate') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_valueAsDate; |
| |
| void set valueAsDate(DateTime value) { |
| this._set_valueAsDate = convertDartToNative_DateTime(value); |
| } |
| void set _set_valueAsDate(/*dynamic*/ value) { |
| JS("void", "#.valueAsDate = #", this, value); |
| } |
| |
| @DomName('HTMLInputElement.valueAsNumber') |
| @DocsEditable() |
| num valueAsNumber; |
| |
| @JSName('webkitEntries') |
| @DomName('HTMLInputElement.webkitEntries') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#concept-input-type-file-selected |
| @Returns('_EntryArray') |
| @Creates('_EntryArray') |
| final List<Entry> entries; |
| |
| @JSName('webkitGrammar') |
| @DomName('HTMLInputElement.webkitGrammar') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-grammar |
| bool grammar; |
| |
| @JSName('webkitSpeech') |
| @DomName('HTMLInputElement.webkitSpeech') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-speech |
| bool speech; |
| |
| @JSName('webkitdirectory') |
| @DomName('HTMLInputElement.webkitdirectory') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3 |
| bool directory; |
| |
| @DomName('HTMLInputElement.width') |
| @DocsEditable() |
| int width; |
| |
| @DomName('HTMLInputElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLInputElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLInputElement.select') |
| @DocsEditable() |
| void select() native; |
| |
| @DomName('HTMLInputElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| |
| @DomName('HTMLInputElement.setRangeText') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext |
| @Experimental() // experimental |
| void setRangeText(String replacement, {int start, int end, String selectionMode}) native; |
| |
| @DomName('HTMLInputElement.setSelectionRange') |
| @DocsEditable() |
| void setSelectionRange(int start, int end, [String direction]) native; |
| |
| @DomName('HTMLInputElement.stepDown') |
| @DocsEditable() |
| void stepDown([int n]) native; |
| |
| @DomName('HTMLInputElement.stepUp') |
| @DocsEditable() |
| void stepUp([int n]) native; |
| |
| @DomName('HTMLInputElement.onwebkitSpeechChange') |
| @DocsEditable() |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#extending_html_elements |
| @Experimental() |
| ElementStream<Event> get onSpeechChange => speechChangeEvent.forElement(this); |
| |
| } |
| |
| |
| // Interfaces representing the InputElement APIs which are supported |
| // for the various types of InputElement. From: |
| // http://www.w3.org/html/wg/drafts/html/master/forms.html#the-input-element. |
| |
| /** |
| * Exposes the functionality common between all InputElement types. |
| */ |
| abstract class InputElementBase implements Element { |
| @DomName('HTMLInputElement.autofocus') |
| bool autofocus; |
| |
| @DomName('HTMLInputElement.disabled') |
| bool disabled; |
| |
| @DomName('HTMLInputElement.incremental') |
| bool incremental; |
| |
| @DomName('HTMLInputElement.indeterminate') |
| bool indeterminate; |
| |
| @DomName('HTMLInputElement.labels') |
| List<Node> get labels; |
| |
| @DomName('HTMLInputElement.name') |
| String name; |
| |
| @DomName('HTMLInputElement.validationMessage') |
| String get validationMessage; |
| |
| @DomName('HTMLInputElement.validity') |
| ValidityState get validity; |
| |
| @DomName('HTMLInputElement.value') |
| String value; |
| |
| @DomName('HTMLInputElement.willValidate') |
| bool get willValidate; |
| |
| @DomName('HTMLInputElement.checkValidity') |
| bool checkValidity(); |
| |
| @DomName('HTMLInputElement.setCustomValidity') |
| void setCustomValidity(String error); |
| } |
| |
| /** |
| * Hidden input which is not intended to be seen or edited by the user. |
| */ |
| abstract class HiddenInputElement implements InputElementBase { |
| factory HiddenInputElement() => new InputElement(type: 'hidden'); |
| } |
| |
| |
| /** |
| * Base interface for all inputs which involve text editing. |
| */ |
| abstract class TextInputElementBase implements InputElementBase { |
| @DomName('HTMLInputElement.autocomplete') |
| String autocomplete; |
| |
| @DomName('HTMLInputElement.maxLength') |
| int maxLength; |
| |
| @DomName('HTMLInputElement.pattern') |
| String pattern; |
| |
| @DomName('HTMLInputElement.placeholder') |
| String placeholder; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| @DomName('HTMLInputElement.size') |
| int size; |
| |
| @DomName('HTMLInputElement.select') |
| void select(); |
| |
| @DomName('HTMLInputElement.selectionDirection') |
| String selectionDirection; |
| |
| @DomName('HTMLInputElement.selectionEnd') |
| int selectionEnd; |
| |
| @DomName('HTMLInputElement.selectionStart') |
| int selectionStart; |
| |
| @DomName('HTMLInputElement.setSelectionRange') |
| void setSelectionRange(int start, int end, [String direction]); |
| } |
| |
| /** |
| * Similar to [TextInputElement], but on platforms where search is styled |
| * differently this will get the search style. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| abstract class SearchInputElement implements TextInputElementBase { |
| factory SearchInputElement() => new InputElement(type: 'search'); |
| |
| @DomName('HTMLInputElement.dirName') |
| String dirName; |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'search')).type == 'search'; |
| } |
| } |
| |
| /** |
| * A basic text input editor control. |
| */ |
| abstract class TextInputElement implements TextInputElementBase { |
| factory TextInputElement() => new InputElement(type: 'text'); |
| |
| @DomName('HTMLInputElement.dirName') |
| String dirName; |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| } |
| |
| /** |
| * A control for editing an absolute URL. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| abstract class UrlInputElement implements TextInputElementBase { |
| factory UrlInputElement() => new InputElement(type: 'url'); |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'url')).type == 'url'; |
| } |
| } |
| |
| /** |
| * Represents a control for editing a telephone number. |
| * |
| * This provides a single line of text with minimal formatting help since |
| * there is a wide variety of telephone numbers. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| abstract class TelephoneInputElement implements TextInputElementBase { |
| factory TelephoneInputElement() => new InputElement(type: 'tel'); |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'tel')).type == 'tel'; |
| } |
| } |
| |
| /** |
| * An e-mail address or list of e-mail addresses. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| abstract class EmailInputElement implements TextInputElementBase { |
| factory EmailInputElement() => new InputElement(type: 'email'); |
| |
| @DomName('HTMLInputElement.autocomplete') |
| String autocomplete; |
| |
| @DomName('HTMLInputElement.autofocus') |
| bool autofocus; |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| |
| @DomName('HTMLInputElement.maxLength') |
| int maxLength; |
| |
| @DomName('HTMLInputElement.multiple') |
| bool multiple; |
| |
| @DomName('HTMLInputElement.pattern') |
| String pattern; |
| |
| @DomName('HTMLInputElement.placeholder') |
| String placeholder; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| @DomName('HTMLInputElement.size') |
| int size; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'email')).type == 'email'; |
| } |
| } |
| |
| /** |
| * Text with no line breaks (sensitive information). |
| */ |
| abstract class PasswordInputElement implements TextInputElementBase { |
| factory PasswordInputElement() => new InputElement(type: 'password'); |
| } |
| |
| /** |
| * Base interface for all input element types which involve ranges. |
| */ |
| abstract class RangeInputElementBase implements InputElementBase { |
| |
| @DomName('HTMLInputElement.list') |
| Element get list; |
| |
| @DomName('HTMLInputElement.max') |
| String max; |
| |
| @DomName('HTMLInputElement.min') |
| String min; |
| |
| @DomName('HTMLInputElement.step') |
| String step; |
| |
| @DomName('HTMLInputElement.valueAsNumber') |
| num valueAsNumber; |
| |
| @DomName('HTMLInputElement.stepDown') |
| void stepDown([int n]); |
| |
| @DomName('HTMLInputElement.stepUp') |
| void stepUp([int n]); |
| } |
| |
| /** |
| * A date (year, month, day) with no time zone. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| abstract class DateInputElement implements RangeInputElementBase { |
| factory DateInputElement() => new InputElement(type: 'date'); |
| |
| @DomName('HTMLInputElement.valueAsDate') |
| DateTime valueAsDate; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'date')).type == 'date'; |
| } |
| } |
| |
| /** |
| * A date consisting of a year and a month with no time zone. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| abstract class MonthInputElement implements RangeInputElementBase { |
| factory MonthInputElement() => new InputElement(type: 'month'); |
| |
| @DomName('HTMLInputElement.valueAsDate') |
| DateTime valueAsDate; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'month')).type == 'month'; |
| } |
| } |
| |
| /** |
| * A date consisting of a week-year number and a week number with no time zone. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| abstract class WeekInputElement implements RangeInputElementBase { |
| factory WeekInputElement() => new InputElement(type: 'week'); |
| |
| @DomName('HTMLInputElement.valueAsDate') |
| DateTime valueAsDate; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'week')).type == 'week'; |
| } |
| } |
| |
| /** |
| * A time (hour, minute, seconds, fractional seconds) with no time zone. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| abstract class TimeInputElement implements RangeInputElementBase { |
| factory TimeInputElement() => new InputElement(type: 'time'); |
| |
| @DomName('HTMLInputElement.valueAsDate') |
| DateTime valueAsDate; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'time')).type == 'time'; |
| } |
| } |
| |
| /** |
| * A date and time (year, month, day, hour, minute, second, fraction of a |
| * second) with no time zone. |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| abstract class LocalDateTimeInputElement implements RangeInputElementBase { |
| factory LocalDateTimeInputElement() => |
| new InputElement(type: 'datetime-local'); |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'datetime-local')).type == 'datetime-local'; |
| } |
| } |
| |
| /** |
| * A numeric editor control. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.IE) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| abstract class NumberInputElement implements RangeInputElementBase { |
| factory NumberInputElement() => new InputElement(type: 'number'); |
| |
| @DomName('HTMLInputElement.placeholder') |
| String placeholder; |
| |
| @DomName('HTMLInputElement.readOnly') |
| bool readOnly; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'number')).type == 'number'; |
| } |
| } |
| |
| /** |
| * Similar to [NumberInputElement] but the browser may provide more optimal |
| * styling (such as a slider control). |
| * |
| * Use [supported] to check if this is supported on the current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @Experimental() |
| abstract class RangeInputElement implements RangeInputElementBase { |
| factory RangeInputElement() => new InputElement(type: 'range'); |
| |
| /// Returns true if this input type is supported on the current platform. |
| static bool get supported { |
| return (new InputElement(type: 'range')).type == 'range'; |
| } |
| } |
| |
| /** |
| * A boolean editor control. |
| * |
| * Note that if [indeterminate] is set then this control is in a third |
| * indeterminate state. |
| */ |
| abstract class CheckboxInputElement implements InputElementBase { |
| factory CheckboxInputElement() => new InputElement(type: 'checkbox'); |
| |
| @DomName('HTMLInputElement.checked') |
| bool checked; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| } |
| |
| |
| /** |
| * A control that when used with other [ReadioButtonInputElement] controls |
| * forms a radio button group in which only one control can be checked at a |
| * time. |
| * |
| * Radio buttons are considered to be in the same radio button group if: |
| * |
| * * They are all of type 'radio'. |
| * * They all have either the same [FormElement] owner, or no owner. |
| * * Their name attributes contain the same name. |
| */ |
| abstract class RadioButtonInputElement implements InputElementBase { |
| factory RadioButtonInputElement() => new InputElement(type: 'radio'); |
| |
| @DomName('HTMLInputElement.checked') |
| bool checked; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| } |
| |
| /** |
| * A control for picking files from the user's computer. |
| */ |
| abstract class FileUploadInputElement implements InputElementBase { |
| factory FileUploadInputElement() => new InputElement(type: 'file'); |
| |
| @DomName('HTMLInputElement.accept') |
| String accept; |
| |
| @DomName('HTMLInputElement.multiple') |
| bool multiple; |
| |
| @DomName('HTMLInputElement.required') |
| bool required; |
| |
| @DomName('HTMLInputElement.files') |
| List<File> files; |
| } |
| |
| /** |
| * A button, which when clicked, submits the form. |
| */ |
| abstract class SubmitButtonInputElement implements InputElementBase { |
| factory SubmitButtonInputElement() => new InputElement(type: 'submit'); |
| |
| @DomName('HTMLInputElement.formAction') |
| String formAction; |
| |
| @DomName('HTMLInputElement.formEnctype') |
| String formEnctype; |
| |
| @DomName('HTMLInputElement.formMethod') |
| String formMethod; |
| |
| @DomName('HTMLInputElement.formNoValidate') |
| bool formNoValidate; |
| |
| @DomName('HTMLInputElement.formTarget') |
| String formTarget; |
| } |
| |
| /** |
| * Either an image which the user can select a coordinate to or a form |
| * submit button. |
| */ |
| abstract class ImageButtonInputElement implements InputElementBase { |
| factory ImageButtonInputElement() => new InputElement(type: 'image'); |
| |
| @DomName('HTMLInputElement.alt') |
| String alt; |
| |
| @DomName('HTMLInputElement.formAction') |
| String formAction; |
| |
| @DomName('HTMLInputElement.formEnctype') |
| String formEnctype; |
| |
| @DomName('HTMLInputElement.formMethod') |
| String formMethod; |
| |
| @DomName('HTMLInputElement.formNoValidate') |
| bool formNoValidate; |
| |
| @DomName('HTMLInputElement.formTarget') |
| String formTarget; |
| |
| @DomName('HTMLInputElement.height') |
| int height; |
| |
| @DomName('HTMLInputElement.src') |
| String src; |
| |
| @DomName('HTMLInputElement.width') |
| int width; |
| } |
| |
| /** |
| * A button, which when clicked, resets the form. |
| */ |
| abstract class ResetButtonInputElement implements InputElementBase { |
| factory ResetButtonInputElement() => new InputElement(type: 'reset'); |
| } |
| |
| /** |
| * A button, with no default behavior. |
| */ |
| abstract class ButtonInputElement implements InputElementBase { |
| factory ButtonInputElement() => new InputElement(type: 'button'); |
| } |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('InputMethodContext') |
| // http://www.w3.org/TR/ime-api/#idl-def-InputMethodContext |
| @Experimental() |
| class InputMethodContext extends Interceptor native "InputMethodContext" { |
| |
| @DomName('InputMethodContext.composition') |
| @DocsEditable() |
| final Composition composition; |
| |
| @DomName('InputMethodContext.locale') |
| @DocsEditable() |
| final String locale; |
| |
| @DomName('InputMethodContext.target') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final Element target; |
| |
| @DomName('InputMethodContext.confirmComposition') |
| @DocsEditable() |
| void confirmComposition() native; |
| |
| @DomName('InputMethodContext.setCaretRectangle') |
| @DocsEditable() |
| void setCaretRectangle(Node anchor, int x, int y, int w, int h) native; |
| |
| @DomName('InputMethodContext.setExclusionRectangle') |
| @DocsEditable() |
| void setExclusionRectangle(Node anchor, int x, int y, int w, int h) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Key') |
| @Experimental() // untriaged |
| class Key extends Interceptor native "Key" { |
| |
| @DomName('Key.algorithm') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final Algorithm algorithm; |
| |
| @DomName('Key.extractable') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final bool extractable; |
| |
| @DomName('Key.type') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String type; |
| |
| @DomName('Key.usages') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final List<String> usages; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * An event that describes user interaction with the keyboard. |
| * |
| * The [type] of the event identifies what kind of interaction occurred. |
| * |
| * See also: |
| * |
| * * [KeyboardEvent](https://developer.mozilla.org/en/DOM/KeyboardEvent) at MDN. |
| */ |
| @DomName('KeyboardEvent') |
| class KeyboardEvent extends UIEvent native "KeyboardEvent" { |
| |
| factory KeyboardEvent(String type, |
| {Window view, bool canBubble: true, bool cancelable: true, |
| String keyIdentifier: "", int keyLocation: 1, bool ctrlKey: false, |
| bool altKey: false, bool shiftKey: false, bool metaKey: false, |
| bool altGraphKey: false}) { |
| if (view == null) { |
| view = window; |
| } |
| final e = document.$dom_createEvent("KeyboardEvent"); |
| e.$dom_initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, |
| keyLocation, ctrlKey, altKey, shiftKey, metaKey, altGraphKey); |
| return e; |
| } |
| |
| @DomName('KeyboardEvent.initKeyboardEvent') |
| void $dom_initKeyboardEvent(String type, bool canBubble, bool cancelable, |
| Window view, String keyIdentifier, int keyLocation, bool ctrlKey, |
| bool altKey, bool shiftKey, bool metaKey, bool altGraphKey) { |
| if (JS('bool', 'typeof(#.initKeyEvent) == "function"', this)) { |
| // initKeyEvent is only in Firefox (instead of initKeyboardEvent). It has |
| // a slightly different signature, and allows you to specify keyCode and |
| // charCode as the last two arguments, but we just set them as the default |
| // since they can't be specified in other browsers. |
| JS('void', '#.initKeyEvent(#, #, #, #, #, #, #, #, 0, 0)', this, |
| type, canBubble, cancelable, view, |
| ctrlKey, altKey, shiftKey, metaKey); |
| } else { |
| // initKeyboardEvent is for all other browsers. |
| JS('void', '#.initKeyboardEvent(#, #, #, #, #, #, #, #, #, #, #)', this, |
| type, canBubble, cancelable, view, keyIdentifier, keyLocation, |
| ctrlKey, altKey, shiftKey, metaKey, altGraphKey); |
| } |
| } |
| |
| @DomName('KeyboardEvent.keyCode') |
| int get keyCode => $dom_keyCode; |
| |
| @DomName('KeyboardEvent.charCode') |
| int get charCode => $dom_charCode; |
| // To suppress missing implicit constructor warnings. |
| factory KeyboardEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('KeyboardEvent.altGraphKey') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final bool altGraphKey; |
| |
| @DomName('KeyboardEvent.altKey') |
| @DocsEditable() |
| final bool altKey; |
| |
| @DomName('KeyboardEvent.ctrlKey') |
| @DocsEditable() |
| final bool ctrlKey; |
| |
| @JSName('keyIdentifier') |
| @DomName('KeyboardEvent.keyIdentifier') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final String $dom_keyIdentifier; |
| |
| @DomName('KeyboardEvent.keyLocation') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final int keyLocation; |
| |
| @DomName('KeyboardEvent.metaKey') |
| @DocsEditable() |
| final bool metaKey; |
| |
| @DomName('KeyboardEvent.shiftKey') |
| @DocsEditable() |
| final bool shiftKey; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLKeygenElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-keygen-element |
| class KeygenElement extends _HTMLElement native "HTMLKeygenElement" { |
| // To suppress missing implicit constructor warnings. |
| factory KeygenElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLKeygenElement.HTMLKeygenElement') |
| @DocsEditable() |
| factory KeygenElement() => document.$dom_createElement("keygen"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('keygen') && (new Element.tag('keygen') is KeygenElement); |
| |
| @DomName('HTMLKeygenElement.autofocus') |
| @DocsEditable() |
| bool autofocus; |
| |
| @DomName('HTMLKeygenElement.challenge') |
| @DocsEditable() |
| String challenge; |
| |
| @DomName('HTMLKeygenElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLKeygenElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLKeygenElement.keytype') |
| @DocsEditable() |
| String keytype; |
| |
| @DomName('HTMLKeygenElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLKeygenElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLKeygenElement.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('HTMLKeygenElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLKeygenElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLKeygenElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLKeygenElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLKeygenElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLLIElement') |
| class LIElement extends _HTMLElement native "HTMLLIElement" { |
| // To suppress missing implicit constructor warnings. |
| factory LIElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLLIElement.HTMLLIElement') |
| @DocsEditable() |
| factory LIElement() => document.$dom_createElement("li"); |
| |
| @DomName('HTMLLIElement.type') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLIElement-partial |
| @deprecated // deprecated |
| String type; |
| |
| @DomName('HTMLLIElement.value') |
| @DocsEditable() |
| int value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLLabelElement') |
| class LabelElement extends _HTMLElement native "HTMLLabelElement" { |
| // To suppress missing implicit constructor warnings. |
| factory LabelElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLLabelElement.HTMLLabelElement') |
| @DocsEditable() |
| factory LabelElement() => document.$dom_createElement("label"); |
| |
| @DomName('HTMLLabelElement.control') |
| @DocsEditable() |
| final Element control; |
| |
| @DomName('HTMLLabelElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLLabelElement.htmlFor') |
| @DocsEditable() |
| String htmlFor; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLLegendElement') |
| class LegendElement extends _HTMLElement native "HTMLLegendElement" { |
| // To suppress missing implicit constructor warnings. |
| factory LegendElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLLegendElement.HTMLLegendElement') |
| @DocsEditable() |
| factory LegendElement() => document.$dom_createElement("legend"); |
| |
| @DomName('HTMLLegendElement.form') |
| @DocsEditable() |
| final FormElement form; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLLinkElement') |
| class LinkElement extends _HTMLElement native "HTMLLinkElement" { |
| // To suppress missing implicit constructor warnings. |
| factory LinkElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLLinkElement.HTMLLinkElement') |
| @DocsEditable() |
| factory LinkElement() => document.$dom_createElement("link"); |
| |
| @DomName('HTMLLinkElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLLinkElement.href') |
| @DocsEditable() |
| String href; |
| |
| @DomName('HTMLLinkElement.hreflang') |
| @DocsEditable() |
| String hreflang; |
| |
| @DomName('HTMLLinkElement.import') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/imports/index.html#interface-import |
| @Experimental() |
| final Document import; |
| |
| @DomName('HTMLLinkElement.media') |
| @DocsEditable() |
| String media; |
| |
| @DomName('HTMLLinkElement.rel') |
| @DocsEditable() |
| String rel; |
| |
| @DomName('HTMLLinkElement.sheet') |
| @DocsEditable() |
| final StyleSheet sheet; |
| |
| @DomName('HTMLLinkElement.sizes') |
| @DocsEditable() |
| DomSettableTokenList sizes; |
| |
| @DomName('HTMLLinkElement.type') |
| @DocsEditable() |
| String type; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Location') |
| class Location extends Interceptor implements LocationBase native "Location" { |
| |
| @DomName('Location.ancestorOrigins') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| @Returns('DomStringList') |
| @Creates('DomStringList') |
| final List<String> ancestorOrigins; |
| |
| @DomName('Location.hash') |
| @DocsEditable() |
| String hash; |
| |
| @DomName('Location.host') |
| @DocsEditable() |
| String host; |
| |
| @DomName('Location.hostname') |
| @DocsEditable() |
| String hostname; |
| |
| @DomName('Location.href') |
| @DocsEditable() |
| String href; |
| |
| @DomName('Location.pathname') |
| @DocsEditable() |
| String pathname; |
| |
| @DomName('Location.port') |
| @DocsEditable() |
| String port; |
| |
| @DomName('Location.protocol') |
| @DocsEditable() |
| String protocol; |
| |
| @DomName('Location.search') |
| @DocsEditable() |
| String search; |
| |
| @DomName('Location.assign') |
| @DocsEditable() |
| void assign(String url) native; |
| |
| @DomName('Location.reload') |
| @DocsEditable() |
| void reload() native; |
| |
| @DomName('Location.replace') |
| @DocsEditable() |
| void replace(String url) native; |
| |
| @DomName('Location.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| |
| @DomName('Location.origin') |
| String get origin { |
| if (JS('bool', '("origin" in #)', this)) { |
| return JS('String', '#.origin', this); |
| } |
| return '${this.protocol}//${this.host}'; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MIDIErrorCallback') |
| // http://webaudio.github.io/web-midi-api/#midierrorcallback |
| @Experimental() |
| typedef void MidiErrorCallback(DomError error); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MIDISuccessCallback') |
| @Experimental() // untriaged |
| typedef void MidiSuccessCallback(MidiAccess access, bool sysex); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLMapElement') |
| class MapElement extends _HTMLElement native "HTMLMapElement" { |
| // To suppress missing implicit constructor warnings. |
| factory MapElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLMapElement.HTMLMapElement') |
| @DocsEditable() |
| factory MapElement() => document.$dom_createElement("map"); |
| |
| @DomName('HTMLMapElement.areas') |
| @DocsEditable() |
| final HtmlCollection areas; |
| |
| @DomName('HTMLMapElement.name') |
| @DocsEditable() |
| String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaController') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#mediacontroller |
| @Experimental() |
| class MediaController extends EventTarget native "MediaController" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaController._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaController.MediaController') |
| @DocsEditable() |
| factory MediaController() { |
| return MediaController._create_1(); |
| } |
| static MediaController _create_1() => JS('MediaController', 'new MediaController()'); |
| |
| @DomName('MediaController.buffered') |
| @DocsEditable() |
| final TimeRanges buffered; |
| |
| @DomName('MediaController.currentTime') |
| @DocsEditable() |
| num currentTime; |
| |
| @DomName('MediaController.defaultPlaybackRate') |
| @DocsEditable() |
| num defaultPlaybackRate; |
| |
| @DomName('MediaController.duration') |
| @DocsEditable() |
| final num duration; |
| |
| @DomName('MediaController.muted') |
| @DocsEditable() |
| bool muted; |
| |
| @DomName('MediaController.paused') |
| @DocsEditable() |
| final bool paused; |
| |
| @DomName('MediaController.playbackRate') |
| @DocsEditable() |
| num playbackRate; |
| |
| @DomName('MediaController.playbackState') |
| @DocsEditable() |
| final String playbackState; |
| |
| @DomName('MediaController.played') |
| @DocsEditable() |
| final TimeRanges played; |
| |
| @DomName('MediaController.seekable') |
| @DocsEditable() |
| final TimeRanges seekable; |
| |
| @DomName('MediaController.volume') |
| @DocsEditable() |
| num volume; |
| |
| @DomName('MediaController.pause') |
| @DocsEditable() |
| void pause() native; |
| |
| @DomName('MediaController.play') |
| @DocsEditable() |
| void play() native; |
| |
| @DomName('MediaController.unpause') |
| @DocsEditable() |
| void unpause() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MediaController.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaController.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MediaController.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLMediaElement') |
| @Unstable() |
| class MediaElement extends _HTMLElement native "HTMLMediaElement" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLMediaElement.canplayEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> canPlayEvent = const EventStreamProvider<Event>('canplay'); |
| |
| @DomName('HTMLMediaElement.canplaythroughEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> canPlayThroughEvent = const EventStreamProvider<Event>('canplaythrough'); |
| |
| @DomName('HTMLMediaElement.durationchangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> durationChangeEvent = const EventStreamProvider<Event>('durationchange'); |
| |
| @DomName('HTMLMediaElement.emptiedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> emptiedEvent = const EventStreamProvider<Event>('emptied'); |
| |
| @DomName('HTMLMediaElement.endedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> endedEvent = const EventStreamProvider<Event>('ended'); |
| |
| @DomName('HTMLMediaElement.loadeddataEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> loadedDataEvent = const EventStreamProvider<Event>('loadeddata'); |
| |
| @DomName('HTMLMediaElement.loadedmetadataEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> loadedMetadataEvent = const EventStreamProvider<Event>('loadedmetadata'); |
| |
| @DomName('HTMLMediaElement.loadstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> loadStartEvent = const EventStreamProvider<Event>('loadstart'); |
| |
| @DomName('HTMLMediaElement.pauseEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> pauseEvent = const EventStreamProvider<Event>('pause'); |
| |
| @DomName('HTMLMediaElement.playEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> playEvent = const EventStreamProvider<Event>('play'); |
| |
| @DomName('HTMLMediaElement.playingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> playingEvent = const EventStreamProvider<Event>('playing'); |
| |
| @DomName('HTMLMediaElement.progressEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> progressEvent = const EventStreamProvider<Event>('progress'); |
| |
| @DomName('HTMLMediaElement.ratechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> rateChangeEvent = const EventStreamProvider<Event>('ratechange'); |
| |
| @DomName('HTMLMediaElement.seekedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> seekedEvent = const EventStreamProvider<Event>('seeked'); |
| |
| @DomName('HTMLMediaElement.seekingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> seekingEvent = const EventStreamProvider<Event>('seeking'); |
| |
| @DomName('HTMLMediaElement.showEvent') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart |
| @Experimental() |
| static const EventStreamProvider<Event> showEvent = const EventStreamProvider<Event>('show'); |
| |
| @DomName('HTMLMediaElement.stalledEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> stalledEvent = const EventStreamProvider<Event>('stalled'); |
| |
| @DomName('HTMLMediaElement.suspendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> suspendEvent = const EventStreamProvider<Event>('suspend'); |
| |
| @DomName('HTMLMediaElement.timeupdateEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> timeUpdateEvent = const EventStreamProvider<Event>('timeupdate'); |
| |
| @DomName('HTMLMediaElement.volumechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> volumeChangeEvent = const EventStreamProvider<Event>('volumechange'); |
| |
| @DomName('HTMLMediaElement.waitingEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> waitingEvent = const EventStreamProvider<Event>('waiting'); |
| |
| @DomName('HTMLMediaElement.webkitkeyaddedEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| static const EventStreamProvider<MediaKeyEvent> keyAddedEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeyadded'); |
| |
| @DomName('HTMLMediaElement.webkitkeyerrorEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| static const EventStreamProvider<MediaKeyEvent> keyErrorEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeyerror'); |
| |
| @DomName('HTMLMediaElement.webkitkeymessageEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| static const EventStreamProvider<MediaKeyEvent> keyMessageEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeymessage'); |
| |
| @DomName('HTMLMediaElement.webkitneedkeyEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| static const EventStreamProvider<MediaKeyEvent> needKeyEvent = const EventStreamProvider<MediaKeyEvent>('webkitneedkey'); |
| |
| @DomName('HTMLMediaElement.HAVE_CURRENT_DATA') |
| @DocsEditable() |
| static const int HAVE_CURRENT_DATA = 2; |
| |
| @DomName('HTMLMediaElement.HAVE_ENOUGH_DATA') |
| @DocsEditable() |
| static const int HAVE_ENOUGH_DATA = 4; |
| |
| @DomName('HTMLMediaElement.HAVE_FUTURE_DATA') |
| @DocsEditable() |
| static const int HAVE_FUTURE_DATA = 3; |
| |
| @DomName('HTMLMediaElement.HAVE_METADATA') |
| @DocsEditable() |
| static const int HAVE_METADATA = 1; |
| |
| @DomName('HTMLMediaElement.HAVE_NOTHING') |
| @DocsEditable() |
| static const int HAVE_NOTHING = 0; |
| |
| @DomName('HTMLMediaElement.NETWORK_EMPTY') |
| @DocsEditable() |
| static const int NETWORK_EMPTY = 0; |
| |
| @DomName('HTMLMediaElement.NETWORK_IDLE') |
| @DocsEditable() |
| static const int NETWORK_IDLE = 1; |
| |
| @DomName('HTMLMediaElement.NETWORK_LOADING') |
| @DocsEditable() |
| static const int NETWORK_LOADING = 2; |
| |
| @DomName('HTMLMediaElement.NETWORK_NO_SOURCE') |
| @DocsEditable() |
| static const int NETWORK_NO_SOURCE = 3; |
| |
| @DomName('HTMLMediaElement.autoplay') |
| @DocsEditable() |
| bool autoplay; |
| |
| @DomName('HTMLMediaElement.buffered') |
| @DocsEditable() |
| final TimeRanges buffered; |
| |
| @DomName('HTMLMediaElement.controller') |
| @DocsEditable() |
| MediaController controller; |
| |
| @DomName('HTMLMediaElement.controls') |
| @DocsEditable() |
| bool controls; |
| |
| @DomName('HTMLMediaElement.currentSrc') |
| @DocsEditable() |
| final String currentSrc; |
| |
| @DomName('HTMLMediaElement.currentTime') |
| @DocsEditable() |
| num currentTime; |
| |
| @DomName('HTMLMediaElement.defaultMuted') |
| @DocsEditable() |
| bool defaultMuted; |
| |
| @DomName('HTMLMediaElement.defaultPlaybackRate') |
| @DocsEditable() |
| num defaultPlaybackRate; |
| |
| @DomName('HTMLMediaElement.duration') |
| @DocsEditable() |
| final num duration; |
| |
| @DomName('HTMLMediaElement.ended') |
| @DocsEditable() |
| final bool ended; |
| |
| @DomName('HTMLMediaElement.error') |
| @DocsEditable() |
| final MediaError error; |
| |
| @DomName('HTMLMediaElement.initialTime') |
| @DocsEditable() |
| // http://www.w3.org/TR/2011/WD-html5-20110113/video.html#dom-media-initialtime |
| @Experimental() |
| final num initialTime; |
| |
| @DomName('HTMLMediaElement.loop') |
| @DocsEditable() |
| bool loop; |
| |
| @DomName('HTMLMediaElement.mediaGroup') |
| @DocsEditable() |
| String mediaGroup; |
| |
| @DomName('HTMLMediaElement.mediaKeys') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html |
| @Experimental() |
| MediaKeys mediaKeys; |
| |
| @DomName('HTMLMediaElement.muted') |
| @DocsEditable() |
| bool muted; |
| |
| @DomName('HTMLMediaElement.networkState') |
| @DocsEditable() |
| final int networkState; |
| |
| @DomName('HTMLMediaElement.paused') |
| @DocsEditable() |
| final bool paused; |
| |
| @DomName('HTMLMediaElement.playbackRate') |
| @DocsEditable() |
| num playbackRate; |
| |
| @DomName('HTMLMediaElement.played') |
| @DocsEditable() |
| final TimeRanges played; |
| |
| @DomName('HTMLMediaElement.preload') |
| @DocsEditable() |
| String preload; |
| |
| @DomName('HTMLMediaElement.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('HTMLMediaElement.seekable') |
| @DocsEditable() |
| final TimeRanges seekable; |
| |
| @DomName('HTMLMediaElement.seeking') |
| @DocsEditable() |
| final bool seeking; |
| |
| @DomName('HTMLMediaElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLMediaElement.startTime') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final num startTime; |
| |
| @DomName('HTMLMediaElement.textTracks') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-texttracks |
| @Experimental() |
| final TextTrackList textTracks; |
| |
| @DomName('HTMLMediaElement.volume') |
| @DocsEditable() |
| num volume; |
| |
| @JSName('webkitAudioDecodedByteCount') |
| @DomName('HTMLMediaElement.webkitAudioDecodedByteCount') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| final int audioDecodedByteCount; |
| |
| @JSName('webkitClosedCaptionsVisible') |
| @DomName('HTMLMediaElement.webkitClosedCaptionsVisible') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| bool closedCaptionsVisible; |
| |
| @JSName('webkitHasClosedCaptions') |
| @DomName('HTMLMediaElement.webkitHasClosedCaptions') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| final bool hasClosedCaptions; |
| |
| @JSName('webkitPreservesPitch') |
| @DomName('HTMLMediaElement.webkitPreservesPitch') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| bool preservesPitch; |
| |
| @JSName('webkitVideoDecodedByteCount') |
| @DomName('HTMLMediaElement.webkitVideoDecodedByteCount') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // nonstandard |
| final int videoDecodedByteCount; |
| |
| @DomName('HTMLMediaElement.addTextTrack') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-addtexttrack |
| @Experimental() |
| TextTrack addTextTrack(String kind, [String label, String language]) native; |
| |
| @DomName('HTMLMediaElement.canPlayType') |
| @DocsEditable() |
| @Unstable() |
| String canPlayType(String type, [String keySystem]) native; |
| |
| @DomName('HTMLMediaElement.load') |
| @DocsEditable() |
| void load() native; |
| |
| @DomName('HTMLMediaElement.pause') |
| @DocsEditable() |
| void pause() native; |
| |
| @DomName('HTMLMediaElement.play') |
| @DocsEditable() |
| void play() native; |
| |
| @JSName('webkitAddKey') |
| @DomName('HTMLMediaElement.webkitAddKey') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions |
| void addKey(String keySystem, Uint8List key, [Uint8List initData, String sessionId]) native; |
| |
| @JSName('webkitCancelKeyRequest') |
| @DomName('HTMLMediaElement.webkitCancelKeyRequest') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions |
| void cancelKeyRequest(String keySystem, String sessionId) native; |
| |
| @JSName('webkitGenerateKeyRequest') |
| @DomName('HTMLMediaElement.webkitGenerateKeyRequest') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions |
| void generateKeyRequest(String keySystem, [Uint8List initData]) native; |
| |
| @DomName('HTMLMediaElement.oncanplay') |
| @DocsEditable() |
| ElementStream<Event> get onCanPlay => canPlayEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.oncanplaythrough') |
| @DocsEditable() |
| ElementStream<Event> get onCanPlayThrough => canPlayThroughEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.ondurationchange') |
| @DocsEditable() |
| ElementStream<Event> get onDurationChange => durationChangeEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onemptied') |
| @DocsEditable() |
| ElementStream<Event> get onEmptied => emptiedEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onended') |
| @DocsEditable() |
| ElementStream<Event> get onEnded => endedEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onloadeddata') |
| @DocsEditable() |
| ElementStream<Event> get onLoadedData => loadedDataEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onloadedmetadata') |
| @DocsEditable() |
| ElementStream<Event> get onLoadedMetadata => loadedMetadataEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onloadstart') |
| @DocsEditable() |
| ElementStream<Event> get onLoadStart => loadStartEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onpause') |
| @DocsEditable() |
| ElementStream<Event> get onPause => pauseEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onplay') |
| @DocsEditable() |
| ElementStream<Event> get onPlay => playEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onplaying') |
| @DocsEditable() |
| ElementStream<Event> get onPlaying => playingEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onprogress') |
| @DocsEditable() |
| ElementStream<Event> get onProgress => progressEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onratechange') |
| @DocsEditable() |
| ElementStream<Event> get onRateChange => rateChangeEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onseeked') |
| @DocsEditable() |
| ElementStream<Event> get onSeeked => seekedEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onseeking') |
| @DocsEditable() |
| ElementStream<Event> get onSeeking => seekingEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onshow') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart |
| @Experimental() |
| ElementStream<Event> get onShow => showEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onstalled') |
| @DocsEditable() |
| ElementStream<Event> get onStalled => stalledEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onsuspend') |
| @DocsEditable() |
| ElementStream<Event> get onSuspend => suspendEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.ontimeupdate') |
| @DocsEditable() |
| ElementStream<Event> get onTimeUpdate => timeUpdateEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onvolumechange') |
| @DocsEditable() |
| ElementStream<Event> get onVolumeChange => volumeChangeEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onwaiting') |
| @DocsEditable() |
| ElementStream<Event> get onWaiting => waitingEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onwebkitkeyadded') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| @Experimental() |
| ElementStream<MediaKeyEvent> get onKeyAdded => keyAddedEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onwebkitkeyerror') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| @Experimental() |
| ElementStream<MediaKeyEvent> get onKeyError => keyErrorEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onwebkitkeymessage') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| @Experimental() |
| ElementStream<MediaKeyEvent> get onKeyMessage => keyMessageEvent.forElement(this); |
| |
| @DomName('HTMLMediaElement.onwebkitneedkey') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded |
| @Experimental() |
| ElementStream<MediaKeyEvent> get onNeedKey => needKeyEvent.forElement(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaError') |
| @Unstable() |
| class MediaError extends Interceptor native "MediaError" { |
| |
| @DomName('MediaError.MEDIA_ERR_ABORTED') |
| @DocsEditable() |
| static const int MEDIA_ERR_ABORTED = 1; |
| |
| @DomName('MediaError.MEDIA_ERR_DECODE') |
| @DocsEditable() |
| static const int MEDIA_ERR_DECODE = 3; |
| |
| @DomName('MediaError.MEDIA_ERR_ENCRYPTED') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#error-codes |
| @Experimental() |
| static const int MEDIA_ERR_ENCRYPTED = 5; |
| |
| @DomName('MediaError.MEDIA_ERR_NETWORK') |
| @DocsEditable() |
| static const int MEDIA_ERR_NETWORK = 2; |
| |
| @DomName('MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED') |
| @DocsEditable() |
| static const int MEDIA_ERR_SRC_NOT_SUPPORTED = 4; |
| |
| @DomName('MediaError.code') |
| @DocsEditable() |
| final int code; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeyError') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#error-codes |
| @Experimental() |
| class MediaKeyError extends Interceptor native "MediaKeyError" { |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_CLIENT') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_CLIENT = 2; |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_DOMAIN') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_DOMAIN = 6; |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_HARDWARECHANGE') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_HARDWARECHANGE = 5; |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_OUTPUT') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_OUTPUT = 4; |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_SERVICE') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_SERVICE = 3; |
| |
| @DomName('MediaKeyError.MEDIA_KEYERR_UNKNOWN') |
| @DocsEditable() |
| static const int MEDIA_KEYERR_UNKNOWN = 1; |
| |
| @DomName('MediaKeyError.code') |
| @DocsEditable() |
| final int code; |
| |
| @DomName('MediaKeyError.systemCode') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final int systemCode; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeyEvent') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#event-definitions |
| @Experimental() |
| class MediaKeyEvent extends Event native "MediaKeyEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaKeyEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('defaultURL') |
| @DomName('MediaKeyEvent.defaultURL') |
| @DocsEditable() |
| final String defaultUrl; |
| |
| @DomName('MediaKeyEvent.errorCode') |
| @DocsEditable() |
| final MediaKeyError errorCode; |
| |
| @DomName('MediaKeyEvent.initData') |
| @DocsEditable() |
| final Uint8List initData; |
| |
| @DomName('MediaKeyEvent.keySystem') |
| @DocsEditable() |
| final String keySystem; |
| |
| @DomName('MediaKeyEvent.message') |
| @DocsEditable() |
| final Uint8List message; |
| |
| @DomName('MediaKeyEvent.sessionId') |
| @DocsEditable() |
| final String sessionId; |
| |
| @DomName('MediaKeyEvent.systemCode') |
| @DocsEditable() |
| final int systemCode; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeyMessageEvent') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-mediakeymessageevent |
| @Experimental() |
| class MediaKeyMessageEvent extends Event native "MediaKeyMessageEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaKeyMessageEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('destinationURL') |
| @DomName('MediaKeyMessageEvent.destinationURL') |
| @DocsEditable() |
| final String destinationUrl; |
| |
| @DomName('MediaKeyMessageEvent.message') |
| @DocsEditable() |
| final Uint8List message; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeyNeededEvent') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-mediakeyneededevent |
| @Experimental() |
| class MediaKeyNeededEvent extends Event native "MediaKeyNeededEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaKeyNeededEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaKeyNeededEvent.initData') |
| @DocsEditable() |
| final Uint8List initData; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeySession') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-mediakeysession |
| @Experimental() |
| class MediaKeySession extends EventTarget native "MediaKeySession" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaKeySession._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaKeySession.webkitkeyaddedEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<MediaKeyEvent> keyAddedEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeyadded'); |
| |
| @DomName('MediaKeySession.webkitkeyerrorEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<MediaKeyEvent> keyErrorEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeyerror'); |
| |
| @DomName('MediaKeySession.webkitkeymessageEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<MediaKeyEvent> keyMessageEvent = const EventStreamProvider<MediaKeyEvent>('webkitkeymessage'); |
| |
| @DomName('MediaKeySession.error') |
| @DocsEditable() |
| final MediaKeyError error; |
| |
| @DomName('MediaKeySession.keySystem') |
| @DocsEditable() |
| final String keySystem; |
| |
| @DomName('MediaKeySession.sessionId') |
| @DocsEditable() |
| final String sessionId; |
| |
| @DomName('MediaKeySession.close') |
| @DocsEditable() |
| void close() native; |
| |
| @DomName('MediaKeySession.update') |
| @DocsEditable() |
| void update(Uint8List key) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MediaKeySession.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaKeySession.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MediaKeySession.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaKeySession.onwebkitkeyadded') |
| @DocsEditable() |
| Stream<MediaKeyEvent> get onKeyAdded => keyAddedEvent.forTarget(this); |
| |
| @DomName('MediaKeySession.onwebkitkeyerror') |
| @DocsEditable() |
| Stream<MediaKeyEvent> get onKeyError => keyErrorEvent.forTarget(this); |
| |
| @DomName('MediaKeySession.onwebkitkeymessage') |
| @DocsEditable() |
| Stream<MediaKeyEvent> get onKeyMessage => keyMessageEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaKeys') |
| // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html |
| @Experimental() |
| class MediaKeys extends Interceptor native "MediaKeys" { |
| |
| @DomName('MediaKeys.MediaKeys') |
| @DocsEditable() |
| factory MediaKeys(String keySystem) { |
| return MediaKeys._create_1(keySystem); |
| } |
| static MediaKeys _create_1(keySystem) => JS('MediaKeys', 'new MediaKeys(#)', keySystem); |
| |
| @DomName('MediaKeys.keySystem') |
| @DocsEditable() |
| final String keySystem; |
| |
| @DomName('MediaKeys.createSession') |
| @DocsEditable() |
| MediaKeySession createSession(String type, Uint8List initData) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaList') |
| @Unstable() |
| class MediaList extends Interceptor native "MediaList" { |
| |
| @DomName('MediaList.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('MediaList.mediaText') |
| @DocsEditable() |
| String mediaText; |
| |
| @DomName('MediaList.appendMedium') |
| @DocsEditable() |
| void appendMedium(String newMedium) native; |
| |
| @DomName('MediaList.deleteMedium') |
| @DocsEditable() |
| void deleteMedium(String oldMedium) native; |
| |
| @DomName('MediaList.item') |
| @DocsEditable() |
| String item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaQueryList') |
| @Unstable() |
| class MediaQueryList extends Interceptor native "MediaQueryList" { |
| |
| @DomName('MediaQueryList.matches') |
| @DocsEditable() |
| final bool matches; |
| |
| @DomName('MediaQueryList.media') |
| @DocsEditable() |
| final String media; |
| |
| @DomName('MediaQueryList.addListener') |
| @DocsEditable() |
| void addListener(MediaQueryListListener listener) native; |
| |
| @DomName('MediaQueryList.removeListener') |
| @DocsEditable() |
| void removeListener(MediaQueryListListener listener) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaQueryListListener') |
| @Unstable() |
| abstract class MediaQueryListListener extends Interceptor { |
| |
| void queryChanged(MediaQueryList list); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaSource') |
| // https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#mediasource |
| @Experimental() |
| class MediaSource extends EventTarget native "MediaSource" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaSource._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaSource.MediaSource') |
| @DocsEditable() |
| factory MediaSource() { |
| return MediaSource._create_1(); |
| } |
| static MediaSource _create_1() => JS('MediaSource', 'new MediaSource()'); |
| |
| @DomName('MediaSource.activeSourceBuffers') |
| @DocsEditable() |
| final SourceBufferList activeSourceBuffers; |
| |
| @DomName('MediaSource.duration') |
| @DocsEditable() |
| num duration; |
| |
| @DomName('MediaSource.readyState') |
| @DocsEditable() |
| final String readyState; |
| |
| @DomName('MediaSource.sourceBuffers') |
| @DocsEditable() |
| final SourceBufferList sourceBuffers; |
| |
| @DomName('MediaSource.addSourceBuffer') |
| @DocsEditable() |
| SourceBuffer addSourceBuffer(String type) native; |
| |
| @DomName('MediaSource.endOfStream') |
| @DocsEditable() |
| void endOfStream(String error) native; |
| |
| @DomName('MediaSource.isTypeSupported') |
| @DocsEditable() |
| static bool isTypeSupported(String type) native; |
| |
| @DomName('MediaSource.removeSourceBuffer') |
| @DocsEditable() |
| void removeSourceBuffer(SourceBuffer buffer) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MediaSource.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaSource.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MediaSource.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('MediaStream') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastream |
| class MediaStream extends EventTarget native "MediaStream" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaStream._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaStream.addtrackEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> addTrackEvent = const EventStreamProvider<Event>('addtrack'); |
| |
| @DomName('MediaStream.endedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> endedEvent = const EventStreamProvider<Event>('ended'); |
| |
| @DomName('MediaStream.removetrackEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> removeTrackEvent = const EventStreamProvider<Event>('removetrack'); |
| |
| @DomName('MediaStream.MediaStream') |
| @DocsEditable() |
| factory MediaStream([stream_OR_tracks]) { |
| if (stream_OR_tracks == null) { |
| return MediaStream._create_1(); |
| } |
| if ((stream_OR_tracks is MediaStream || stream_OR_tracks == null)) { |
| return MediaStream._create_2(stream_OR_tracks); |
| } |
| if ((stream_OR_tracks is List<MediaStreamTrack> || stream_OR_tracks == null)) { |
| return MediaStream._create_3(stream_OR_tracks); |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| static MediaStream _create_1() => JS('MediaStream', 'new MediaStream()'); |
| static MediaStream _create_2(stream_OR_tracks) => JS('MediaStream', 'new MediaStream(#)', stream_OR_tracks); |
| static MediaStream _create_3(stream_OR_tracks) => JS('MediaStream', 'new MediaStream(#)', stream_OR_tracks); |
| |
| @DomName('MediaStream.ended') |
| @DocsEditable() |
| final bool ended; |
| |
| @DomName('MediaStream.id') |
| @DocsEditable() |
| final String id; |
| |
| @DomName('MediaStream.label') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final String label; |
| |
| @DomName('MediaStream.addTrack') |
| @DocsEditable() |
| void addTrack(MediaStreamTrack track) native; |
| |
| @DomName('MediaStream.getAudioTracks') |
| @DocsEditable() |
| List<MediaStreamTrack> getAudioTracks() native; |
| |
| @DomName('MediaStream.getTrackById') |
| @DocsEditable() |
| MediaStreamTrack getTrackById(String trackId) native; |
| |
| @DomName('MediaStream.getVideoTracks') |
| @DocsEditable() |
| List<MediaStreamTrack> getVideoTracks() native; |
| |
| @DomName('MediaStream.removeTrack') |
| @DocsEditable() |
| void removeTrack(MediaStreamTrack track) native; |
| |
| @DomName('MediaStream.stop') |
| @DocsEditable() |
| void stop() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MediaStream.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaStream.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MediaStream.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaStream.onaddtrack') |
| @DocsEditable() |
| Stream<Event> get onAddTrack => addTrackEvent.forTarget(this); |
| |
| @DomName('MediaStream.onended') |
| @DocsEditable() |
| Stream<Event> get onEnded => endedEvent.forTarget(this); |
| |
| @DomName('MediaStream.onremovetrack') |
| @DocsEditable() |
| Stream<Event> get onRemoveTrack => removeTrackEvent.forTarget(this); |
| |
| |
| /** |
| * Checks if the MediaStream APIs are supported on the current platform. |
| * |
| * See also: |
| * |
| * * [Navigator.getUserMedia] |
| */ |
| static bool get supported => |
| JS('bool', '''!!(#.getUserMedia || #.webkitGetUserMedia || |
| #.mozGetUserMedia || #.msGetUserMedia)''', |
| window.navigator, |
| window.navigator, |
| window.navigator, |
| window.navigator); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaStreamEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html |
| class MediaStreamEvent extends Event native "MediaStreamEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaStreamEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Device.isEventTypeSupported('MediaStreamEvent'); |
| |
| @DomName('MediaStreamEvent.stream') |
| @DocsEditable() |
| final MediaStream stream; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaStreamTrack') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastreamtrack |
| class MediaStreamTrack extends EventTarget native "MediaStreamTrack" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaStreamTrack._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MediaStreamTrack.endedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> endedEvent = const EventStreamProvider<Event>('ended'); |
| |
| @DomName('MediaStreamTrack.muteEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> muteEvent = const EventStreamProvider<Event>('mute'); |
| |
| @DomName('MediaStreamTrack.unmuteEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> unmuteEvent = const EventStreamProvider<Event>('unmute'); |
| |
| @DomName('MediaStreamTrack.enabled') |
| @DocsEditable() |
| bool enabled; |
| |
| @DomName('MediaStreamTrack.id') |
| @DocsEditable() |
| final String id; |
| |
| @DomName('MediaStreamTrack.kind') |
| @DocsEditable() |
| final String kind; |
| |
| @DomName('MediaStreamTrack.label') |
| @DocsEditable() |
| final String label; |
| |
| @DomName('MediaStreamTrack.readyState') |
| @DocsEditable() |
| final String readyState; |
| |
| @DomName('MediaStreamTrack.getSources') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static void getSources(MediaStreamTrackSourcesCallback callback) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MediaStreamTrack.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaStreamTrack.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MediaStreamTrack.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MediaStreamTrack.onended') |
| @DocsEditable() |
| Stream<Event> get onEnded => endedEvent.forTarget(this); |
| |
| @DomName('MediaStreamTrack.onmute') |
| @DocsEditable() |
| Stream<Event> get onMute => muteEvent.forTarget(this); |
| |
| @DomName('MediaStreamTrack.onunmute') |
| @DocsEditable() |
| Stream<Event> get onUnmute => unmuteEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MediaStreamTrackEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html |
| class MediaStreamTrackEvent extends Event native "MediaStreamTrackEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MediaStreamTrackEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Device.isEventTypeSupported('MediaStreamTrackEvent'); |
| |
| @DomName('MediaStreamTrackEvent.track') |
| @DocsEditable() |
| final MediaStreamTrack track; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MediaStreamTrackSourcesCallback') |
| @Experimental() // untriaged |
| typedef void MediaStreamTrackSourcesCallback(List<SourceInfo> sources); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MemoryInfo') |
| @Experimental() // nonstandard |
| class MemoryInfo extends Interceptor native "MemoryInfo" { |
| |
| @DomName('MemoryInfo.jsHeapSizeLimit') |
| @DocsEditable() |
| final int jsHeapSizeLimit; |
| |
| @DomName('MemoryInfo.totalJSHeapSize') |
| @DocsEditable() |
| final int totalJSHeapSize; |
| |
| @DomName('MemoryInfo.usedJSHeapSize') |
| @DocsEditable() |
| final int usedJSHeapSize; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * An HTML <menu> element. |
| * |
| * A <menu> element represents an unordered list of menu commands. |
| * |
| * See also: |
| * |
| * * [Menu Element](https://developer.mozilla.org/en-US/docs/HTML/Element/menu) from MDN. |
| * * [Menu Element](http://www.w3.org/TR/html5/the-menu-element.html#the-menu-element) from the W3C. |
| */ |
| @DomName('HTMLMenuElement') |
| class MenuElement extends _HTMLElement native "HTMLMenuElement" { |
| // To suppress missing implicit constructor warnings. |
| factory MenuElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLMenuElement.HTMLMenuElement') |
| @DocsEditable() |
| factory MenuElement() => document.$dom_createElement("menu"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MessageChannel') |
| @Unstable() |
| class MessageChannel extends Interceptor native "MessageChannel" { |
| |
| @DomName('MessageChannel.MessageChannel') |
| @DocsEditable() |
| factory MessageChannel() { |
| return MessageChannel._create_1(); |
| } |
| static MessageChannel _create_1() => JS('MessageChannel', 'new MessageChannel()'); |
| |
| @DomName('MessageChannel.port1') |
| @DocsEditable() |
| final MessagePort port1; |
| |
| @DomName('MessageChannel.port2') |
| @DocsEditable() |
| final MessagePort port2; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MessageEvent') |
| class MessageEvent extends Event native "MessageEvent" { |
| factory MessageEvent(String type, |
| {bool canBubble: false, bool cancelable: false, Object data, |
| String origin, String lastEventId, |
| Window source, List messagePorts}) { |
| if (source == null) { |
| source = window; |
| } |
| var event = document.$dom_createEvent("MessageEvent"); |
| event.$dom_initMessageEvent(type, canBubble, cancelable, data, origin, |
| lastEventId, source, messagePorts); |
| return event; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory MessageEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| dynamic get data => convertNativeToDart_SerializedScriptValue(this._get_data); |
| @JSName('data') |
| @DomName('MessageEvent.data') |
| @DocsEditable() |
| @annotation_Creates_SerializedScriptValue |
| @annotation_Returns_SerializedScriptValue |
| final dynamic _get_data; |
| |
| @DomName('MessageEvent.lastEventId') |
| @DocsEditable() |
| @Unstable() |
| final String lastEventId; |
| |
| @DomName('MessageEvent.origin') |
| @DocsEditable() |
| final String origin; |
| |
| @DomName('MessageEvent.ports') |
| @DocsEditable() |
| @Unstable() |
| @Creates('JSExtendableArray') |
| final List<MessagePort> ports; |
| |
| WindowBase get source => _convertNativeToDart_Window(this._get_source); |
| @JSName('source') |
| @DomName('MessageEvent.source') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_source; |
| |
| @JSName('initMessageEvent') |
| @DomName('MessageEvent.initMessageEvent') |
| @DocsEditable() |
| void $dom_initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List messagePorts) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MessagePort') |
| @Unstable() |
| class MessagePort extends EventTarget native "MessagePort" { |
| // To suppress missing implicit constructor warnings. |
| factory MessagePort._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MessagePort.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('MessagePort.close') |
| @DocsEditable() |
| void close() native; |
| |
| @DomName('MessagePort.postMessage') |
| @DocsEditable() |
| void postMessage(/*any*/ message, [List messagePorts]) { |
| if (messagePorts != null) { |
| var message_1 = convertDartToNative_SerializedScriptValue(message); |
| _postMessage_1(message_1, messagePorts); |
| return; |
| } |
| var message_2 = convertDartToNative_SerializedScriptValue(message); |
| _postMessage_2(message_2); |
| return; |
| } |
| @JSName('postMessage') |
| @DomName('MessagePort.postMessage') |
| @DocsEditable() |
| void _postMessage_1(message, List messagePorts) native; |
| @JSName('postMessage') |
| @DomName('MessagePort.postMessage') |
| @DocsEditable() |
| void _postMessage_2(message) native; |
| |
| @DomName('MessagePort.start') |
| @DocsEditable() |
| void start() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MessagePort.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MessagePort.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MessagePort.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MessagePort.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLMetaElement') |
| class MetaElement extends _HTMLElement native "HTMLMetaElement" { |
| // To suppress missing implicit constructor warnings. |
| factory MetaElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLMetaElement.HTMLMetaElement') |
| @DocsEditable() |
| factory MetaElement() => document.$dom_createElement("meta"); |
| |
| @DomName('HTMLMetaElement.content') |
| @DocsEditable() |
| String content; |
| |
| @DomName('HTMLMetaElement.httpEquiv') |
| @DocsEditable() |
| String httpEquiv; |
| |
| @DomName('HTMLMetaElement.name') |
| @DocsEditable() |
| String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Metadata') |
| // http://www.w3.org/TR/file-system-api/#the-metadata-interface |
| @Experimental() |
| class Metadata extends Interceptor native "Metadata" { |
| |
| DateTime get modificationTime => convertNativeToDart_DateTime(this._get_modificationTime); |
| @JSName('modificationTime') |
| @DomName('Metadata.modificationTime') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_modificationTime; |
| |
| @DomName('Metadata.size') |
| @DocsEditable() |
| final int size; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MetadataCallback') |
| // http://www.w3.org/TR/file-system-api/#idl-def-MetadataCallback |
| @Experimental() |
| typedef void MetadataCallback(Metadata metadata); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLMeterElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class MeterElement extends _HTMLElement native "HTMLMeterElement" { |
| // To suppress missing implicit constructor warnings. |
| factory MeterElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLMeterElement.HTMLMeterElement') |
| @DocsEditable() |
| factory MeterElement() => document.$dom_createElement("meter"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('meter'); |
| |
| @DomName('HTMLMeterElement.high') |
| @DocsEditable() |
| num high; |
| |
| @DomName('HTMLMeterElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLMeterElement.low') |
| @DocsEditable() |
| num low; |
| |
| @DomName('HTMLMeterElement.max') |
| @DocsEditable() |
| num max; |
| |
| @DomName('HTMLMeterElement.min') |
| @DocsEditable() |
| num min; |
| |
| @DomName('HTMLMeterElement.optimum') |
| @DocsEditable() |
| num optimum; |
| |
| @DomName('HTMLMeterElement.value') |
| @DocsEditable() |
| num value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIAccess') |
| // http://webaudio.github.io/web-midi-api/#midiaccess-interface |
| @Experimental() |
| class MidiAccess extends EventTarget native "MIDIAccess" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiAccess._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIAccess.connectEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MidiConnectionEvent> connectEvent = const EventStreamProvider<MidiConnectionEvent>('connect'); |
| |
| @DomName('MIDIAccess.disconnectEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MidiConnectionEvent> disconnectEvent = const EventStreamProvider<MidiConnectionEvent>('disconnect'); |
| |
| @DomName('MIDIAccess.inputs') |
| @DocsEditable() |
| List<MidiInput> inputs() native; |
| |
| @DomName('MIDIAccess.outputs') |
| @DocsEditable() |
| List<MidiOutput> outputs() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MIDIAccess.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MIDIAccess.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MIDIAccess.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MIDIAccess.onconnect') |
| @DocsEditable() |
| Stream<MidiConnectionEvent> get onConnect => connectEvent.forTarget(this); |
| |
| @DomName('MIDIAccess.ondisconnect') |
| @DocsEditable() |
| Stream<MidiConnectionEvent> get onDisconnect => disconnectEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIAccessPromise') |
| @Experimental() // untriaged |
| class MidiAccessPromise extends Interceptor native "MIDIAccessPromise" { |
| |
| @DomName('MIDIAccessPromise.then') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void then(MidiSuccessCallback successCallback, MidiErrorCallback errorCallback) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIConnectionEvent') |
| // http://webaudio.github.io/web-midi-api/#midiconnectionevent-interface |
| @Experimental() |
| class MidiConnectionEvent extends Event native "MIDIConnectionEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiConnectionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIConnectionEvent.port') |
| @DocsEditable() |
| final MidiPort port; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIInput') |
| // http://webaudio.github.io/web-midi-api/#idl-def-MIDIInput |
| @Experimental() |
| class MidiInput extends MidiPort native "MIDIInput" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiInput._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIInput.midimessageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MidiMessageEvent> midiMessageEvent = const EventStreamProvider<MidiMessageEvent>('midimessage'); |
| |
| @DomName('MIDIInput.onmidimessage') |
| @DocsEditable() |
| Stream<MidiMessageEvent> get onMidiMessage => midiMessageEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIMessageEvent') |
| // http://webaudio.github.io/web-midi-api/#midimessageevent-interface |
| @Experimental() |
| class MidiMessageEvent extends Event native "MIDIMessageEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiMessageEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIMessageEvent.data') |
| @DocsEditable() |
| final Uint8List data; |
| |
| @DomName('MIDIMessageEvent.receivedTime') |
| @DocsEditable() |
| final num receivedTime; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIOutput') |
| // http://webaudio.github.io/web-midi-api/#midioutput-interface |
| @Experimental() |
| class MidiOutput extends MidiPort native "MIDIOutput" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiOutput._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIOutput.send') |
| @DocsEditable() |
| void send(Uint8List data, [num timestamp]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MIDIPort') |
| // http://webaudio.github.io/web-midi-api/#idl-def-MIDIPort |
| @Experimental() |
| class MidiPort extends EventTarget native "MIDIPort" { |
| // To suppress missing implicit constructor warnings. |
| factory MidiPort._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MIDIPort.disconnectEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MidiConnectionEvent> disconnectEvent = const EventStreamProvider<MidiConnectionEvent>('disconnect'); |
| |
| @DomName('MIDIPort.id') |
| @DocsEditable() |
| final String id; |
| |
| @DomName('MIDIPort.manufacturer') |
| @DocsEditable() |
| final String manufacturer; |
| |
| @DomName('MIDIPort.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('MIDIPort.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('MIDIPort.version') |
| @DocsEditable() |
| final String version; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('MIDIPort.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MIDIPort.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('MIDIPort.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('MIDIPort.ondisconnect') |
| @DocsEditable() |
| Stream<MidiConnectionEvent> get onDisconnect => disconnectEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MimeType') |
| @Experimental() // non-standard |
| class MimeType extends Interceptor native "MimeType" { |
| |
| @DomName('MimeType.description') |
| @DocsEditable() |
| final String description; |
| |
| @DomName('MimeType.enabledPlugin') |
| @DocsEditable() |
| final Plugin enabledPlugin; |
| |
| @DomName('MimeType.suffixes') |
| @DocsEditable() |
| final String suffixes; |
| |
| @DomName('MimeType.type') |
| @DocsEditable() |
| final String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MimeTypeArray') |
| @Experimental() // non-standard |
| class MimeTypeArray extends Interceptor with ListMixin<MimeType>, ImmutableListMixin<MimeType> implements JavaScriptIndexingBehavior, List<MimeType> native "MimeTypeArray" { |
| |
| @DomName('MimeTypeArray.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| MimeType operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("MimeType", "#[#]", this, index); |
| } |
| void operator[]=(int index, MimeType value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<MimeType> mixins. |
| // MimeType is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| MimeType get first { |
| if (this.length > 0) { |
| return JS('MimeType', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| MimeType get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('MimeType', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| MimeType get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('MimeType', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| MimeType elementAt(int index) => this[index]; |
| // -- end List<MimeType> mixins. |
| |
| @DomName('MimeTypeArray.__getter__') |
| @DocsEditable() |
| MimeType __getter__(String name) native; |
| |
| @DomName('MimeTypeArray.item') |
| @DocsEditable() |
| MimeType item(int index) native; |
| |
| @DomName('MimeTypeArray.namedItem') |
| @DocsEditable() |
| MimeType namedItem(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLModElement') |
| @Unstable() |
| class ModElement extends _HTMLElement native "HTMLModElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ModElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLModElement.cite') |
| @DocsEditable() |
| String cite; |
| |
| @DomName('HTMLModElement.dateTime') |
| @DocsEditable() |
| String dateTime; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('MouseEvent') |
| class MouseEvent extends UIEvent native "MouseEvent,DragEvent" { |
| factory MouseEvent(String type, |
| {Window view, int detail: 0, int screenX: 0, int screenY: 0, |
| int clientX: 0, int clientY: 0, int button: 0, bool canBubble: true, |
| bool cancelable: true, bool ctrlKey: false, bool altKey: false, |
| bool shiftKey: false, bool metaKey: false, EventTarget relatedTarget}) { |
| |
| if (view == null) { |
| view = window; |
| } |
| var event = document.$dom_createEvent('MouseEvent'); |
| event.$dom_initMouseEvent(type, canBubble, cancelable, view, detail, |
| screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, |
| button, relatedTarget); |
| return event; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory MouseEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MouseEvent.altKey') |
| @DocsEditable() |
| final bool altKey; |
| |
| @DomName('MouseEvent.button') |
| @DocsEditable() |
| final int button; |
| |
| @JSName('clientX') |
| @DomName('MouseEvent.clientX') |
| @DocsEditable() |
| final int $dom_clientX; |
| |
| @JSName('clientY') |
| @DomName('MouseEvent.clientY') |
| @DocsEditable() |
| final int $dom_clientY; |
| |
| @DomName('MouseEvent.ctrlKey') |
| @DocsEditable() |
| final bool ctrlKey; |
| |
| @DomName('MouseEvent.dataTransfer') |
| @DocsEditable() |
| @Unstable() |
| final DataTransfer dataTransfer; |
| |
| @DomName('MouseEvent.fromElement') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final Node fromElement; |
| |
| @DomName('MouseEvent.metaKey') |
| @DocsEditable() |
| final bool metaKey; |
| |
| EventTarget get relatedTarget => _convertNativeToDart_EventTarget(this._get_relatedTarget); |
| @JSName('relatedTarget') |
| @DomName('MouseEvent.relatedTarget') |
| @DocsEditable() |
| @Creates('Node') |
| @Returns('EventTarget|=Object') |
| final dynamic _get_relatedTarget; |
| |
| @JSName('screenX') |
| @DomName('MouseEvent.screenX') |
| @DocsEditable() |
| final int $dom_screenX; |
| |
| @JSName('screenY') |
| @DomName('MouseEvent.screenY') |
| @DocsEditable() |
| final int $dom_screenY; |
| |
| @DomName('MouseEvent.shiftKey') |
| @DocsEditable() |
| final bool shiftKey; |
| |
| @DomName('MouseEvent.toElement') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final Node toElement; |
| |
| @JSName('webkitMovementX') |
| @DomName('MouseEvent.webkitMovementX') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int $dom_webkitMovementX; |
| |
| @JSName('webkitMovementY') |
| @DomName('MouseEvent.webkitMovementY') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int $dom_webkitMovementY; |
| |
| @DomName('MouseEvent.initMouseEvent') |
| @DocsEditable() |
| void $dom_initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) { |
| var relatedTarget_1 = _convertDartToNative_EventTarget(relatedTarget); |
| _$dom_initMouseEvent_1(type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1); |
| return; |
| } |
| @JSName('initMouseEvent') |
| @DomName('MouseEvent.initMouseEvent') |
| @DocsEditable() |
| void _$dom_initMouseEvent_1(type, canBubble, cancelable, Window view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) native; |
| |
| |
| @deprecated |
| int get clientX => client.x; |
| @deprecated |
| int get clientY => client.y; |
| @deprecated |
| int get offsetX => offset.x; |
| @deprecated |
| int get offsetY => offset.y; |
| @deprecated |
| int get movementX => movement.x; |
| @deprecated |
| int get movementY => movement.y; |
| @deprecated |
| int get screenX => screen.x; |
| @deprecated |
| int get screenY => screen.y; |
| |
| @DomName('MouseEvent.clientX') |
| @DomName('MouseEvent.clientY') |
| Point get client => new Point($dom_clientX, $dom_clientY); |
| |
| @DomName('MouseEvent.movementX') |
| @DomName('MouseEvent.movementY') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Point get movement => new Point($dom_webkitMovementX, $dom_webkitMovementY); |
| |
| /** |
| * The coordinates of the mouse pointer in target node coordinates. |
| * |
| * This value may vary between platforms if the target node moves |
| * after the event has fired or if the element has CSS transforms affecting |
| * it. |
| */ |
| Point get offset { |
| if (JS('bool', '!!#.offsetX', this)) { |
| var x = JS('int', '#.offsetX', this); |
| var y = JS('int', '#.offsetY', this); |
| return new Point(x, y); |
| } else { |
| // Firefox does not support offsetX. |
| if (!(this.target is Element)) { |
| throw new UnsupportedError( |
| 'offsetX is only supported on elements'); |
| } |
| Element target = this.target; |
| return (this.client - target.getBoundingClientRect().topLeft).toInt(); |
| } |
| } |
| |
| @DomName('MouseEvent.screenX') |
| @DomName('MouseEvent.screenY') |
| Point get screen => new Point($dom_screenX, $dom_screenY); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('MutationCallback') |
| typedef void MutationCallback(List<MutationRecord> mutations, MutationObserver observer); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('MutationEvent') |
| // http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents |
| @deprecated |
| class MutationEvent extends Event native "MutationEvent" { |
| factory MutationEvent(String type, |
| {bool canBubble: false, bool cancelable: false, Node relatedNode, |
| String prevValue, String newValue, String attrName, int attrChange: 0}) { |
| |
| var event = document.$dom_createEvent('MutationEvent'); |
| event.$dom_initMutationEvent(type, canBubble, cancelable, relatedNode, |
| prevValue, newValue, attrName, attrChange); |
| return event; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory MutationEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('MutationEvent.ADDITION') |
| @DocsEditable() |
| static const int ADDITION = 2; |
| |
| @DomName('MutationEvent.MODIFICATION') |
| @DocsEditable() |
| static const int MODIFICATION = 1; |
| |
| @DomName('MutationEvent.REMOVAL') |
| @DocsEditable() |
| static const int REMOVAL = 3; |
| |
| @DomName('MutationEvent.attrChange') |
| @DocsEditable() |
| final int attrChange; |
| |
| @DomName('MutationEvent.attrName') |
| @DocsEditable() |
| final String attrName; |
| |
| @DomName('MutationEvent.newValue') |
| @DocsEditable() |
| final String newValue; |
| |
| @DomName('MutationEvent.prevValue') |
| @DocsEditable() |
| final String prevValue; |
| |
| @DomName('MutationEvent.relatedNode') |
| @DocsEditable() |
| final Node relatedNode; |
| |
| @JSName('initMutationEvent') |
| @DomName('MutationEvent.initMutationEvent') |
| @DocsEditable() |
| void $dom_initMutationEvent(String type, bool canBubble, bool cancelable, Node relatedNode, String prevValue, String newValue, String attrName, int attrChange) native; |
| |
| } |
| |
| |
| |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('MutationObserver') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| class MutationObserver extends Interceptor native "MutationObserver,WebKitMutationObserver" { |
| |
| @DomName('MutationObserver.disconnect') |
| @DocsEditable() |
| void disconnect() native; |
| |
| @DomName('MutationObserver.observe') |
| @DocsEditable() |
| void _observe(Node target, Map options) { |
| var options_1 = convertDartToNative_Dictionary(options); |
| _observe_1(target, options_1); |
| return; |
| } |
| @JSName('observe') |
| @DomName('MutationObserver.observe') |
| @DocsEditable() |
| void _observe_1(Node target, options) native; |
| |
| @DomName('MutationObserver.takeRecords') |
| @DocsEditable() |
| List<MutationRecord> takeRecords() native; |
| |
| /** |
| * Checks to see if the mutation observer API is supported on the current |
| * platform. |
| */ |
| static bool get supported { |
| return JS('bool', |
| '!!(window.MutationObserver || window.WebKitMutationObserver)'); |
| } |
| |
| void observe(Node target, |
| {bool childList, |
| bool attributes, |
| bool characterData, |
| bool subtree, |
| bool attributeOldValue, |
| bool characterDataOldValue, |
| List<String> attributeFilter}) { |
| |
| // Parse options into map of known type. |
| var parsedOptions = _createDict(); |
| |
| // Override options passed in the map with named optional arguments. |
| override(key, value) { |
| if (value != null) _add(parsedOptions, key, value); |
| } |
| |
| override('childList', childList); |
| override('attributes', attributes); |
| override('characterData', characterData); |
| override('subtree', subtree); |
| override('attributeOldValue', attributeOldValue); |
| override('characterDataOldValue', characterDataOldValue); |
| if (attributeFilter != null) { |
| override('attributeFilter', _fixupList(attributeFilter)); |
| } |
| |
| _call(target, parsedOptions); |
| } |
| |
| // TODO: Change to a set when const Sets are available. |
| static final _boolKeys = |
| const {'childList': true, |
| 'attributes': true, |
| 'characterData': true, |
| 'subtree': true, |
| 'attributeOldValue': true, |
| 'characterDataOldValue': true }; |
| |
| |
| static _createDict() => JS('var', '{}'); |
| static _add(m, String key, value) { JS('void', '#[#] = #', m, key, value); } |
| static _fixupList(list) => list; // TODO: Ensure is a JavaScript Array. |
| |
| // Call native function with no conversions. |
| @JSName('observe') |
| void _call(target, options) native; |
| |
| factory MutationObserver(MutationCallback callback) { |
| // Dummy statement to mark types as instantiated. |
| JS('MutationObserver|MutationRecord', '0'); |
| |
| return JS('MutationObserver', |
| 'new(window.MutationObserver||window.WebKitMutationObserver||' |
| 'window.MozMutationObserver)(#)', |
| convertDartClosureToJS(callback, 2)); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('MutationRecord') |
| class MutationRecord extends Interceptor native "MutationRecord" { |
| |
| @DomName('MutationRecord.addedNodes') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> addedNodes; |
| |
| @DomName('MutationRecord.attributeName') |
| @DocsEditable() |
| final String attributeName; |
| |
| @DomName('MutationRecord.attributeNamespace') |
| @DocsEditable() |
| final String attributeNamespace; |
| |
| @DomName('MutationRecord.nextSibling') |
| @DocsEditable() |
| final Node nextSibling; |
| |
| @DomName('MutationRecord.oldValue') |
| @DocsEditable() |
| final String oldValue; |
| |
| @DomName('MutationRecord.previousSibling') |
| @DocsEditable() |
| final Node previousSibling; |
| |
| @DomName('MutationRecord.removedNodes') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> removedNodes; |
| |
| @DomName('MutationRecord.target') |
| @DocsEditable() |
| final Node target; |
| |
| @DomName('MutationRecord.type') |
| @DocsEditable() |
| final String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitNamedFlow') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/css3-regions/#dom-named-flow-collection |
| class NamedFlow extends EventTarget native "WebKitNamedFlow" { |
| // To suppress missing implicit constructor warnings. |
| factory NamedFlow._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitNamedFlow.firstEmptyRegionIndex') |
| @DocsEditable() |
| final int firstEmptyRegionIndex; |
| |
| @DomName('WebKitNamedFlow.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('WebKitNamedFlow.overset') |
| @DocsEditable() |
| final bool overset; |
| |
| @DomName('WebKitNamedFlow.getContent') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getContent() native; |
| |
| @DomName('WebKitNamedFlow.getRegions') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getRegions() native; |
| |
| @DomName('WebKitNamedFlow.getRegionsByContent') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getRegionsByContent(Node contentNode) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('WebKitNamedFlow.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('WebKitNamedFlow.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('WebKitNamedFlow.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitNamedFlowCollection') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://dev.w3.org/csswg/css-regions/#dom-named-flow-collection |
| class NamedFlowCollection extends Interceptor native "WebKitNamedFlowCollection" { |
| |
| @DomName('WebKitNamedFlowCollection.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('WebKitNamedFlowCollection.__getter__') |
| @DocsEditable() |
| NamedFlow __getter__(String name) native; |
| |
| @DomName('WebKitNamedFlowCollection.item') |
| @DocsEditable() |
| NamedFlow item(int index) native; |
| |
| @DomName('WebKitNamedFlowCollection.namedItem') |
| @DocsEditable() |
| NamedFlow namedItem(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('Navigator') |
| class Navigator extends Interceptor native "Navigator" { |
| |
| @DomName('Navigator.language') |
| String get language => JS('String', '#.language || #.userLanguage', this, |
| this); |
| |
| /** |
| * Gets a stream (video and or audio) from the local computer. |
| * |
| * Use [MediaStream.supported] to check if this is supported by the current |
| * platform. The arguments `audio` and `video` default to `false` (stream does |
| * not use audio or video, respectively). |
| * |
| * Simple example usage: |
| * |
| * window.navigator.getUserMedia(audio: true, video: true).then((stream) { |
| * var video = new VideoElement() |
| * ..autoplay = true |
| * ..src = Url.createObjectUrlFromStream(stream); |
| * document.body.append(video); |
| * }); |
| * |
| * The user can also pass in Maps to the audio or video parameters to specify |
| * mandatory and optional constraints for the media stream. Not passing in a |
| * map, but passing in `true` will provide a MediaStream with audio or |
| * video capabilities, but without any additional constraints. The particular |
| * constraint names for audio and video are still in flux, but as of this |
| * writing, here is an example providing more constraints. |
| * |
| * window.navigator.getUserMedia( |
| * audio: true, |
| * video: {'mandatory': |
| * { 'minAspectRatio': 1.333, 'maxAspectRatio': 1.334 }, |
| * 'optional': |
| * [{ 'minFrameRate': 60 }, |
| * { 'maxWidth': 640 }] |
| * }); |
| * |
| * See also: |
| * * [MediaStream.supported] |
| */ |
| @DomName('Navigator.webkitGetUserMedia') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| Future<MediaStream> getUserMedia({audio: false, video: false}) { |
| var completer = new Completer<MediaStream>(); |
| var options = { |
| 'audio': audio, |
| 'video': video |
| }; |
| _ensureGetUserMedia(); |
| this._getUserMedia(convertDartToNative_SerializedScriptValue(options), |
| (stream) { |
| completer.complete(stream); |
| }, |
| (error) { |
| completer.completeError(error); |
| }); |
| return completer.future; |
| } |
| |
| _ensureGetUserMedia() { |
| if (JS('bool', '!(#.getUserMedia)', this)) { |
| JS('void', '#.getUserMedia = ' |
| '(#.getUserMedia || #.webkitGetUserMedia || #.mozGetUserMedia ||' |
| '#.msGetUserMedia)', this, this, this, this, this); |
| } |
| } |
| |
| @JSName('getUserMedia') |
| void _getUserMedia(options, _NavigatorUserMediaSuccessCallback success, |
| _NavigatorUserMediaErrorCallback error) native; |
| |
| |
| @DomName('Navigator.appCodeName') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final String appCodeName; |
| |
| @DomName('Navigator.appName') |
| @DocsEditable() |
| final String appName; |
| |
| @DomName('Navigator.appVersion') |
| @DocsEditable() |
| final String appVersion; |
| |
| @DomName('Navigator.cookieEnabled') |
| @DocsEditable() |
| @Unstable() |
| final bool cookieEnabled; |
| |
| @DomName('Navigator.doNotTrack') |
| @DocsEditable() |
| // http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#js-dom |
| @Experimental() // experimental |
| final String doNotTrack; |
| |
| @DomName('Navigator.geolocation') |
| @DocsEditable() |
| @Unstable() |
| final Geolocation geolocation; |
| |
| @DomName('Navigator.mimeTypes') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final MimeTypeArray mimeTypes; |
| |
| @DomName('Navigator.onLine') |
| @DocsEditable() |
| @Unstable() |
| final bool onLine; |
| |
| @DomName('Navigator.platform') |
| @DocsEditable() |
| final String platform; |
| |
| @DomName('Navigator.plugins') |
| @DocsEditable() |
| @deprecated // nonstandard |
| final PluginArray plugins; |
| |
| @DomName('Navigator.product') |
| @DocsEditable() |
| @Unstable() |
| final String product; |
| |
| @DomName('Navigator.productSub') |
| @DocsEditable() |
| @Unstable() |
| final String productSub; |
| |
| @DomName('Navigator.userAgent') |
| @DocsEditable() |
| final String userAgent; |
| |
| @DomName('Navigator.vendor') |
| @DocsEditable() |
| @Unstable() |
| final String vendor; |
| |
| @DomName('Navigator.vendorSub') |
| @DocsEditable() |
| @Unstable() |
| final String vendorSub; |
| |
| @JSName('webkitPersistentStorage') |
| @DomName('Navigator.webkitPersistentStorage') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/quota-api/#accessing-storagequota |
| final StorageQuota persistentStorage; |
| |
| @JSName('webkitTemporaryStorage') |
| @DomName('Navigator.webkitTemporaryStorage') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/quota-api/#accessing-storagequota |
| final StorageQuota temporaryStorage; |
| |
| @DomName('Navigator.getStorageUpdates') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils |
| @Experimental() |
| void getStorageUpdates() native; |
| |
| @DomName('Navigator.javaEnabled') |
| @DocsEditable() |
| @deprecated // nonstandard |
| bool javaEnabled() native; |
| |
| @DomName('Navigator.registerProtocolHandler') |
| @DocsEditable() |
| @Unstable() |
| void registerProtocolHandler(String scheme, String url, String title) native; |
| |
| @DomName('Navigator.requestMIDIAccess') |
| @DocsEditable() |
| @Experimental() // untriaged |
| MidiAccessPromise requestMidiAccess([Map options]) { |
| if (options != null) { |
| var options_1 = convertDartToNative_Dictionary(options); |
| return _requestMidiAccess_1(options_1); |
| } |
| return _requestMidiAccess_2(); |
| } |
| @JSName('requestMIDIAccess') |
| @DomName('Navigator.requestMIDIAccess') |
| @DocsEditable() |
| @Experimental() // untriaged |
| MidiAccessPromise _requestMidiAccess_1(options) native; |
| @JSName('requestMIDIAccess') |
| @DomName('Navigator.requestMIDIAccess') |
| @DocsEditable() |
| @Experimental() // untriaged |
| MidiAccessPromise _requestMidiAccess_2() native; |
| |
| @JSName('webkitGetGamepads') |
| @DomName('Navigator.webkitGetGamepads') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#widl-Navigator-getGamepads-Gamepad |
| @Returns('_GamepadList') |
| @Creates('_GamepadList') |
| List<Gamepad> getGamepads() native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('NavigatorUserMediaError') |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaError |
| @Experimental() |
| class NavigatorUserMediaError extends Interceptor native "NavigatorUserMediaError" { |
| |
| @DomName('NavigatorUserMediaError.constraintName') |
| @DocsEditable() |
| final String constraintName; |
| |
| @DomName('NavigatorUserMediaError.message') |
| @DocsEditable() |
| final String message; |
| |
| @DomName('NavigatorUserMediaError.name') |
| @DocsEditable() |
| final String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('NavigatorUserMediaErrorCallback') |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaErrorCallback |
| @Experimental() |
| typedef void _NavigatorUserMediaErrorCallback(NavigatorUserMediaError error); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('NavigatorUserMediaSuccessCallback') |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaSuccessCallback |
| @Experimental() |
| typedef void _NavigatorUserMediaSuccessCallback(MediaStream stream); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Lazy implementation of the child nodes of an element that does not request |
| * the actual child nodes of an element until strictly necessary greatly |
| * improving performance for the typical cases where it is not required. |
| */ |
| class _ChildNodeListLazy extends ListBase<Node> { |
| final Node _this; |
| |
| _ChildNodeListLazy(this._this); |
| |
| |
| Node get first { |
| Node result = JS('Node|Null', '#.firstChild', _this); |
| if (result == null) throw new StateError("No elements"); |
| return result; |
| } |
| Node get last { |
| Node result = JS('Node|Null', '#.lastChild', _this); |
| if (result == null) throw new StateError("No elements"); |
| return result; |
| } |
| Node get single { |
| int l = this.length; |
| if (l == 0) throw new StateError("No elements"); |
| if (l > 1) throw new StateError("More than one element"); |
| return JS('Node|Null', '#.firstChild', _this); |
| } |
| |
| void add(Node value) { |
| _this.append(value); |
| } |
| |
| void addAll(Iterable<Node> iterable) { |
| if (iterable is _ChildNodeListLazy) { |
| _ChildNodeListLazy otherList = iterable; |
| if (!identical(otherList._this, _this)) { |
| // Optimized route for copying between nodes. |
| for (var i = 0, len = otherList.length; i < len; ++i) { |
| _this.append(otherList._this.firstChild); |
| } |
| } |
| return; |
| } |
| for (Node node in iterable) { |
| _this.append(node); |
| } |
| } |
| |
| void insert(int index, Node node) { |
| if (index < 0 || index > length) { |
| throw new RangeError.range(index, 0, length); |
| } |
| if (index == length) { |
| _this.append(node); |
| } else { |
| _this.insertBefore(node, this[index]); |
| } |
| } |
| |
| void insertAll(int index, Iterable<Node> iterable) { |
| var item = this[index]; |
| _this.insertAllBefore(iterable, item); |
| } |
| |
| void setAll(int index, Iterable<Node> iterable) { |
| throw new UnsupportedError("Cannot setAll on Node list"); |
| } |
| |
| Node removeLast() { |
| final result = last; |
| if (result != null) { |
| _this.$dom_removeChild(result); |
| } |
| return result; |
| } |
| |
| Node removeAt(int index) { |
| var result = this[index]; |
| if (result != null) { |
| _this.$dom_removeChild(result); |
| } |
| return result; |
| } |
| |
| bool remove(Object object) { |
| if (object is! Node) return false; |
| Node node = object; |
| if (!identical(_this, node.parentNode)) return false; |
| _this.$dom_removeChild(node); |
| return true; |
| } |
| |
| void _filter(bool test(Node node), bool removeMatching) { |
| // This implementation of removeWhere/retainWhere is more efficient |
| // than the default in ListBase. Child nodes can be removed in constant |
| // time. |
| Node child = _this.firstChild; |
| while (child != null) { |
| Node nextChild = child.nextNode; |
| if (test(child) == removeMatching) { |
| _this.$dom_removeChild(child); |
| } |
| child = nextChild; |
| } |
| } |
| |
| void removeWhere(bool test(Node node)) { |
| _filter(test, true); |
| } |
| |
| void retainWhere(bool test(Node node)) { |
| _filter(test, false); |
| } |
| |
| void clear() { |
| _this.text = ''; |
| } |
| |
| void operator []=(int index, Node value) { |
| _this.$dom_replaceChild(value, this[index]); |
| } |
| |
| Iterator<Node> get iterator => _this.$dom_childNodes.iterator; |
| |
| // From List<Node>: |
| |
| // TODO(jacobr): this could be implemented for child node lists. |
| // The exception we throw here is misleading. |
| void sort([Comparator<Node> compare]) { |
| throw new UnsupportedError("Cannot sort Node list"); |
| } |
| |
| // FIXME: implement these. |
| void setRange(int start, int end, Iterable<Node> iterable, |
| [int skipCount = 0]) { |
| throw new UnsupportedError("Cannot setRange on Node list"); |
| } |
| |
| void fillRange(int start, int end, [Node fill]) { |
| throw new UnsupportedError("Cannot fillRange on Node list"); |
| } |
| // -- end List<Node> mixins. |
| |
| // TODO(jacobr): benchmark whether this is more efficient or whether caching |
| // a local copy of $dom_childNodes is more efficient. |
| int get length => _this.$dom_childNodes.length; |
| |
| void set length(int value) { |
| throw new UnsupportedError( |
| "Cannot set length on immutable List."); |
| } |
| |
| Node operator[](int index) => _this.$dom_childNodes[index]; |
| } |
| |
| /** Information about the instantiated template. */ |
| class TemplateInstance { |
| // TODO(rafaelw): firstNode & lastNode should be read-synchronous |
| // in cases where script has modified the template instance boundary. |
| |
| /** The first node of this template instantiation. */ |
| final Node firstNode; |
| |
| /** |
| * The last node of this template instantiation. |
| * This could be identical to [firstNode] if the template only expanded to a |
| * single node. |
| */ |
| final Node lastNode; |
| |
| /** The model used to instantiate the template. */ |
| final model; |
| |
| TemplateInstance(this.firstNode, this.lastNode, this.model); |
| } |
| |
| |
| @DomName('Node') |
| class Node extends EventTarget native "Node" { |
| List<Node> get nodes { |
| return new _ChildNodeListLazy(this); |
| } |
| |
| void set nodes(Iterable<Node> value) { |
| // Copy list first since we don't want liveness during iteration. |
| // TODO(jacobr): there is a better way to do this. |
| List copy = new List.from(value); |
| text = ''; |
| for (Node node in copy) { |
| append(node); |
| } |
| } |
| |
| /** |
| * Removes this node from the DOM. |
| */ |
| @DomName('Node.removeChild') |
| void remove() { |
| // TODO(jacobr): should we throw an exception if parent is already null? |
| // TODO(vsm): Use the native remove when available. |
| if (this.parentNode != null) { |
| final Node parent = this.parentNode; |
| parentNode.$dom_removeChild(this); |
| } |
| } |
| |
| /** |
| * Replaces this node with another node. |
| */ |
| @DomName('Node.replaceChild') |
| Node replaceWith(Node otherNode) { |
| try { |
| final Node parent = this.parentNode; |
| parent.$dom_replaceChild(otherNode, this); |
| } catch (e) { |
| |
| }; |
| return this; |
| } |
| |
| /** |
| * Inserts all of the nodes into this node directly before refChild. |
| * |
| * See also: |
| * |
| * * [insertBefore] |
| */ |
| Node insertAllBefore(Iterable<Node> newNodes, Node refChild) { |
| if (newNodes is _ChildNodeListLazy) { |
| _ChildNodeListLazy otherList = newNodes; |
| if (identical(otherList._this, this)) { |
| throw new ArgumentError(newNodes); |
| } |
| |
| // Optimized route for copying between nodes. |
| for (var i = 0, len = otherList.length; i < len; ++i) { |
| this.insertBefore(otherList._this.firstChild, refChild); |
| } |
| } else { |
| for (var node in newNodes) { |
| this.insertBefore(node, refChild); |
| } |
| } |
| } |
| |
| /** |
| * Print out a String representation of this Node. |
| */ |
| String toString() => nodeValue == null ? super.toString() : nodeValue; |
| |
| |
| /** |
| * Creates a binding to the attribute [name] to the [path] of the [model]. |
| * |
| * This can be overridden by custom elements to provide the binding used in |
| * [Node.bind]. This will only create the binding; it will not add it to |
| * [bindings]. |
| * |
| * You should not need to call this directly except from [Node.bind]. |
| */ |
| @Experimental() |
| createBinding(String name, model, String path) => |
| TemplateElement.mdvPackage(this).createBinding(name, model, path); |
| |
| /** |
| * Binds the attribute [name] to the [path] of the [model]. |
| * Path is a String of accessors such as `foo.bar.baz`. |
| * Returns the `NodeBinding` instance. |
| */ |
| @Experimental() |
| bind(String name, model, String path) => |
| TemplateElement.mdvPackage(this).bind(name, model, path); |
| |
| /** Unbinds the attribute [name]. */ |
| @Experimental() |
| void unbind(String name) { |
| TemplateElement.mdvPackage(this).unbind(name); |
| } |
| |
| /** Unbinds all bound attributes. */ |
| @Experimental() |
| void unbindAll() { |
| TemplateElement.mdvPackage(this).unbindAll(); |
| } |
| |
| /** Gets the data bindings that are associated with this node. */ |
| @Experimental() |
| Map<String, dynamic> get bindings => |
| TemplateElement.mdvPackage(this).bindings; |
| |
| /** Gets the template instance that instantiated this node, if any. */ |
| @Experimental() |
| TemplateInstance get templateInstance => |
| TemplateElement.mdvPackage(this).templateInstance; |
| |
| // To suppress missing implicit constructor warnings. |
| factory Node._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Node.ATTRIBUTE_NODE') |
| @DocsEditable() |
| static const int ATTRIBUTE_NODE = 2; |
| |
| @DomName('Node.CDATA_SECTION_NODE') |
| @DocsEditable() |
| static const int CDATA_SECTION_NODE = 4; |
| |
| @DomName('Node.COMMENT_NODE') |
| @DocsEditable() |
| static const int COMMENT_NODE = 8; |
| |
| @DomName('Node.DOCUMENT_FRAGMENT_NODE') |
| @DocsEditable() |
| static const int DOCUMENT_FRAGMENT_NODE = 11; |
| |
| @DomName('Node.DOCUMENT_NODE') |
| @DocsEditable() |
| static const int DOCUMENT_NODE = 9; |
| |
| @DomName('Node.DOCUMENT_TYPE_NODE') |
| @DocsEditable() |
| static const int DOCUMENT_TYPE_NODE = 10; |
| |
| @DomName('Node.ELEMENT_NODE') |
| @DocsEditable() |
| static const int ELEMENT_NODE = 1; |
| |
| @DomName('Node.ENTITY_NODE') |
| @DocsEditable() |
| static const int ENTITY_NODE = 6; |
| |
| @DomName('Node.ENTITY_REFERENCE_NODE') |
| @DocsEditable() |
| static const int ENTITY_REFERENCE_NODE = 5; |
| |
| @DomName('Node.NOTATION_NODE') |
| @DocsEditable() |
| static const int NOTATION_NODE = 12; |
| |
| @DomName('Node.PROCESSING_INSTRUCTION_NODE') |
| @DocsEditable() |
| static const int PROCESSING_INSTRUCTION_NODE = 7; |
| |
| @DomName('Node.TEXT_NODE') |
| @DocsEditable() |
| static const int TEXT_NODE = 3; |
| |
| @JSName('childNodes') |
| @DomName('Node.childNodes') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> $dom_childNodes; |
| |
| @DomName('Node.firstChild') |
| @DocsEditable() |
| final Node firstChild; |
| |
| @DomName('Node.lastChild') |
| @DocsEditable() |
| final Node lastChild; |
| |
| @JSName('localName') |
| @DomName('Node.localName') |
| @DocsEditable() |
| // http://dom.spec.whatwg.org/#dom-node-localname |
| @deprecated // deprecated |
| final String $dom_localName; |
| |
| @JSName('namespaceURI') |
| @DomName('Node.namespaceURI') |
| @DocsEditable() |
| // http://dom.spec.whatwg.org/#dom-node-namespaceuri |
| @deprecated // deprecated |
| final String $dom_namespaceUri; |
| |
| @JSName('nextSibling') |
| @DomName('Node.nextSibling') |
| @DocsEditable() |
| final Node nextNode; |
| |
| @DomName('Node.nodeName') |
| @DocsEditable() |
| final String nodeName; |
| |
| @DomName('Node.nodeType') |
| @DocsEditable() |
| final int nodeType; |
| |
| @DomName('Node.nodeValue') |
| @DocsEditable() |
| final String nodeValue; |
| |
| @JSName('ownerDocument') |
| @DomName('Node.ownerDocument') |
| @DocsEditable() |
| final Document document; |
| |
| @JSName('parentElement') |
| @DomName('Node.parentElement') |
| @DocsEditable() |
| final Element parent; |
| |
| @DomName('Node.parentNode') |
| @DocsEditable() |
| final Node parentNode; |
| |
| @JSName('previousSibling') |
| @DomName('Node.previousSibling') |
| @DocsEditable() |
| final Node previousNode; |
| |
| @JSName('textContent') |
| @DomName('Node.textContent') |
| @DocsEditable() |
| String text; |
| |
| @JSName('appendChild') |
| /** |
| * Adds a node to the end of the child [nodes] list of this node. |
| * |
| * If the node already exists in this document, it will be removed from its |
| * current parent node, then added to this node. |
| * |
| * This method is more efficient than `nodes.add`, and is the preferred |
| * way of appending a child node. |
| */ |
| @DomName('Node.appendChild') |
| @DocsEditable() |
| Node append(Node newChild) native; |
| |
| @JSName('cloneNode') |
| @DomName('Node.cloneNode') |
| @DocsEditable() |
| Node clone(bool deep) native; |
| |
| @DomName('Node.contains') |
| @DocsEditable() |
| bool contains(Node other) native; |
| |
| @DomName('Node.hasChildNodes') |
| @DocsEditable() |
| bool hasChildNodes() native; |
| |
| @DomName('Node.insertBefore') |
| @DocsEditable() |
| Node insertBefore(Node newChild, Node refChild) native; |
| |
| @JSName('removeChild') |
| @DomName('Node.removeChild') |
| @DocsEditable() |
| Node $dom_removeChild(Node oldChild) native; |
| |
| @JSName('replaceChild') |
| @DomName('Node.replaceChild') |
| @DocsEditable() |
| Node $dom_replaceChild(Node newChild, Node oldChild) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('Node.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Node.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('Node.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('NodeFilter') |
| @Unstable() |
| class NodeFilter extends Interceptor native "NodeFilter" { |
| |
| @DomName('NodeFilter.FILTER_ACCEPT') |
| @DocsEditable() |
| static const int FILTER_ACCEPT = 1; |
| |
| @DomName('NodeFilter.FILTER_REJECT') |
| @DocsEditable() |
| static const int FILTER_REJECT = 2; |
| |
| @DomName('NodeFilter.FILTER_SKIP') |
| @DocsEditable() |
| static const int FILTER_SKIP = 3; |
| |
| @DomName('NodeFilter.SHOW_ALL') |
| @DocsEditable() |
| static const int SHOW_ALL = 0xFFFFFFFF; |
| |
| @DomName('NodeFilter.SHOW_ATTRIBUTE') |
| @DocsEditable() |
| @deprecated // deprecated |
| static const int SHOW_ATTRIBUTE = 0x00000002; |
| |
| @DomName('NodeFilter.SHOW_CDATA_SECTION') |
| @DocsEditable() |
| @deprecated // deprecated |
| static const int SHOW_CDATA_SECTION = 0x00000008; |
| |
| @DomName('NodeFilter.SHOW_COMMENT') |
| @DocsEditable() |
| static const int SHOW_COMMENT = 0x00000080; |
| |
| @DomName('NodeFilter.SHOW_DOCUMENT') |
| @DocsEditable() |
| static const int SHOW_DOCUMENT = 0x00000100; |
| |
| @DomName('NodeFilter.SHOW_DOCUMENT_FRAGMENT') |
| @DocsEditable() |
| static const int SHOW_DOCUMENT_FRAGMENT = 0x00000400; |
| |
| @DomName('NodeFilter.SHOW_DOCUMENT_TYPE') |
| @DocsEditable() |
| static const int SHOW_DOCUMENT_TYPE = 0x00000200; |
| |
| @DomName('NodeFilter.SHOW_ELEMENT') |
| @DocsEditable() |
| static const int SHOW_ELEMENT = 0x00000001; |
| |
| @DomName('NodeFilter.SHOW_ENTITY') |
| @DocsEditable() |
| @deprecated // deprecated |
| static const int SHOW_ENTITY = 0x00000020; |
| |
| @DomName('NodeFilter.SHOW_ENTITY_REFERENCE') |
| @DocsEditable() |
| @deprecated // deprecated |
| static const int SHOW_ENTITY_REFERENCE = 0x00000010; |
| |
| @DomName('NodeFilter.SHOW_NOTATION') |
| @DocsEditable() |
| @deprecated // deprecated |
| static const int SHOW_NOTATION = 0x00000800; |
| |
| @DomName('NodeFilter.SHOW_PROCESSING_INSTRUCTION') |
| @DocsEditable() |
| static const int SHOW_PROCESSING_INSTRUCTION = 0x00000040; |
| |
| @DomName('NodeFilter.SHOW_TEXT') |
| @DocsEditable() |
| static const int SHOW_TEXT = 0x00000004; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('NodeIterator') |
| @Unstable() |
| class NodeIterator extends Interceptor native "NodeIterator" { |
| factory NodeIterator(Node root, int whatToShow) { |
| return document.$dom_createNodeIterator(root, whatToShow, null, false); |
| } |
| |
| @DomName('NodeIterator.pointerBeforeReferenceNode') |
| @DocsEditable() |
| final bool pointerBeforeReferenceNode; |
| |
| @DomName('NodeIterator.referenceNode') |
| @DocsEditable() |
| final Node referenceNode; |
| |
| @DomName('NodeIterator.root') |
| @DocsEditable() |
| final Node root; |
| |
| @DomName('NodeIterator.whatToShow') |
| @DocsEditable() |
| final int whatToShow; |
| |
| @DomName('NodeIterator.detach') |
| @DocsEditable() |
| void detach() native; |
| |
| @DomName('NodeIterator.nextNode') |
| @DocsEditable() |
| Node nextNode() native; |
| |
| @DomName('NodeIterator.previousNode') |
| @DocsEditable() |
| Node previousNode() native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('NodeList') |
| class NodeList extends Interceptor with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> native "NodeList,RadioNodeList" { |
| |
| @DomName('NodeList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Node operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Node", "#[#]", this, index); |
| } |
| void operator[]=(int index, Node value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Node> mixins. |
| // Node is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Node get first { |
| if (this.length > 0) { |
| return JS('Node', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Node', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Node', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Node elementAt(int index) => this[index]; |
| // -- end List<Node> mixins. |
| |
| @JSName('item') |
| @DomName('NodeList.item') |
| @DocsEditable() |
| Node _item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Notation') |
| // http://dom.spec.whatwg.org/#notation |
| @deprecated // deprecated |
| class Notation extends Node native "Notation" { |
| // To suppress missing implicit constructor warnings. |
| factory Notation._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Notation.publicId') |
| @DocsEditable() |
| final String publicId; |
| |
| @DomName('Notation.systemId') |
| @DocsEditable() |
| final String systemId; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('Notification') |
| // http://www.w3.org/TR/notifications/#notification |
| @Experimental() // experimental |
| class Notification extends EventTarget native "Notification" { |
| |
| factory Notification(String title, {String titleDir: null, String body: null, |
| String bodyDir: null, String tag: null, String iconUrl: null}) { |
| |
| var parsedOptions = {}; |
| if (titleDir != null) parsedOptions['titleDir'] = titleDir; |
| if (body != null) parsedOptions['body'] = body; |
| if (bodyDir != null) parsedOptions['bodyDir'] = bodyDir; |
| if (tag != null) parsedOptions['tag'] = tag; |
| if (iconUrl != null) parsedOptions['iconUrl'] = iconUrl; |
| |
| return Notification._factoryNotification(title, parsedOptions); |
| } |
| // To suppress missing implicit constructor warnings. |
| factory Notification._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Notification.clickEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> clickEvent = const EventStreamProvider<Event>('click'); |
| |
| @DomName('Notification.closeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> closeEvent = const EventStreamProvider<Event>('close'); |
| |
| @DomName('Notification.displayEvent') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const EventStreamProvider<Event> displayEvent = const EventStreamProvider<Event>('display'); |
| |
| @DomName('Notification.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('Notification.showEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> showEvent = const EventStreamProvider<Event>('show'); |
| |
| @DomName('Notification.Notification') |
| @DocsEditable() |
| static Notification _factoryNotification(String title, [Map options]) { |
| if (options != null) { |
| return Notification._create_1(title, options); |
| } |
| return Notification._create_2(title); |
| } |
| static Notification _create_1(title, options) => JS('Notification', 'new Notification(#,#)', title, options); |
| static Notification _create_2(title) => JS('Notification', 'new Notification(#)', title); |
| |
| @DomName('Notification.dir') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String dir; |
| |
| @DomName('Notification.permission') |
| @DocsEditable() |
| final String permission; |
| |
| @DomName('Notification.replaceId') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String replaceId; |
| |
| @DomName('Notification.tag') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String tag; |
| |
| @DomName('Notification.cancel') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| void cancel() native; |
| |
| @DomName('Notification.close') |
| @DocsEditable() |
| void close() native; |
| |
| @JSName('requestPermission') |
| @DomName('Notification.requestPermission') |
| @DocsEditable() |
| static void _requestPermission([_NotificationPermissionCallback callback]) native; |
| |
| @JSName('requestPermission') |
| @DomName('Notification.requestPermission') |
| @DocsEditable() |
| static Future<String> requestPermission() { |
| var completer = new Completer<String>(); |
| _requestPermission( |
| (value) { completer.complete(value); }); |
| return completer.future; |
| } |
| |
| @DomName('Notification.show') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| void show() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('Notification.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Notification.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('Notification.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Notification.onclick') |
| @DocsEditable() |
| Stream<Event> get onClick => clickEvent.forTarget(this); |
| |
| @DomName('Notification.onclose') |
| @DocsEditable() |
| Stream<Event> get onClose => closeEvent.forTarget(this); |
| |
| @DomName('Notification.ondisplay') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| Stream<Event> get onDisplay => displayEvent.forTarget(this); |
| |
| @DomName('Notification.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('Notification.onshow') |
| @DocsEditable() |
| Stream<Event> get onShow => showEvent.forTarget(this); |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('NotificationCenter') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/notifications/#showing-a-notification |
| @deprecated // deprecated |
| class NotificationCenter extends Interceptor native "NotificationCenter" { |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.webkitNotifications)'); |
| |
| @DomName('NotificationCenter.checkPermission') |
| @DocsEditable() |
| int checkPermission() native; |
| |
| @JSName('createHTMLNotification') |
| @DomName('NotificationCenter.createHTMLNotification') |
| @DocsEditable() |
| Notification createHtmlNotification(String url) native; |
| |
| @DomName('NotificationCenter.createNotification') |
| @DocsEditable() |
| Notification createNotification(String iconUrl, String title, String body) native; |
| |
| @JSName('requestPermission') |
| @DomName('NotificationCenter.requestPermission') |
| @DocsEditable() |
| void _requestPermission([VoidCallback callback]) native; |
| |
| @JSName('requestPermission') |
| @DomName('NotificationCenter.requestPermission') |
| @DocsEditable() |
| Future requestPermission() { |
| var completer = new Completer(); |
| _requestPermission( |
| () { completer.complete(); }); |
| return completer.future; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('NotificationPermissionCallback') |
| // http://www.w3.org/TR/notifications/#notificationpermissioncallback |
| @Experimental() |
| typedef void _NotificationPermissionCallback(String permission); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLOListElement') |
| class OListElement extends _HTMLElement native "HTMLOListElement" { |
| // To suppress missing implicit constructor warnings. |
| factory OListElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLOListElement.HTMLOListElement') |
| @DocsEditable() |
| factory OListElement() => document.$dom_createElement("ol"); |
| |
| @DomName('HTMLOListElement.reversed') |
| @DocsEditable() |
| bool reversed; |
| |
| @DomName('HTMLOListElement.start') |
| @DocsEditable() |
| int start; |
| |
| @DomName('HTMLOListElement.type') |
| @DocsEditable() |
| String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLObjectElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.IE) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class ObjectElement extends _HTMLElement native "HTMLObjectElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ObjectElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLObjectElement.HTMLObjectElement') |
| @DocsEditable() |
| factory ObjectElement() => document.$dom_createElement("object"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('object'); |
| |
| @DomName('HTMLObjectElement.code') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial |
| @deprecated // deprecated |
| String code; |
| |
| @DomName('HTMLObjectElement.data') |
| @DocsEditable() |
| String data; |
| |
| @DomName('HTMLObjectElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLObjectElement.height') |
| @DocsEditable() |
| String height; |
| |
| @DomName('HTMLObjectElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLObjectElement.type') |
| @DocsEditable() |
| String type; |
| |
| @DomName('HTMLObjectElement.useMap') |
| @DocsEditable() |
| String useMap; |
| |
| @DomName('HTMLObjectElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLObjectElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLObjectElement.width') |
| @DocsEditable() |
| String width; |
| |
| @DomName('HTMLObjectElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLObjectElement.__getter__') |
| @DocsEditable() |
| bool __getter__(index_OR_name) native; |
| |
| @DomName('HTMLObjectElement.__setter__') |
| @DocsEditable() |
| void __setter__(index_OR_name, Node value) native; |
| |
| @DomName('HTMLObjectElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLObjectElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLOptGroupElement') |
| class OptGroupElement extends _HTMLElement native "HTMLOptGroupElement" { |
| // To suppress missing implicit constructor warnings. |
| factory OptGroupElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLOptGroupElement.HTMLOptGroupElement') |
| @DocsEditable() |
| factory OptGroupElement() => document.$dom_createElement("optgroup"); |
| |
| @DomName('HTMLOptGroupElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLOptGroupElement.label') |
| @DocsEditable() |
| String label; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLOptionElement') |
| class OptionElement extends _HTMLElement native "HTMLOptionElement" { |
| // To suppress missing implicit constructor warnings. |
| factory OptionElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLOptionElement.HTMLOptionElement') |
| @DocsEditable() |
| factory OptionElement([String data, String value, bool defaultSelected, bool selected]) { |
| if (selected != null) { |
| return OptionElement._create_1(data, value, defaultSelected, selected); |
| } |
| if (defaultSelected != null) { |
| return OptionElement._create_2(data, value, defaultSelected); |
| } |
| if (value != null) { |
| return OptionElement._create_3(data, value); |
| } |
| if (data != null) { |
| return OptionElement._create_4(data); |
| } |
| return OptionElement._create_5(); |
| } |
| static OptionElement _create_1(data, value, defaultSelected, selected) => JS('OptionElement', 'new Option(#,#,#,#)', data, value, defaultSelected, selected); |
| static OptionElement _create_2(data, value, defaultSelected) => JS('OptionElement', 'new Option(#,#,#)', data, value, defaultSelected); |
| static OptionElement _create_3(data, value) => JS('OptionElement', 'new Option(#,#)', data, value); |
| static OptionElement _create_4(data) => JS('OptionElement', 'new Option(#)', data); |
| static OptionElement _create_5() => JS('OptionElement', 'new Option()'); |
| |
| @DomName('HTMLOptionElement.defaultSelected') |
| @DocsEditable() |
| bool defaultSelected; |
| |
| @DomName('HTMLOptionElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLOptionElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLOptionElement.index') |
| @DocsEditable() |
| final int index; |
| |
| @DomName('HTMLOptionElement.label') |
| @DocsEditable() |
| String label; |
| |
| @DomName('HTMLOptionElement.selected') |
| @DocsEditable() |
| bool selected; |
| |
| @DomName('HTMLOptionElement.value') |
| @DocsEditable() |
| String value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLOutputElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| class OutputElement extends _HTMLElement native "HTMLOutputElement" { |
| // To suppress missing implicit constructor warnings. |
| factory OutputElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLOutputElement.HTMLOutputElement') |
| @DocsEditable() |
| factory OutputElement() => document.$dom_createElement("output"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('output'); |
| |
| @DomName('HTMLOutputElement.defaultValue') |
| @DocsEditable() |
| String defaultValue; |
| |
| @DomName('HTMLOutputElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLOutputElement.htmlFor') |
| @DocsEditable() |
| final DomSettableTokenList htmlFor; |
| |
| @DomName('HTMLOutputElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLOutputElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLOutputElement.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('HTMLOutputElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLOutputElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLOutputElement.value') |
| @DocsEditable() |
| String value; |
| |
| @DomName('HTMLOutputElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLOutputElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLOutputElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('OverflowEvent') |
| @Experimental() // nonstandard |
| class OverflowEvent extends Event native "OverflowEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory OverflowEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('OverflowEvent.BOTH') |
| @DocsEditable() |
| static const int BOTH = 2; |
| |
| @DomName('OverflowEvent.HORIZONTAL') |
| @DocsEditable() |
| static const int HORIZONTAL = 0; |
| |
| @DomName('OverflowEvent.VERTICAL') |
| @DocsEditable() |
| static const int VERTICAL = 1; |
| |
| @DomName('OverflowEvent.horizontalOverflow') |
| @DocsEditable() |
| final bool horizontalOverflow; |
| |
| @DomName('OverflowEvent.orient') |
| @DocsEditable() |
| final int orient; |
| |
| @DomName('OverflowEvent.verticalOverflow') |
| @DocsEditable() |
| final bool verticalOverflow; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PageTransitionEvent') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#pagetransitionevent |
| @Experimental() |
| class PageTransitionEvent extends Event native "PageTransitionEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory PageTransitionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('PageTransitionEvent.persisted') |
| @DocsEditable() |
| final bool persisted; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLParagraphElement') |
| class ParagraphElement extends _HTMLElement native "HTMLParagraphElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ParagraphElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLParagraphElement.HTMLParagraphElement') |
| @DocsEditable() |
| factory ParagraphElement() => document.$dom_createElement("p"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLParamElement') |
| @Unstable() |
| class ParamElement extends _HTMLElement native "HTMLParamElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ParamElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLParamElement.HTMLParamElement') |
| @DocsEditable() |
| factory ParamElement() => document.$dom_createElement("param"); |
| |
| @DomName('HTMLParamElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLParamElement.value') |
| @DocsEditable() |
| String value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ParentNode') |
| @Experimental() // untriaged |
| abstract class ParentNode extends Interceptor { |
| |
| int $dom_childElementCount; |
| |
| HtmlCollection $dom_children; |
| |
| Element $dom_firstElementChild; |
| |
| Element $dom_lastElementChild; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Path') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects |
| @Experimental() |
| class Path extends Interceptor native "Path" { |
| |
| @DomName('Path.Path') |
| @DocsEditable() |
| factory Path([path_OR_text]) { |
| if (path_OR_text == null) { |
| return Path._create_1(); |
| } |
| if ((path_OR_text is Path || path_OR_text == null)) { |
| return Path._create_2(path_OR_text); |
| } |
| if ((path_OR_text is String || path_OR_text == null)) { |
| return Path._create_3(path_OR_text); |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| static Path _create_1() => JS('Path', 'new Path()'); |
| static Path _create_2(path_OR_text) => JS('Path', 'new Path(#)', path_OR_text); |
| static Path _create_3(path_OR_text) => JS('Path', 'new Path(#)', path_OR_text); |
| |
| @DomName('Path.arc') |
| @DocsEditable() |
| void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) native; |
| |
| @DomName('Path.arcTo') |
| @DocsEditable() |
| void arcTo(num x1, num y1, num x2, num y2, num radius) native; |
| |
| @DomName('Path.bezierCurveTo') |
| @DocsEditable() |
| void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) native; |
| |
| @DomName('Path.closePath') |
| @DocsEditable() |
| void closePath() native; |
| |
| @DomName('Path.lineTo') |
| @DocsEditable() |
| void lineTo(num x, num y) native; |
| |
| @DomName('Path.moveTo') |
| @DocsEditable() |
| void moveTo(num x, num y) native; |
| |
| @DomName('Path.quadraticCurveTo') |
| @DocsEditable() |
| void quadraticCurveTo(num cpx, num cpy, num x, num y) native; |
| |
| @DomName('Path.rect') |
| @DocsEditable() |
| void rect(num x, num y, num width, num height) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Performance') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE) |
| class Performance extends Interceptor native "Performance" { |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.performance)'); |
| |
| @DomName('Performance.memory') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final MemoryInfo memory; |
| |
| @DomName('Performance.navigation') |
| @DocsEditable() |
| final PerformanceNavigation navigation; |
| |
| @DomName('Performance.timing') |
| @DocsEditable() |
| final PerformanceTiming timing; |
| |
| @DomName('Performance.clearMarks') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface |
| @Experimental() |
| void clearMarks(String markName) native; |
| |
| @DomName('Performance.clearMeasures') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface |
| @Experimental() |
| void clearMeasures(String measureName) native; |
| |
| @DomName('Performance.getEntries') |
| @DocsEditable() |
| // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute |
| @Experimental() |
| List<PerformanceEntry> getEntries() native; |
| |
| @DomName('Performance.getEntriesByName') |
| @DocsEditable() |
| // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute |
| @Experimental() |
| List<PerformanceEntry> getEntriesByName(String name, String entryType) native; |
| |
| @DomName('Performance.getEntriesByType') |
| @DocsEditable() |
| // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute |
| @Experimental() |
| List<PerformanceEntry> getEntriesByType(String entryType) native; |
| |
| @DomName('Performance.mark') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface |
| @Experimental() |
| void mark(String markName) native; |
| |
| @DomName('Performance.measure') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface |
| @Experimental() |
| void measure(String measureName, String startMark, String endMark) native; |
| |
| @DomName('Performance.now') |
| @DocsEditable() |
| num now() native; |
| |
| @JSName('webkitClearResourceTimings') |
| @DomName('Performance.webkitClearResourceTimings') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3c-test.org/webperf/specs/ResourceTiming/#extensions-performance-interface |
| void clearResourceTimings() native; |
| |
| @JSName('webkitSetResourceTimingBufferSize') |
| @DomName('Performance.webkitSetResourceTimingBufferSize') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods |
| void setResourceTimingBufferSize(int maxSize) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceEntry') |
| // http://www.w3.org/TR/performance-timeline/#sec-PerformanceEntry-interface |
| @Experimental() |
| class PerformanceEntry extends Interceptor native "PerformanceEntry" { |
| |
| @DomName('PerformanceEntry.duration') |
| @DocsEditable() |
| final num duration; |
| |
| @DomName('PerformanceEntry.entryType') |
| @DocsEditable() |
| final String entryType; |
| |
| @DomName('PerformanceEntry.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('PerformanceEntry.startTime') |
| @DocsEditable() |
| final num startTime; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceMark') |
| // http://www.w3.org/TR/user-timing/#performancemark |
| @Experimental() |
| class PerformanceMark extends PerformanceEntry native "PerformanceMark" { |
| // To suppress missing implicit constructor warnings. |
| factory PerformanceMark._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceMeasure') |
| // http://www.w3.org/TR/user-timing/#performancemeasure |
| @Experimental() |
| class PerformanceMeasure extends PerformanceEntry native "PerformanceMeasure" { |
| // To suppress missing implicit constructor warnings. |
| factory PerformanceMeasure._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceNavigation') |
| @Unstable() |
| class PerformanceNavigation extends Interceptor native "PerformanceNavigation" { |
| |
| @DomName('PerformanceNavigation.TYPE_BACK_FORWARD') |
| @DocsEditable() |
| static const int TYPE_BACK_FORWARD = 2; |
| |
| @DomName('PerformanceNavigation.TYPE_NAVIGATE') |
| @DocsEditable() |
| static const int TYPE_NAVIGATE = 0; |
| |
| @DomName('PerformanceNavigation.TYPE_RELOAD') |
| @DocsEditable() |
| static const int TYPE_RELOAD = 1; |
| |
| @DomName('PerformanceNavigation.TYPE_RESERVED') |
| @DocsEditable() |
| static const int TYPE_RESERVED = 255; |
| |
| @DomName('PerformanceNavigation.redirectCount') |
| @DocsEditable() |
| final int redirectCount; |
| |
| @DomName('PerformanceNavigation.type') |
| @DocsEditable() |
| final int type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceResourceTiming') |
| // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming |
| @Experimental() |
| class PerformanceResourceTiming extends PerformanceEntry native "PerformanceResourceTiming" { |
| // To suppress missing implicit constructor warnings. |
| factory PerformanceResourceTiming._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('PerformanceResourceTiming.connectEnd') |
| @DocsEditable() |
| final num connectEnd; |
| |
| @DomName('PerformanceResourceTiming.connectStart') |
| @DocsEditable() |
| final num connectStart; |
| |
| @DomName('PerformanceResourceTiming.domainLookupEnd') |
| @DocsEditable() |
| final num domainLookupEnd; |
| |
| @DomName('PerformanceResourceTiming.domainLookupStart') |
| @DocsEditable() |
| final num domainLookupStart; |
| |
| @DomName('PerformanceResourceTiming.fetchStart') |
| @DocsEditable() |
| final num fetchStart; |
| |
| @DomName('PerformanceResourceTiming.initiatorType') |
| @DocsEditable() |
| final String initiatorType; |
| |
| @DomName('PerformanceResourceTiming.redirectEnd') |
| @DocsEditable() |
| final num redirectEnd; |
| |
| @DomName('PerformanceResourceTiming.redirectStart') |
| @DocsEditable() |
| final num redirectStart; |
| |
| @DomName('PerformanceResourceTiming.requestStart') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final num requestStart; |
| |
| @DomName('PerformanceResourceTiming.responseEnd') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final num responseEnd; |
| |
| @DomName('PerformanceResourceTiming.responseStart') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final num responseStart; |
| |
| @DomName('PerformanceResourceTiming.secureConnectionStart') |
| @DocsEditable() |
| final num secureConnectionStart; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PerformanceTiming') |
| @Unstable() |
| class PerformanceTiming extends Interceptor native "PerformanceTiming" { |
| |
| @DomName('PerformanceTiming.connectEnd') |
| @DocsEditable() |
| final int connectEnd; |
| |
| @DomName('PerformanceTiming.connectStart') |
| @DocsEditable() |
| final int connectStart; |
| |
| @DomName('PerformanceTiming.domComplete') |
| @DocsEditable() |
| final int domComplete; |
| |
| @DomName('PerformanceTiming.domContentLoadedEventEnd') |
| @DocsEditable() |
| final int domContentLoadedEventEnd; |
| |
| @DomName('PerformanceTiming.domContentLoadedEventStart') |
| @DocsEditable() |
| final int domContentLoadedEventStart; |
| |
| @DomName('PerformanceTiming.domInteractive') |
| @DocsEditable() |
| final int domInteractive; |
| |
| @DomName('PerformanceTiming.domLoading') |
| @DocsEditable() |
| final int domLoading; |
| |
| @DomName('PerformanceTiming.domainLookupEnd') |
| @DocsEditable() |
| final int domainLookupEnd; |
| |
| @DomName('PerformanceTiming.domainLookupStart') |
| @DocsEditable() |
| final int domainLookupStart; |
| |
| @DomName('PerformanceTiming.fetchStart') |
| @DocsEditable() |
| final int fetchStart; |
| |
| @DomName('PerformanceTiming.loadEventEnd') |
| @DocsEditable() |
| final int loadEventEnd; |
| |
| @DomName('PerformanceTiming.loadEventStart') |
| @DocsEditable() |
| final int loadEventStart; |
| |
| @DomName('PerformanceTiming.navigationStart') |
| @DocsEditable() |
| final int navigationStart; |
| |
| @DomName('PerformanceTiming.redirectEnd') |
| @DocsEditable() |
| final int redirectEnd; |
| |
| @DomName('PerformanceTiming.redirectStart') |
| @DocsEditable() |
| final int redirectStart; |
| |
| @DomName('PerformanceTiming.requestStart') |
| @DocsEditable() |
| final int requestStart; |
| |
| @DomName('PerformanceTiming.responseEnd') |
| @DocsEditable() |
| final int responseEnd; |
| |
| @DomName('PerformanceTiming.responseStart') |
| @DocsEditable() |
| final int responseStart; |
| |
| @DomName('PerformanceTiming.secureConnectionStart') |
| @DocsEditable() |
| final int secureConnectionStart; |
| |
| @DomName('PerformanceTiming.unloadEventEnd') |
| @DocsEditable() |
| final int unloadEventEnd; |
| |
| @DomName('PerformanceTiming.unloadEventStart') |
| @DocsEditable() |
| final int unloadEventStart; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Plugin') |
| @Experimental() // non-standard |
| class Plugin extends Interceptor native "Plugin" { |
| |
| @DomName('Plugin.description') |
| @DocsEditable() |
| final String description; |
| |
| @DomName('Plugin.filename') |
| @DocsEditable() |
| final String filename; |
| |
| @DomName('Plugin.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('Plugin.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('Plugin.__getter__') |
| @DocsEditable() |
| MimeType __getter__(String name) native; |
| |
| @DomName('Plugin.item') |
| @DocsEditable() |
| MimeType item(int index) native; |
| |
| @DomName('Plugin.namedItem') |
| @DocsEditable() |
| MimeType namedItem(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PluginArray') |
| @Experimental() // non-standard |
| class PluginArray extends Interceptor with ListMixin<Plugin>, ImmutableListMixin<Plugin> implements JavaScriptIndexingBehavior, List<Plugin> native "PluginArray" { |
| |
| @DomName('PluginArray.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Plugin operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Plugin", "#[#]", this, index); |
| } |
| void operator[]=(int index, Plugin value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Plugin> mixins. |
| // Plugin is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Plugin get first { |
| if (this.length > 0) { |
| return JS('Plugin', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Plugin get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Plugin', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Plugin get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Plugin', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Plugin elementAt(int index) => this[index]; |
| // -- end List<Plugin> mixins. |
| |
| @DomName('PluginArray.__getter__') |
| @DocsEditable() |
| Plugin __getter__(String name) native; |
| |
| @DomName('PluginArray.item') |
| @DocsEditable() |
| Plugin item(int index) native; |
| |
| @DomName('PluginArray.namedItem') |
| @DocsEditable() |
| Plugin namedItem(String name) native; |
| |
| @DomName('PluginArray.refresh') |
| @DocsEditable() |
| void refresh(bool reload) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PopStateEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| class PopStateEvent extends Event native "PopStateEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory PopStateEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| dynamic get state => convertNativeToDart_SerializedScriptValue(this._get_state); |
| @JSName('state') |
| @DomName('PopStateEvent.state') |
| @DocsEditable() |
| @annotation_Creates_SerializedScriptValue |
| @annotation_Returns_SerializedScriptValue |
| final dynamic _get_state; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('PositionCallback') |
| @Unstable() |
| typedef void _PositionCallback(Geoposition position); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PositionError') |
| @Unstable() |
| class PositionError extends Interceptor native "PositionError" { |
| |
| @DomName('PositionError.PERMISSION_DENIED') |
| @DocsEditable() |
| static const int PERMISSION_DENIED = 1; |
| |
| @DomName('PositionError.POSITION_UNAVAILABLE') |
| @DocsEditable() |
| static const int POSITION_UNAVAILABLE = 2; |
| |
| @DomName('PositionError.TIMEOUT') |
| @DocsEditable() |
| static const int TIMEOUT = 3; |
| |
| @DomName('PositionError.code') |
| @DocsEditable() |
| final int code; |
| |
| @DomName('PositionError.message') |
| @DocsEditable() |
| final String message; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('PositionErrorCallback') |
| @Unstable() |
| typedef void _PositionErrorCallback(PositionError error); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLPreElement') |
| class PreElement extends _HTMLElement native "HTMLPreElement" { |
| // To suppress missing implicit constructor warnings. |
| factory PreElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLPreElement.HTMLPreElement') |
| @DocsEditable() |
| factory PreElement() => document.$dom_createElement("pre"); |
| |
| @DomName('HTMLPreElement.wrap') |
| @DocsEditable() |
| @deprecated // deprecated |
| bool wrap; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ProcessingInstruction') |
| @Unstable() |
| class ProcessingInstruction extends Node native "ProcessingInstruction" { |
| // To suppress missing implicit constructor warnings. |
| factory ProcessingInstruction._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('ProcessingInstruction.data') |
| @DocsEditable() |
| @Experimental() // non-standard |
| String data; |
| |
| @DomName('ProcessingInstruction.sheet') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final StyleSheet sheet; |
| |
| @DomName('ProcessingInstruction.target') |
| @DocsEditable() |
| final String target; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLProgressElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| class ProgressElement extends _HTMLElement native "HTMLProgressElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ProgressElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLProgressElement.HTMLProgressElement') |
| @DocsEditable() |
| factory ProgressElement() => document.$dom_createElement("progress"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('progress'); |
| |
| @DomName('HTMLProgressElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLProgressElement.max') |
| @DocsEditable() |
| num max; |
| |
| @DomName('HTMLProgressElement.position') |
| @DocsEditable() |
| final num position; |
| |
| @DomName('HTMLProgressElement.value') |
| @DocsEditable() |
| num value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ProgressEvent') |
| class ProgressEvent extends Event native "ProgressEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory ProgressEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('ProgressEvent.lengthComputable') |
| @DocsEditable() |
| final bool lengthComputable; |
| |
| @DomName('ProgressEvent.loaded') |
| @DocsEditable() |
| final int loaded; |
| |
| @DomName('ProgressEvent.total') |
| @DocsEditable() |
| final int total; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Promise') |
| @Experimental() // untriaged |
| class Promise extends Interceptor native "Promise" { |
| |
| @DomName('Promise._any') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise _any(Object values) native; |
| |
| @DomName('Promise.every') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise every(Object values) native; |
| |
| @DomName('Promise.fulfill') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise fulfill(Object value) native; |
| |
| @DomName('Promise.reject') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise reject(Object value) native; |
| |
| @DomName('Promise.resolve') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise resolve(Object value) native; |
| |
| @DomName('Promise.some') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static Promise some(Object values) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PromiseResolver') |
| @Experimental() // untriaged |
| class PromiseResolver extends Interceptor native "PromiseResolver" { |
| |
| @DomName('PromiseResolver.fulfill') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void fulfill([Object value]) native; |
| |
| @DomName('PromiseResolver.reject') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void reject([Object value]) native; |
| |
| @DomName('PromiseResolver.resolve') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void resolve([Object value]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLQuoteElement') |
| class QuoteElement extends _HTMLElement native "HTMLQuoteElement" { |
| // To suppress missing implicit constructor warnings. |
| factory QuoteElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLQuoteElement.HTMLQuoteElement') |
| @DocsEditable() |
| factory QuoteElement() => document.$dom_createElement("q"); |
| |
| @DomName('HTMLQuoteElement.cite') |
| @DocsEditable() |
| String cite; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('RTCErrorCallback') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcerror |
| @Experimental() |
| typedef void _RtcErrorCallback(String errorInformation); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('RTCSessionDescriptionCallback') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSessionDescription |
| @Experimental() |
| typedef void _RtcSessionDescriptionCallback(RtcSessionDescription sdp); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('RTCStatsCallback') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCStatsCallback |
| @Experimental() |
| typedef void RtcStatsCallback(RtcStatsResponse response); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('Range') |
| @Unstable() |
| class Range extends Interceptor native "Range" { |
| factory Range() => document.$dom_createRange(); |
| |
| factory Range.fromPoint(Point point) => |
| document.$dom_caretRangeFromPoint(point.x, point.y); |
| |
| @DomName('Range.END_TO_END') |
| @DocsEditable() |
| static const int END_TO_END = 2; |
| |
| @DomName('Range.END_TO_START') |
| @DocsEditable() |
| static const int END_TO_START = 3; |
| |
| @DomName('Range.NODE_AFTER') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const int NODE_AFTER = 1; |
| |
| @DomName('Range.NODE_BEFORE') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const int NODE_BEFORE = 0; |
| |
| @DomName('Range.NODE_BEFORE_AND_AFTER') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const int NODE_BEFORE_AND_AFTER = 2; |
| |
| @DomName('Range.NODE_INSIDE') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| static const int NODE_INSIDE = 3; |
| |
| @DomName('Range.START_TO_END') |
| @DocsEditable() |
| static const int START_TO_END = 1; |
| |
| @DomName('Range.START_TO_START') |
| @DocsEditable() |
| static const int START_TO_START = 0; |
| |
| @DomName('Range.collapsed') |
| @DocsEditable() |
| final bool collapsed; |
| |
| @DomName('Range.commonAncestorContainer') |
| @DocsEditable() |
| final Node commonAncestorContainer; |
| |
| @DomName('Range.endContainer') |
| @DocsEditable() |
| final Node endContainer; |
| |
| @DomName('Range.endOffset') |
| @DocsEditable() |
| final int endOffset; |
| |
| @DomName('Range.startContainer') |
| @DocsEditable() |
| final Node startContainer; |
| |
| @DomName('Range.startOffset') |
| @DocsEditable() |
| final int startOffset; |
| |
| @DomName('Range.cloneContents') |
| @DocsEditable() |
| DocumentFragment cloneContents() native; |
| |
| @DomName('Range.cloneRange') |
| @DocsEditable() |
| Range cloneRange() native; |
| |
| @DomName('Range.collapse') |
| @DocsEditable() |
| void collapse(bool toStart) native; |
| |
| @DomName('Range.compareNode') |
| @DocsEditable() |
| @deprecated // deprecated |
| int compareNode(Node refNode) native; |
| |
| @DomName('Range.comparePoint') |
| @DocsEditable() |
| int comparePoint(Node refNode, int offset) native; |
| |
| @DomName('Range.createContextualFragment') |
| @DocsEditable() |
| DocumentFragment createContextualFragment(String html) native; |
| |
| @DomName('Range.deleteContents') |
| @DocsEditable() |
| void deleteContents() native; |
| |
| @DomName('Range.detach') |
| @DocsEditable() |
| void detach() native; |
| |
| @DomName('Range.expand') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void expand(String unit) native; |
| |
| @DomName('Range.extractContents') |
| @DocsEditable() |
| DocumentFragment extractContents() native; |
| |
| @DomName('Range.getBoundingClientRect') |
| @DocsEditable() |
| Rect getBoundingClientRect() native; |
| |
| @DomName('Range.getClientRects') |
| @DocsEditable() |
| @Returns('_ClientRectList') |
| @Creates('_ClientRectList') |
| List<Rect> getClientRects() native; |
| |
| @DomName('Range.insertNode') |
| @DocsEditable() |
| void insertNode(Node newNode) native; |
| |
| @DomName('Range.intersectsNode') |
| @DocsEditable() |
| @deprecated // deprecated |
| bool intersectsNode(Node refNode) native; |
| |
| @DomName('Range.isPointInRange') |
| @DocsEditable() |
| bool isPointInRange(Node refNode, int offset) native; |
| |
| @DomName('Range.selectNode') |
| @DocsEditable() |
| void selectNode(Node refNode) native; |
| |
| @DomName('Range.selectNodeContents') |
| @DocsEditable() |
| void selectNodeContents(Node refNode) native; |
| |
| @DomName('Range.setEnd') |
| @DocsEditable() |
| void setEnd(Node refNode, int offset) native; |
| |
| @DomName('Range.setEndAfter') |
| @DocsEditable() |
| void setEndAfter(Node refNode) native; |
| |
| @DomName('Range.setEndBefore') |
| @DocsEditable() |
| void setEndBefore(Node refNode) native; |
| |
| @DomName('Range.setStart') |
| @DocsEditable() |
| void setStart(Node refNode, int offset) native; |
| |
| @DomName('Range.setStartAfter') |
| @DocsEditable() |
| void setStartAfter(Node refNode) native; |
| |
| @DomName('Range.setStartBefore') |
| @DocsEditable() |
| void setStartBefore(Node refNode) native; |
| |
| @DomName('Range.surroundContents') |
| @DocsEditable() |
| void surroundContents(Node newParent) native; |
| |
| @DomName('Range.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| |
| /** |
| * Checks if createContextualFragment is supported. |
| * |
| * See also: |
| * |
| * * [createContextualFragment] |
| */ |
| static bool get supportsCreateContextualFragment => |
| JS('bool', '("createContextualFragment" in window.Range.prototype)'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('RequestAnimationFrameCallback') |
| typedef void RequestAnimationFrameCallback(num highResTime); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ResourceProgressEvent') |
| // https://chromiumcodereview.appspot.com/14773025/ |
| @deprecated // experimental |
| class ResourceProgressEvent extends ProgressEvent native "ResourceProgressEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory ResourceProgressEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('ResourceProgressEvent.url') |
| @DocsEditable() |
| final String url; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCDataChannel') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDataChannel |
| @Experimental() |
| class RtcDataChannel extends EventTarget native "RTCDataChannel,DataChannel" { |
| // To suppress missing implicit constructor warnings. |
| factory RtcDataChannel._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCDataChannel.closeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> closeEvent = const EventStreamProvider<Event>('close'); |
| |
| @DomName('RTCDataChannel.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('RTCDataChannel.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('RTCDataChannel.openEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> openEvent = const EventStreamProvider<Event>('open'); |
| |
| @DomName('RTCDataChannel.binaryType') |
| @DocsEditable() |
| String binaryType; |
| |
| @DomName('RTCDataChannel.bufferedAmount') |
| @DocsEditable() |
| final int bufferedAmount; |
| |
| @DomName('RTCDataChannel.label') |
| @DocsEditable() |
| final String label; |
| |
| @DomName('RTCDataChannel.readyState') |
| @DocsEditable() |
| final String readyState; |
| |
| @DomName('RTCDataChannel.reliable') |
| @DocsEditable() |
| final bool reliable; |
| |
| @DomName('RTCDataChannel.close') |
| @DocsEditable() |
| void close() native; |
| |
| @DomName('RTCDataChannel.send') |
| @DocsEditable() |
| void send(data) native; |
| |
| @JSName('send') |
| @DomName('RTCDataChannel.send') |
| @DocsEditable() |
| void sendBlob(Blob data) native; |
| |
| @JSName('send') |
| @DomName('RTCDataChannel.send') |
| @DocsEditable() |
| void sendByteBuffer(ByteBuffer data) native; |
| |
| @JSName('send') |
| @DomName('RTCDataChannel.send') |
| @DocsEditable() |
| void sendString(String data) native; |
| |
| @JSName('send') |
| @DomName('RTCDataChannel.send') |
| @DocsEditable() |
| void sendTypedData(TypedData data) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('RTCDataChannel.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCDataChannel.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('RTCDataChannel.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCDataChannel.onclose') |
| @DocsEditable() |
| Stream<Event> get onClose => closeEvent.forTarget(this); |
| |
| @DomName('RTCDataChannel.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('RTCDataChannel.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| |
| @DomName('RTCDataChannel.onopen') |
| @DocsEditable() |
| Stream<Event> get onOpen => openEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCDataChannelEvent') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcdatachannelevent |
| @Experimental() |
| class RtcDataChannelEvent extends Event native "RTCDataChannelEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory RtcDataChannelEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCDataChannelEvent.channel') |
| @DocsEditable() |
| final RtcDataChannel channel; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCDTMFSender') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDTMFSender |
| @Experimental() |
| class RtcDtmfSender extends EventTarget native "RTCDTMFSender" { |
| // To suppress missing implicit constructor warnings. |
| factory RtcDtmfSender._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCDTMFSender.tonechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<RtcDtmfToneChangeEvent> toneChangeEvent = const EventStreamProvider<RtcDtmfToneChangeEvent>('tonechange'); |
| |
| @JSName('canInsertDTMF') |
| @DomName('RTCDTMFSender.canInsertDTMF') |
| @DocsEditable() |
| final bool canInsertDtmf; |
| |
| @DomName('RTCDTMFSender.duration') |
| @DocsEditable() |
| final int duration; |
| |
| @DomName('RTCDTMFSender.interToneGap') |
| @DocsEditable() |
| final int interToneGap; |
| |
| @DomName('RTCDTMFSender.toneBuffer') |
| @DocsEditable() |
| final String toneBuffer; |
| |
| @DomName('RTCDTMFSender.track') |
| @DocsEditable() |
| final MediaStreamTrack track; |
| |
| @JSName('insertDTMF') |
| @DomName('RTCDTMFSender.insertDTMF') |
| @DocsEditable() |
| void insertDtmf(String tones, [int duration, int interToneGap]) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('RTCDTMFSender.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCDTMFSender.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('RTCDTMFSender.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCDTMFSender.ontonechange') |
| @DocsEditable() |
| Stream<RtcDtmfToneChangeEvent> get onToneChange => toneChangeEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCDTMFToneChangeEvent') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDTMFToneChangeEvent |
| @Experimental() |
| class RtcDtmfToneChangeEvent extends Event native "RTCDTMFToneChangeEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory RtcDtmfToneChangeEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCDTMFToneChangeEvent.tone') |
| @DocsEditable() |
| final String tone; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('RTCIceCandidate') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceCandidate |
| class RtcIceCandidate extends Interceptor native "RTCIceCandidate,mozRTCIceCandidate" { |
| factory RtcIceCandidate(Map dictionary) { |
| // TODO(efortuna): Remove this check if when you can actually construct with |
| // the unprefixed RTCIceCandidate in Firefox (currently both are defined, |
| // but one can't be used as a constructor). |
| var constructorName = JS('', 'window[#]', |
| Device.isFirefox ? '${Device.propertyPrefix}RTCIceCandidate' : |
| 'RTCIceCandidate'); |
| return JS('RtcIceCandidate', 'new #(#)', constructorName, |
| convertDartToNative_SerializedScriptValue(dictionary)); |
| } |
| |
| @DomName('RTCIceCandidate.candidate') |
| @DocsEditable() |
| final String candidate; |
| |
| @DomName('RTCIceCandidate.sdpMLineIndex') |
| @DocsEditable() |
| final int sdpMLineIndex; |
| |
| @DomName('RTCIceCandidate.sdpMid') |
| @DocsEditable() |
| final String sdpMid; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCIceCandidateEvent') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcicecandidate-type |
| @Experimental() |
| class RtcIceCandidateEvent extends Event native "RTCIceCandidateEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory RtcIceCandidateEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCIceCandidateEvent.candidate') |
| @DocsEditable() |
| final RtcIceCandidate candidate; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('RTCPeerConnection') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCPeerConnection |
| class RtcPeerConnection extends EventTarget native "RTCPeerConnection,mozRTCPeerConnection" { |
| factory RtcPeerConnection(Map rtcIceServers, [Map mediaConstraints]) { |
| var constructorName = JS('RtcPeerConnection', 'window[#]', |
| '${Device.propertyPrefix}RTCPeerConnection'); |
| if (mediaConstraints != null) { |
| return JS('RtcPeerConnection', 'new #(#,#)', constructorName, |
| convertDartToNative_SerializedScriptValue(rtcIceServers), |
| convertDartToNative_SerializedScriptValue(mediaConstraints)); |
| } else { |
| return JS('RtcPeerConnection', 'new #(#)', constructorName, |
| convertDartToNative_SerializedScriptValue(rtcIceServers)); |
| } |
| } |
| |
| /** |
| * Checks if Real Time Communication (RTC) APIs are supported and enabled on |
| * the current platform. |
| */ |
| static bool get supported { |
| // Currently in Firefox some of the RTC elements are defined but throw an |
| // error unless the user has specifically enabled them in their |
| // about:config. So we have to construct an element to actually test if RTC |
| // is supported at the given time. |
| try { |
| new RtcPeerConnection( |
| {"iceServers": [ {"url":"stun:localhost"}]}); |
| return true; |
| } catch (_) { return false;} |
| return false; |
| } |
| Future<RtcSessionDescription> createOffer([Map mediaConstraints]) { |
| var completer = new Completer<RtcSessionDescription>(); |
| _createOffer( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }, mediaConstraints); |
| return completer.future; |
| } |
| |
| Future<RtcSessionDescription> createAnswer([Map mediaConstraints]) { |
| var completer = new Completer<RtcSessionDescription>(); |
| _createAnswer( |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }, mediaConstraints); |
| return completer.future; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory RtcPeerConnection._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('RTCPeerConnection.addstreamEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MediaStreamEvent> addStreamEvent = const EventStreamProvider<MediaStreamEvent>('addstream'); |
| |
| @DomName('RTCPeerConnection.datachannelEvent') |
| @DocsEditable() |
| static const EventStreamProvider<RtcDataChannelEvent> dataChannelEvent = const EventStreamProvider<RtcDataChannelEvent>('datachannel'); |
| |
| @DomName('RTCPeerConnection.icecandidateEvent') |
| @DocsEditable() |
| static const EventStreamProvider<RtcIceCandidateEvent> iceCandidateEvent = const EventStreamProvider<RtcIceCandidateEvent>('icecandidate'); |
| |
| @DomName('RTCPeerConnection.iceconnectionstatechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> iceConnectionStateChangeEvent = const EventStreamProvider<Event>('iceconnectionstatechange'); |
| |
| @DomName('RTCPeerConnection.negotiationneededEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> negotiationNeededEvent = const EventStreamProvider<Event>('negotiationneeded'); |
| |
| @DomName('RTCPeerConnection.removestreamEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MediaStreamEvent> removeStreamEvent = const EventStreamProvider<MediaStreamEvent>('removestream'); |
| |
| @DomName('RTCPeerConnection.signalingstatechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> signalingStateChangeEvent = const EventStreamProvider<Event>('signalingstatechange'); |
| |
| @DomName('RTCPeerConnection.iceConnectionState') |
| @DocsEditable() |
| final String iceConnectionState; |
| |
| @DomName('RTCPeerConnection.iceGatheringState') |
| @DocsEditable() |
| final String iceGatheringState; |
| |
| @DomName('RTCPeerConnection.localDescription') |
| @DocsEditable() |
| final RtcSessionDescription localDescription; |
| |
| @DomName('RTCPeerConnection.remoteDescription') |
| @DocsEditable() |
| final RtcSessionDescription remoteDescription; |
| |
| @DomName('RTCPeerConnection.signalingState') |
| @DocsEditable() |
| final String signalingState; |
| |
| @DomName('RTCPeerConnection.addIceCandidate') |
| @DocsEditable() |
| void addIceCandidate(RtcIceCandidate candidate) native; |
| |
| @DomName('RTCPeerConnection.addStream') |
| @DocsEditable() |
| void addStream(MediaStream stream, [Map mediaConstraints]) { |
| if (mediaConstraints != null) { |
| var mediaConstraints_1 = convertDartToNative_Dictionary(mediaConstraints); |
| _addStream_1(stream, mediaConstraints_1); |
| return; |
| } |
| _addStream_2(stream); |
| return; |
| } |
| @JSName('addStream') |
| @DomName('RTCPeerConnection.addStream') |
| @DocsEditable() |
| void _addStream_1(MediaStream stream, mediaConstraints) native; |
| @JSName('addStream') |
| @DomName('RTCPeerConnection.addStream') |
| @DocsEditable() |
| void _addStream_2(MediaStream stream) native; |
| |
| @DomName('RTCPeerConnection.close') |
| @DocsEditable() |
| void close() native; |
| |
| @DomName('RTCPeerConnection.createAnswer') |
| @DocsEditable() |
| void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) { |
| if (mediaConstraints != null) { |
| var mediaConstraints_1 = convertDartToNative_Dictionary(mediaConstraints); |
| _createAnswer_1(successCallback, failureCallback, mediaConstraints_1); |
| return; |
| } |
| _createAnswer_2(successCallback, failureCallback); |
| return; |
| } |
| @JSName('createAnswer') |
| @DomName('RTCPeerConnection.createAnswer') |
| @DocsEditable() |
| void _createAnswer_1(_RtcSessionDescriptionCallback successCallback, _RtcErrorCallback failureCallback, mediaConstraints) native; |
| @JSName('createAnswer') |
| @DomName('RTCPeerConnection.createAnswer') |
| @DocsEditable() |
| void _createAnswer_2(_RtcSessionDescriptionCallback successCallback, _RtcErrorCallback failureCallback) native; |
| |
| @JSName('createDTMFSender') |
| @DomName('RTCPeerConnection.createDTMFSender') |
| @DocsEditable() |
| RtcDtmfSender createDtmfSender(MediaStreamTrack track) native; |
| |
| @DomName('RTCPeerConnection.createDataChannel') |
| @DocsEditable() |
| RtcDataChannel createDataChannel(String label, [Map options]) { |
| if (options != null) { |
| var options_1 = convertDartToNative_Dictionary(options); |
| return _createDataChannel_1(label, options_1); |
| } |
| return _createDataChannel_2(label); |
| } |
| @JSName('createDataChannel') |
| @DomName('RTCPeerConnection.createDataChannel') |
| @DocsEditable() |
| RtcDataChannel _createDataChannel_1(label, options) native; |
| @JSName('createDataChannel') |
| @DomName('RTCPeerConnection.createDataChannel') |
| @DocsEditable() |
| RtcDataChannel _createDataChannel_2(label) native; |
| |
| @DomName('RTCPeerConnection.createOffer') |
| @DocsEditable() |
| void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) { |
| if (mediaConstraints != null) { |
| var mediaConstraints_1 = convertDartToNative_Dictionary(mediaConstraints); |
| _createOffer_1(successCallback, failureCallback, mediaConstraints_1); |
| return; |
| } |
| _createOffer_2(successCallback, failureCallback); |
| return; |
| } |
| @JSName('createOffer') |
| @DomName('RTCPeerConnection.createOffer') |
| @DocsEditable() |
| void _createOffer_1(_RtcSessionDescriptionCallback successCallback, _RtcErrorCallback failureCallback, mediaConstraints) native; |
| @JSName('createOffer') |
| @DomName('RTCPeerConnection.createOffer') |
| @DocsEditable() |
| void _createOffer_2(_RtcSessionDescriptionCallback successCallback, _RtcErrorCallback failureCallback) native; |
| |
| @DomName('RTCPeerConnection.getLocalStreams') |
| @DocsEditable() |
| List<MediaStream> getLocalStreams() native; |
| |
| @DomName('RTCPeerConnection.getRemoteStreams') |
| @DocsEditable() |
| List<MediaStream> getRemoteStreams() native; |
| |
| @DomName('RTCPeerConnection.getStats') |
| @DocsEditable() |
| void getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) native; |
| |
| @DomName('RTCPeerConnection.getStreamById') |
| @DocsEditable() |
| MediaStream getStreamById(String streamId) native; |
| |
| @DomName('RTCPeerConnection.removeStream') |
| @DocsEditable() |
| void removeStream(MediaStream stream) native; |
| |
| @JSName('setLocalDescription') |
| @DomName('RTCPeerConnection.setLocalDescription') |
| @DocsEditable() |
| void _setLocalDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) native; |
| |
| @JSName('setLocalDescription') |
| @DomName('RTCPeerConnection.setLocalDescription') |
| @DocsEditable() |
| Future setLocalDescription(RtcSessionDescription description) { |
| var completer = new Completer(); |
| _setLocalDescription(description, |
| () { completer.complete(); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('setRemoteDescription') |
| @DomName('RTCPeerConnection.setRemoteDescription') |
| @DocsEditable() |
| void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) native; |
| |
| @JSName('setRemoteDescription') |
| @DomName('RTCPeerConnection.setRemoteDescription') |
| @DocsEditable() |
| Future setRemoteDescription(RtcSessionDescription description) { |
| var completer = new Completer(); |
| _setRemoteDescription(description, |
| () { completer.complete(); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @DomName('RTCPeerConnection.updateIce') |
| @DocsEditable() |
| void updateIce([Map configuration, Map mediaConstraints]) { |
| if (mediaConstraints != null) { |
| var configuration_1 = convertDartToNative_Dictionary(configuration); |
| var mediaConstraints_2 = convertDartToNative_Dictionary(mediaConstraints); |
| _updateIce_1(configuration_1, mediaConstraints_2); |
| return; |
| } |
| if (configuration != null) { |
| var configuration_3 = convertDartToNative_Dictionary(configuration); |
| _updateIce_2(configuration_3); |
| return; |
| } |
| _updateIce_3(); |
| return; |
| } |
| @JSName('updateIce') |
| @DomName('RTCPeerConnection.updateIce') |
| @DocsEditable() |
| void _updateIce_1(configuration, mediaConstraints) native; |
| @JSName('updateIce') |
| @DomName('RTCPeerConnection.updateIce') |
| @DocsEditable() |
| void _updateIce_2(configuration) native; |
| @JSName('updateIce') |
| @DomName('RTCPeerConnection.updateIce') |
| @DocsEditable() |
| void _updateIce_3() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('RTCPeerConnection.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCPeerConnection.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('RTCPeerConnection.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('RTCPeerConnection.onaddstream') |
| @DocsEditable() |
| Stream<MediaStreamEvent> get onAddStream => addStreamEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.ondatachannel') |
| @DocsEditable() |
| Stream<RtcDataChannelEvent> get onDataChannel => dataChannelEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.onicecandidate') |
| @DocsEditable() |
| Stream<RtcIceCandidateEvent> get onIceCandidate => iceCandidateEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.oniceconnectionstatechange') |
| @DocsEditable() |
| Stream<Event> get onIceConnectionStateChange => iceConnectionStateChangeEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.onnegotiationneeded') |
| @DocsEditable() |
| Stream<Event> get onNegotiationNeeded => negotiationNeededEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.onremovestream') |
| @DocsEditable() |
| Stream<MediaStreamEvent> get onRemoveStream => removeStreamEvent.forTarget(this); |
| |
| @DomName('RTCPeerConnection.onsignalingstatechange') |
| @DocsEditable() |
| Stream<Event> get onSignalingStateChange => signalingStateChangeEvent.forTarget(this); |
| |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('RTCSessionDescription') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSessionDescription |
| class RtcSessionDescription extends Interceptor native "RTCSessionDescription,mozRTCSessionDescription" { |
| factory RtcSessionDescription(Map dictionary) { |
| // TODO(efortuna): Remove this check if when you can actually construct with |
| // the unprefixed RTCIceCandidate in Firefox (currently both are defined, |
| // but one can't be used as a constructor). |
| var constructorName = JS('', 'window[#]', |
| Device.isFirefox ? '${Device.propertyPrefix}RTCSessionDescription' : |
| 'RTCSessionDescription'); |
| return JS('RtcSessionDescription', |
| 'new #(#)', constructorName, |
| convertDartToNative_SerializedScriptValue(dictionary)); |
| } |
| |
| @DomName('RTCSessionDescription.sdp') |
| @DocsEditable() |
| String sdp; |
| |
| @DomName('RTCSessionDescription.type') |
| @DocsEditable() |
| String type; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCStatsReport') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCStatsReport |
| @Experimental() |
| class RtcStatsReport extends Interceptor native "RTCStatsReport" { |
| |
| @DomName('RTCStatsReport.id') |
| @DocsEditable() |
| final String id; |
| |
| @DomName('RTCStatsReport.local') |
| @DocsEditable() |
| final RtcStatsReport local; |
| |
| @DomName('RTCStatsReport.remote') |
| @DocsEditable() |
| final RtcStatsReport remote; |
| |
| DateTime get timestamp => convertNativeToDart_DateTime(this._get_timestamp); |
| @JSName('timestamp') |
| @DomName('RTCStatsReport.timestamp') |
| @DocsEditable() |
| @Creates('Null') |
| final dynamic _get_timestamp; |
| |
| @DomName('RTCStatsReport.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('RTCStatsReport.names') |
| @DocsEditable() |
| List<String> names() native; |
| |
| @DomName('RTCStatsReport.stat') |
| @DocsEditable() |
| String stat(String name) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RTCStatsResponse') |
| // http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCStatsReport-RTCStats-getter-DOMString-id |
| @Experimental() |
| class RtcStatsResponse extends Interceptor native "RTCStatsResponse" { |
| |
| @DomName('RTCStatsResponse.__getter__') |
| @DocsEditable() |
| RtcStatsReport __getter__(String name) native; |
| |
| @DomName('RTCStatsResponse.namedItem') |
| @DocsEditable() |
| RtcStatsReport namedItem(String name) native; |
| |
| @DomName('RTCStatsResponse.result') |
| @DocsEditable() |
| List<RtcStatsReport> result() native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Screen') |
| class Screen extends Interceptor native "Screen" { |
| |
| @DomName('Screen.availHeight') |
| @DomName('Screen.availLeft') |
| @DomName('Screen.availTop') |
| @DomName('Screen.availWidth') |
| Rect get available => new Rect($dom_availLeft, $dom_availTop, $dom_availWidth, |
| $dom_availHeight); |
| |
| @JSName('availHeight') |
| @DomName('Screen.availHeight') |
| @DocsEditable() |
| final int $dom_availHeight; |
| |
| @JSName('availLeft') |
| @DomName('Screen.availLeft') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final int $dom_availLeft; |
| |
| @JSName('availTop') |
| @DomName('Screen.availTop') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| final int $dom_availTop; |
| |
| @JSName('availWidth') |
| @DomName('Screen.availWidth') |
| @DocsEditable() |
| final int $dom_availWidth; |
| |
| @DomName('Screen.colorDepth') |
| @DocsEditable() |
| final int colorDepth; |
| |
| @DomName('Screen.height') |
| @DocsEditable() |
| final int height; |
| |
| @DomName('Screen.pixelDepth') |
| @DocsEditable() |
| final int pixelDepth; |
| |
| @DomName('Screen.width') |
| @DocsEditable() |
| final int width; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLScriptElement') |
| class ScriptElement extends _HTMLElement native "HTMLScriptElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ScriptElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLScriptElement.HTMLScriptElement') |
| @DocsEditable() |
| factory ScriptElement() => document.$dom_createElement("script"); |
| |
| @DomName('HTMLScriptElement.async') |
| @DocsEditable() |
| bool async; |
| |
| @DomName('HTMLScriptElement.charset') |
| @DocsEditable() |
| String charset; |
| |
| @DomName('HTMLScriptElement.crossOrigin') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin |
| @Experimental() |
| String crossOrigin; |
| |
| @DomName('HTMLScriptElement.defer') |
| @DocsEditable() |
| bool defer; |
| |
| @DomName('HTMLScriptElement.event') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLScriptElement-partial |
| @deprecated // deprecated |
| String event; |
| |
| @DomName('HTMLScriptElement.htmlFor') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLScriptElement-partial |
| @deprecated // deprecated |
| String htmlFor; |
| |
| @DomName('HTMLScriptElement.nonce') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive |
| @Experimental() |
| String nonce; |
| |
| @DomName('HTMLScriptElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLScriptElement.type') |
| @DocsEditable() |
| String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SecurityPolicy') |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#securitypolicy |
| @Experimental() |
| class SecurityPolicy extends Interceptor native "SecurityPolicy" { |
| |
| @DomName('SecurityPolicy.allowsEval') |
| @DocsEditable() |
| final bool allowsEval; |
| |
| @DomName('SecurityPolicy.allowsInlineScript') |
| @DocsEditable() |
| final bool allowsInlineScript; |
| |
| @DomName('SecurityPolicy.allowsInlineStyle') |
| @DocsEditable() |
| final bool allowsInlineStyle; |
| |
| @DomName('SecurityPolicy.isActive') |
| @DocsEditable() |
| final bool isActive; |
| |
| @DomName('SecurityPolicy.reportURIs') |
| @DocsEditable() |
| @Returns('DomStringList') |
| @Creates('DomStringList') |
| final List<String> reportURIs; |
| |
| @DomName('SecurityPolicy.allowsConnectionTo') |
| @DocsEditable() |
| bool allowsConnectionTo(String url) native; |
| |
| @DomName('SecurityPolicy.allowsFontFrom') |
| @DocsEditable() |
| bool allowsFontFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsFormAction') |
| @DocsEditable() |
| bool allowsFormAction(String url) native; |
| |
| @DomName('SecurityPolicy.allowsFrameFrom') |
| @DocsEditable() |
| bool allowsFrameFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsImageFrom') |
| @DocsEditable() |
| bool allowsImageFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsMediaFrom') |
| @DocsEditable() |
| bool allowsMediaFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsObjectFrom') |
| @DocsEditable() |
| bool allowsObjectFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsPluginType') |
| @DocsEditable() |
| bool allowsPluginType(String type) native; |
| |
| @DomName('SecurityPolicy.allowsScriptFrom') |
| @DocsEditable() |
| bool allowsScriptFrom(String url) native; |
| |
| @DomName('SecurityPolicy.allowsStyleFrom') |
| @DocsEditable() |
| bool allowsStyleFrom(String url) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SecurityPolicyViolationEvent') |
| // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#securitypolicyviolationevent-events |
| @Experimental() |
| class SecurityPolicyViolationEvent extends Event native "SecurityPolicyViolationEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory SecurityPolicyViolationEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('blockedURI') |
| @DomName('SecurityPolicyViolationEvent.blockedURI') |
| @DocsEditable() |
| final String blockedUri; |
| |
| @DomName('SecurityPolicyViolationEvent.columnNumber') |
| @DocsEditable() |
| final int columnNumber; |
| |
| @JSName('documentURI') |
| @DomName('SecurityPolicyViolationEvent.documentURI') |
| @DocsEditable() |
| final String documentUri; |
| |
| @DomName('SecurityPolicyViolationEvent.effectiveDirective') |
| @DocsEditable() |
| final String effectiveDirective; |
| |
| @DomName('SecurityPolicyViolationEvent.lineNumber') |
| @DocsEditable() |
| final int lineNumber; |
| |
| @DomName('SecurityPolicyViolationEvent.originalPolicy') |
| @DocsEditable() |
| final String originalPolicy; |
| |
| @DomName('SecurityPolicyViolationEvent.referrer') |
| @DocsEditable() |
| final String referrer; |
| |
| @DomName('SecurityPolicyViolationEvent.sourceFile') |
| @DocsEditable() |
| final String sourceFile; |
| |
| @DomName('SecurityPolicyViolationEvent.statusCode') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final int statusCode; |
| |
| @DomName('SecurityPolicyViolationEvent.violatedDirective') |
| @DocsEditable() |
| final String violatedDirective; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('HTMLSelectElement') |
| class SelectElement extends _HTMLElement native "HTMLSelectElement" { |
| // To suppress missing implicit constructor warnings. |
| factory SelectElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLSelectElement.HTMLSelectElement') |
| @DocsEditable() |
| factory SelectElement() => document.$dom_createElement("select"); |
| |
| @DomName('HTMLSelectElement.autofocus') |
| @DocsEditable() |
| bool autofocus; |
| |
| @DomName('HTMLSelectElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLSelectElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLSelectElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLSelectElement.length') |
| @DocsEditable() |
| int length; |
| |
| @DomName('HTMLSelectElement.multiple') |
| @DocsEditable() |
| bool multiple; |
| |
| @DomName('HTMLSelectElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLSelectElement.required') |
| @DocsEditable() |
| bool required; |
| |
| @DomName('HTMLSelectElement.selectedIndex') |
| @DocsEditable() |
| int selectedIndex; |
| |
| @DomName('HTMLSelectElement.size') |
| @DocsEditable() |
| int size; |
| |
| @DomName('HTMLSelectElement.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('HTMLSelectElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLSelectElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLSelectElement.value') |
| @DocsEditable() |
| String value; |
| |
| @DomName('HTMLSelectElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLSelectElement.__setter__') |
| @DocsEditable() |
| void __setter__(int index, OptionElement value) native; |
| |
| @DomName('HTMLSelectElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLSelectElement.item') |
| @DocsEditable() |
| Node item(int index) native; |
| |
| @DomName('HTMLSelectElement.namedItem') |
| @DocsEditable() |
| Node namedItem(String name) native; |
| |
| @DomName('HTMLSelectElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| |
| |
| // Override default options, since IE returns SelectElement itself and it |
| // does not operate as a List. |
| List<OptionElement> get options { |
| var options = |
| this.queryAll('option').where((e) => e is OptionElement).toList(); |
| return new UnmodifiableListView(options); |
| } |
| |
| List<OptionElement> get selectedOptions { |
| // IE does not change the selected flag for single-selection items. |
| if (this.multiple) { |
| var options = this.options.where((o) => o.selected).toList(); |
| return new UnmodifiableListView(options); |
| } else { |
| return [this.options[this.selectedIndex]]; |
| } |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Selection') |
| class Selection extends Interceptor native "Selection" { |
| |
| @DomName('Selection.anchorNode') |
| @DocsEditable() |
| final Node anchorNode; |
| |
| @DomName('Selection.anchorOffset') |
| @DocsEditable() |
| final int anchorOffset; |
| |
| @DomName('Selection.baseNode') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final Node baseNode; |
| |
| @DomName('Selection.baseOffset') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final int baseOffset; |
| |
| @DomName('Selection.extentNode') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final Node extentNode; |
| |
| @DomName('Selection.extentOffset') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final int extentOffset; |
| |
| @DomName('Selection.focusNode') |
| @DocsEditable() |
| final Node focusNode; |
| |
| @DomName('Selection.focusOffset') |
| @DocsEditable() |
| final int focusOffset; |
| |
| @DomName('Selection.isCollapsed') |
| @DocsEditable() |
| final bool isCollapsed; |
| |
| @DomName('Selection.rangeCount') |
| @DocsEditable() |
| final int rangeCount; |
| |
| @DomName('Selection.type') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final String type; |
| |
| @DomName('Selection.addRange') |
| @DocsEditable() |
| void addRange(Range range) native; |
| |
| @DomName('Selection.collapse') |
| @DocsEditable() |
| void collapse(Node node, int index) native; |
| |
| @DomName('Selection.collapseToEnd') |
| @DocsEditable() |
| void collapseToEnd() native; |
| |
| @DomName('Selection.collapseToStart') |
| @DocsEditable() |
| void collapseToStart() native; |
| |
| @DomName('Selection.containsNode') |
| @DocsEditable() |
| @Experimental() // non-standard |
| bool containsNode(Node node, bool allowPartial) native; |
| |
| @DomName('Selection.deleteFromDocument') |
| @DocsEditable() |
| void deleteFromDocument() native; |
| |
| @DomName('Selection.empty') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void empty() native; |
| |
| @DomName('Selection.extend') |
| @DocsEditable() |
| void extend(Node node, int offset) native; |
| |
| @DomName('Selection.getRangeAt') |
| @DocsEditable() |
| Range getRangeAt(int index) native; |
| |
| @DomName('Selection.modify') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void modify(String alter, String direction, String granularity) native; |
| |
| @DomName('Selection.removeAllRanges') |
| @DocsEditable() |
| void removeAllRanges() native; |
| |
| @DomName('Selection.selectAllChildren') |
| @DocsEditable() |
| void selectAllChildren(Node node) native; |
| |
| @DomName('Selection.setBaseAndExtent') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) native; |
| |
| @DomName('Selection.setPosition') |
| @DocsEditable() |
| @Experimental() // non-standard |
| void setPosition(Node node, int offset) native; |
| |
| @DomName('Selection.toString') |
| @DocsEditable() |
| String toString() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLShadowElement') |
| @SupportedBrowser(SupportedBrowser.CHROME, '26') |
| @Experimental() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#shadow-element |
| class ShadowElement extends _HTMLElement native "HTMLShadowElement" { |
| // To suppress missing implicit constructor warnings. |
| factory ShadowElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLShadowElement.HTMLShadowElement') |
| @DocsEditable() |
| factory ShadowElement() => document.$dom_createElement("shadow"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('shadow'); |
| |
| @DomName('HTMLShadowElement.olderShadowRoot') |
| @DocsEditable() |
| final ShadowRoot olderShadowRoot; |
| |
| @DomName('HTMLShadowElement.resetStyleInheritance') |
| @DocsEditable() |
| bool resetStyleInheritance; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('ShadowRoot') |
| @SupportedBrowser(SupportedBrowser.CHROME, '26') |
| @Experimental() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-root |
| class ShadowRoot extends DocumentFragment native "ShadowRoot" { |
| // To suppress missing implicit constructor warnings. |
| factory ShadowRoot._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('ShadowRoot.activeElement') |
| @DocsEditable() |
| final Element activeElement; |
| |
| @DomName('ShadowRoot.applyAuthorStyles') |
| @DocsEditable() |
| bool applyAuthorStyles; |
| |
| @JSName('innerHTML') |
| @DomName('ShadowRoot.innerHTML') |
| @DocsEditable() |
| String innerHtml; |
| |
| @DomName('ShadowRoot.olderShadowRoot') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final ShadowRoot olderShadowRoot; |
| |
| @DomName('ShadowRoot.resetStyleInheritance') |
| @DocsEditable() |
| bool resetStyleInheritance; |
| |
| @JSName('cloneNode') |
| @DomName('ShadowRoot.cloneNode') |
| @DocsEditable() |
| Node clone(bool deep) native; |
| |
| @DomName('ShadowRoot.elementFromPoint') |
| @DocsEditable() |
| Element elementFromPoint(int x, int y) native; |
| |
| @DomName('ShadowRoot.getElementById') |
| @DocsEditable() |
| Element getElementById(String elementId) native; |
| |
| @DomName('ShadowRoot.getElementsByClassName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByClassName(String className) native; |
| |
| @DomName('ShadowRoot.getElementsByTagName') |
| @DocsEditable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| List<Node> getElementsByTagName(String tagName) native; |
| |
| @DomName('ShadowRoot.getSelection') |
| @DocsEditable() |
| Selection getSelection() native; |
| |
| static bool get supported => |
| JS('bool', '!!(Element.prototype.webkitCreateShadowRoot)'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SharedWorkerGlobalScope') |
| @Experimental() // untriaged |
| class SharedWorkerGlobalScope extends WorkerGlobalScope native "SharedWorkerGlobalScope" { |
| // To suppress missing implicit constructor warnings. |
| factory SharedWorkerGlobalScope._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SharedWorkerGlobalScope.name') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SourceBuffer') |
| // https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#sourcebuffer |
| @Experimental() |
| class SourceBuffer extends EventTarget native "SourceBuffer" { |
| // To suppress missing implicit constructor warnings. |
| factory SourceBuffer._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SourceBuffer.buffered') |
| @DocsEditable() |
| final TimeRanges buffered; |
| |
| @DomName('SourceBuffer.timestampOffset') |
| @DocsEditable() |
| num timestampOffset; |
| |
| @DomName('SourceBuffer.updating') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final bool updating; |
| |
| @DomName('SourceBuffer.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| @DomName('SourceBuffer.appendBuffer') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void appendBuffer(ByteBuffer data) native; |
| |
| @JSName('appendBuffer') |
| @DomName('SourceBuffer.appendBuffer') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void appendBufferView(TypedData data) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('SourceBuffer.addEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SourceBuffer.dispatchEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('SourceBuffer.removeEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SourceBufferList') |
| // https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#sourcebufferlist |
| @Experimental() |
| class SourceBufferList extends EventTarget with ListMixin<SourceBuffer>, ImmutableListMixin<SourceBuffer> implements JavaScriptIndexingBehavior, List<SourceBuffer> native "SourceBufferList" { |
| // To suppress missing implicit constructor warnings. |
| factory SourceBufferList._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SourceBufferList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| SourceBuffer operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("SourceBuffer", "#[#]", this, index); |
| } |
| void operator[]=(int index, SourceBuffer value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<SourceBuffer> mixins. |
| // SourceBuffer is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| SourceBuffer get first { |
| if (this.length > 0) { |
| return JS('SourceBuffer', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SourceBuffer get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('SourceBuffer', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SourceBuffer get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('SourceBuffer', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| SourceBuffer elementAt(int index) => this[index]; |
| // -- end List<SourceBuffer> mixins. |
| |
| @DomName('SourceBufferList.item') |
| @DocsEditable() |
| SourceBuffer item(int index) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('SourceBufferList.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SourceBufferList.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('SourceBufferList.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLSourceElement') |
| class SourceElement extends _HTMLElement native "HTMLSourceElement" { |
| // To suppress missing implicit constructor warnings. |
| factory SourceElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLSourceElement.HTMLSourceElement') |
| @DocsEditable() |
| factory SourceElement() => document.$dom_createElement("source"); |
| |
| @DomName('HTMLSourceElement.media') |
| @DocsEditable() |
| String media; |
| |
| @DomName('HTMLSourceElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLSourceElement.type') |
| @DocsEditable() |
| String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SourceInfo') |
| @Experimental() // untriaged |
| class SourceInfo extends Interceptor native "SourceInfo" { |
| |
| @DomName('SourceInfo.facing') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String facing; |
| |
| @DomName('SourceInfo.id') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String id; |
| |
| @DomName('SourceInfo.kind') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String kind; |
| |
| @DomName('SourceInfo.label') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final String label; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLSpanElement') |
| class SpanElement extends _HTMLElement native "HTMLSpanElement" { |
| // To suppress missing implicit constructor warnings. |
| factory SpanElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLSpanElement.HTMLSpanElement') |
| @DocsEditable() |
| factory SpanElement() => document.$dom_createElement("span"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechGrammar') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-speechgrammar |
| @Experimental() |
| class SpeechGrammar extends Interceptor native "SpeechGrammar" { |
| |
| @DomName('SpeechGrammar.SpeechGrammar') |
| @DocsEditable() |
| factory SpeechGrammar() { |
| return SpeechGrammar._create_1(); |
| } |
| static SpeechGrammar _create_1() => JS('SpeechGrammar', 'new SpeechGrammar()'); |
| |
| @DomName('SpeechGrammar.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('SpeechGrammar.weight') |
| @DocsEditable() |
| num weight; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechGrammarList') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-speechgrammarlist |
| @Experimental() |
| class SpeechGrammarList extends Interceptor with ListMixin<SpeechGrammar>, ImmutableListMixin<SpeechGrammar> implements JavaScriptIndexingBehavior, List<SpeechGrammar> native "SpeechGrammarList" { |
| |
| @DomName('SpeechGrammarList.SpeechGrammarList') |
| @DocsEditable() |
| factory SpeechGrammarList() { |
| return SpeechGrammarList._create_1(); |
| } |
| static SpeechGrammarList _create_1() => JS('SpeechGrammarList', 'new SpeechGrammarList()'); |
| |
| @DomName('SpeechGrammarList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| SpeechGrammar operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("SpeechGrammar", "#[#]", this, index); |
| } |
| void operator[]=(int index, SpeechGrammar value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<SpeechGrammar> mixins. |
| // SpeechGrammar is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| SpeechGrammar get first { |
| if (this.length > 0) { |
| return JS('SpeechGrammar', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechGrammar get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('SpeechGrammar', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechGrammar get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('SpeechGrammar', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| SpeechGrammar elementAt(int index) => this[index]; |
| // -- end List<SpeechGrammar> mixins. |
| |
| @DomName('SpeechGrammarList.addFromString') |
| @DocsEditable() |
| void addFromString(String string, [num weight]) native; |
| |
| @DomName('SpeechGrammarList.addFromUri') |
| @DocsEditable() |
| void addFromUri(String src, [num weight]) native; |
| |
| @DomName('SpeechGrammarList.item') |
| @DocsEditable() |
| SpeechGrammar item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechInputEvent') |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_event_interface |
| @Experimental() |
| class SpeechInputEvent extends Event native "SpeechInputEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechInputEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechInputEvent.results') |
| @DocsEditable() |
| @Returns('_SpeechInputResultList') |
| @Creates('_SpeechInputResultList') |
| final List<SpeechInputResult> results; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechInputResult') |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_result_interface |
| @Experimental() |
| class SpeechInputResult extends Interceptor native "SpeechInputResult" { |
| |
| @DomName('SpeechInputResult.confidence') |
| @DocsEditable() |
| final num confidence; |
| |
| @DomName('SpeechInputResult.utterance') |
| @DocsEditable() |
| final String utterance; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('SpeechRecognition') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-section |
| class SpeechRecognition extends EventTarget native "SpeechRecognition" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechRecognition._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechRecognition.audioendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> audioEndEvent = const EventStreamProvider<Event>('audioend'); |
| |
| @DomName('SpeechRecognition.audiostartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> audioStartEvent = const EventStreamProvider<Event>('audiostart'); |
| |
| @DomName('SpeechRecognition.endEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> endEvent = const EventStreamProvider<Event>('end'); |
| |
| @DomName('SpeechRecognition.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechRecognitionError> errorEvent = const EventStreamProvider<SpeechRecognitionError>('error'); |
| |
| @DomName('SpeechRecognition.nomatchEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechRecognitionEvent> noMatchEvent = const EventStreamProvider<SpeechRecognitionEvent>('nomatch'); |
| |
| @DomName('SpeechRecognition.resultEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechRecognitionEvent> resultEvent = const EventStreamProvider<SpeechRecognitionEvent>('result'); |
| |
| @DomName('SpeechRecognition.soundendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> soundEndEvent = const EventStreamProvider<Event>('soundend'); |
| |
| @DomName('SpeechRecognition.soundstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> soundStartEvent = const EventStreamProvider<Event>('soundstart'); |
| |
| @DomName('SpeechRecognition.speechendEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> speechEndEvent = const EventStreamProvider<Event>('speechend'); |
| |
| @DomName('SpeechRecognition.speechstartEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> speechStartEvent = const EventStreamProvider<Event>('speechstart'); |
| |
| @DomName('SpeechRecognition.startEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> startEvent = const EventStreamProvider<Event>('start'); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.SpeechRecognition || window.webkitSpeechRecognition)'); |
| |
| @DomName('SpeechRecognition.continuous') |
| @DocsEditable() |
| bool continuous; |
| |
| @DomName('SpeechRecognition.grammars') |
| @DocsEditable() |
| SpeechGrammarList grammars; |
| |
| @DomName('SpeechRecognition.interimResults') |
| @DocsEditable() |
| bool interimResults; |
| |
| @DomName('SpeechRecognition.lang') |
| @DocsEditable() |
| String lang; |
| |
| @DomName('SpeechRecognition.maxAlternatives') |
| @DocsEditable() |
| int maxAlternatives; |
| |
| @DomName('SpeechRecognition.abort') |
| @DocsEditable() |
| void abort() native; |
| |
| @DomName('SpeechRecognition.start') |
| @DocsEditable() |
| void start() native; |
| |
| @DomName('SpeechRecognition.stop') |
| @DocsEditable() |
| void stop() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('SpeechRecognition.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SpeechRecognition.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('SpeechRecognition.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SpeechRecognition.onaudioend') |
| @DocsEditable() |
| Stream<Event> get onAudioEnd => audioEndEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onaudiostart') |
| @DocsEditable() |
| Stream<Event> get onAudioStart => audioStartEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onend') |
| @DocsEditable() |
| Stream<Event> get onEnd => endEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onerror') |
| @DocsEditable() |
| Stream<SpeechRecognitionError> get onError => errorEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onnomatch') |
| @DocsEditable() |
| Stream<SpeechRecognitionEvent> get onNoMatch => noMatchEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onresult') |
| @DocsEditable() |
| Stream<SpeechRecognitionEvent> get onResult => resultEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onsoundend') |
| @DocsEditable() |
| Stream<Event> get onSoundEnd => soundEndEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onsoundstart') |
| @DocsEditable() |
| Stream<Event> get onSoundStart => soundStartEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onspeechend') |
| @DocsEditable() |
| Stream<Event> get onSpeechEnd => speechEndEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onspeechstart') |
| @DocsEditable() |
| Stream<Event> get onSpeechStart => speechStartEvent.forTarget(this); |
| |
| @DomName('SpeechRecognition.onstart') |
| @DocsEditable() |
| Stream<Event> get onStart => startEvent.forTarget(this); |
| |
| factory SpeechRecognition() { |
| return JS('SpeechRecognition', |
| 'new (window.SpeechRecognition || window.webkitSpeechRecognition)()'); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechRecognitionAlternative') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionalternative |
| class SpeechRecognitionAlternative extends Interceptor native "SpeechRecognitionAlternative" { |
| |
| @DomName('SpeechRecognitionAlternative.confidence') |
| @DocsEditable() |
| final num confidence; |
| |
| @DomName('SpeechRecognitionAlternative.transcript') |
| @DocsEditable() |
| final String transcript; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechRecognitionError') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-error |
| class SpeechRecognitionError extends Event native "SpeechRecognitionError" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechRecognitionError._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechRecognitionError.error') |
| @DocsEditable() |
| final String error; |
| |
| @DomName('SpeechRecognitionError.message') |
| @DocsEditable() |
| final String message; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechRecognitionEvent') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-event |
| class SpeechRecognitionEvent extends Event native "SpeechRecognitionEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechRecognitionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechRecognitionEvent.emma') |
| @DocsEditable() |
| final Document emma; |
| |
| @DomName('SpeechRecognitionEvent.interpretation') |
| @DocsEditable() |
| final Document interpretation; |
| |
| @DomName('SpeechRecognitionEvent.resultIndex') |
| @DocsEditable() |
| final int resultIndex; |
| |
| @DomName('SpeechRecognitionEvent.results') |
| @DocsEditable() |
| @Returns('_SpeechRecognitionResultList') |
| @Creates('_SpeechRecognitionResultList') |
| final List<SpeechRecognitionResult> results; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechRecognitionResult') |
| @SupportedBrowser(SupportedBrowser.CHROME, '25') |
| @Experimental() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionresult |
| class SpeechRecognitionResult extends Interceptor native "SpeechRecognitionResult" { |
| |
| @DomName('SpeechRecognitionResult.isFinal') |
| @DocsEditable() |
| final bool isFinal; |
| |
| @DomName('SpeechRecognitionResult.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('SpeechRecognitionResult.item') |
| @DocsEditable() |
| SpeechRecognitionAlternative item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechSynthesis') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section |
| @Experimental() |
| class SpeechSynthesis extends Interceptor native "SpeechSynthesis" { |
| |
| @DomName('SpeechSynthesis.paused') |
| @DocsEditable() |
| final bool paused; |
| |
| @DomName('SpeechSynthesis.pending') |
| @DocsEditable() |
| final bool pending; |
| |
| @DomName('SpeechSynthesis.speaking') |
| @DocsEditable() |
| final bool speaking; |
| |
| @DomName('SpeechSynthesis.cancel') |
| @DocsEditable() |
| void cancel() native; |
| |
| @DomName('SpeechSynthesis.getVoices') |
| @DocsEditable() |
| List<SpeechSynthesisVoice> getVoices() native; |
| |
| @DomName('SpeechSynthesis.pause') |
| @DocsEditable() |
| void pause() native; |
| |
| @DomName('SpeechSynthesis.resume') |
| @DocsEditable() |
| void resume() native; |
| |
| @DomName('SpeechSynthesis.speak') |
| @DocsEditable() |
| void speak(SpeechSynthesisUtterance utterance) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechSynthesisEvent') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section |
| @Experimental() |
| class SpeechSynthesisEvent extends Event native "SpeechSynthesisEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechSynthesisEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechSynthesisEvent.charIndex') |
| @DocsEditable() |
| final int charIndex; |
| |
| @DomName('SpeechSynthesisEvent.elapsedTime') |
| @DocsEditable() |
| final num elapsedTime; |
| |
| @DomName('SpeechSynthesisEvent.name') |
| @DocsEditable() |
| final String name; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechSynthesisUtterance') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section |
| @Experimental() |
| class SpeechSynthesisUtterance extends EventTarget native "SpeechSynthesisUtterance" { |
| // To suppress missing implicit constructor warnings. |
| factory SpeechSynthesisUtterance._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SpeechSynthesisUtterance.boundaryEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechSynthesisEvent> boundaryEvent = const EventStreamProvider<SpeechSynthesisEvent>('boundary'); |
| |
| @DomName('SpeechSynthesisUtterance.endEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechSynthesisEvent> endEvent = const EventStreamProvider<SpeechSynthesisEvent>('end'); |
| |
| @DomName('SpeechSynthesisUtterance.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('SpeechSynthesisUtterance.markEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechSynthesisEvent> markEvent = const EventStreamProvider<SpeechSynthesisEvent>('mark'); |
| |
| @DomName('SpeechSynthesisUtterance.pauseEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> pauseEvent = const EventStreamProvider<Event>('pause'); |
| |
| @DomName('SpeechSynthesisUtterance.resumeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechSynthesisEvent> resumeEvent = const EventStreamProvider<SpeechSynthesisEvent>('resume'); |
| |
| @DomName('SpeechSynthesisUtterance.startEvent') |
| @DocsEditable() |
| static const EventStreamProvider<SpeechSynthesisEvent> startEvent = const EventStreamProvider<SpeechSynthesisEvent>('start'); |
| |
| @DomName('SpeechSynthesisUtterance.SpeechSynthesisUtterance') |
| @DocsEditable() |
| factory SpeechSynthesisUtterance([String text]) { |
| if (text != null) { |
| return SpeechSynthesisUtterance._create_1(text); |
| } |
| return SpeechSynthesisUtterance._create_2(); |
| } |
| static SpeechSynthesisUtterance _create_1(text) => JS('SpeechSynthesisUtterance', 'new SpeechSynthesisUtterance(#)', text); |
| static SpeechSynthesisUtterance _create_2() => JS('SpeechSynthesisUtterance', 'new SpeechSynthesisUtterance()'); |
| |
| @DomName('SpeechSynthesisUtterance.lang') |
| @DocsEditable() |
| String lang; |
| |
| @DomName('SpeechSynthesisUtterance.pitch') |
| @DocsEditable() |
| num pitch; |
| |
| @DomName('SpeechSynthesisUtterance.rate') |
| @DocsEditable() |
| num rate; |
| |
| @DomName('SpeechSynthesisUtterance.text') |
| @DocsEditable() |
| String text; |
| |
| @DomName('SpeechSynthesisUtterance.voice') |
| @DocsEditable() |
| SpeechSynthesisVoice voice; |
| |
| @DomName('SpeechSynthesisUtterance.volume') |
| @DocsEditable() |
| num volume; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('SpeechSynthesisUtterance.addEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SpeechSynthesisUtterance.dispatchEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('SpeechSynthesisUtterance.removeEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('SpeechSynthesisUtterance.onboundary') |
| @DocsEditable() |
| Stream<SpeechSynthesisEvent> get onBoundary => boundaryEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onend') |
| @DocsEditable() |
| Stream<SpeechSynthesisEvent> get onEnd => endEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onmark') |
| @DocsEditable() |
| Stream<SpeechSynthesisEvent> get onMark => markEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onpause') |
| @DocsEditable() |
| Stream<Event> get onPause => pauseEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onresume') |
| @DocsEditable() |
| Stream<SpeechSynthesisEvent> get onResume => resumeEvent.forTarget(this); |
| |
| @DomName('SpeechSynthesisUtterance.onstart') |
| @DocsEditable() |
| Stream<SpeechSynthesisEvent> get onStart => startEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechSynthesisVoice') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section |
| @Experimental() |
| class SpeechSynthesisVoice extends Interceptor native "SpeechSynthesisVoice" { |
| |
| @JSName('default') |
| @DomName('SpeechSynthesisVoice.default') |
| @DocsEditable() |
| final bool defaultValue; |
| |
| @DomName('SpeechSynthesisVoice.lang') |
| @DocsEditable() |
| final String lang; |
| |
| @DomName('SpeechSynthesisVoice.localService') |
| @DocsEditable() |
| final bool localService; |
| |
| @DomName('SpeechSynthesisVoice.name') |
| @DocsEditable() |
| final String name; |
| |
| @JSName('voiceURI') |
| @DomName('SpeechSynthesisVoice.voiceURI') |
| @DocsEditable() |
| final String voiceUri; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * The type used by the |
| * [Window.localStorage] and [Window.sessionStorage] properties. |
| * Storage is implemented as a Map<String, String>. |
| * |
| * To store and get values, use Dart's built-in map syntax: |
| * |
| * window.localStorage['key1'] = 'val1'; |
| * window.localStorage['key2'] = 'val2'; |
| * window.localStorage['key3'] = 'val3'; |
| * assert(window.localStorage['key3'] == 'val3'); |
| * |
| * You can use [Map](http://api.dartlang.org/dart_core/Map.html) APIs |
| * such as containsValue(), clear(), and length: |
| * |
| * assert(window.localStorage.containsValue('does not exist') == false); |
| * window.localStorage.clear(); |
| * assert(window.localStorage.length == 0); |
| * |
| * For more examples of using this API, see |
| * [localstorage_test.dart](http://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/tests/html/localstorage_test.dart). |
| * For details on using the Map API, see the |
| * [Maps](http://www.dartlang.org/docs/library-tour/#maps-aka-dictionaries-or-hashes) |
| * section of the library tour. |
| */ |
| @DomName('Storage') |
| @Unstable() |
| class Storage extends Interceptor |
| implements Map<String, String> native "Storage" { |
| |
| // TODO(nweiz): update this when maps support lazy iteration |
| bool containsValue(String value) => values.any((e) => e == value); |
| |
| bool containsKey(String key) => $dom_getItem(key) != null; |
| |
| String operator [](String key) => $dom_getItem(key); |
| |
| void operator []=(String key, String value) { $dom_setItem(key, value); } |
| |
| String putIfAbsent(String key, String ifAbsent()) { |
| if (!containsKey(key)) this[key] = ifAbsent(); |
| return this[key]; |
| } |
| |
| String remove(String key) { |
| final value = this[key]; |
| $dom_removeItem(key); |
| return value; |
| } |
| |
| void clear() => $dom_clear(); |
| |
| void forEach(void f(String key, String value)) { |
| for (var i = 0; true; i++) { |
| final key = $dom_key(i); |
| if (key == null) return; |
| |
| f(key, this[key]); |
| } |
| } |
| |
| Iterable<String> get keys { |
| final keys = []; |
| forEach((k, v) => keys.add(k)); |
| return keys; |
| } |
| |
| Iterable<String> get values { |
| final values = []; |
| forEach((k, v) => values.add(v)); |
| return values; |
| } |
| |
| int get length => $dom_length; |
| |
| bool get isEmpty => $dom_key(0) == null; |
| |
| bool get isNotEmpty => !isEmpty; |
| |
| @JSName('length') |
| @DomName('Storage.length') |
| @DocsEditable() |
| final int $dom_length; |
| |
| @DomName('Storage.__delete__') |
| @DocsEditable() |
| bool __delete__(index_OR_name) native; |
| |
| @DomName('Storage.__getter__') |
| @DocsEditable() |
| String __getter__(index_OR_name) native; |
| |
| @DomName('Storage.__setter__') |
| @DocsEditable() |
| void __setter__(index_OR_name, String value) native; |
| |
| @JSName('clear') |
| @DomName('Storage.clear') |
| @DocsEditable() |
| void $dom_clear() native; |
| |
| @JSName('getItem') |
| @DomName('Storage.getItem') |
| @DocsEditable() |
| String $dom_getItem(String key) native; |
| |
| @JSName('key') |
| @DomName('Storage.key') |
| @DocsEditable() |
| String $dom_key(int index) native; |
| |
| @JSName('removeItem') |
| @DomName('Storage.removeItem') |
| @DocsEditable() |
| void $dom_removeItem(String key) native; |
| |
| @JSName('setItem') |
| @DomName('Storage.setItem') |
| @DocsEditable() |
| void $dom_setItem(String key, String data) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('StorageErrorCallback') |
| // http://www.w3.org/TR/quota-api/#storageerrorcallback-callback |
| @Experimental() |
| typedef void StorageErrorCallback(DomError error); |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('StorageEvent') |
| @Unstable() |
| class StorageEvent extends Event native "StorageEvent" { |
| factory StorageEvent(String type, |
| {bool canBubble: false, bool cancelable: false, String key, String oldValue, |
| String newValue, String url, Storage storageArea}) { |
| |
| var e = document.$dom_createEvent("StorageEvent"); |
| e.$dom_initStorageEvent(type, canBubble, cancelable, key, oldValue, |
| newValue, url, storageArea); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory StorageEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('StorageEvent.key') |
| @DocsEditable() |
| final String key; |
| |
| @DomName('StorageEvent.newValue') |
| @DocsEditable() |
| final String newValue; |
| |
| @DomName('StorageEvent.oldValue') |
| @DocsEditable() |
| final String oldValue; |
| |
| @DomName('StorageEvent.storageArea') |
| @DocsEditable() |
| final Storage storageArea; |
| |
| @DomName('StorageEvent.url') |
| @DocsEditable() |
| final String url; |
| |
| @JSName('initStorageEvent') |
| @DomName('StorageEvent.initStorageEvent') |
| @DocsEditable() |
| void $dom_initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) native; |
| |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('StorageInfo') |
| // http://www.w3.org/TR/file-system-api/ |
| @Experimental() |
| class StorageInfo extends Interceptor native "StorageInfo" { |
| |
| @DomName('StorageInfo.PERSISTENT') |
| @DocsEditable() |
| static const int PERSISTENT = 1; |
| |
| @DomName('StorageInfo.TEMPORARY') |
| @DocsEditable() |
| static const int TEMPORARY = 0; |
| |
| @JSName('queryUsageAndQuota') |
| @DomName('StorageInfo.queryUsageAndQuota') |
| @DocsEditable() |
| void _queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) native; |
| |
| @JSName('requestQuota') |
| @DomName('StorageInfo.requestQuota') |
| @DocsEditable() |
| void _requestQuota(int storageType, int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) native; |
| |
| @JSName('requestQuota') |
| @DomName('StorageInfo.requestQuota') |
| @DocsEditable() |
| Future<int> requestQuota(int storageType, int newQuotaInBytes) { |
| var completer = new Completer<int>(); |
| _requestQuota(storageType, newQuotaInBytes, |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| Future<StorageInfoUsage> queryUsageAndQuota(int storageType) { |
| var completer = new Completer<StorageInfoUsage>(); |
| _queryUsageAndQuota(storageType, |
| (currentUsageInBytes, currentQuotaInBytes) { |
| completer.complete(new StorageInfoUsage(currentUsageInBytes, |
| currentQuotaInBytes)); |
| }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| } |
| |
| /** |
| * A simple container class for the two values that are returned from the |
| * futures in requestQuota and queryUsageAndQuota. |
| */ |
| class StorageInfoUsage { |
| final int currentUsageInBytes; |
| final int currentQuotaInBytes; |
| const StorageInfoUsage(this.currentUsageInBytes, this.currentQuotaInBytes); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('StorageQuota') |
| // http://www.w3.org/TR/quota-api/#idl-def-StorageQuota |
| @Experimental() |
| class StorageQuota extends Interceptor native "StorageQuota" { |
| |
| @DomName('StorageQuota.queryUsageAndQuota') |
| @DocsEditable() |
| void queryUsageAndQuota(StorageUsageCallback usageCallback, [StorageErrorCallback errorCallback]) native; |
| |
| @DomName('StorageQuota.requestQuota') |
| @DocsEditable() |
| void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('StorageQuotaCallback') |
| // http://www.w3.org/TR/quota-api/#idl-def-StorageQuotaCallback |
| @Experimental() |
| typedef void StorageQuotaCallback(int grantedQuotaInBytes); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('StorageUsageCallback') |
| // http://www.w3.org/TR/quota-api/#idl-def-StorageUsageCallback |
| @Experimental() |
| typedef void StorageUsageCallback(int currentUsageInBytes, int currentQuotaInBytes); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('StringCallback') |
| // http://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#the-datatransferitem-interface |
| @Experimental() |
| typedef void _StringCallback(String data); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLStyleElement') |
| class StyleElement extends _HTMLElement native "HTMLStyleElement" { |
| // To suppress missing implicit constructor warnings. |
| factory StyleElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLStyleElement.HTMLStyleElement') |
| @DocsEditable() |
| factory StyleElement() => document.$dom_createElement("style"); |
| |
| @DomName('HTMLStyleElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLStyleElement.media') |
| @DocsEditable() |
| String media; |
| |
| @DomName('HTMLStyleElement.scoped') |
| @DocsEditable() |
| bool scoped; |
| |
| @DomName('HTMLStyleElement.sheet') |
| @DocsEditable() |
| final StyleSheet sheet; |
| |
| @DomName('HTMLStyleElement.type') |
| @DocsEditable() |
| String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('StyleMedia') |
| // http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html |
| @Experimental() // nonstandard |
| class StyleMedia extends Interceptor native "StyleMedia" { |
| |
| @DomName('StyleMedia.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('StyleMedia.matchMedium') |
| @DocsEditable() |
| bool matchMedium(String mediaquery) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('StyleSheet') |
| class StyleSheet extends Interceptor native "StyleSheet" { |
| |
| @DomName('StyleSheet.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('StyleSheet.href') |
| @DocsEditable() |
| final String href; |
| |
| @DomName('StyleSheet.media') |
| @DocsEditable() |
| final MediaList media; |
| |
| @DomName('StyleSheet.ownerNode') |
| @DocsEditable() |
| final Node ownerNode; |
| |
| @DomName('StyleSheet.parentStyleSheet') |
| @DocsEditable() |
| final StyleSheet parentStyleSheet; |
| |
| @DomName('StyleSheet.title') |
| @DocsEditable() |
| final String title; |
| |
| @DomName('StyleSheet.type') |
| @DocsEditable() |
| final String type; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SubtleCrypto') |
| @Experimental() // untriaged |
| class SubtleCrypto extends Interceptor native "SubtleCrypto" { |
| |
| @DomName('SubtleCrypto.decrypt') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation decrypt(Map algorithm) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _decrypt_1(algorithm_1); |
| } |
| @JSName('decrypt') |
| @DomName('SubtleCrypto.decrypt') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation _decrypt_1(algorithm) native; |
| |
| @DomName('SubtleCrypto.digest') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation digest(Map algorithm) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _digest_1(algorithm_1); |
| } |
| @JSName('digest') |
| @DomName('SubtleCrypto.digest') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation _digest_1(algorithm) native; |
| |
| @DomName('SubtleCrypto.encrypt') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation encrypt(Map algorithm) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _encrypt_1(algorithm_1); |
| } |
| @JSName('encrypt') |
| @DomName('SubtleCrypto.encrypt') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation _encrypt_1(algorithm) native; |
| |
| @DomName('SubtleCrypto.importKey') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Object importKey(String format, TypedData keyData, Map algorithm, bool extractable, List<String> keyUsages) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _importKey_1(format, keyData, algorithm_1, extractable, keyUsages); |
| } |
| @JSName('importKey') |
| @DomName('SubtleCrypto.importKey') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Object _importKey_1(format, TypedData keyData, algorithm, extractable, List<String> keyUsages) native; |
| |
| @DomName('SubtleCrypto.sign') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation sign(Map algorithm) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _sign_1(algorithm_1); |
| } |
| @JSName('sign') |
| @DomName('SubtleCrypto.sign') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation _sign_1(algorithm) native; |
| |
| @DomName('SubtleCrypto.verify') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation verify(Map algorithm) { |
| var algorithm_1 = convertDartToNative_Dictionary(algorithm); |
| return _verify_1(algorithm_1); |
| } |
| @JSName('verify') |
| @DomName('SubtleCrypto.verify') |
| @DocsEditable() |
| @Experimental() // untriaged |
| CryptoOperation _verify_1(algorithm) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableCaptionElement') |
| class TableCaptionElement extends _HTMLElement native "HTMLTableCaptionElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TableCaptionElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTableCaptionElement.HTMLTableCaptionElement') |
| @DocsEditable() |
| factory TableCaptionElement() => document.$dom_createElement("caption"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableCellElement') |
| class TableCellElement extends _HTMLElement native "HTMLTableCellElement,HTMLTableDataCellElement,HTMLTableHeaderCellElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TableCellElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTableCellElement.HTMLTableCellElement') |
| @DocsEditable() |
| factory TableCellElement() => document.$dom_createElement("td"); |
| |
| @DomName('HTMLTableCellElement.cellIndex') |
| @DocsEditable() |
| final int cellIndex; |
| |
| @DomName('HTMLTableCellElement.colSpan') |
| @DocsEditable() |
| int colSpan; |
| |
| @DomName('HTMLTableCellElement.headers') |
| @DocsEditable() |
| String headers; |
| |
| @DomName('HTMLTableCellElement.rowSpan') |
| @DocsEditable() |
| int rowSpan; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableColElement') |
| class TableColElement extends _HTMLElement native "HTMLTableColElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TableColElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTableColElement.HTMLTableColElement') |
| @DocsEditable() |
| factory TableColElement() => document.$dom_createElement("col"); |
| |
| @DomName('HTMLTableColElement.span') |
| @DocsEditable() |
| int span; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableElement') |
| class TableElement extends _HTMLElement native "HTMLTableElement" { |
| |
| @DomName('HTMLTableElement.tBodies') |
| List<TableSectionElement> get tBodies => |
| new _WrappedList<TableSectionElement>($dom_tBodies); |
| |
| @DomName('HTMLTableElement.rows') |
| List<TableRowElement> get rows => |
| new _WrappedList<TableRowElement>($dom_rows); |
| |
| TableRowElement addRow() { |
| return insertRow(-1); |
| } |
| |
| TableCaptionElement createCaption() => $dom_createCaption(); |
| TableSectionElement createTBody() => $dom_createTBody(); |
| TableSectionElement createTFoot() => $dom_createTFoot(); |
| TableSectionElement createTHead() => $dom_createTHead(); |
| TableRowElement insertRow(int index) => $dom_insertRow(index); |
| |
| TableSectionElement $dom_createTBody() { |
| if (JS('bool', '!!#.createTBody', this)) { |
| return this._createTBody(); |
| } |
| var tbody = new Element.tag('tbody'); |
| this.children.add(tbody); |
| return tbody; |
| } |
| |
| @JSName('createTBody') |
| TableSectionElement _createTBody() native; |
| |
| // To suppress missing implicit constructor warnings. |
| factory TableElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTableElement.HTMLTableElement') |
| @DocsEditable() |
| factory TableElement() => document.$dom_createElement("table"); |
| |
| @DomName('HTMLTableElement.border') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial |
| @deprecated // deprecated |
| String border; |
| |
| @DomName('HTMLTableElement.caption') |
| @DocsEditable() |
| TableCaptionElement caption; |
| |
| @JSName('rows') |
| @DomName('HTMLTableElement.rows') |
| @DocsEditable() |
| final HtmlCollection $dom_rows; |
| |
| @JSName('tBodies') |
| @DomName('HTMLTableElement.tBodies') |
| @DocsEditable() |
| final HtmlCollection $dom_tBodies; |
| |
| @DomName('HTMLTableElement.tFoot') |
| @DocsEditable() |
| TableSectionElement tFoot; |
| |
| @DomName('HTMLTableElement.tHead') |
| @DocsEditable() |
| TableSectionElement tHead; |
| |
| @JSName('createCaption') |
| @DomName('HTMLTableElement.createCaption') |
| @DocsEditable() |
| Element $dom_createCaption() native; |
| |
| @JSName('createTFoot') |
| @DomName('HTMLTableElement.createTFoot') |
| @DocsEditable() |
| Element $dom_createTFoot() native; |
| |
| @JSName('createTHead') |
| @DomName('HTMLTableElement.createTHead') |
| @DocsEditable() |
| Element $dom_createTHead() native; |
| |
| @DomName('HTMLTableElement.deleteCaption') |
| @DocsEditable() |
| void deleteCaption() native; |
| |
| @DomName('HTMLTableElement.deleteRow') |
| @DocsEditable() |
| void deleteRow(int index) native; |
| |
| @DomName('HTMLTableElement.deleteTFoot') |
| @DocsEditable() |
| void deleteTFoot() native; |
| |
| @DomName('HTMLTableElement.deleteTHead') |
| @DocsEditable() |
| void deleteTHead() native; |
| |
| @JSName('insertRow') |
| @DomName('HTMLTableElement.insertRow') |
| @DocsEditable() |
| Element $dom_insertRow(int index) native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableRowElement') |
| class TableRowElement extends _HTMLElement native "HTMLTableRowElement" { |
| |
| @DomName('HTMLTableRowElement.cells') |
| List<TableCellElement> get cells => |
| new _WrappedList<TableCellElement>($dom_cells); |
| |
| TableCellElement addCell() { |
| return insertCell(-1); |
| } |
| |
| TableCellElement insertCell(int index) => $dom_insertCell(index); |
| |
| // To suppress missing implicit constructor warnings. |
| factory TableRowElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTableRowElement.HTMLTableRowElement') |
| @DocsEditable() |
| factory TableRowElement() => document.$dom_createElement("tr"); |
| |
| @JSName('cells') |
| @DomName('HTMLTableRowElement.cells') |
| @DocsEditable() |
| final HtmlCollection $dom_cells; |
| |
| @DomName('HTMLTableRowElement.rowIndex') |
| @DocsEditable() |
| final int rowIndex; |
| |
| @DomName('HTMLTableRowElement.sectionRowIndex') |
| @DocsEditable() |
| final int sectionRowIndex; |
| |
| @DomName('HTMLTableRowElement.deleteCell') |
| @DocsEditable() |
| void deleteCell(int index) native; |
| |
| @JSName('insertCell') |
| @DomName('HTMLTableRowElement.insertCell') |
| @DocsEditable() |
| Element $dom_insertCell(int index) native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTableSectionElement') |
| class TableSectionElement extends _HTMLElement native "HTMLTableSectionElement" { |
| |
| @DomName('HTMLTableSectionElement.rows') |
| List<TableRowElement> get rows => |
| new _WrappedList<TableRowElement>($dom_rows); |
| |
| TableRowElement addRow() { |
| return insertRow(-1); |
| } |
| |
| TableRowElement insertRow(int index) => $dom_insertRow(index); |
| |
| // To suppress missing implicit constructor warnings. |
| factory TableSectionElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('rows') |
| @DomName('HTMLTableSectionElement.rows') |
| @DocsEditable() |
| final HtmlCollection $dom_rows; |
| |
| @DomName('HTMLTableSectionElement.deleteRow') |
| @DocsEditable() |
| void deleteRow(int index) native; |
| |
| @JSName('insertRow') |
| @DomName('HTMLTableSectionElement.insertRow') |
| @DocsEditable() |
| Element $dom_insertRow(int index) native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| /** |
| * Model-Driven Views (MDV)'s native features enables a wide-range of use cases, |
| * but (by design) don't attempt to implement a wide array of specialized |
| * behaviors. |
| * |
| * Enabling these features in MDV is a matter of implementing and registering an |
| * MDV Custom Syntax. A Custom Syntax is an object which contains one or more |
| * delegation functions which implement specialized behavior. This object is |
| * registered with MDV via [Element.bindingDelegate]: |
| * |
| * |
| * HTML: |
| * <template bind> |
| * {{ What!Ever('crazy')->thing^^^I+Want(data) }} |
| * </template> |
| * |
| * Dart: |
| * class MySyntax extends BindingDelegate { |
| * getBinding(model, path, name, node) { |
| * // The magic happens here! |
| * } |
| * } |
| * ... |
| * query('template').bindingDelegate = new MySyntax(); |
| * query('template').model = new MyModel(); |
| * |
| * See <https://github.com/polymer-project/mdv/blob/master/docs/syntax.md> for |
| * more information about Custom Syntax. |
| */ |
| // TODO(jmesserly): move this type to the MDV package? Two issues: we'd lose |
| // type annotation on [Element.bindingDelegate], and "mdv" is normally imported |
| // with a prefix. |
| @Experimental() |
| abstract class BindingDelegate { |
| /** |
| * This syntax method allows for a custom interpretation of the contents of |
| * mustaches (`{{` ... `}}`). |
| * |
| * When a template is inserting an instance, it will invoke this method for |
| * each mustache which is encountered. The function is invoked with four |
| * arguments: |
| * |
| * - [model]: The data context for which this instance is being created. |
| * - [path]: The text contents (trimmed of outer whitespace) of the mustache. |
| * - [name]: The context in which the mustache occurs. Within element |
| * attributes, this will be the name of the attribute. Within text, |
| * this will be 'text'. |
| * - [node]: A reference to the node to which this binding will be created. |
| * |
| * If the method wishes to handle binding, it is required to return an object |
| * which has at least a `value` property that can be observed. If it does, |
| * then MDV will call [Node.bind on the node: |
| * |
| * node.bind(name, retval, 'value'); |
| * |
| * If the 'getBinding' does not wish to override the binding, it should return |
| * null. |
| */ |
| // TODO(jmesserly): I had to remove type annotations from "name" and "node" |
| // Normally they are String and Node respectively. But sometimes it will pass |
| // (int name, CompoundBinding node). That seems very confusing; we may want |
| // to change this API. |
| getBinding(model, String path, name, node) => null; |
| |
| /** |
| * This syntax method allows a syntax to provide an alterate model than the |
| * one the template would otherwise use when producing an instance. |
| * |
| * When a template is about to create an instance, it will invoke this method |
| * The function is invoked with two arguments: |
| * |
| * - [template]: The template element which is about to create and insert an |
| * instance. |
| * - [model]: The data context for which this instance is being created. |
| * |
| * The template element will always use the return value of `getInstanceModel` |
| * as the model for the new instance. If the syntax does not wish to override |
| * the value, it should simply return the `model` value it was passed. |
| */ |
| getInstanceModel(Element template, model) => model; |
| } |
| |
| @Experimental() |
| @DomName('HTMLTemplateElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#template-element |
| class TemplateElement extends _HTMLElement native "HTMLTemplateElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TemplateElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTemplateElement.HTMLTemplateElement') |
| @DocsEditable() |
| factory TemplateElement() => document.$dom_createElement("template"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('template'); |
| |
| @JSName('content') |
| @DomName('HTMLTemplateElement.content') |
| @DocsEditable() |
| final DocumentFragment $dom_content; |
| |
| |
| // For real TemplateElement use the actual DOM .content field instead of |
| // our polyfilled expando. |
| @Experimental() |
| DocumentFragment get content => $dom_content; |
| |
| |
| /** |
| * The MDV package, if available. |
| * |
| * This can be used to initialize MDV support via: |
| * |
| * import 'dart:html'; |
| * import 'package:mdv/mdv.dart' as mdv; |
| * main() { |
| * mdv.initialize(); |
| * } |
| */ |
| static Function mdvPackage = (node) { |
| throw new UnsupportedError("The MDV package is not available. " |
| "You can enable it with `import 'package:mdv/mdv.dart' as mdv;` and " |
| "`mdv.initialize()`"); |
| }; |
| |
| /** |
| * Ensures proper API and content model for template elements. |
| * |
| * [instanceRef] can be used to set the [Element.ref] property of [template], |
| * and use the ref's content will be used as source when createInstance() is |
| * invoked. |
| * |
| * Returns true if this template was just decorated, or false if it was |
| * already decorated. |
| */ |
| @Experimental() |
| static bool decorate(Element template, [Element instanceRef]) { |
| // == true check because it starts as a null field. |
| if (template._templateIsDecorated == true) return false; |
| |
| _injectStylesheet(); |
| |
| var templateElement = template; |
| templateElement._templateIsDecorated = true; |
| var isNative = templateElement is TemplateElement; |
| var bootstrapContents = isNative; |
| var liftContents = !isNative; |
| var liftRoot = false; |
| |
| if (!isNative && templateElement._isAttributeTemplate) { |
| if (instanceRef != null) { |
| // TODO(jmesserly): this is just an assert in MDV. |
| throw new ArgumentError('instanceRef should not be supplied for ' |
| 'attribute templates.'); |
| } |
| templateElement = _extractTemplateFromAttributeTemplate(template); |
| templateElement._templateIsDecorated = true; |
| isNative = templateElement is TemplateElement; |
| liftRoot = true; |
| } |
| |
| if (!isNative) { |
| var doc = _getTemplateContentsOwner(templateElement.document); |
| templateElement._templateContent = doc.createDocumentFragment(); |
| } |
| |
| if (instanceRef != null) { |
| // template is contained within an instance, its direct content must be |
| // empty |
| templateElement._templateInstanceRef = instanceRef; |
| } else if (liftContents) { |
| _liftNonNativeChildrenIntoContent(templateElement, template, liftRoot); |
| } else if (bootstrapContents) { |
| bootstrap(templateElement.content); |
| } |
| |
| return true; |
| } |
| |
| // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#dfn-template-contents-owner |
| static Document _getTemplateContentsOwner(HtmlDocument doc) { |
| if (doc.window == null) { |
| return doc; |
| } |
| var d = doc._templateContentsOwner; |
| if (d == null) { |
| // TODO(arv): This should either be a Document or HTMLDocument depending |
| // on doc. |
| d = doc.implementation.createHtmlDocument(''); |
| while (d.lastChild != null) { |
| d.lastChild.remove(); |
| } |
| doc._templateContentsOwner = d; |
| } |
| return d; |
| } |
| |
| // For non-template browsers, the parser will disallow <template> in certain |
| // locations, so we allow "attribute templates" which combine the template |
| // element with the top-level container node of the content, e.g. |
| // |
| // <tr template repeat="{{ foo }}"" class="bar"><td>Bar</td></tr> |
| // |
| // becomes |
| // |
| // <template repeat="{{ foo }}"> |
| // + #document-fragment |
| // + <tr class="bar"> |
| // + <td>Bar</td> |
| // |
| static Element _extractTemplateFromAttributeTemplate(Element el) { |
| var template = el.document.$dom_createElement('template'); |
| el.parentNode.insertBefore(template, el); |
| |
| for (var name in el.attributes.keys.toList()) { |
| switch (name) { |
| case 'template': |
| el.attributes.remove(name); |
| break; |
| case 'repeat': |
| case 'bind': |
| case 'ref': |
| template.attributes[name] = el.attributes.remove(name); |
| break; |
| } |
| } |
| |
| return template; |
| } |
| |
| static void _liftNonNativeChildrenIntoContent(Element template, Element el, |
| bool useRoot) { |
| |
| var content = template.content; |
| if (useRoot) { |
| content.append(el); |
| return; |
| } |
| |
| var child; |
| while ((child = el.firstChild) != null) { |
| content.append(child); |
| } |
| } |
| |
| /** |
| * This used to decorate recursively all templates from a given node. |
| * |
| * By default [decorate] will be called on templates lazily when certain |
| * properties such as [model] are accessed, but it can be run eagerly to |
| * decorate an entire tree recursively. |
| */ |
| // TODO(rafaelw): Review whether this is the right public API. |
| @Experimental() |
| static void bootstrap(Node content) { |
| void _bootstrap(template) { |
| if (!TemplateElement.decorate(template)) { |
| bootstrap(template.content); |
| } |
| } |
| |
| // Need to do this first as the contents may get lifted if |node| is |
| // template. |
| // TODO(jmesserly): content is DocumentFragment or Element |
| var descendents = (content as dynamic).queryAll(_allTemplatesSelectors); |
| if (content is Element && (content as Element).isTemplate) { |
| _bootstrap(content); |
| } |
| |
| descendents.forEach(_bootstrap); |
| } |
| |
| static final String _allTemplatesSelectors = |
| 'template, option[template], optgroup[template], ' + |
| Element._TABLE_TAGS.keys.map((k) => "$k[template]").join(", "); |
| |
| static bool _initStyles; |
| |
| static void _injectStylesheet() { |
| if (_initStyles == true) return; |
| _initStyles = true; |
| |
| var style = new StyleElement(); |
| style.text = r''' |
| template, |
| thead[template], |
| tbody[template], |
| tfoot[template], |
| th[template], |
| tr[template], |
| td[template], |
| caption[template], |
| colgroup[template], |
| col[template], |
| option[template] { |
| display: none; |
| }'''; |
| document.head.append(style); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('Text') |
| class Text extends CharacterData native "Text" { |
| factory Text(String data) => document.$dom_createTextNode(data); |
| // To suppress missing implicit constructor warnings. |
| factory Text._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Text.wholeText') |
| @DocsEditable() |
| final String wholeText; |
| |
| @DomName('Text.replaceWholeText') |
| @DocsEditable() |
| // http://dom.spec.whatwg.org/#dom-text-replacewholetext |
| @deprecated // deprecated |
| Text replaceWholeText(String content) native; |
| |
| @DomName('Text.splitText') |
| @DocsEditable() |
| Text splitText(int offset) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTextAreaElement') |
| class TextAreaElement extends _HTMLElement native "HTMLTextAreaElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TextAreaElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTextAreaElement.HTMLTextAreaElement') |
| @DocsEditable() |
| factory TextAreaElement() => document.$dom_createElement("textarea"); |
| |
| @DomName('HTMLTextAreaElement.autofocus') |
| @DocsEditable() |
| bool autofocus; |
| |
| @DomName('HTMLTextAreaElement.cols') |
| @DocsEditable() |
| int cols; |
| |
| @DomName('HTMLTextAreaElement.defaultValue') |
| @DocsEditable() |
| String defaultValue; |
| |
| @DomName('HTMLTextAreaElement.dirName') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname |
| @Experimental() |
| String dirName; |
| |
| @DomName('HTMLTextAreaElement.disabled') |
| @DocsEditable() |
| bool disabled; |
| |
| @DomName('HTMLTextAreaElement.form') |
| @DocsEditable() |
| final FormElement form; |
| |
| @DomName('HTMLTextAreaElement.inputMode') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String inputMode; |
| |
| @DomName('HTMLTextAreaElement.labels') |
| @DocsEditable() |
| @Unstable() |
| @Returns('NodeList') |
| @Creates('NodeList') |
| final List<Node> labels; |
| |
| @DomName('HTMLTextAreaElement.maxLength') |
| @DocsEditable() |
| int maxLength; |
| |
| @DomName('HTMLTextAreaElement.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('HTMLTextAreaElement.placeholder') |
| @DocsEditable() |
| String placeholder; |
| |
| @DomName('HTMLTextAreaElement.readOnly') |
| @DocsEditable() |
| bool readOnly; |
| |
| @DomName('HTMLTextAreaElement.required') |
| @DocsEditable() |
| bool required; |
| |
| @DomName('HTMLTextAreaElement.rows') |
| @DocsEditable() |
| int rows; |
| |
| @DomName('HTMLTextAreaElement.selectionDirection') |
| @DocsEditable() |
| String selectionDirection; |
| |
| @DomName('HTMLTextAreaElement.selectionEnd') |
| @DocsEditable() |
| int selectionEnd; |
| |
| @DomName('HTMLTextAreaElement.selectionStart') |
| @DocsEditable() |
| int selectionStart; |
| |
| @DomName('HTMLTextAreaElement.textLength') |
| @DocsEditable() |
| final int textLength; |
| |
| @DomName('HTMLTextAreaElement.type') |
| @DocsEditable() |
| final String type; |
| |
| @DomName('HTMLTextAreaElement.validationMessage') |
| @DocsEditable() |
| final String validationMessage; |
| |
| @DomName('HTMLTextAreaElement.validity') |
| @DocsEditable() |
| final ValidityState validity; |
| |
| @DomName('HTMLTextAreaElement.value') |
| @DocsEditable() |
| String value; |
| |
| @DomName('HTMLTextAreaElement.willValidate') |
| @DocsEditable() |
| final bool willValidate; |
| |
| @DomName('HTMLTextAreaElement.wrap') |
| @DocsEditable() |
| String wrap; |
| |
| @DomName('HTMLTextAreaElement.checkValidity') |
| @DocsEditable() |
| bool checkValidity() native; |
| |
| @DomName('HTMLTextAreaElement.select') |
| @DocsEditable() |
| void select() native; |
| |
| @DomName('HTMLTextAreaElement.setCustomValidity') |
| @DocsEditable() |
| void setCustomValidity(String error) native; |
| |
| @DomName('HTMLTextAreaElement.setRangeText') |
| @DocsEditable() |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext |
| @Experimental() |
| void setRangeText(String replacement, {int start, int end, String selectionMode}) native; |
| |
| @DomName('HTMLTextAreaElement.setSelectionRange') |
| @DocsEditable() |
| void setSelectionRange(int start, int end, [String direction]) native; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('TextEvent') |
| @Unstable() |
| class TextEvent extends UIEvent native "TextEvent" { |
| factory TextEvent(String type, |
| {bool canBubble: false, bool cancelable: false, Window view, String data}) { |
| if (view == null) { |
| view = window; |
| } |
| var e = document.$dom_createEvent("TextEvent"); |
| e.$dom_initTextEvent(type, canBubble, cancelable, view, data); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory TextEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TextEvent.data') |
| @DocsEditable() |
| final String data; |
| |
| @JSName('initTextEvent') |
| @DomName('TextEvent.initTextEvent') |
| @DocsEditable() |
| void $dom_initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TextMetrics') |
| class TextMetrics extends Interceptor native "TextMetrics" { |
| |
| @DomName('TextMetrics.width') |
| @DocsEditable() |
| final num width; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TextTrack') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrack |
| @Experimental() |
| class TextTrack extends EventTarget native "TextTrack" { |
| // To suppress missing implicit constructor warnings. |
| factory TextTrack._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TextTrack.cuechangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> cueChangeEvent = const EventStreamProvider<Event>('cuechange'); |
| |
| @DomName('TextTrack.activeCues') |
| @DocsEditable() |
| final TextTrackCueList activeCues; |
| |
| @DomName('TextTrack.cues') |
| @DocsEditable() |
| final TextTrackCueList cues; |
| |
| @DomName('TextTrack.kind') |
| @DocsEditable() |
| final String kind; |
| |
| @DomName('TextTrack.label') |
| @DocsEditable() |
| final String label; |
| |
| @DomName('TextTrack.language') |
| @DocsEditable() |
| final String language; |
| |
| @DomName('TextTrack.mode') |
| @DocsEditable() |
| String mode; |
| |
| @DomName('TextTrack.addCue') |
| @DocsEditable() |
| void addCue(TextTrackCue cue) native; |
| |
| @DomName('TextTrack.removeCue') |
| @DocsEditable() |
| void removeCue(TextTrackCue cue) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('TextTrack.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrack.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('TextTrack.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrack.oncuechange') |
| @DocsEditable() |
| Stream<Event> get onCueChange => cueChangeEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TextTrackCue') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcue |
| @Experimental() |
| class TextTrackCue extends EventTarget native "TextTrackCue" { |
| // To suppress missing implicit constructor warnings. |
| factory TextTrackCue._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TextTrackCue.enterEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> enterEvent = const EventStreamProvider<Event>('enter'); |
| |
| @DomName('TextTrackCue.exitEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> exitEvent = const EventStreamProvider<Event>('exit'); |
| |
| @DomName('TextTrackCue.TextTrackCue') |
| @DocsEditable() |
| factory TextTrackCue(num startTime, num endTime, String text) { |
| return TextTrackCue._create_1(startTime, endTime, text); |
| } |
| static TextTrackCue _create_1(startTime, endTime, text) => JS('TextTrackCue', 'new TextTrackCue(#,#,#)', startTime, endTime, text); |
| |
| @DomName('TextTrackCue.align') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String align; |
| |
| @DomName('TextTrackCue.endTime') |
| @DocsEditable() |
| num endTime; |
| |
| @DomName('TextTrackCue.id') |
| @DocsEditable() |
| String id; |
| |
| @DomName('TextTrackCue.line') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| int line; |
| |
| @DomName('TextTrackCue.pauseOnExit') |
| @DocsEditable() |
| bool pauseOnExit; |
| |
| @DomName('TextTrackCue.position') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| int position; |
| |
| @DomName('TextTrackCue.size') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| int size; |
| |
| @DomName('TextTrackCue.snapToLines') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| bool snapToLines; |
| |
| @DomName('TextTrackCue.startTime') |
| @DocsEditable() |
| num startTime; |
| |
| @DomName('TextTrackCue.text') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String text; |
| |
| @DomName('TextTrackCue.track') |
| @DocsEditable() |
| final TextTrack track; |
| |
| @DomName('TextTrackCue.vertical') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| String vertical; |
| |
| @JSName('getCueAsHTML') |
| @DomName('TextTrackCue.getCueAsHTML') |
| @DocsEditable() |
| @Experimental() // nonstandard |
| DocumentFragment getCueAsHtml() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('TextTrackCue.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrackCue.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('TextTrackCue.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrackCue.onenter') |
| @DocsEditable() |
| Stream<Event> get onEnter => enterEvent.forTarget(this); |
| |
| @DomName('TextTrackCue.onexit') |
| @DocsEditable() |
| Stream<Event> get onExit => exitEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TextTrackCueList') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcuelist |
| @Experimental() |
| class TextTrackCueList extends Interceptor with ListMixin<TextTrackCue>, ImmutableListMixin<TextTrackCue> implements List<TextTrackCue>, JavaScriptIndexingBehavior native "TextTrackCueList" { |
| |
| @DomName('TextTrackCueList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| TextTrackCue operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("TextTrackCue", "#[#]", this, index); |
| } |
| void operator[]=(int index, TextTrackCue value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<TextTrackCue> mixins. |
| // TextTrackCue is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| TextTrackCue get first { |
| if (this.length > 0) { |
| return JS('TextTrackCue', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| TextTrackCue get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('TextTrackCue', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| TextTrackCue get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('TextTrackCue', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| TextTrackCue elementAt(int index) => this[index]; |
| // -- end List<TextTrackCue> mixins. |
| |
| @DomName('TextTrackCueList.getCueById') |
| @DocsEditable() |
| TextTrackCue getCueById(String id) native; |
| |
| @DomName('TextTrackCueList.item') |
| @DocsEditable() |
| TextTrackCue item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TextTrackList') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttracklist |
| @Experimental() |
| class TextTrackList extends EventTarget with ListMixin<TextTrack>, ImmutableListMixin<TextTrack> implements JavaScriptIndexingBehavior, List<TextTrack> native "TextTrackList" { |
| // To suppress missing implicit constructor warnings. |
| factory TextTrackList._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TextTrackList.addtrackEvent') |
| @DocsEditable() |
| static const EventStreamProvider<TrackEvent> addTrackEvent = const EventStreamProvider<TrackEvent>('addtrack'); |
| |
| @DomName('TextTrackList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| TextTrack operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("TextTrack", "#[#]", this, index); |
| } |
| void operator[]=(int index, TextTrack value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<TextTrack> mixins. |
| // TextTrack is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| TextTrack get first { |
| if (this.length > 0) { |
| return JS('TextTrack', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| TextTrack get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('TextTrack', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| TextTrack get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('TextTrack', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| TextTrack elementAt(int index) => this[index]; |
| // -- end List<TextTrack> mixins. |
| |
| @DomName('TextTrackList.item') |
| @DocsEditable() |
| TextTrack item(int index) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('TextTrackList.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrackList.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('TextTrackList.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('TextTrackList.onaddtrack') |
| @DocsEditable() |
| Stream<TrackEvent> get onAddTrack => addTrackEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TimeRanges') |
| @Unstable() |
| class TimeRanges extends Interceptor native "TimeRanges" { |
| |
| @DomName('TimeRanges.length') |
| @DocsEditable() |
| final int length; |
| |
| @DomName('TimeRanges.end') |
| @DocsEditable() |
| num end(int index) native; |
| |
| @DomName('TimeRanges.start') |
| @DocsEditable() |
| num start(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('TimeoutHandler') |
| typedef void TimeoutHandler(); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTitleElement') |
| class TitleElement extends _HTMLElement native "HTMLTitleElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TitleElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTitleElement.HTMLTitleElement') |
| @DocsEditable() |
| factory TitleElement() => document.$dom_createElement("title"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Touch') |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| class Touch extends Interceptor native "Touch" { |
| |
| @JSName('clientX') |
| @DomName('Touch.clientX') |
| @DocsEditable() |
| final int $dom_clientX; |
| |
| @JSName('clientY') |
| @DomName('Touch.clientY') |
| @DocsEditable() |
| final int $dom_clientY; |
| |
| @DomName('Touch.identifier') |
| @DocsEditable() |
| final int identifier; |
| |
| @JSName('pageX') |
| @DomName('Touch.pageX') |
| @DocsEditable() |
| final int $dom_pageX; |
| |
| @JSName('pageY') |
| @DomName('Touch.pageY') |
| @DocsEditable() |
| final int $dom_pageY; |
| |
| @JSName('screenX') |
| @DomName('Touch.screenX') |
| @DocsEditable() |
| final int $dom_screenX; |
| |
| @JSName('screenY') |
| @DomName('Touch.screenY') |
| @DocsEditable() |
| final int $dom_screenY; |
| |
| EventTarget get target => _convertNativeToDart_EventTarget(this._get_target); |
| @JSName('target') |
| @DomName('Touch.target') |
| @DocsEditable() |
| @Creates('Element|Document') |
| @Returns('Element|Document') |
| final dynamic _get_target; |
| |
| @JSName('webkitForce') |
| @DomName('Touch.webkitForce') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final num force; |
| |
| @JSName('webkitRadiusX') |
| @DomName('Touch.webkitRadiusX') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int radiusX; |
| |
| @JSName('webkitRadiusY') |
| @DomName('Touch.webkitRadiusY') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int radiusY; |
| |
| @JSName('webkitRotationAngle') |
| @DomName('Touch.webkitRotationAngle') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final num rotationAngle; |
| |
| |
| @DomName('Touch.clientX') |
| @DomName('Touch.clientY') |
| Point get client => new Point($dom_clientX, $dom_clientY); |
| |
| @DomName('Touch.pageX') |
| @DomName('Touch.pageY') |
| Point get page => new Point($dom_pageX, $dom_pageY); |
| |
| @DomName('Touch.screenX') |
| @DomName('Touch.screenY') |
| Point get screen => new Point($dom_screenX, $dom_screenY); |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('TouchEvent') |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| class TouchEvent extends UIEvent native "TouchEvent" { |
| factory TouchEvent(TouchList touches, TouchList targetTouches, |
| TouchList changedTouches, String type, |
| {Window view, int screenX: 0, int screenY: 0, int clientX: 0, |
| int clientY: 0, bool ctrlKey: false, bool altKey: false, |
| bool shiftKey: false, bool metaKey: false}) { |
| if (view == null) { |
| view = window; |
| } |
| var e = document.$dom_createEvent("TouchEvent"); |
| e.$dom_initTouchEvent(touches, targetTouches, changedTouches, type, view, |
| screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory TouchEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TouchEvent.altKey') |
| @DocsEditable() |
| final bool altKey; |
| |
| @DomName('TouchEvent.changedTouches') |
| @DocsEditable() |
| final TouchList changedTouches; |
| |
| @DomName('TouchEvent.ctrlKey') |
| @DocsEditable() |
| final bool ctrlKey; |
| |
| @DomName('TouchEvent.metaKey') |
| @DocsEditable() |
| final bool metaKey; |
| |
| @DomName('TouchEvent.shiftKey') |
| @DocsEditable() |
| final bool shiftKey; |
| |
| @DomName('TouchEvent.targetTouches') |
| @DocsEditable() |
| final TouchList targetTouches; |
| |
| @DomName('TouchEvent.touches') |
| @DocsEditable() |
| final TouchList touches; |
| |
| @JSName('initTouchEvent') |
| @DomName('TouchEvent.initTouchEvent') |
| @DocsEditable() |
| void $dom_initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, Window view, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) native; |
| |
| |
| /** |
| * Checks if touch events supported on the current platform. |
| * |
| * Note that touch events are only supported if the user is using a touch |
| * device. |
| */ |
| static bool get supported { |
| if (JS('bool', '"ontouchstart" in window')) { |
| return Device.isEventTypeSupported('TouchEvent'); |
| } |
| return false; |
| } |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('TouchList') |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| class TouchList extends Interceptor with ListMixin<Touch>, ImmutableListMixin<Touch> implements JavaScriptIndexingBehavior, List<Touch> native "TouchList" { |
| /// NB: This constructor likely does not work as you might expect it to! This |
| /// constructor will simply fail (returning null) if you are not on a device |
| /// with touch enabled. See dartbug.com/8314. |
| factory TouchList() => document.$dom_createTouchList(); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!document.createTouchList'); |
| |
| @DomName('TouchList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Touch operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Touch", "#[#]", this, index); |
| } |
| void operator[]=(int index, Touch value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Touch> mixins. |
| // Touch is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Touch get first { |
| if (this.length > 0) { |
| return JS('Touch', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Touch get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Touch', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Touch get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Touch', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Touch elementAt(int index) => this[index]; |
| // -- end List<Touch> mixins. |
| |
| @DomName('TouchList.item') |
| @DocsEditable() |
| Touch item(int index) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLTrackElement') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-track-element |
| @Experimental() |
| class TrackElement extends _HTMLElement native "HTMLTrackElement" { |
| // To suppress missing implicit constructor warnings. |
| factory TrackElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLTrackElement.HTMLTrackElement') |
| @DocsEditable() |
| factory TrackElement() => document.$dom_createElement("track"); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => Element.isTagSupported('track'); |
| |
| @DomName('HTMLTrackElement.ERROR') |
| @DocsEditable() |
| static const int ERROR = 3; |
| |
| @DomName('HTMLTrackElement.LOADED') |
| @DocsEditable() |
| static const int LOADED = 2; |
| |
| @DomName('HTMLTrackElement.LOADING') |
| @DocsEditable() |
| static const int LOADING = 1; |
| |
| @DomName('HTMLTrackElement.NONE') |
| @DocsEditable() |
| static const int NONE = 0; |
| |
| @JSName('default') |
| @DomName('HTMLTrackElement.default') |
| @DocsEditable() |
| bool defaultValue; |
| |
| @DomName('HTMLTrackElement.kind') |
| @DocsEditable() |
| String kind; |
| |
| @DomName('HTMLTrackElement.label') |
| @DocsEditable() |
| String label; |
| |
| @DomName('HTMLTrackElement.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('HTMLTrackElement.src') |
| @DocsEditable() |
| String src; |
| |
| @DomName('HTMLTrackElement.srclang') |
| @DocsEditable() |
| String srclang; |
| |
| @DomName('HTMLTrackElement.track') |
| @DocsEditable() |
| final TextTrack track; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TrackEvent') |
| @Unstable() |
| class TrackEvent extends Event native "TrackEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory TrackEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TrackEvent.track') |
| @DocsEditable() |
| @Creates('Null') |
| final Object track; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('TransitionEvent') |
| class TransitionEvent extends Event native "TransitionEvent,WebKitTransitionEvent" { |
| // To suppress missing implicit constructor warnings. |
| factory TransitionEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('TransitionEvent.elapsedTime') |
| @DocsEditable() |
| final num elapsedTime; |
| |
| @DomName('TransitionEvent.propertyName') |
| @DocsEditable() |
| final String propertyName; |
| |
| @DomName('TransitionEvent.pseudoElement') |
| @DocsEditable() |
| final String pseudoElement; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('TreeWalker') |
| @Unstable() |
| class TreeWalker extends Interceptor native "TreeWalker" { |
| factory TreeWalker(Node root, int whatToShow) { |
| return document.$dom_createTreeWalker(root, whatToShow, null, false); |
| } |
| |
| @DomName('TreeWalker.currentNode') |
| @DocsEditable() |
| Node currentNode; |
| |
| @DomName('TreeWalker.expandEntityReferences') |
| @DocsEditable() |
| // http://dom.spec.whatwg.org/#dom-traversal |
| @deprecated // deprecated |
| final bool expandEntityReferences; |
| |
| @DomName('TreeWalker.filter') |
| @DocsEditable() |
| final NodeFilter filter; |
| |
| @DomName('TreeWalker.root') |
| @DocsEditable() |
| final Node root; |
| |
| @DomName('TreeWalker.whatToShow') |
| @DocsEditable() |
| final int whatToShow; |
| |
| @DomName('TreeWalker.firstChild') |
| @DocsEditable() |
| Node firstChild() native; |
| |
| @DomName('TreeWalker.lastChild') |
| @DocsEditable() |
| Node lastChild() native; |
| |
| @DomName('TreeWalker.nextNode') |
| @DocsEditable() |
| Node nextNode() native; |
| |
| @DomName('TreeWalker.nextSibling') |
| @DocsEditable() |
| Node nextSibling() native; |
| |
| @DomName('TreeWalker.parentNode') |
| @DocsEditable() |
| Node parentNode() native; |
| |
| @DomName('TreeWalker.previousNode') |
| @DocsEditable() |
| Node previousNode() native; |
| |
| @DomName('TreeWalker.previousSibling') |
| @DocsEditable() |
| Node previousSibling() native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('UIEvent') |
| class UIEvent extends Event native "UIEvent" { |
| // In JS, canBubble and cancelable are technically required parameters to |
| // init*Event. In practice, though, if they aren't provided they simply |
| // default to false (since that's Boolean(undefined)). |
| // |
| // Contrary to JS, we default canBubble and cancelable to true, since that's |
| // what people want most of the time anyway. |
| factory UIEvent(String type, |
| {Window view, int detail: 0, bool canBubble: true, |
| bool cancelable: true}) { |
| if (view == null) { |
| view = window; |
| } |
| final e = document.$dom_createEvent("UIEvent"); |
| e.$dom_initUIEvent(type, canBubble, cancelable, view, detail); |
| return e; |
| } |
| // To suppress missing implicit constructor warnings. |
| factory UIEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('charCode') |
| @DomName('UIEvent.charCode') |
| @DocsEditable() |
| @Unstable() |
| final int $dom_charCode; |
| |
| @DomName('UIEvent.detail') |
| @DocsEditable() |
| final int detail; |
| |
| @JSName('keyCode') |
| @DomName('UIEvent.keyCode') |
| @DocsEditable() |
| @Unstable() |
| final int $dom_keyCode; |
| |
| @JSName('layerX') |
| @DomName('UIEvent.layerX') |
| @DocsEditable() |
| // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents |
| @Experimental() // nonstandard |
| final int $dom_layerX; |
| |
| @JSName('layerY') |
| @DomName('UIEvent.layerY') |
| @DocsEditable() |
| // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents |
| @Experimental() // nonstandard |
| final int $dom_layerY; |
| |
| @JSName('pageX') |
| @DomName('UIEvent.pageX') |
| @DocsEditable() |
| // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents |
| @Experimental() // nonstandard |
| final int $dom_pageX; |
| |
| @JSName('pageY') |
| @DomName('UIEvent.pageY') |
| @DocsEditable() |
| // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents |
| @Experimental() // nonstandard |
| final int $dom_pageY; |
| |
| WindowBase get view => _convertNativeToDart_Window(this._get_view); |
| @JSName('view') |
| @DomName('UIEvent.view') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_view; |
| |
| @DomName('UIEvent.which') |
| @DocsEditable() |
| @Unstable() |
| final int which; |
| |
| @JSName('initUIEvent') |
| @DomName('UIEvent.initUIEvent') |
| @DocsEditable() |
| void $dom_initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) native; |
| |
| |
| @deprecated |
| int get layerX => layer.x; |
| @deprecated |
| int get layerY => layer.y; |
| |
| @deprecated |
| int get pageX => page.x; |
| @deprecated |
| int get pageY => page.y; |
| |
| @DomName('UIEvent.layerX') |
| @DomName('UIEvent.layerY') |
| Point get layer => new Point($dom_layerX, $dom_layerY); |
| |
| @DomName('UIEvent.pageX') |
| @DomName('UIEvent.pageY') |
| Point get page => new Point($dom_pageX, $dom_pageY); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLUListElement') |
| class UListElement extends _HTMLElement native "HTMLUListElement" { |
| // To suppress missing implicit constructor warnings. |
| factory UListElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLUListElement.HTMLUListElement') |
| @DocsEditable() |
| factory UListElement() => document.$dom_createElement("ul"); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLUnknownElement') |
| class UnknownElement extends _HTMLElement native "HTMLUnknownElement" { |
| // To suppress missing implicit constructor warnings. |
| factory UnknownElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('URL') |
| class Url extends Interceptor native "URL" { |
| |
| static String createObjectUrl(blob_OR_source_OR_stream) => |
| JS('String', |
| '(self.URL || self.webkitURL).createObjectURL(#)', |
| blob_OR_source_OR_stream); |
| |
| static String createObjectUrlFromSource(MediaSource source) => |
| JS('String', '(self.URL || self.webkitURL).createObjectURL(#)', source); |
| |
| static String createObjectUrlFromStream(MediaStream stream) => |
| JS('String', '(self.URL || self.webkitURL).createObjectURL(#)', stream); |
| |
| static String createObjectUrlFromBlob(Blob blob) => |
| JS('String', '(self.URL || self.webkitURL).createObjectURL(#)', blob); |
| |
| static void revokeObjectUrl(String url) => |
| JS('void', |
| '(self.URL || self.webkitURL).revokeObjectURL(#)', url); |
| |
| @JSName('createObjectURL') |
| @DomName('URL.createObjectURL') |
| @DocsEditable() |
| static String _createObjectUrlFromWebKitSource(_WebKitMediaSource source) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ValidityState') |
| class ValidityState extends Interceptor native "ValidityState" { |
| |
| @DomName('ValidityState.badInput') |
| @DocsEditable() |
| final bool badInput; |
| |
| @DomName('ValidityState.customError') |
| @DocsEditable() |
| final bool customError; |
| |
| @DomName('ValidityState.patternMismatch') |
| @DocsEditable() |
| final bool patternMismatch; |
| |
| @DomName('ValidityState.rangeOverflow') |
| @DocsEditable() |
| final bool rangeOverflow; |
| |
| @DomName('ValidityState.rangeUnderflow') |
| @DocsEditable() |
| final bool rangeUnderflow; |
| |
| @DomName('ValidityState.stepMismatch') |
| @DocsEditable() |
| final bool stepMismatch; |
| |
| @DomName('ValidityState.tooLong') |
| @DocsEditable() |
| final bool tooLong; |
| |
| @DomName('ValidityState.typeMismatch') |
| @DocsEditable() |
| final bool typeMismatch; |
| |
| @DomName('ValidityState.valid') |
| @DocsEditable() |
| final bool valid; |
| |
| @DomName('ValidityState.valueMissing') |
| @DocsEditable() |
| final bool valueMissing; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('HTMLVideoElement') |
| class VideoElement extends MediaElement implements CanvasImageSource native "HTMLVideoElement" { |
| // To suppress missing implicit constructor warnings. |
| factory VideoElement._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('HTMLVideoElement.HTMLVideoElement') |
| @DocsEditable() |
| factory VideoElement() => document.$dom_createElement("video"); |
| |
| @DomName('HTMLVideoElement.height') |
| @DocsEditable() |
| int height; |
| |
| @DomName('HTMLVideoElement.poster') |
| @DocsEditable() |
| String poster; |
| |
| @DomName('HTMLVideoElement.videoHeight') |
| @DocsEditable() |
| final int videoHeight; |
| |
| @DomName('HTMLVideoElement.videoWidth') |
| @DocsEditable() |
| final int videoWidth; |
| |
| @JSName('webkitDecodedFrameCount') |
| @DomName('HTMLVideoElement.webkitDecodedFrameCount') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int decodedFrameCount; |
| |
| @JSName('webkitDisplayingFullscreen') |
| @DomName('HTMLVideoElement.webkitDisplayingFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @deprecated // deprecated |
| final bool displayingFullscreen; |
| |
| @JSName('webkitDroppedFrameCount') |
| @DomName('HTMLVideoElement.webkitDroppedFrameCount') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final int droppedFrameCount; |
| |
| @JSName('webkitSupportsFullscreen') |
| @DomName('HTMLVideoElement.webkitSupportsFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @deprecated // deprecated |
| final bool supportsFullscreen; |
| |
| @DomName('HTMLVideoElement.width') |
| @DocsEditable() |
| int width; |
| |
| @JSName('webkitEnterFullScreen') |
| @DomName('HTMLVideoElement.webkitEnterFullScreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| @deprecated // deprecated |
| void enterFullScreen() native; |
| |
| @JSName('webkitEnterFullscreen') |
| @DomName('HTMLVideoElement.webkitEnterFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html |
| void enterFullscreen() native; |
| |
| @JSName('webkitExitFullScreen') |
| @DomName('HTMLVideoElement.webkitExitFullScreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen |
| @deprecated // deprecated |
| void exitFullScreen() native; |
| |
| @JSName('webkitExitFullscreen') |
| @DomName('HTMLVideoElement.webkitExitFullscreen') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen |
| void exitFullscreen() native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // WARNING: Do not edit - generated code. |
| |
| |
| @DomName('VoidCallback') |
| // http://www.w3.org/TR/file-system-api/#the-voidcallback-interface |
| @Experimental() |
| typedef void VoidCallback(); |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| /** |
| * Use the WebSocket interface to connect to a WebSocket, |
| * and to send and receive data on that WebSocket. |
| * |
| * To use a WebSocket in your web app, first create a WebSocket object, |
| * passing the WebSocket URL as an argument to the constructor. |
| * |
| * var webSocket = new WebSocket('ws://127.0.0.1:1337/ws'); |
| * |
| * To send data on the WebSocket, use the [send] method. |
| * |
| * if (webSocket != null && webSocket.readyState == WebSocket.OPEN) { |
| * webSocket.send(data); |
| * } else { |
| * print('WebSocket not connected, message $data not sent'); |
| * } |
| * |
| * To receive data on the WebSocket, register a listener for message events. |
| * |
| * webSocket.onMessage.listen((MessageEvent e) { |
| * receivedData(e.data); |
| * }); |
| * |
| * The message event handler receives a [MessageEvent] object |
| * as its sole argument. |
| * You can also define open, close, and error handlers, |
| * as specified by [WebSocketEvents]. |
| * |
| * For more information, see the |
| * [WebSockets](http://www.dartlang.org/docs/library-tour/#html-websockets) |
| * section of the library tour and |
| * [Introducing WebSockets](http://www.html5rocks.com/en/tutorials/websockets/basics/), |
| * an HTML5Rocks.com tutorial. |
| */ |
| @DomName('WebSocket') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Unstable() |
| class WebSocket extends EventTarget native "WebSocket" { |
| // To suppress missing implicit constructor warnings. |
| factory WebSocket._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebSocket.closeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<CloseEvent> closeEvent = const EventStreamProvider<CloseEvent>('close'); |
| |
| @DomName('WebSocket.errorEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('WebSocket.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('WebSocket.openEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> openEvent = const EventStreamProvider<Event>('open'); |
| |
| @DomName('WebSocket.WebSocket') |
| @DocsEditable() |
| factory WebSocket(String url, [protocol_OR_protocols]) { |
| if ((url is String || url == null) && protocol_OR_protocols == null) { |
| return WebSocket._create_1(url); |
| } |
| if ((protocol_OR_protocols is List<String> || protocol_OR_protocols == null) && (url is String || url == null)) { |
| return WebSocket._create_2(url, protocol_OR_protocols); |
| } |
| if ((protocol_OR_protocols is String || protocol_OR_protocols == null) && (url is String || url == null)) { |
| return WebSocket._create_3(url, protocol_OR_protocols); |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| static WebSocket _create_1(url) => JS('WebSocket', 'new WebSocket(#)', url); |
| static WebSocket _create_2(url, protocol_OR_protocols) => JS('WebSocket', 'new WebSocket(#,#)', url, protocol_OR_protocols); |
| static WebSocket _create_3(url, protocol_OR_protocols) => JS('WebSocket', 'new WebSocket(#,#)', url, protocol_OR_protocols); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', 'typeof window.WebSocket != "undefined"'); |
| |
| @DomName('WebSocket.CLOSED') |
| @DocsEditable() |
| static const int CLOSED = 3; |
| |
| @DomName('WebSocket.CLOSING') |
| @DocsEditable() |
| static const int CLOSING = 2; |
| |
| @DomName('WebSocket.CONNECTING') |
| @DocsEditable() |
| static const int CONNECTING = 0; |
| |
| @DomName('WebSocket.OPEN') |
| @DocsEditable() |
| static const int OPEN = 1; |
| |
| @JSName('URL') |
| @DomName('WebSocket.URL') |
| @DocsEditable() |
| @deprecated // deprecated |
| final String Url; |
| |
| @DomName('WebSocket.binaryType') |
| @DocsEditable() |
| String binaryType; |
| |
| @DomName('WebSocket.bufferedAmount') |
| @DocsEditable() |
| final int bufferedAmount; |
| |
| @DomName('WebSocket.extensions') |
| @DocsEditable() |
| final String extensions; |
| |
| @DomName('WebSocket.protocol') |
| @DocsEditable() |
| final String protocol; |
| |
| @DomName('WebSocket.readyState') |
| @DocsEditable() |
| final int readyState; |
| |
| @DomName('WebSocket.url') |
| @DocsEditable() |
| final String url; |
| |
| @DomName('WebSocket.close') |
| @DocsEditable() |
| void close([int code, String reason]) native; |
| |
| /** |
| * Transmit data to the server over this connection. |
| * |
| * This method accepts data of type [Blob], [ByteBuffer], [String], or |
| * [TypedData]. Named variants [sendBlob], [sendByteBuffer], [sendString], |
| * or [sendTypedData], in constrast, only accept data of the specified type. |
| */ |
| @DomName('WebSocket.send') |
| @DocsEditable() |
| void send(data) native; |
| |
| @JSName('send') |
| /** |
| * Transmit data to the server over this connection. |
| * |
| * This method accepts data of type [Blob], [ByteBuffer], [String], or |
| * [TypedData]. Named variants [sendBlob], [sendByteBuffer], [sendString], |
| * or [sendTypedData], in constrast, only accept data of the specified type. |
| */ |
| @DomName('WebSocket.send') |
| @DocsEditable() |
| void sendBlob(Blob data) native; |
| |
| @JSName('send') |
| /** |
| * Transmit data to the server over this connection. |
| * |
| * This method accepts data of type [Blob], [ByteBuffer], [String], or |
| * [TypedData]. Named variants [sendBlob], [sendByteBuffer], [sendString], |
| * or [sendTypedData], in constrast, only accept data of the specified type. |
| */ |
| @DomName('WebSocket.send') |
| @DocsEditable() |
| void sendByteBuffer(ByteBuffer data) native; |
| |
| @JSName('send') |
| /** |
| * Transmit data to the server over this connection. |
| * |
| * This method accepts data of type [Blob], [ByteBuffer], [String], or |
| * [TypedData]. Named variants [sendBlob], [sendByteBuffer], [sendString], |
| * or [sendTypedData], in constrast, only accept data of the specified type. |
| */ |
| @DomName('WebSocket.send') |
| @DocsEditable() |
| void sendString(String data) native; |
| |
| @JSName('send') |
| /** |
| * Transmit data to the server over this connection. |
| * |
| * This method accepts data of type [Blob], [ByteBuffer], [String], or |
| * [TypedData]. Named variants [sendBlob], [sendByteBuffer], [sendString], |
| * or [sendTypedData], in constrast, only accept data of the specified type. |
| */ |
| @DomName('WebSocket.send') |
| @DocsEditable() |
| void sendTypedData(TypedData data) native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('WebSocket.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('WebSocket.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('WebSocket.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('WebSocket.onclose') |
| @DocsEditable() |
| Stream<CloseEvent> get onClose => closeEvent.forTarget(this); |
| |
| @DomName('WebSocket.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('WebSocket.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| |
| @DomName('WebSocket.onopen') |
| @DocsEditable() |
| Stream<Event> get onOpen => openEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('WheelEvent') |
| class WheelEvent extends MouseEvent native "WheelEvent,MouseWheelEvent,MouseScrollEvent" { |
| |
| factory WheelEvent(String type, |
| {Window view, int deltaX: 0, int deltaY: 0, |
| int detail: 0, int screenX: 0, int screenY: 0, int clientX: 0, |
| int clientY: 0, int button: 0, bool canBubble: true, |
| bool cancelable: true, bool ctrlKey: false, bool altKey: false, |
| bool shiftKey: false, bool metaKey: false, EventTarget relatedTarget}) { |
| |
| if (view == null) { |
| view = window; |
| } |
| var eventType = 'WheelEvent'; |
| if (Device.isFirefox) { |
| eventType = 'MouseScrollEvents'; |
| } |
| final event = document.$dom_createEvent(eventType); |
| // If polyfilling, then flip these because we'll flip them back to match |
| // the W3C standard: |
| // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-WheelEvent-deltaY |
| if (JS('bool', '#.deltaY === undefined', event)) { |
| deltaX = -deltaX; |
| deltaY = -deltaY; |
| } |
| if (event._hasInitWheelEvent) { |
| var modifiers = []; |
| if (ctrlKey) { |
| modifiers.push('Control'); |
| } |
| if (altKey) { |
| modifiers.push('Alt'); |
| } |
| if (shiftKey) { |
| modifiers.push('Shift'); |
| } |
| if (metaKey) { |
| modifiers.push('Meta'); |
| } |
| event._initWheelEvent(type, canBubble, cancelable, view, detail, screenX, |
| screenY, clientX, clientY, button, relatedTarget, modifiers.join(' '), |
| deltaX, deltaY, 0, 0); |
| } else if (event._hasInitMouseScrollEvent) { |
| var axis = 0; |
| var detail = 0; |
| if (deltaX != 0 && deltaY != 0) { |
| throw new UnsupportedError( |
| 'Cannot modify deltaX and deltaY simultaneously'); |
| } |
| if (deltaY != 0) { |
| detail = deltaY; |
| axis = JS('int', 'MouseScrollEvent.VERTICAL_AXIS'); |
| } else if (deltaX != 0) { |
| detail = deltaX; |
| axis = JS('int', 'MouseScrollEvent.HORIZONTAL_AXIS'); |
| } |
| event._initMouseScrollEvent(type, canBubble, cancelable, view, detail, |
| screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, |
| metaKey, button, relatedTarget, axis); |
| } else { |
| // Fallthrough for Dartium. |
| event.$dom_initMouseEvent(type, canBubble, cancelable, view, detail, |
| screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, |
| metaKey, button, relatedTarget); |
| event.$dom_initWebKitWheelEvent(deltaX, |
| deltaY ~/ 120, // Chrome does an auto-convert to pixels. |
| view, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, |
| metaKey); |
| } |
| |
| return event; |
| } |
| |
| // To suppress missing implicit constructor warnings. |
| factory WheelEvent._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WheelEvent.DOM_DELTA_LINE') |
| @DocsEditable() |
| static const int DOM_DELTA_LINE = 0x01; |
| |
| @DomName('WheelEvent.DOM_DELTA_PAGE') |
| @DocsEditable() |
| static const int DOM_DELTA_PAGE = 0x02; |
| |
| @DomName('WheelEvent.DOM_DELTA_PIXEL') |
| @DocsEditable() |
| static const int DOM_DELTA_PIXEL = 0x00; |
| |
| @JSName('webkitDirectionInvertedFromDevice') |
| @DomName('WheelEvent.webkitDirectionInvertedFromDevice') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| final bool directionInvertedFromDevice; |
| |
| @JSName('initWebKitWheelEvent') |
| @DomName('WheelEvent.initWebKitWheelEvent') |
| @DocsEditable() |
| @Experimental() |
| void $dom_initWebKitWheelEvent(int wheelDeltaX, int wheelDeltaY, Window view, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) native; |
| |
| |
| /** |
| * The amount that is expected to scroll vertically, in units determined by |
| * [deltaMode]. |
| * |
| * See also: |
| * |
| * * [WheelEvent.deltaY](http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-WheelEvent-deltaY) from the W3C. |
| */ |
| @DomName('WheelEvent.deltaY') |
| num get deltaY { |
| if (JS('bool', '#.deltaY !== undefined', this)) { |
| // W3C WheelEvent |
| return this._deltaY; |
| } else if (JS('bool', '#.wheelDelta !== undefined', this)) { |
| // Chrome and IE |
| return -this._wheelDelta; |
| } else if (JS('bool', '#.detail !== undefined', this)) { |
| // Firefox |
| |
| // Handle DOMMouseScroll case where it uses detail and the axis to |
| // differentiate. |
| if (JS('bool', '#.axis == MouseScrollEvent.VERTICAL_AXIS', this)) { |
| var detail = this._detail; |
| // Firefox is normally the number of lines to scale (normally 3) |
| // so multiply it by 40 to get pixels to move, matching IE & WebKit. |
| if (detail.abs() < 100) { |
| return -detail * 40; |
| } |
| return -detail; |
| } |
| return 0; |
| } |
| throw new UnsupportedError( |
| 'deltaY is not supported'); |
| } |
| |
| /** |
| * The amount that is expected to scroll horizontally, in units determined by |
| * [deltaMode]. |
| * |
| * See also: |
| * |
| * * [WheelEvent.deltaX](http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-WheelEvent-deltaX) from the W3C. |
| */ |
| @DomName('WheelEvent.deltaX') |
| num get deltaX { |
| if (JS('bool', '#.deltaX !== undefined', this)) { |
| // W3C WheelEvent |
| return this._deltaX; |
| } else if (JS('bool', '#.wheelDeltaX !== undefined', this)) { |
| // Chrome |
| return -this._wheelDeltaX; |
| } else if (JS('bool', '#.detail !== undefined', this)) { |
| // Firefox and IE. |
| // IE will have detail set but will not set axis. |
| |
| // Handle DOMMouseScroll case where it uses detail and the axis to |
| // differentiate. |
| if (JS('bool', '#.axis !== undefined && ' |
| '#.axis == MouseScrollEvent.HORIZONTAL_AXIS', this, this)) { |
| var detail = this._detail; |
| // Firefox is normally the number of lines to scale (normally 3) |
| // so multiply it by 40 to get pixels to move, matching IE & WebKit. |
| if (detail < 100) { |
| return -detail * 40; |
| } |
| return -detail; |
| } |
| return 0; |
| } |
| throw new UnsupportedError( |
| 'deltaX is not supported'); |
| } |
| |
| @DomName('WheelEvent.deltaMode') |
| int get deltaMode { |
| if (JS('bool', '!!(#.deltaMode)', this)) { |
| return JS('int', '#.deltaMode', this); |
| } |
| // If not available then we're poly-filling and doing pixel scroll. |
| return 0; |
| } |
| |
| num get _deltaY => JS('num', '#.deltaY', this); |
| num get _deltaX => JS('num', '#.deltaX', this); |
| num get _wheelDelta => JS('num', '#.wheelDelta', this); |
| num get _wheelDeltaX => JS('num', '#.wheelDeltaX', this); |
| num get _detail => JS('num', '#.detail', this); |
| |
| bool get _hasInitMouseScrollEvent => |
| JS('bool', '!!(#.initMouseScrollEvent)', this); |
| |
| @JSName('initMouseScrollEvent') |
| void _initMouseScrollEvent( |
| String type, |
| bool canBubble, |
| bool cancelable, |
| Window view, |
| int detail, |
| int screenX, |
| int screenY, |
| int clientX, |
| int clientY, |
| bool ctrlKey, |
| bool altKey, |
| bool shiftKey, |
| bool metaKey, |
| int button, |
| EventTarget relatedTarget, |
| int axis) native; |
| |
| bool get _hasInitWheelEvent => |
| JS('bool', '!!(#.initWheelEvent)', this); |
| @JSName('initWheelEvent') |
| void _initWheelEvent( |
| String eventType, |
| bool canBubble, |
| bool cancelable, |
| Window view, |
| int detail, |
| int screenX, |
| int screenY, |
| int clientX, |
| int clientY, |
| int button, |
| EventTarget relatedTarget, |
| String modifiersList, |
| int deltaX, |
| int deltaY, |
| int deltaZ, |
| int deltaMode) native; |
| |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DomName('Window') |
| class Window extends EventTarget implements WindowBase, WindowTimers, WindowBase64 native "Window,DOMWindow" { |
| |
| /** |
| * Executes a [callback] after the immediate execution stack has completed. |
| * |
| * This differs from using Timer.run(callback) |
| * because Timer will run in about 4-15 milliseconds, depending on browser, |
| * depending on load. [setImmediate], in contrast, makes browser-specific |
| * changes in behavior to attempt to run immediately after the current |
| * frame unwinds, causing the future to complete after all processing has |
| * completed for the current event, but before any subsequent events. |
| */ |
| void setImmediate(TimeoutHandler callback) { |
| _addMicrotaskCallback(callback); |
| } |
| /** |
| * Lookup a port by its [name]. Return null if no port is |
| * registered under [name]. |
| */ |
| SendPortSync lookupPort(String name) { |
| var portStr = document.documentElement.attributes['dart-port:$name']; |
| if (portStr == null) { |
| return null; |
| } |
| var port = json.parse(portStr); |
| return _deserialize(port); |
| } |
| |
| /** |
| * Register a [port] on this window under the given [name]. This |
| * port may be retrieved by any isolate (or JavaScript script) |
| * running in this window. |
| */ |
| void registerPort(String name, var port) { |
| var serialized = _serialize(port); |
| document.documentElement.attributes['dart-port:$name'] = |
| json.stringify(serialized); |
| } |
| |
| /** |
| * Returns a Future that completes just before the window is about to |
| * repaint so the user can draw an animation frame. |
| * |
| * If you need to later cancel this animation, use [requestAnimationFrame] |
| * instead. |
| * |
| * The [Future] completes to a timestamp that represents a floating |
| * point value of the number of milliseconds that have elapsed since the page |
| * started to load (which is also the timestamp at this call to |
| * animationFrame). |
| * |
| * Note: The code that runs when the future completes should call |
| * [animationFrame] again for the animation to continue. |
| */ |
| Future<num> get animationFrame { |
| var completer = new Completer<num>(); |
| requestAnimationFrame((time) { |
| completer.complete(time); |
| }); |
| return completer.future; |
| } |
| |
| Document get document => JS('Document', '#.document', this); |
| |
| WindowBase _open2(url, name) => JS('Window', '#.open(#,#)', this, url, name); |
| |
| WindowBase _open3(url, name, options) => |
| JS('Window', '#.open(#,#,#)', this, url, name, options); |
| |
| WindowBase open(String url, String name, [String options]) { |
| if (options == null) { |
| return _DOMWindowCrossFrame._createSafe(_open2(url, name)); |
| } else { |
| return _DOMWindowCrossFrame._createSafe(_open3(url, name, options)); |
| } |
| } |
| |
| // API level getter and setter for Location. |
| // TODO: The cross domain safe wrapper can be inserted here or folded into |
| // _LocationWrapper. |
| Location get location { |
| // Firefox work-around for Location. The Firefox location object cannot be |
| // made to behave like a Dart object so must be wrapped. |
| var result = _location; |
| if (_isDartLocation(result)) return result; // e.g. on Chrome. |
| if (null == _location_wrapper) { |
| _location_wrapper = new _LocationWrapper(result); |
| } |
| return _location_wrapper; |
| } |
| |
| // TODO: consider forcing users to do: window.location.assign('string'). |
| /** |
| * Sets the window's location, which causes the browser to navigate to the new |
| * location. [value] may be a Location object or a string. |
| */ |
| void set location(value) { |
| if (value is _LocationWrapper) { |
| _location = value._ptr; |
| } else { |
| _location = value; |
| } |
| } |
| |
| _LocationWrapper _location_wrapper; // Cached wrapped Location object. |
| |
| // Native getter and setter to access raw Location object. |
| dynamic get _location => JS('Location|=Object', '#.location', this); |
| void set _location(value) { |
| JS('void', '#.location = #', this, value); |
| } |
| // Prevent compiled from thinking 'location' property is available for a Dart |
| // member. |
| @JSName('location') |
| _protect_location() native; |
| |
| static _isDartLocation(thing) { |
| // On Firefox the code that implements 'is Location' fails to find the patch |
| // stub on Object.prototype and throws an exception. |
| try { |
| return thing is Location; |
| } catch (e) { |
| return false; |
| } |
| } |
| |
| /** |
| * Called to draw an animation frame and then request the window to repaint |
| * after [callback] has finished (creating the animation). |
| * |
| * Use this method only if you need to later call [cancelAnimationFrame]. If |
| * not, the preferred Dart idiom is to set animation frames by calling |
| * [animationFrame], which returns a Future. |
| * |
| * Returns a non-zero valued integer to represent the request id for this |
| * request. This value only needs to be saved if you intend to call |
| * [cancelAnimationFrame] so you can specify the particular animation to |
| * cancel. |
| * |
| * Note: The supplied [callback] needs to call [requestAnimationFrame] again |
| * for the animation to continue. |
| */ |
| @DomName('Window.requestAnimationFrame') |
| int requestAnimationFrame(RequestAnimationFrameCallback callback) { |
| _ensureRequestAnimationFrame(); |
| return _requestAnimationFrame(callback); |
| } |
| |
| void cancelAnimationFrame(int id) { |
| _ensureRequestAnimationFrame(); |
| _cancelAnimationFrame(id); |
| } |
| |
| @JSName('requestAnimationFrame') |
| int _requestAnimationFrame(RequestAnimationFrameCallback callback) native; |
| |
| @JSName('cancelAnimationFrame') |
| void _cancelAnimationFrame(int id) native; |
| |
| _ensureRequestAnimationFrame() { |
| if (JS('bool', |
| '!!(#.requestAnimationFrame && #.cancelAnimationFrame)', this, this)) |
| return; |
| |
| JS('void', |
| r""" |
| (function($this) { |
| var vendors = ['ms', 'moz', 'webkit', 'o']; |
| for (var i = 0; i < vendors.length && !$this.requestAnimationFrame; ++i) { |
| $this.requestAnimationFrame = $this[vendors[i] + 'RequestAnimationFrame']; |
| $this.cancelAnimationFrame = |
| $this[vendors[i]+'CancelAnimationFrame'] || |
| $this[vendors[i]+'CancelRequestAnimationFrame']; |
| } |
| if ($this.requestAnimationFrame && $this.cancelAnimationFrame) return; |
| $this.requestAnimationFrame = function(callback) { |
| return window.setTimeout(function() { |
| callback(Date.now()); |
| }, 16 /* 16ms ~= 60fps */); |
| }; |
| $this.cancelAnimationFrame = function(id) { clearTimeout(id); } |
| })(#)""", |
| this); |
| } |
| |
| /** |
| * Gets an instance of the Indexed DB factory to being using Indexed DB. |
| * |
| * Use [IdbFactory.supported] to check if Indexed DB is supported on the |
| * current platform. |
| */ |
| @SupportedBrowser(SupportedBrowser.CHROME, '23.0') |
| @SupportedBrowser(SupportedBrowser.FIREFOX, '15.0') |
| @SupportedBrowser(SupportedBrowser.IE, '10.0') |
| @Experimental() |
| IdbFactory get indexedDB => |
| JS('IdbFactory|Null', // If not supported, returns `null`. |
| '#.indexedDB || #.webkitIndexedDB || #.mozIndexedDB', |
| this, this, this); |
| |
| @DomName('Window.console') |
| Console get console => Console._safeConsole; |
| |
| /// Checks if _setImmediate is supported. |
| static bool get _supportsSetImmediate => |
| JS('bool', '!!(window.setImmediate)'); |
| |
| // Set immediate implementation for IE |
| void _setImmediate(void callback()) { |
| JS('void', '#.setImmediate(#)', this, convertDartClosureToJS(callback, 0)); |
| } |
| |
| /** |
| * Access a sandboxed file system of the specified `size`. If `persistent` is |
| * true, the application will request permission from the user to create |
| * lasting storage. This storage cannot be freed without the user's |
| * permission. Returns a [Future] whose value stores a reference to the |
| * sandboxed file system for use. Because the file system is sandboxed, |
| * applications cannot access file systems created in other web pages. |
| */ |
| Future<FileSystem> requestFileSystem(int size, {bool persistent: false}) { |
| return _requestFileSystem(persistent? 1 : 0, size); |
| } |
| |
| @DomName('Window.convertPointFromNodeToPage') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Point convertPointFromNodeToPage(Node node, Point point) { |
| var result = _convertPointFromNodeToPage(node, |
| new _DomPoint(point.x, point.y)); |
| return new Point(result.x, result.y); |
| } |
| |
| @DomName('Window.convertPointFromPageToNode') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| Point convertPointFromPageToNode(Node node, Point point) { |
| var result = _convertPointFromPageToNode(node, |
| new _DomPoint(point.x, point.y)); |
| return new Point(result.x, result.y); |
| } |
| |
| /** |
| * Checks whether [convertPointFromNodeToPage] and |
| * [convertPointFromPageToNode] are supported on the current platform. |
| */ |
| static bool get supportsPointConversions => _DomPoint.supported; |
| // To suppress missing implicit constructor warnings. |
| factory Window._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Window.DOMContentLoadedEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> contentLoadedEvent = const EventStreamProvider<Event>('DOMContentLoaded'); |
| |
| @DomName('Window.devicemotionEvent') |
| @DocsEditable() |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| static const EventStreamProvider<DeviceMotionEvent> deviceMotionEvent = const EventStreamProvider<DeviceMotionEvent>('devicemotion'); |
| |
| @DomName('Window.deviceorientationEvent') |
| @DocsEditable() |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| static const EventStreamProvider<DeviceOrientationEvent> deviceOrientationEvent = const EventStreamProvider<DeviceOrientationEvent>('deviceorientation'); |
| |
| @DomName('Window.hashchangeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> hashChangeEvent = const EventStreamProvider<Event>('hashchange'); |
| |
| @DomName('Window.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('Window.offlineEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> offlineEvent = const EventStreamProvider<Event>('offline'); |
| |
| @DomName('Window.onlineEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> onlineEvent = const EventStreamProvider<Event>('online'); |
| |
| @DomName('Window.pagehideEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> pageHideEvent = const EventStreamProvider<Event>('pagehide'); |
| |
| @DomName('Window.pageshowEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> pageShowEvent = const EventStreamProvider<Event>('pageshow'); |
| |
| @DomName('Window.popstateEvent') |
| @DocsEditable() |
| static const EventStreamProvider<PopStateEvent> popStateEvent = const EventStreamProvider<PopStateEvent>('popstate'); |
| |
| @DomName('Window.resizeEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> resizeEvent = const EventStreamProvider<Event>('resize'); |
| |
| @DomName('Window.storageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<StorageEvent> storageEvent = const EventStreamProvider<StorageEvent>('storage'); |
| |
| @DomName('Window.unloadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<Event> unloadEvent = const EventStreamProvider<Event>('unload'); |
| |
| @DomName('Window.webkitAnimationEndEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<AnimationEvent> animationEndEvent = const EventStreamProvider<AnimationEvent>('webkitAnimationEnd'); |
| |
| @DomName('Window.webkitAnimationIterationEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<AnimationEvent> animationIterationEvent = const EventStreamProvider<AnimationEvent>('webkitAnimationIteration'); |
| |
| @DomName('Window.webkitAnimationStartEvent') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| static const EventStreamProvider<AnimationEvent> animationStartEvent = const EventStreamProvider<AnimationEvent>('webkitAnimationStart'); |
| |
| @DomName('Window.PERSISTENT') |
| @DocsEditable() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| @Experimental() |
| static const int PERSISTENT = 1; |
| |
| @DomName('Window.TEMPORARY') |
| @DocsEditable() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| @Experimental() |
| static const int TEMPORARY = 0; |
| |
| @JSName('CSS') |
| @DomName('Window.CSS') |
| @DocsEditable() |
| final Css css; |
| |
| @DomName('Window.applicationCache') |
| @DocsEditable() |
| final ApplicationCache applicationCache; |
| |
| @DomName('Window.closed') |
| @DocsEditable() |
| final bool closed; |
| |
| @DomName('Window.crypto') |
| @DocsEditable() |
| // http://www.w3.org/TR/WebCryptoAPI/ |
| @Experimental() |
| final Crypto crypto; |
| |
| @DomName('Window.defaultStatus') |
| @DocsEditable() |
| String defaultStatus; |
| |
| @DomName('Window.defaultstatus') |
| @DocsEditable() |
| @Experimental() // non-standard |
| String defaultstatus; |
| |
| @DomName('Window.devicePixelRatio') |
| @DocsEditable() |
| // http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html |
| @Experimental() // non-standard |
| final num devicePixelRatio; |
| |
| @DomName('Window.event') |
| @DocsEditable() |
| @deprecated // deprecated |
| final Event event; |
| |
| @DomName('Window.history') |
| @DocsEditable() |
| final History history; |
| |
| @DomName('Window.innerHeight') |
| @DocsEditable() |
| final int innerHeight; |
| |
| @DomName('Window.innerWidth') |
| @DocsEditable() |
| final int innerWidth; |
| |
| @DomName('Window.localStorage') |
| @DocsEditable() |
| final Storage localStorage; |
| |
| @DomName('Window.locationbar') |
| @DocsEditable() |
| final BarProp locationbar; |
| |
| @DomName('Window.menubar') |
| @DocsEditable() |
| final BarProp menubar; |
| |
| @DomName('Window.name') |
| @DocsEditable() |
| String name; |
| |
| @DomName('Window.navigator') |
| @DocsEditable() |
| final Navigator navigator; |
| |
| @DomName('Window.offscreenBuffering') |
| @DocsEditable() |
| @Experimental() // non-standard |
| final bool offscreenBuffering; |
| |
| WindowBase get opener => _convertNativeToDart_Window(this._get_opener); |
| @JSName('opener') |
| @DomName('Window.opener') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_opener; |
| |
| @DomName('Window.outerHeight') |
| @DocsEditable() |
| final int outerHeight; |
| |
| @DomName('Window.outerWidth') |
| @DocsEditable() |
| final int outerWidth; |
| |
| @DomName('Window.pageXOffset') |
| @DocsEditable() |
| final int pageXOffset; |
| |
| @DomName('Window.pageYOffset') |
| @DocsEditable() |
| final int pageYOffset; |
| |
| WindowBase get parent => _convertNativeToDart_Window(this._get_parent); |
| @JSName('parent') |
| @DomName('Window.parent') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_parent; |
| |
| @DomName('Window.performance') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE) |
| final Performance performance; |
| |
| @DomName('Window.personalbar') |
| @DocsEditable() |
| // https://developer.mozilla.org/en-US/docs/DOM/window.personalbar |
| @deprecated // deprecated |
| final BarProp personalbar; |
| |
| @DomName('Window.screen') |
| @DocsEditable() |
| final Screen screen; |
| |
| @DomName('Window.screenLeft') |
| @DocsEditable() |
| final int screenLeft; |
| |
| @DomName('Window.screenTop') |
| @DocsEditable() |
| final int screenTop; |
| |
| @DomName('Window.screenX') |
| @DocsEditable() |
| final int screenX; |
| |
| @DomName('Window.screenY') |
| @DocsEditable() |
| final int screenY; |
| |
| @DomName('Window.scrollbars') |
| @DocsEditable() |
| final BarProp scrollbars; |
| |
| WindowBase get self => _convertNativeToDart_Window(this._get_self); |
| @JSName('self') |
| @DomName('Window.self') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_self; |
| |
| @DomName('Window.sessionStorage') |
| @DocsEditable() |
| final Storage sessionStorage; |
| |
| @DomName('Window.speechSynthesis') |
| @DocsEditable() |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section |
| @Experimental() |
| final SpeechSynthesis speechSynthesis; |
| |
| @DomName('Window.status') |
| @DocsEditable() |
| String status; |
| |
| @DomName('Window.statusbar') |
| @DocsEditable() |
| final BarProp statusbar; |
| |
| @DomName('Window.styleMedia') |
| @DocsEditable() |
| // http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html |
| @Experimental() // nonstandard |
| final StyleMedia styleMedia; |
| |
| @DomName('Window.toolbar') |
| @DocsEditable() |
| final BarProp toolbar; |
| |
| WindowBase get top => _convertNativeToDart_Window(this._get_top); |
| @JSName('top') |
| @DomName('Window.top') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_top; |
| |
| @JSName('webkitNotifications') |
| @DomName('Window.webkitNotifications') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // https://plus.sandbox.google.com/u/0/+GoogleChromeDevelopers/posts/8vWo8hq4pDm?e=Showroom |
| @deprecated // deprecated |
| final NotificationCenter notifications; |
| |
| @JSName('webkitStorageInfo') |
| @DomName('Window.webkitStorageInfo') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/ |
| @deprecated // deprecated |
| final StorageInfo storageInfo; |
| |
| WindowBase get window => _convertNativeToDart_Window(this._get_window); |
| @JSName('window') |
| @DomName('Window.window') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| final dynamic _get_window; |
| |
| @DomName('Window.__getter__') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| WindowBase __getter__(index_OR_name) { |
| if ((index_OR_name is int || index_OR_name == null)) { |
| return _convertNativeToDart_Window(__getter___1(index_OR_name)); |
| } |
| if ((index_OR_name is String || index_OR_name == null)) { |
| return _convertNativeToDart_Window(__getter___2(index_OR_name)); |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| @JSName('__getter__') |
| @DomName('Window.__getter__') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| __getter___1(int index) native; |
| @JSName('__getter__') |
| @DomName('Window.__getter__') |
| @DocsEditable() |
| @Creates('Window|=Object') |
| @Returns('Window|=Object') |
| __getter___2(String name) native; |
| |
| @DomName('Window.alert') |
| @DocsEditable() |
| void alert(String message) native; |
| |
| @DomName('Window.close') |
| @DocsEditable() |
| void close() native; |
| |
| @DomName('Window.confirm') |
| @DocsEditable() |
| bool confirm(String message) native; |
| |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, ImageBitmapCallback callback, [int sx, int sy, int sw, int sh]) { |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| _createImageBitmap_1(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| _createImageBitmap_2(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback, sx, sy, sw, sh); |
| return; |
| } |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is VideoElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| _createImageBitmap_3(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is VideoElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| _createImageBitmap_4(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback, sx, sy, sw, sh); |
| return; |
| } |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is CanvasRenderingContext2D || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| _createImageBitmap_5(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is CanvasRenderingContext2D || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| _createImageBitmap_6(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback, sx, sy, sw, sh); |
| return; |
| } |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is CanvasElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| _createImageBitmap_7(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is CanvasElement || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| _createImageBitmap_8(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback, sx, sy, sw, sh); |
| return; |
| } |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageData || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| var data_1 = convertDartToNative_ImageData(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video); |
| _createImageBitmap_9(data_1, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageData || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| var data_2 = convertDartToNative_ImageData(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video); |
| _createImageBitmap_10(data_2, callback, sx, sy, sw, sh); |
| return; |
| } |
| if ((bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageBitmap || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null) && sx == null && sy == null && sw == null && sh == null) { |
| _createImageBitmap_11(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback); |
| return; |
| } |
| if (sh != null && sw != null && sy != null && sx != null && (bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video is ImageBitmap || bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video == null)) { |
| _createImageBitmap_12(bitmap_OR_canvas_OR_context_OR_data_OR_image_OR_video, callback, sx, sy, sw, sh); |
| return; |
| } |
| throw new ArgumentError("Incorrect number or type of arguments"); |
| } |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_1(ImageElement image, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_2(ImageElement image, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_3(VideoElement video, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_4(VideoElement video, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_5(CanvasRenderingContext2D context, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_6(CanvasRenderingContext2D context, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_7(CanvasElement canvas, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_8(CanvasElement canvas, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_9(data, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_10(data, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_11(ImageBitmap bitmap, ImageBitmapCallback callback) native; |
| @JSName('createImageBitmap') |
| @DomName('Window.createImageBitmap') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _createImageBitmap_12(ImageBitmap bitmap, ImageBitmapCallback callback, sx, sy, sw, sh) native; |
| |
| @DomName('Window.find') |
| @DocsEditable() |
| @Experimental() // non-standard |
| bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) native; |
| |
| @JSName('getComputedStyle') |
| @DomName('Window.getComputedStyle') |
| @DocsEditable() |
| CssStyleDeclaration $dom_getComputedStyle(Element element, String pseudoElement) native; |
| |
| @JSName('getMatchedCSSRules') |
| @DomName('Window.getMatchedCSSRules') |
| @DocsEditable() |
| @Experimental() // non-standard |
| @Returns('_CssRuleList') |
| @Creates('_CssRuleList') |
| List<CssRule> getMatchedCssRules(Element element, String pseudoElement) native; |
| |
| @DomName('Window.getSelection') |
| @DocsEditable() |
| Selection getSelection() native; |
| |
| @DomName('Window.matchMedia') |
| @DocsEditable() |
| MediaQueryList matchMedia(String query) native; |
| |
| @DomName('Window.moveBy') |
| @DocsEditable() |
| void moveBy(num x, num y) native; |
| |
| @JSName('moveTo') |
| @DomName('Window.moveTo') |
| @DocsEditable() |
| void $dom_moveTo(num x, num y) native; |
| |
| @DomName('Window.openDatabase') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/webdatabase/ |
| @Experimental() // deprecated |
| @Creates('SqlDatabase') |
| SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native; |
| |
| @DomName('Window.postMessage') |
| @DocsEditable() |
| void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) { |
| if (messagePorts != null) { |
| var message_1 = convertDartToNative_SerializedScriptValue(message); |
| _postMessage_1(message_1, targetOrigin, messagePorts); |
| return; |
| } |
| var message_2 = convertDartToNative_SerializedScriptValue(message); |
| _postMessage_2(message_2, targetOrigin); |
| return; |
| } |
| @JSName('postMessage') |
| @DomName('Window.postMessage') |
| @DocsEditable() |
| void _postMessage_1(message, targetOrigin, List messagePorts) native; |
| @JSName('postMessage') |
| @DomName('Window.postMessage') |
| @DocsEditable() |
| void _postMessage_2(message, targetOrigin) native; |
| |
| @DomName('Window.print') |
| @DocsEditable() |
| void print() native; |
| |
| @DomName('Window.resizeBy') |
| @DocsEditable() |
| void resizeBy(num x, num y) native; |
| |
| @DomName('Window.resizeTo') |
| @DocsEditable() |
| void resizeTo(num width, num height) native; |
| |
| @DomName('Window.scroll') |
| @DocsEditable() |
| void scroll(int x, int y) native; |
| |
| @DomName('Window.scrollBy') |
| @DocsEditable() |
| void scrollBy(int x, int y) native; |
| |
| @DomName('Window.scrollTo') |
| @DocsEditable() |
| void scrollTo(int x, int y) native; |
| |
| @DomName('Window.showModalDialog') |
| @DocsEditable() |
| @Creates('Null') |
| Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) native; |
| |
| @DomName('Window.stop') |
| @DocsEditable() |
| void stop() native; |
| |
| @DomName('Window.toString') |
| @DocsEditable() |
| String toString() native; |
| |
| @JSName('webkitConvertPointFromNodeToPage') |
| @DomName('Window.webkitConvertPointFromNodeToPage') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html |
| _DomPoint _convertPointFromNodeToPage(Node node, _DomPoint p) native; |
| |
| @JSName('webkitConvertPointFromPageToNode') |
| @DomName('Window.webkitConvertPointFromPageToNode') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html |
| _DomPoint _convertPointFromPageToNode(Node node, _DomPoint p) native; |
| |
| @JSName('webkitRequestFileSystem') |
| @DomName('Window.webkitRequestFileSystem') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| void __requestFileSystem(int type, int size, _FileSystemCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('webkitRequestFileSystem') |
| @DomName('Window.webkitRequestFileSystem') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| Future<FileSystem> _requestFileSystem(int type, int size) { |
| var completer = new Completer<FileSystem>(); |
| __requestFileSystem(type, size, |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('webkitResolveLocalFileSystemURL') |
| @DomName('Window.webkitResolveLocalFileSystemURL') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('webkitResolveLocalFileSystemURL') |
| @DomName('Window.webkitResolveLocalFileSystemURL') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem |
| Future<Entry> resolveLocalFileSystemUrl(String url) { |
| var completer = new Completer<Entry>(); |
| _resolveLocalFileSystemUrl(url, |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('Window.addEventListener') |
| @DocsEditable() |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Window.dispatchEvent') |
| @DocsEditable() |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('Window.removeEventListener') |
| @DocsEditable() |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| // From WindowBase64 |
| |
| @DomName('Window.atob') |
| @DocsEditable() |
| String atob(String string) native; |
| |
| @DomName('Window.btoa') |
| @DocsEditable() |
| String btoa(String string) native; |
| |
| // From WindowTimers |
| |
| @JSName('clearInterval') |
| @DomName('Window.clearInterval') |
| @DocsEditable() |
| void _clearInterval(int handle) native; |
| |
| @JSName('clearTimeout') |
| @DomName('Window.clearTimeout') |
| @DocsEditable() |
| void _clearTimeout(int handle) native; |
| |
| @JSName('setInterval') |
| @DomName('Window.setInterval') |
| @DocsEditable() |
| int _setInterval(Object handler, int timeout) native; |
| |
| @JSName('setTimeout') |
| @DomName('Window.setTimeout') |
| @DocsEditable() |
| int _setTimeout(Object handler, int timeout) native; |
| |
| @DomName('Window.onDOMContentLoaded') |
| @DocsEditable() |
| Stream<Event> get onContentLoaded => contentLoadedEvent.forTarget(this); |
| |
| @DomName('Window.onabort') |
| @DocsEditable() |
| Stream<Event> get onAbort => Element.abortEvent.forTarget(this); |
| |
| @DomName('Window.onblur') |
| @DocsEditable() |
| Stream<Event> get onBlur => Element.blurEvent.forTarget(this); |
| |
| @DomName('Window.onchange') |
| @DocsEditable() |
| Stream<Event> get onChange => Element.changeEvent.forTarget(this); |
| |
| @DomName('Window.onclick') |
| @DocsEditable() |
| Stream<MouseEvent> get onClick => Element.clickEvent.forTarget(this); |
| |
| @DomName('Window.oncontextmenu') |
| @DocsEditable() |
| Stream<MouseEvent> get onContextMenu => Element.contextMenuEvent.forTarget(this); |
| |
| @DomName('Window.ondblclick') |
| @DocsEditable() |
| Stream<Event> get onDoubleClick => Element.doubleClickEvent.forTarget(this); |
| |
| @DomName('Window.ondevicemotion') |
| @DocsEditable() |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| Stream<DeviceMotionEvent> get onDeviceMotion => deviceMotionEvent.forTarget(this); |
| |
| @DomName('Window.ondeviceorientation') |
| @DocsEditable() |
| // http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion |
| @Experimental() |
| Stream<DeviceOrientationEvent> get onDeviceOrientation => deviceOrientationEvent.forTarget(this); |
| |
| @DomName('Window.ondrag') |
| @DocsEditable() |
| Stream<MouseEvent> get onDrag => Element.dragEvent.forTarget(this); |
| |
| @DomName('Window.ondragend') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragEnd => Element.dragEndEvent.forTarget(this); |
| |
| @DomName('Window.ondragenter') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragEnter => Element.dragEnterEvent.forTarget(this); |
| |
| @DomName('Window.ondragleave') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragLeave => Element.dragLeaveEvent.forTarget(this); |
| |
| @DomName('Window.ondragover') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragOver => Element.dragOverEvent.forTarget(this); |
| |
| @DomName('Window.ondragstart') |
| @DocsEditable() |
| Stream<MouseEvent> get onDragStart => Element.dragStartEvent.forTarget(this); |
| |
| @DomName('Window.ondrop') |
| @DocsEditable() |
| Stream<MouseEvent> get onDrop => Element.dropEvent.forTarget(this); |
| |
| @DomName('Window.onerror') |
| @DocsEditable() |
| Stream<Event> get onError => Element.errorEvent.forTarget(this); |
| |
| @DomName('Window.onfocus') |
| @DocsEditable() |
| Stream<Event> get onFocus => Element.focusEvent.forTarget(this); |
| |
| @DomName('Window.onhashchange') |
| @DocsEditable() |
| Stream<Event> get onHashChange => hashChangeEvent.forTarget(this); |
| |
| @DomName('Window.oninput') |
| @DocsEditable() |
| Stream<Event> get onInput => Element.inputEvent.forTarget(this); |
| |
| @DomName('Window.oninvalid') |
| @DocsEditable() |
| Stream<Event> get onInvalid => Element.invalidEvent.forTarget(this); |
| |
| @DomName('Window.onkeydown') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyDown => Element.keyDownEvent.forTarget(this); |
| |
| @DomName('Window.onkeypress') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyPress => Element.keyPressEvent.forTarget(this); |
| |
| @DomName('Window.onkeyup') |
| @DocsEditable() |
| Stream<KeyboardEvent> get onKeyUp => Element.keyUpEvent.forTarget(this); |
| |
| @DomName('Window.onload') |
| @DocsEditable() |
| Stream<Event> get onLoad => Element.loadEvent.forTarget(this); |
| |
| @DomName('Window.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| |
| @DomName('Window.onmousedown') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseDown => Element.mouseDownEvent.forTarget(this); |
| |
| @DomName('Window.onmouseenter') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<MouseEvent> get onMouseEnter => Element.mouseEnterEvent.forTarget(this); |
| |
| @DomName('Window.onmouseleave') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<MouseEvent> get onMouseLeave => Element.mouseLeaveEvent.forTarget(this); |
| |
| @DomName('Window.onmousemove') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseMove => Element.mouseMoveEvent.forTarget(this); |
| |
| @DomName('Window.onmouseout') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseOut => Element.mouseOutEvent.forTarget(this); |
| |
| @DomName('Window.onmouseover') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseOver => Element.mouseOverEvent.forTarget(this); |
| |
| @DomName('Window.onmouseup') |
| @DocsEditable() |
| Stream<MouseEvent> get onMouseUp => Element.mouseUpEvent.forTarget(this); |
| |
| @DomName('Window.onmousewheel') |
| @DocsEditable() |
| Stream<WheelEvent> get onMouseWheel => Element.mouseWheelEvent.forTarget(this); |
| |
| @DomName('Window.onoffline') |
| @DocsEditable() |
| Stream<Event> get onOffline => offlineEvent.forTarget(this); |
| |
| @DomName('Window.ononline') |
| @DocsEditable() |
| Stream<Event> get onOnline => onlineEvent.forTarget(this); |
| |
| @DomName('Window.onpagehide') |
| @DocsEditable() |
| Stream<Event> get onPageHide => pageHideEvent.forTarget(this); |
| |
| @DomName('Window.onpageshow') |
| @DocsEditable() |
| Stream<Event> get onPageShow => pageShowEvent.forTarget(this); |
| |
| @DomName('Window.onpopstate') |
| @DocsEditable() |
| Stream<PopStateEvent> get onPopState => popStateEvent.forTarget(this); |
| |
| @DomName('Window.onreset') |
| @DocsEditable() |
| Stream<Event> get onReset => Element.resetEvent.forTarget(this); |
| |
| @DomName('Window.onresize') |
| @DocsEditable() |
| Stream<Event> get onResize => resizeEvent.forTarget(this); |
| |
| @DomName('Window.onscroll') |
| @DocsEditable() |
| Stream<Event> get onScroll => Element.scrollEvent.forTarget(this); |
| |
| @DomName('Window.onsearch') |
| @DocsEditable() |
| // http://www.w3.org/TR/html-markup/input.search.html |
| @Experimental() |
| Stream<Event> get onSearch => Element.searchEvent.forTarget(this); |
| |
| @DomName('Window.onselect') |
| @DocsEditable() |
| Stream<Event> get onSelect => Element.selectEvent.forTarget(this); |
| |
| @DomName('Window.onstorage') |
| @DocsEditable() |
| Stream<StorageEvent> get onStorage => storageEvent.forTarget(this); |
| |
| @DomName('Window.onsubmit') |
| @DocsEditable() |
| Stream<Event> get onSubmit => Element.submitEvent.forTarget(this); |
| |
| @DomName('Window.ontouchcancel') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchCancel => Element.touchCancelEvent.forTarget(this); |
| |
| @DomName('Window.ontouchend') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchEnd => Element.touchEndEvent.forTarget(this); |
| |
| @DomName('Window.ontouchmove') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchMove => Element.touchMoveEvent.forTarget(this); |
| |
| @DomName('Window.ontouchstart') |
| @DocsEditable() |
| // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features |
| @Experimental() |
| Stream<TouchEvent> get onTouchStart => Element.touchStartEvent.forTarget(this); |
| |
| @DomName('Window.ontransitionend') |
| @DocsEditable() |
| Stream<TransitionEvent> get onTransitionEnd => Element.transitionEndEvent.forTarget(this); |
| |
| @DomName('Window.onunload') |
| @DocsEditable() |
| Stream<Event> get onUnload => unloadEvent.forTarget(this); |
| |
| @DomName('Window.onwebkitAnimationEnd') |
| @DocsEditable() |
| @Experimental() |
| Stream<AnimationEvent> get onAnimationEnd => animationEndEvent.forTarget(this); |
| |
| @DomName('Window.onwebkitAnimationIteration') |
| @DocsEditable() |
| @Experimental() |
| Stream<AnimationEvent> get onAnimationIteration => animationIterationEvent.forTarget(this); |
| |
| @DomName('Window.onwebkitAnimationStart') |
| @DocsEditable() |
| @Experimental() |
| Stream<AnimationEvent> get onAnimationStart => animationStartEvent.forTarget(this); |
| |
| |
| @DomName('Window.beforeunloadEvent') |
| @DocsEditable() |
| static const EventStreamProvider<BeforeUnloadEvent> beforeUnloadEvent = |
| const _BeforeUnloadEventStreamProvider('beforeunload'); |
| |
| @DomName('Window.onbeforeunload') |
| @DocsEditable() |
| Stream<Event> get onBeforeUnload => beforeUnloadEvent.forTarget(this); |
| |
| void moveTo(Point p) { |
| $dom_moveTo(p.x, p.y); |
| } |
| |
| int get scrollX => JS('bool', '("scrollX" in #)', this) ? JS('int', |
| '#.scrollX', this) : document.documentElement.scrollLeft; |
| int get scrollY => JS('bool', '("scrollY" in #)', this) ? JS('int', |
| '#.scrollY', this) : document.documentElement.scrollTop; |
| } |
| |
| /** |
| * Event object that is fired before the window is closed. |
| * |
| * The standard window close behavior can be prevented by setting the |
| * [returnValue]. This will display a dialog to the user confirming that they |
| * want to close the page. |
| */ |
| abstract class BeforeUnloadEvent implements Event { |
| /** |
| * If set to a non-null value, a dialog will be presented to the user |
| * confirming that they want to close the page. |
| */ |
| String returnValue; |
| } |
| |
| class _BeforeUnloadEvent extends _WrappedEvent implements BeforeUnloadEvent { |
| String _returnValue; |
| |
| _BeforeUnloadEvent(Event base): super(base); |
| |
| String get returnValue => _returnValue; |
| |
| void set returnValue(String value) { |
| _returnValue = value; |
| // FF and IE use the value as the return value, Chrome will return this from |
| // the event callback function. |
| if (JS('bool', '("returnValue" in #)', wrapped)) { |
| JS('void', '#.returnValue = #', wrapped, value); |
| } |
| } |
| } |
| |
| class _BeforeUnloadEventStreamProvider implements |
| EventStreamProvider<BeforeUnloadEvent> { |
| final String _eventType; |
| |
| const _BeforeUnloadEventStreamProvider(this._eventType); |
| |
| Stream<BeforeUnloadEvent> forTarget(EventTarget e, {bool useCapture: false}) { |
| var controller = new StreamController(sync: true); |
| var stream = new _EventStream(e, _eventType, useCapture); |
| stream.listen((event) { |
| var wrapped = new _BeforeUnloadEvent(event); |
| controller.add(wrapped); |
| return wrapped.returnValue; |
| }); |
| |
| return controller.stream; |
| } |
| |
| String getEventType(EventTarget target) { |
| return _eventType; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WindowBase64') |
| @Experimental() // untriaged |
| abstract class WindowBase64 extends Interceptor { |
| |
| String atob(String string); |
| |
| String btoa(String string); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WindowTimers') |
| @Experimental() // untriaged |
| abstract class WindowTimers extends Interceptor { |
| |
| void clearInterval(int handle); |
| |
| void clearTimeout(int handle); |
| |
| int setInterval(Object handler, int timeout); |
| |
| int setTimeout(Object handler, int timeout); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Worker') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.IE, '10') |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#worker |
| @Experimental() // stable |
| class Worker extends EventTarget implements AbstractWorker native "Worker" { |
| // To suppress missing implicit constructor warnings. |
| factory Worker._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Worker.errorEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('Worker.messageEvent') |
| @DocsEditable() |
| static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message'); |
| |
| @DomName('Worker.Worker') |
| @DocsEditable() |
| factory Worker(String scriptUrl) { |
| return Worker._create_1(scriptUrl); |
| } |
| static Worker _create_1(scriptUrl) => JS('Worker', 'new Worker(#)', scriptUrl); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '(typeof window.Worker != "undefined")'); |
| |
| @DomName('Worker.postMessage') |
| @DocsEditable() |
| void postMessage(/*SerializedScriptValue*/ message, [List messagePorts]) native; |
| |
| @DomName('Worker.terminate') |
| @DocsEditable() |
| void terminate() native; |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('Worker.addEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Worker.dispatchEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('Worker.removeEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('Worker.onerror') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| |
| @DomName('Worker.onmessage') |
| @DocsEditable() |
| Stream<MessageEvent> get onMessage => messageEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WorkerCrypto') |
| @Experimental() // untriaged |
| class WorkerCrypto extends Interceptor native "WorkerCrypto" { |
| |
| @DomName('WorkerCrypto.getRandomValues') |
| @DocsEditable() |
| @Experimental() // untriaged |
| @Creates('TypedData') |
| @Returns('TypedData|Null') |
| TypedData getRandomValues(TypedData array) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WorkerGlobalScope') |
| @Experimental() // untriaged |
| class WorkerGlobalScope extends EventTarget implements WindowTimers, WindowBase64 native "WorkerGlobalScope" { |
| // To suppress missing implicit constructor warnings. |
| factory WorkerGlobalScope._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WorkerGlobalScope.errorEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error'); |
| |
| @DomName('WorkerGlobalScope.PERSISTENT') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const int PERSISTENT = 1; |
| |
| @DomName('WorkerGlobalScope.TEMPORARY') |
| @DocsEditable() |
| @Experimental() // untriaged |
| static const int TEMPORARY = 0; |
| |
| @DomName('WorkerGlobalScope.crypto') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final WorkerCrypto crypto; |
| |
| @DomName('WorkerGlobalScope.indexedDB') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final IdbFactory indexedDB; |
| |
| @DomName('WorkerGlobalScope.location') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final _WorkerLocation location; |
| |
| @DomName('WorkerGlobalScope.navigator') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final _WorkerNavigator navigator; |
| |
| @DomName('WorkerGlobalScope.performance') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final WorkerPerformance performance; |
| |
| @DomName('WorkerGlobalScope.self') |
| @DocsEditable() |
| @Experimental() // untriaged |
| final WorkerGlobalScope self; |
| |
| @JSName('webkitNotifications') |
| @DomName('WorkerGlobalScope.webkitNotifications') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // untriaged |
| final NotificationCenter notifications; |
| |
| @DomName('WorkerGlobalScope.close') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void close() native; |
| |
| @DomName('WorkerGlobalScope.importScripts') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void importScripts() native; |
| |
| @DomName('WorkerGlobalScope.openDatabase') |
| @DocsEditable() |
| @Experimental() // untriaged |
| SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native; |
| |
| @DomName('WorkerGlobalScope.openDatabaseSync') |
| @DocsEditable() |
| @Experimental() // untriaged |
| _DatabaseSync openDatabaseSync(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native; |
| |
| @JSName('webkitRequestFileSystem') |
| @DomName('WorkerGlobalScope.webkitRequestFileSystem') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _webkitRequestFileSystem(int type, int size, [_FileSystemCallback successCallback, _ErrorCallback errorCallback]) native; |
| |
| @JSName('webkitRequestFileSystem') |
| @DomName('WorkerGlobalScope.webkitRequestFileSystem') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Future<FileSystem> webkitRequestFileSystem(int type, int size) { |
| var completer = new Completer<FileSystem>(); |
| _webkitRequestFileSystem(type, size, |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| @JSName('webkitRequestFileSystemSync') |
| @DomName('WorkerGlobalScope.webkitRequestFileSystemSync') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // untriaged |
| _DOMFileSystemSync requestFileSystemSync(int type, int size) native; |
| |
| @JSName('webkitResolveLocalFileSystemSyncURL') |
| @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemSyncURL') |
| @DocsEditable() |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| @Experimental() // untriaged |
| _EntrySync resolveLocalFileSystemSyncUrl(String url) native; |
| |
| @JSName('webkitResolveLocalFileSystemURL') |
| @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemURL') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void _webkitResolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) native; |
| |
| @JSName('webkitResolveLocalFileSystemURL') |
| @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemURL') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Future<Entry> webkitResolveLocalFileSystemUrl(String url) { |
| var completer = new Completer<Entry>(); |
| _webkitResolveLocalFileSystemUrl(url, |
| (value) { completer.complete(value); }, |
| (error) { completer.completeError(error); }); |
| return completer.future; |
| } |
| |
| // From EventTarget |
| |
| @JSName('addEventListener') |
| @DomName('WorkerGlobalScope.addEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| @DomName('WorkerGlobalScope.dispatchEvent') |
| @DocsEditable() |
| @Experimental() // untriaged |
| bool dispatchEvent(Event event) native; |
| |
| @JSName('removeEventListener') |
| @DomName('WorkerGlobalScope.removeEventListener') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native; |
| |
| // From WindowBase64 |
| |
| @DomName('WorkerGlobalScope.atob') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String atob(String string) native; |
| |
| @DomName('WorkerGlobalScope.btoa') |
| @DocsEditable() |
| @Experimental() // untriaged |
| String btoa(String string) native; |
| |
| // From WindowTimers |
| |
| @DomName('WorkerGlobalScope.clearInterval') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void clearInterval(int handle) native; |
| |
| @DomName('WorkerGlobalScope.clearTimeout') |
| @DocsEditable() |
| @Experimental() // untriaged |
| void clearTimeout(int handle) native; |
| |
| @DomName('WorkerGlobalScope.setInterval') |
| @DocsEditable() |
| @Experimental() // untriaged |
| int setInterval(Object handler, int timeout) native; |
| |
| @DomName('WorkerGlobalScope.setTimeout') |
| @DocsEditable() |
| @Experimental() // untriaged |
| int setTimeout(Object handler, int timeout) native; |
| |
| @DomName('WorkerGlobalScope.onerror') |
| @DocsEditable() |
| @Experimental() // untriaged |
| Stream<Event> get onError => errorEvent.forTarget(this); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WorkerPerformance') |
| @Experimental() // untriaged |
| class WorkerPerformance extends Interceptor native "WorkerPerformance" { |
| |
| @DomName('WorkerPerformance.now') |
| @DocsEditable() |
| @Experimental() // untriaged |
| num now() native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XPathEvaluator') |
| // http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator |
| @deprecated // experimental |
| class XPathEvaluator extends Interceptor native "XPathEvaluator" { |
| |
| @DomName('XPathEvaluator.XPathEvaluator') |
| @DocsEditable() |
| factory XPathEvaluator() { |
| return XPathEvaluator._create_1(); |
| } |
| static XPathEvaluator _create_1() => JS('XPathEvaluator', 'new XPathEvaluator()'); |
| |
| @DomName('XPathEvaluator.createExpression') |
| @DocsEditable() |
| XPathExpression createExpression(String expression, XPathNSResolver resolver) native; |
| |
| @DomName('XPathEvaluator.createNSResolver') |
| @DocsEditable() |
| XPathNSResolver createNSResolver(Node nodeResolver) native; |
| |
| @DomName('XPathEvaluator.evaluate') |
| @DocsEditable() |
| XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XPathExpression') |
| // http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathExpression |
| @deprecated // experimental |
| class XPathExpression extends Interceptor native "XPathExpression" { |
| |
| @DomName('XPathExpression.evaluate') |
| @DocsEditable() |
| XPathResult evaluate(Node contextNode, int type, XPathResult inResult) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XPathNSResolver') |
| // http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathNSResolver |
| @deprecated // experimental |
| class XPathNSResolver extends Interceptor native "XPathNSResolver" { |
| |
| @JSName('lookupNamespaceURI') |
| @DomName('XPathNSResolver.lookupNamespaceURI') |
| @DocsEditable() |
| String lookupNamespaceUri(String prefix) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XPathResult') |
| // http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult |
| @deprecated // experimental |
| class XPathResult extends Interceptor native "XPathResult" { |
| |
| @DomName('XPathResult.ANY_TYPE') |
| @DocsEditable() |
| static const int ANY_TYPE = 0; |
| |
| @DomName('XPathResult.ANY_UNORDERED_NODE_TYPE') |
| @DocsEditable() |
| static const int ANY_UNORDERED_NODE_TYPE = 8; |
| |
| @DomName('XPathResult.BOOLEAN_TYPE') |
| @DocsEditable() |
| static const int BOOLEAN_TYPE = 3; |
| |
| @DomName('XPathResult.FIRST_ORDERED_NODE_TYPE') |
| @DocsEditable() |
| static const int FIRST_ORDERED_NODE_TYPE = 9; |
| |
| @DomName('XPathResult.NUMBER_TYPE') |
| @DocsEditable() |
| static const int NUMBER_TYPE = 1; |
| |
| @DomName('XPathResult.ORDERED_NODE_ITERATOR_TYPE') |
| @DocsEditable() |
| static const int ORDERED_NODE_ITERATOR_TYPE = 5; |
| |
| @DomName('XPathResult.ORDERED_NODE_SNAPSHOT_TYPE') |
| @DocsEditable() |
| static const int ORDERED_NODE_SNAPSHOT_TYPE = 7; |
| |
| @DomName('XPathResult.STRING_TYPE') |
| @DocsEditable() |
| static const int STRING_TYPE = 2; |
| |
| @DomName('XPathResult.UNORDERED_NODE_ITERATOR_TYPE') |
| @DocsEditable() |
| static const int UNORDERED_NODE_ITERATOR_TYPE = 4; |
| |
| @DomName('XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE') |
| @DocsEditable() |
| static const int UNORDERED_NODE_SNAPSHOT_TYPE = 6; |
| |
| @DomName('XPathResult.booleanValue') |
| @DocsEditable() |
| final bool booleanValue; |
| |
| @DomName('XPathResult.invalidIteratorState') |
| @DocsEditable() |
| final bool invalidIteratorState; |
| |
| @DomName('XPathResult.numberValue') |
| @DocsEditable() |
| final num numberValue; |
| |
| @DomName('XPathResult.resultType') |
| @DocsEditable() |
| final int resultType; |
| |
| @DomName('XPathResult.singleNodeValue') |
| @DocsEditable() |
| final Node singleNodeValue; |
| |
| @DomName('XPathResult.snapshotLength') |
| @DocsEditable() |
| final int snapshotLength; |
| |
| @DomName('XPathResult.stringValue') |
| @DocsEditable() |
| final String stringValue; |
| |
| @DomName('XPathResult.iterateNext') |
| @DocsEditable() |
| Node iterateNext() native; |
| |
| @DomName('XPathResult.snapshotItem') |
| @DocsEditable() |
| Node snapshotItem(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XMLSerializer') |
| // http://domparsing.spec.whatwg.org/#the-xmlserializer-interface |
| @deprecated // stable |
| class XmlSerializer extends Interceptor native "XMLSerializer" { |
| |
| @DomName('XMLSerializer.XMLSerializer') |
| @DocsEditable() |
| factory XmlSerializer() { |
| return XmlSerializer._create_1(); |
| } |
| static XmlSerializer _create_1() => JS('XmlSerializer', 'new XMLSerializer()'); |
| |
| @DomName('XMLSerializer.serializeToString') |
| @DocsEditable() |
| String serializeToString(Node node) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('XSLTProcessor') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.FIREFOX) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @deprecated // nonstandard |
| class XsltProcessor extends Interceptor native "XSLTProcessor" { |
| |
| @DomName('XSLTProcessor.XSLTProcessor') |
| @DocsEditable() |
| factory XsltProcessor() { |
| return XsltProcessor._create_1(); |
| } |
| static XsltProcessor _create_1() => JS('XsltProcessor', 'new XSLTProcessor()'); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.XSLTProcessor)'); |
| |
| @DomName('XSLTProcessor.clearParameters') |
| @DocsEditable() |
| void clearParameters() native; |
| |
| @DomName('XSLTProcessor.getParameter') |
| @DocsEditable() |
| String getParameter(String namespaceURI, String localName) native; |
| |
| @DomName('XSLTProcessor.importStylesheet') |
| @DocsEditable() |
| void importStylesheet(Node stylesheet) native; |
| |
| @DomName('XSLTProcessor.removeParameter') |
| @DocsEditable() |
| void removeParameter(String namespaceURI, String localName) native; |
| |
| @DomName('XSLTProcessor.reset') |
| @DocsEditable() |
| void reset() native; |
| |
| @DomName('XSLTProcessor.setParameter') |
| @DocsEditable() |
| void setParameter(String namespaceURI, String localName, String value) native; |
| |
| @DomName('XSLTProcessor.transformToDocument') |
| @DocsEditable() |
| Document transformToDocument(Node source) native; |
| |
| @DomName('XSLTProcessor.transformToFragment') |
| @DocsEditable() |
| DocumentFragment transformToFragment(Node source, Document docVal) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Attr') |
| class _Attr extends Node native "Attr" { |
| // To suppress missing implicit constructor warnings. |
| factory _Attr._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Attr.isId') |
| @DocsEditable() |
| final bool isId; |
| |
| @DomName('Attr.name') |
| @DocsEditable() |
| final String name; |
| |
| @DomName('Attr.ownerElement') |
| @DocsEditable() |
| @deprecated // deprecated |
| final Element ownerElement; |
| |
| @DomName('Attr.specified') |
| @DocsEditable() |
| @deprecated // deprecated |
| final bool specified; |
| |
| @DomName('Attr.value') |
| @DocsEditable() |
| String value; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSPrimitiveValue') |
| // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface |
| @deprecated // deprecated |
| abstract class _CSSPrimitiveValue extends _CSSValue native "CSSPrimitiveValue" { |
| // To suppress missing implicit constructor warnings. |
| factory _CSSPrimitiveValue._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSValue') |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| abstract class _CSSValue extends Interceptor native "CSSValue" { |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ClientRect') |
| class _ClientRect extends Interceptor implements Rect native "ClientRect" { |
| |
| // NOTE! All code below should be common with Rect. |
| // TODO(blois): implement with mixins when available. |
| |
| String toString() { |
| return '($left, $top, $width, $height)'; |
| } |
| |
| bool operator ==(other) { |
| if (other is !Rect) return false; |
| return left == other.left && top == other.top && width == other.width && |
| height == other.height; |
| } |
| |
| int get hashCode => JenkinsSmiHash.hash4(left.hashCode, top.hashCode, |
| width.hashCode, height.hashCode); |
| |
| /** |
| * Computes the intersection of this rectangle and the rectangle parameter. |
| * Returns null if there is no intersection. |
| */ |
| Rect intersection(Rect rect) { |
| var x0 = max(left, rect.left); |
| var x1 = min(left + width, rect.left + rect.width); |
| |
| if (x0 <= x1) { |
| var y0 = max(top, rect.top); |
| var y1 = min(top + height, rect.top + rect.height); |
| |
| if (y0 <= y1) { |
| return new Rect(x0, y0, x1 - x0, y1 - y0); |
| } |
| } |
| return null; |
| } |
| |
| |
| /** |
| * Returns whether a rectangle intersects this rectangle. |
| */ |
| bool intersects(Rect other) { |
| return (left <= other.left + other.width && other.left <= left + width && |
| top <= other.top + other.height && other.top <= top + height); |
| } |
| |
| /** |
| * Returns a new rectangle which completely contains this rectangle and the |
| * input rectangle. |
| */ |
| Rect union(Rect rect) { |
| var right = max(this.left + this.width, rect.left + rect.width); |
| var bottom = max(this.top + this.height, rect.top + rect.height); |
| |
| var left = min(this.left, rect.left); |
| var top = min(this.top, rect.top); |
| |
| return new Rect(left, top, right - left, bottom - top); |
| } |
| |
| /** |
| * Tests whether this rectangle entirely contains another rectangle. |
| */ |
| bool containsRect(Rect another) { |
| return left <= another.left && |
| left + width >= another.left + another.width && |
| top <= another.top && |
| top + height >= another.top + another.height; |
| } |
| |
| /** |
| * Tests whether this rectangle entirely contains a point. |
| */ |
| bool containsPoint(Point another) { |
| return another.x >= left && |
| another.x <= left + width && |
| another.y >= top && |
| another.y <= top + height; |
| } |
| |
| Rect ceil() => new Rect(left.ceil(), top.ceil(), width.ceil(), height.ceil()); |
| Rect floor() => new Rect(left.floor(), top.floor(), width.floor(), |
| height.floor()); |
| Rect round() => new Rect(left.round(), top.round(), width.round(), |
| height.round()); |
| |
| /** |
| * Truncates coordinates to integers and returns the result as a new |
| * rectangle. |
| */ |
| Rect toInt() => new Rect(left.toInt(), top.toInt(), width.toInt(), |
| height.toInt()); |
| |
| Point get topLeft => new Point(this.left, this.top); |
| Point get bottomRight => new Point(this.left + this.width, |
| this.top + this.height); |
| |
| @DomName('ClientRect.bottom') |
| @DocsEditable() |
| final num bottom; |
| |
| @DomName('ClientRect.height') |
| @DocsEditable() |
| final num height; |
| |
| @DomName('ClientRect.left') |
| @DocsEditable() |
| final num left; |
| |
| @DomName('ClientRect.right') |
| @DocsEditable() |
| final num right; |
| |
| @DomName('ClientRect.top') |
| @DocsEditable() |
| final num top; |
| |
| @DomName('ClientRect.width') |
| @DocsEditable() |
| final num width; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('ClientRectList') |
| class _ClientRectList extends Interceptor with ListMixin<Rect>, ImmutableListMixin<Rect> implements JavaScriptIndexingBehavior, List<Rect> native "ClientRectList" { |
| |
| @DomName('ClientRectList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Rect operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Rect", "#[#]", this, index); |
| } |
| void operator[]=(int index, Rect value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Rect> mixins. |
| // Rect is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Rect get first { |
| if (this.length > 0) { |
| return JS('Rect', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Rect get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Rect', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Rect get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Rect', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Rect elementAt(int index) => this[index]; |
| // -- end List<Rect> mixins. |
| |
| @DomName('ClientRectList.item') |
| @DocsEditable() |
| Rect item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Counter') |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| abstract class _Counter extends Interceptor native "Counter" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSRuleList') |
| class _CssRuleList extends Interceptor with ListMixin<CssRule>, ImmutableListMixin<CssRule> implements JavaScriptIndexingBehavior, List<CssRule> native "CSSRuleList" { |
| |
| @DomName('CSSRuleList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| CssRule operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("CssRule", "#[#]", this, index); |
| } |
| void operator[]=(int index, CssRule value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<CssRule> mixins. |
| // CssRule is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| CssRule get first { |
| if (this.length > 0) { |
| return JS('CssRule', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| CssRule get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('CssRule', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| CssRule get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('CssRule', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| CssRule elementAt(int index) => this[index]; |
| // -- end List<CssRule> mixins. |
| |
| @DomName('CSSRuleList.item') |
| @DocsEditable() |
| CssRule item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('CSSValueList') |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| class _CssValueList extends _CSSValue with ListMixin<_CSSValue>, ImmutableListMixin<_CSSValue> implements JavaScriptIndexingBehavior, List<_CSSValue> native "CSSValueList" { |
| // To suppress missing implicit constructor warnings. |
| factory _CssValueList._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('CSSValueList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| _CSSValue operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("_CSSValue", "#[#]", this, index); |
| } |
| void operator[]=(int index, _CSSValue value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<_CSSValue> mixins. |
| // _CSSValue is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| _CSSValue get first { |
| if (this.length > 0) { |
| return JS('_CSSValue', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| _CSSValue get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('_CSSValue', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| _CSSValue get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('_CSSValue', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| _CSSValue elementAt(int index) => this[index]; |
| // -- end List<_CSSValue> mixins. |
| |
| @DomName('CSSValueList.item') |
| @DocsEditable() |
| _CSSValue item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DOMFileSystemSync') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @Experimental() |
| // http://www.w3.org/TR/file-system-api/#the-filesystemsync-interface |
| abstract class _DOMFileSystemSync extends Interceptor native "DOMFileSystemSync" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DatabaseSync') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://www.w3.org/TR/webdatabase/#databasesync |
| @deprecated // deprecated |
| abstract class _DatabaseSync extends Interceptor native "DatabaseSync" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DirectoryEntrySync') |
| // http://www.w3.org/TR/file-system-api/#the-directoryentrysync-interface |
| @Experimental() |
| abstract class _DirectoryEntrySync extends _EntrySync native "DirectoryEntrySync" { |
| // To suppress missing implicit constructor warnings. |
| factory _DirectoryEntrySync._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('DirectoryReaderSync') |
| // http://www.w3.org/TR/file-system-api/#idl-def-DirectoryReaderSync |
| @Experimental() |
| abstract class _DirectoryReaderSync extends Interceptor native "DirectoryReaderSync" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitPoint') |
| @SupportedBrowser(SupportedBrowser.CHROME) |
| @SupportedBrowser(SupportedBrowser.SAFARI) |
| @Experimental() |
| // http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html |
| @Experimental() // non-standard |
| class _DomPoint extends Interceptor native "WebKitPoint" { |
| |
| @DomName('WebKitPoint.WebKitPoint') |
| @DocsEditable() |
| factory _DomPoint(num x, num y) { |
| return _DomPoint._create_1(x, y); |
| } |
| static _DomPoint _create_1(x, y) => JS('_DomPoint', 'new WebKitPoint(#,#)', x, y); |
| |
| /// Checks if this type is supported on the current platform. |
| static bool get supported => JS('bool', '!!(window.WebKitPoint)'); |
| |
| @DomName('WebKitPoint.x') |
| @DocsEditable() |
| num x; |
| |
| @DomName('WebKitPoint.y') |
| @DocsEditable() |
| num y; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Entity') |
| @deprecated // deprecated |
| class _Entity extends Node native "Entity" { |
| // To suppress missing implicit constructor warnings. |
| factory _Entity._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('Entity.notationName') |
| @DocsEditable() |
| final String notationName; |
| |
| @DomName('Entity.publicId') |
| @DocsEditable() |
| final String publicId; |
| |
| @DomName('Entity.systemId') |
| @DocsEditable() |
| final String systemId; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('EntryArray') |
| // http://www.w3.org/TR/file-system-api/#the-entry-interface |
| @Experimental() |
| class _EntryArray extends Interceptor with ListMixin<Entry>, ImmutableListMixin<Entry> implements JavaScriptIndexingBehavior, List<Entry> native "EntryArray" { |
| |
| @DomName('EntryArray.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Entry operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Entry", "#[#]", this, index); |
| } |
| void operator[]=(int index, Entry value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Entry> mixins. |
| // Entry is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Entry get first { |
| if (this.length > 0) { |
| return JS('Entry', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Entry get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Entry', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Entry get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Entry', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Entry elementAt(int index) => this[index]; |
| // -- end List<Entry> mixins. |
| |
| @DomName('EntryArray.item') |
| @DocsEditable() |
| Entry item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('EntryArraySync') |
| // http://www.w3.org/TR/file-system-api/#idl-def-EntrySync |
| @Experimental() |
| class _EntryArraySync extends Interceptor with ListMixin<_EntrySync>, ImmutableListMixin<_EntrySync> implements JavaScriptIndexingBehavior, List<_EntrySync> native "EntryArraySync" { |
| |
| @DomName('EntryArraySync.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| _EntrySync operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("_EntrySync", "#[#]", this, index); |
| } |
| void operator[]=(int index, _EntrySync value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<_EntrySync> mixins. |
| // _EntrySync is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| _EntrySync get first { |
| if (this.length > 0) { |
| return JS('_EntrySync', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| _EntrySync get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('_EntrySync', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| _EntrySync get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('_EntrySync', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| _EntrySync elementAt(int index) => this[index]; |
| // -- end List<_EntrySync> mixins. |
| |
| @DomName('EntryArraySync.item') |
| @DocsEditable() |
| _EntrySync item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('EntrySync') |
| // http://www.w3.org/TR/file-system-api/#idl-def-EntrySync |
| @Experimental() |
| abstract class _EntrySync extends Interceptor native "EntrySync" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileEntrySync') |
| // http://www.w3.org/TR/file-system-api/#the-fileentrysync-interface |
| @Experimental() |
| abstract class _FileEntrySync extends _EntrySync native "FileEntrySync" { |
| // To suppress missing implicit constructor warnings. |
| factory _FileEntrySync._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileReaderSync') |
| // http://www.w3.org/TR/FileAPI/#FileReaderSync |
| @Experimental() |
| abstract class _FileReaderSync extends Interceptor native "FileReaderSync" { |
| |
| @DomName('FileReaderSync.FileReaderSync') |
| @DocsEditable() |
| factory _FileReaderSync() { |
| return _FileReaderSync._create_1(); |
| } |
| static _FileReaderSync _create_1() => JS('_FileReaderSync', 'new FileReaderSync()'); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('FileWriterSync') |
| // http://www.w3.org/TR/file-writer-api/#idl-def-FileWriterSync |
| @Experimental() |
| abstract class _FileWriterSync extends Interceptor native "FileWriterSync" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('GamepadList') |
| // https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html |
| @Experimental() |
| class _GamepadList extends Interceptor with ListMixin<Gamepad>, ImmutableListMixin<Gamepad> implements JavaScriptIndexingBehavior, List<Gamepad> native "GamepadList" { |
| |
| @DomName('GamepadList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Gamepad operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Gamepad", "#[#]", this, index); |
| } |
| void operator[]=(int index, Gamepad value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Gamepad> mixins. |
| // Gamepad is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Gamepad get first { |
| if (this.length > 0) { |
| return JS('Gamepad', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Gamepad get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Gamepad', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Gamepad get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Gamepad', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Gamepad elementAt(int index) => this[index]; |
| // -- end List<Gamepad> mixins. |
| |
| @DomName('GamepadList.item') |
| @DocsEditable() |
| Gamepad item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLAppletElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-applet-element |
| @deprecated // deprecated |
| abstract class _HTMLAppletElement extends _HTMLElement native "HTMLAppletElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLAppletElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLBaseFontElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#basefont |
| @deprecated // deprecated |
| abstract class _HTMLBaseFontElement extends _HTMLElement native "HTMLBaseFontElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLBaseFontElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLDirectoryElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dir |
| @deprecated // deprecated |
| abstract class _HTMLDirectoryElement extends _HTMLElement native "HTMLDirectoryElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLDirectoryElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFontElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlfontelement |
| @deprecated // deprecated |
| abstract class _HTMLFontElement extends _HTMLElement native "HTMLFontElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLFontElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFrameElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlframeelement |
| @deprecated // deprecated |
| abstract class _HTMLFrameElement extends _HTMLElement native "HTMLFrameElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLFrameElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLFrameSetElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#frameset |
| @deprecated // deprecated |
| abstract class _HTMLFrameSetElement extends _HTMLElement native "HTMLFrameSetElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLFrameSetElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('HTMLMarqueeElement') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-marquee-element |
| @deprecated // deprecated |
| abstract class _HTMLMarqueeElement extends _HTMLElement native "HTMLMarqueeElement" { |
| // To suppress missing implicit constructor warnings. |
| factory _HTMLMarqueeElement._() { throw new UnsupportedError("Not supported"); } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('NamedNodeMap') |
| // http://dom.spec.whatwg.org/#namednodemap |
| @deprecated // deprecated |
| class _NamedNodeMap extends Interceptor with ListMixin<Node>, ImmutableListMixin<Node> implements JavaScriptIndexingBehavior, List<Node> native "NamedNodeMap,MozNamedAttrMap" { |
| |
| @DomName('NamedNodeMap.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| Node operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("Node", "#[#]", this, index); |
| } |
| void operator[]=(int index, Node value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<Node> mixins. |
| // Node is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| Node get first { |
| if (this.length > 0) { |
| return JS('Node', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('Node', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| Node get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('Node', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| Node elementAt(int index) => this[index]; |
| // -- end List<Node> mixins. |
| |
| @DomName('NamedNodeMap.__getter__') |
| @DocsEditable() |
| Node __getter__(String name) native; |
| |
| @DomName('NamedNodeMap.getNamedItem') |
| @DocsEditable() |
| Node getNamedItem(String name) native; |
| |
| @DomName('NamedNodeMap.getNamedItemNS') |
| @DocsEditable() |
| Node getNamedItemNS(String namespaceURI, String localName) native; |
| |
| @DomName('NamedNodeMap.item') |
| @DocsEditable() |
| Node item(int index) native; |
| |
| @DomName('NamedNodeMap.removeNamedItem') |
| @DocsEditable() |
| Node removeNamedItem(String name) native; |
| |
| @DomName('NamedNodeMap.removeNamedItemNS') |
| @DocsEditable() |
| Node removeNamedItemNS(String namespaceURI, String localName) native; |
| |
| @DomName('NamedNodeMap.setNamedItem') |
| @DocsEditable() |
| Node setNamedItem(Node node) native; |
| |
| @DomName('NamedNodeMap.setNamedItemNS') |
| @DocsEditable() |
| Node setNamedItemNS(Node node) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('PagePopupController') |
| @deprecated // nonstandard |
| abstract class _PagePopupController extends Interceptor native "PagePopupController" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('RGBColor') |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| abstract class _RGBColor extends Interceptor native "RGBColor" { |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| // Omit RadioNodeList for dart2js. The Dart Form and FieldSet APIs don't |
| // currently expose an API the returns RadioNodeList. The only use of a |
| // RadioNodeList is to get the selected value and it will be cleaner to |
| // introduce a different API for that purpose. |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('Rect') |
| // http://dev.w3.org/csswg/cssom/ |
| @deprecated // deprecated |
| abstract class _Rect extends Interceptor native "Rect" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SharedWorker') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#shared-workers-and-the-sharedworker-interface |
| @Experimental() |
| abstract class _SharedWorker extends EventTarget implements AbstractWorker native "SharedWorker" { |
| // To suppress missing implicit constructor warnings. |
| factory _SharedWorker._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('SharedWorker.SharedWorker') |
| @DocsEditable() |
| factory _SharedWorker(String scriptURL, [String name]) { |
| if (name != null) { |
| return _SharedWorker._create_1(scriptURL, name); |
| } |
| return _SharedWorker._create_2(scriptURL); |
| } |
| static _SharedWorker _create_1(scriptURL, name) => JS('_SharedWorker', 'new SharedWorker(#,#)', scriptURL, name); |
| static _SharedWorker _create_2(scriptURL) => JS('_SharedWorker', 'new SharedWorker(#)', scriptURL); |
| |
| // From EventTarget |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechInputResultList') |
| // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_result_list_interface |
| @Experimental() |
| class _SpeechInputResultList extends Interceptor with ListMixin<SpeechInputResult>, ImmutableListMixin<SpeechInputResult> implements JavaScriptIndexingBehavior, List<SpeechInputResult> native "SpeechInputResultList" { |
| |
| @DomName('SpeechInputResultList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| SpeechInputResult operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("SpeechInputResult", "#[#]", this, index); |
| } |
| void operator[]=(int index, SpeechInputResult value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<SpeechInputResult> mixins. |
| // SpeechInputResult is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| SpeechInputResult get first { |
| if (this.length > 0) { |
| return JS('SpeechInputResult', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechInputResult get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('SpeechInputResult', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechInputResult get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('SpeechInputResult', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| SpeechInputResult elementAt(int index) => this[index]; |
| // -- end List<SpeechInputResult> mixins. |
| |
| @DomName('SpeechInputResultList.item') |
| @DocsEditable() |
| SpeechInputResult item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('SpeechRecognitionResultList') |
| // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionresultlist |
| @Experimental() |
| class _SpeechRecognitionResultList extends Interceptor with ListMixin<SpeechRecognitionResult>, ImmutableListMixin<SpeechRecognitionResult> implements JavaScriptIndexingBehavior, List<SpeechRecognitionResult> native "SpeechRecognitionResultList" { |
| |
| @DomName('SpeechRecognitionResultList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| SpeechRecognitionResult operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("SpeechRecognitionResult", "#[#]", this, index); |
| } |
| void operator[]=(int index, SpeechRecognitionResult value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<SpeechRecognitionResult> mixins. |
| // SpeechRecognitionResult is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| SpeechRecognitionResult get first { |
| if (this.length > 0) { |
| return JS('SpeechRecognitionResult', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechRecognitionResult get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('SpeechRecognitionResult', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| SpeechRecognitionResult get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('SpeechRecognitionResult', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| SpeechRecognitionResult elementAt(int index) => this[index]; |
| // -- end List<SpeechRecognitionResult> mixins. |
| |
| @DomName('SpeechRecognitionResultList.item') |
| @DocsEditable() |
| SpeechRecognitionResult item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('StyleSheetList') |
| class _StyleSheetList extends Interceptor with ListMixin<StyleSheet>, ImmutableListMixin<StyleSheet> implements JavaScriptIndexingBehavior, List<StyleSheet> native "StyleSheetList" { |
| |
| @DomName('StyleSheetList.length') |
| @DocsEditable() |
| int get length => JS("int", "#.length", this); |
| |
| StyleSheet operator[](int index) { |
| if (JS("bool", "# >>> 0 !== # || # >= #", index, |
| index, index, length)) |
| throw new RangeError.range(index, 0, length); |
| return JS("StyleSheet", "#[#]", this, index); |
| } |
| void operator[]=(int index, StyleSheet value) { |
| throw new UnsupportedError("Cannot assign element of immutable List."); |
| } |
| // -- start List<StyleSheet> mixins. |
| // StyleSheet is the element type. |
| |
| |
| void set length(int value) { |
| throw new UnsupportedError("Cannot resize immutable List."); |
| } |
| |
| StyleSheet get first { |
| if (this.length > 0) { |
| return JS('StyleSheet', '#[0]', this); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| StyleSheet get last { |
| int len = this.length; |
| if (len > 0) { |
| return JS('StyleSheet', '#[#]', this, len - 1); |
| } |
| throw new StateError("No elements"); |
| } |
| |
| StyleSheet get single { |
| int len = this.length; |
| if (len == 1) { |
| return JS('StyleSheet', '#[0]', this); |
| } |
| if (len == 0) throw new StateError("No elements"); |
| throw new StateError("More than one element"); |
| } |
| |
| StyleSheet elementAt(int index) => this[index]; |
| // -- end List<StyleSheet> mixins. |
| |
| @DomName('StyleSheetList.__getter__') |
| @DocsEditable() |
| CssStyleSheet __getter__(String name) native; |
| |
| @DomName('StyleSheetList.item') |
| @DocsEditable() |
| StyleSheet item(int index) native; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitMediaSource') |
| @Experimental() // untriaged |
| abstract class _WebKitMediaSource extends EventTarget native "WebKitMediaSource" { |
| // To suppress missing implicit constructor warnings. |
| factory _WebKitMediaSource._() { throw new UnsupportedError("Not supported"); } |
| |
| @DomName('WebKitMediaSource.WebKitMediaSource') |
| @DocsEditable() |
| factory _WebKitMediaSource() { |
| return _WebKitMediaSource._create_1(); |
| } |
| static _WebKitMediaSource _create_1() => JS('_WebKitMediaSource', 'new WebKitMediaSource()'); |
| |
| // From EventTarget |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitSourceBuffer') |
| @Experimental() // untriaged |
| abstract class _WebKitSourceBuffer extends Interceptor native "WebKitSourceBuffer" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WebKitSourceBufferList') |
| @Experimental() // untriaged |
| abstract class _WebKitSourceBufferList extends EventTarget native "WebKitSourceBufferList" { |
| // To suppress missing implicit constructor warnings. |
| factory _WebKitSourceBufferList._() { throw new UnsupportedError("Not supported"); } |
| |
| @JSName('item') |
| @DomName('WebKitSourceBufferList.item') |
| @DocsEditable() |
| @Experimental() // untriaged |
| _WebKitSourceBuffer _item(int index) native; |
| |
| // From EventTarget |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WorkerLocation') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerlocation |
| @Experimental() |
| abstract class _WorkerLocation extends Interceptor native "WorkerLocation" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| @DocsEditable() |
| @DomName('WorkerNavigator') |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workernavigator |
| @Experimental() |
| abstract class _WorkerNavigator extends Interceptor native "WorkerNavigator" { |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| abstract class _AttributeMap implements Map<String, String> { |
| final Element _element; |
| |
| _AttributeMap(this._element); |
| |
| bool containsValue(String value) { |
| for (var v in this.values) { |
| if (value == v) { |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| String putIfAbsent(String key, String ifAbsent()) { |
| if (!containsKey(key)) { |
| this[key] = ifAbsent(); |
| } |
| return this[key]; |
| } |
| |
| void clear() { |
| for (var key in keys) { |
| remove(key); |
| } |
| } |
| |
| void forEach(void f(String key, String value)) { |
| for (var key in keys) { |
| var value = this[key]; |
| f(key, value); |
| } |
| } |
| |
| Iterable<String> get keys { |
| // TODO: generate a lazy collection instead. |
| var attributes = _element.$dom_attributes; |
| var keys = new List<String>(); |
| for (int i = 0, len = attributes.length; i < len; i++) { |
| if (_matches(attributes[i])) { |
| keys.add(attributes[i].name); |
| } |
| } |
| return keys; |
| } |
| |
| Iterable<String> get values { |
| // TODO: generate a lazy collection instead. |
| var attributes = _element.$dom_attributes; |
| var values = new List<String>(); |
| for (int i = 0, len = attributes.length; i < len; i++) { |
| if (_matches(attributes[i])) { |
| values.add(attributes[i].value); |
| } |
| } |
| return values; |
| } |
| |
| /** |
| * Returns true if there is no {key, value} pair in the map. |
| */ |
| bool get isEmpty { |
| return length == 0; |
| } |
| |
| /** |
| * Returns true if there is at least one {key, value} pair in the map. |
| */ |
| bool get isNotEmpty => !isEmpty; |
| |
| /** |
| * Checks to see if the node should be included in this map. |
| */ |
| bool _matches(Node node); |
| } |
| |
| /** |
| * Wrapper to expose [Element.attributes] as a typed map. |
| */ |
| class _ElementAttributeMap extends _AttributeMap { |
| |
| _ElementAttributeMap(Element element): super(element); |
| |
| bool containsKey(String key) { |
| return _element.$dom_hasAttribute(key); |
| } |
| |
| String operator [](String key) { |
| return _element.$dom_getAttribute(key); |
| } |
| |
| void operator []=(String key, String value) { |
| _element.$dom_setAttribute(key, value); |
| } |
| |
| String remove(String key) { |
| String value = _element.$dom_getAttribute(key); |
| _element.$dom_removeAttribute(key); |
| return value; |
| } |
| |
| /** |
| * The number of {key, value} pairs in the map. |
| */ |
| int get length { |
| return keys.length; |
| } |
| |
| bool _matches(Node node) => node.$dom_namespaceUri == null; |
| } |
| |
| /** |
| * Wrapper to expose namespaced attributes as a typed map. |
| */ |
| class _NamespacedAttributeMap extends _AttributeMap { |
| |
| final String _namespace; |
| |
| _NamespacedAttributeMap(Element element, this._namespace): super(element); |
| |
| bool containsKey(String key) { |
| return _element.$dom_hasAttributeNS(_namespace, key); |
| } |
| |
| String operator [](String key) { |
| return _element.$dom_getAttributeNS(_namespace, key); |
| } |
| |
| void operator []=(String key, String value) { |
| _element.$dom_setAttributeNS(_namespace, key, value); |
| } |
| |
| String remove(String key) { |
| String value = this[key]; |
| _element.$dom_removeAttributeNS(_namespace, key); |
| return value; |
| } |
| |
| /** |
| * The number of {key, value} pairs in the map. |
| */ |
| int get length { |
| return keys.length; |
| } |
| |
| bool _matches(Node node) => node.$dom_namespaceUri == _namespace; |
| } |
| |
| |
| /** |
| * Provides a Map abstraction on top of data-* attributes, similar to the |
| * dataSet in the old DOM. |
| */ |
| class _DataAttributeMap implements Map<String, String> { |
| |
| final Map<String, String> $dom_attributes; |
| |
| _DataAttributeMap(this.$dom_attributes); |
| |
| // interface Map |
| |
| // TODO: Use lazy iterator when it is available on Map. |
| bool containsValue(String value) => values.any((v) => v == value); |
| |
| bool containsKey(String key) => $dom_attributes.containsKey(_attr(key)); |
| |
| String operator [](String key) => $dom_attributes[_attr(key)]; |
| |
| void operator []=(String key, String value) { |
| $dom_attributes[_attr(key)] = value; |
| } |
| |
| String putIfAbsent(String key, String ifAbsent()) => |
| $dom_attributes.putIfAbsent(_attr(key), ifAbsent); |
| |
| String remove(String key) => $dom_attributes.remove(_attr(key)); |
| |
| void clear() { |
| // Needs to operate on a snapshot since we are mutating the collection. |
| for (String key in keys) { |
| remove(key); |
| } |
| } |
| |
| void forEach(void f(String key, String value)) { |
| $dom_attributes.forEach((String key, String value) { |
| if (_matches(key)) { |
| f(_strip(key), value); |
| } |
| }); |
| } |
| |
| Iterable<String> get keys { |
| final keys = new List<String>(); |
| $dom_attributes.forEach((String key, String value) { |
| if (_matches(key)) { |
| keys.add(_strip(key)); |
| } |
| }); |
| return keys; |
| } |
| |
| Iterable<String> get values { |
| final values = new List<String>(); |
| $dom_attributes.forEach((String key, String value) { |
| if (_matches(key)) { |
| values.add(value); |
| } |
| }); |
| return values; |
| } |
| |
| int get length => keys.length; |
| |
| // TODO: Use lazy iterator when it is available on Map. |
| bool get isEmpty => length == 0; |
| |
| bool get isNotEmpty => !isEmpty; |
| |
| // Helpers. |
| String _attr(String key) => 'data-$key'; |
| bool _matches(String key) => key.startsWith('data-'); |
| String _strip(String key) => key.substring(5); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * An object that can be drawn to a [CanvasRenderingContext2D] object with |
| * [CanvasRenderingContext2D.drawImage], |
| * [CanvasRenderingContext2D.drawImageToRect], |
| * [CanvasRenderingContext2D.drawImageScaled], or |
| * [CanvasRenderingContext2D.drawImageScaledFromSource]. |
| * |
| * If the CanvasImageSource is an [ImageElement] then the element's image is |
| * used. If the [ImageElement] is an animated image, then the poster frame is |
| * used. If there is no poster frame, then the first frame of animation is used. |
| * |
| * If the CanvasImageSource is a [VideoElement] then the frame at the current |
| * playback position is used as the image. |
| * |
| * If the CanvasImageSource is a [CanvasElement] then the element's bitmap is |
| * used. |
| * |
| * ** Note: ** Currently, all versions of Internet Explorer do not support |
| * drawing a VideoElement to a canvas. Also, you may experience problems drawing |
| * a video to a canvas in Firefox if the source of the video is a data URL. |
| * |
| * See also: |
| * |
| * * [CanvasImageSource](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#image-sources-for-2d-rendering-contexts) |
| * from the WHATWG. |
| * * [drawImage](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage) |
| * from the WHATWG. |
| */ |
| abstract class CanvasImageSource {} |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * An object representing the top-level context object for web scripting. |
| * |
| * In a web browser, a [Window] object represents the actual browser window. |
| * In a multi-tabbed browser, each tab has its own [Window] object. A [Window] |
| * is the container that displays a [Document]'s content. All web scripting |
| * happens within the context of a [Window] object. |
| * |
| * **Note:** This class represents any window, whereas [Window] is |
| * used to access the properties and content of the current window. |
| * |
| * See also: |
| * |
| * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN. |
| * * [Window](http://www.w3.org/TR/Window/) from the W3C. |
| */ |
| abstract class WindowBase { |
| // Fields. |
| |
| /** |
| * The current location of this window. |
| * |
| * Location currentLocation = window.location; |
| * print(currentLocation.href); // 'http://www.example.com:80/' |
| */ |
| LocationBase get location; |
| HistoryBase get history; |
| |
| /** |
| * Indicates whether this window has been closed. |
| * |
| * print(window.closed); // 'false' |
| * window.close(); |
| * print(window.closed); // 'true' |
| */ |
| bool get closed; |
| |
| /** |
| * A reference to the window that opened this one. |
| * |
| * Window thisWindow = window; |
| * WindowBase otherWindow = thisWindow.open('http://www.example.com/', 'foo'); |
| * print(otherWindow.opener == thisWindow); // 'true' |
| */ |
| WindowBase get opener; |
| |
| /** |
| * A reference to the parent of this window. |
| * |
| * If this [WindowBase] has no parent, [parent] will return a reference to |
| * the [WindowBase] itself. |
| * |
| * IFrameElement myIFrame = new IFrameElement(); |
| * window.document.body.elements.add(myIFrame); |
| * print(myIframe.contentWindow.parent == window) // 'true' |
| * |
| * print(window.parent == window) // 'true' |
| */ |
| WindowBase get parent; |
| |
| /** |
| * A reference to the topmost window in the window hierarchy. |
| * |
| * If this [WindowBase] is the topmost [WindowBase], [top] will return a |
| * reference to the [WindowBase] itself. |
| * |
| * // Add an IFrame to the current window. |
| * IFrameElement myIFrame = new IFrameElement(); |
| * window.document.body.elements.add(myIFrame); |
| * |
| * // Add an IFrame inside of the other IFrame. |
| * IFrameElement innerIFrame = new IFrameElement(); |
| * myIFrame.elements.add(innerIFrame); |
| * |
| * print(myIframe.contentWindow.top == window) // 'true' |
| * print(innerIFrame.contentWindow.top == window) // 'true' |
| * |
| * print(window.top == window) // 'true' |
| */ |
| WindowBase get top; |
| |
| // Methods. |
| /** |
| * Closes the window. |
| * |
| * This method should only succeed if the [WindowBase] object is |
| * **script-closeable** and the window calling [close] is allowed to navigate |
| * the window. |
| * |
| * A window is script-closeable if it is either a window |
| * that was opened by another window, or if it is a window with only one |
| * document in its history. |
| * |
| * A window might not be allowed to navigate, and therefore close, another |
| * window due to browser security features. |
| * |
| * var other = window.open('http://www.example.com', 'foo'); |
| * // Closes other window, as it is script-closeable. |
| * other.close(); |
| * print(other.closed()); // 'true' |
| * |
| * window.location('http://www.mysite.com', 'foo'); |
| * // Does not close this window, as the history has changed. |
| * window.close(); |
| * print(window.closed()); // 'false' |
| * |
| * See also: |
| * |
| * * [Window close discussion](http://www.w3.org/TR/html5/browsers.html#dom-window-close) from the W3C |
| */ |
| void close(); |
| void postMessage(var message, String targetOrigin, [List messagePorts]); |
| } |
| |
| abstract class LocationBase { |
| void set href(String val); |
| } |
| |
| abstract class HistoryBase { |
| void back(); |
| void forward(); |
| void go(int distance); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** A Set that stores the CSS class names for an element. */ |
| abstract class CssClassSet implements Set<String> { |
| |
| /** |
| * Adds the class [value] to the element if it is not on it, removes it if it |
| * is. |
| * |
| * If [shouldAdd] is true, then we always add that [value] to the element. If |
| * [shouldAdd] is false then we always remove [value] from the element. |
| */ |
| bool toggle(String value, [bool shouldAdd]); |
| |
| /** |
| * Returns [:true:] if classes cannot be added or removed from this |
| * [:CssClassSet:]. |
| */ |
| bool get frozen; |
| |
| /** |
| * Determine if this element contains the class [value]. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [hasClass](http://api.jquery.com/hasClass/). |
| */ |
| bool contains(String value); |
| |
| /** |
| * Add the class [value] to element. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [addClass](http://api.jquery.com/addClass/). |
| */ |
| void add(String value); |
| |
| /** |
| * Remove the class [value] from element, and return true on successful |
| * removal. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [removeClass](http://api.jquery.com/removeClass/). |
| */ |
| bool remove(Object value); |
| |
| /** |
| * Add all classes specified in [iterable] to element. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [addClass](http://api.jquery.com/addClass/). |
| */ |
| void addAll(Iterable<String> iterable); |
| |
| /** |
| * Remove all classes specified in [iterable] from element. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [removeClass](http://api.jquery.com/removeClass/). |
| */ |
| void removeAll(Iterable<String> iterable); |
| |
| /** |
| * Toggles all classes specified in [iterable] on element. |
| * |
| * Iterate through [iterable]'s items, and add it if it is not on it, or |
| * remove it if it is. This is the Dart equivalent of jQuery's |
| * [toggleClass](http://api.jquery.com/toggleClass/). |
| * If [shouldAdd] is true, then we always add all the classes in [iterable] |
| * element. If [shouldAdd] is false then we always remove all the classes in |
| * [iterable] from the element. |
| */ |
| void toggleAll(Iterable<String> iterable, [bool shouldAdd]); |
| } |
| |
| /** |
| * A set (union) of the CSS classes that are present in a set of elements. |
| * Implemented separately from _ElementCssClassSet for performance. |
| */ |
| class _MultiElementCssClassSet extends CssClassSetImpl { |
| final Iterable<Element> _elementIterable; |
| Iterable<_ElementCssClassSet> _elementCssClassSetIterable; |
| |
| _MultiElementCssClassSet(this._elementIterable) { |
| _elementCssClassSetIterable = new List.from(_elementIterable).map( |
| (e) => new _ElementCssClassSet(e)); |
| } |
| |
| Set<String> readClasses() { |
| var s = new LinkedHashSet<String>(); |
| _elementCssClassSetIterable.forEach((e) => s.addAll(e.readClasses())); |
| return s; |
| } |
| |
| void writeClasses(Set<String> s) { |
| var classes = new List.from(s).join(' '); |
| for (Element e in _elementIterable) { |
| e.className = classes; |
| } |
| } |
| |
| /** |
| * Helper method used to modify the set of css classes on this element. |
| * |
| * f - callback with: |
| * s - a Set of all the css class name currently on this element. |
| * |
| * After f returns, the modified set is written to the |
| * className property of this element. |
| */ |
| void modify( f(Set<String> s)) { |
| _elementCssClassSetIterable.forEach((e) => e.modify(f)); |
| } |
| |
| /** |
| * Adds the class [value] to the element if it is not on it, removes it if it |
| * is. |
| */ |
| bool toggle(String value, [bool shouldAdd]) => |
| _modifyWithReturnValue((e) => e.toggle(value, shouldAdd)); |
| |
| /** |
| * Remove the class [value] from element, and return true on successful |
| * removal. |
| * |
| * This is the Dart equivalent of jQuery's |
| * [removeClass](http://api.jquery.com/removeClass/). |
| */ |
| bool remove(Object value) => _modifyWithReturnValue((e) => e.remove(value)); |
| |
| bool _modifyWithReturnValue(f) => _elementCssClassSetIterable.fold( |
| false, (prevValue, element) => f(element) || prevValue); |
| } |
| |
| class _ElementCssClassSet extends CssClassSetImpl { |
| |
| final Element _element; |
| |
| _ElementCssClassSet(this._element); |
| |
| Set<String> readClasses() { |
| var s = new LinkedHashSet<String>(); |
| var classname = _element.className; |
| |
| for (String name in classname.split(' ')) { |
| String trimmed = name.trim(); |
| if (!trimmed.isEmpty) { |
| s.add(trimmed); |
| } |
| } |
| return s; |
| } |
| |
| void writeClasses(Set<String> s) { |
| List list = new List.from(s); |
| _element.className = s.join(' '); |
| } |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * A rectangle representing all the content of the element in the |
| * [box model](http://www.w3.org/TR/CSS2/box.html). |
| */ |
| class _ContentCssRect extends CssRect { |
| |
| _ContentCssRect(element) : super(element); |
| |
| num get height => _element.offsetHeight + |
| _addOrSubtractToBoxModel(_HEIGHT, _CONTENT); |
| |
| num get width => _element.offsetWidth + |
| _addOrSubtractToBoxModel(_WIDTH, _CONTENT); |
| |
| /** |
| * Set the height to `newHeight`. |
| * |
| * newHeight can be either a [num] representing the height in pixels or a |
| * [Dimension] object. Values of newHeight that are less than zero are |
| * converted to effectively setting the height to 0. This is equivalent to the |
| * `height` function in jQuery and the calculated `height` CSS value, |
| * converted to a num in pixels. |
| */ |
| void set height(newHeight) { |
| if (newHeight is Dimension) { |
| if (newHeight.value < 0) newHeight = new Dimension.px(0); |
| _element.style.height = newHeight.toString(); |
| } else { |
| if (newHeight < 0) newHeight = 0; |
| _element.style.height = '${newHeight}px'; |
| } |
| } |
| |
| /** |
| * Set the current computed width in pixels of this element. |
| * |
| * newWidth can be either a [num] representing the width in pixels or a |
| * [Dimension] object. This is equivalent to the `width` function in jQuery |
| * and the calculated |
| * `width` CSS value, converted to a dimensionless num in pixels. |
| */ |
| void set width(newWidth) { |
| if (newWidth is Dimension) { |
| if (newWidth.value < 0) newWidth = new Dimension.px(0); |
| _element.style.width = newWidth.toString(); |
| } else { |
| if (newWidth < 0) newWidth = 0; |
| _element.style.width = '${newWidth}px'; |
| } |
| } |
| |
| num get left => _element.getBoundingClientRect().left - |
| _addOrSubtractToBoxModel(['left'], _CONTENT); |
| num get top => _element.getBoundingClientRect().top - |
| _addOrSubtractToBoxModel(['top'], _CONTENT); |
| } |
| |
| /** |
| * A list of element content rectangles in the |
| * [box model](http://www.w3.org/TR/CSS2/box.html). |
| */ |
| class _ContentCssListRect extends _ContentCssRect { |
| List<Element> _elementList; |
| |
| _ContentCssListRect(elementList) : super(elementList.first) { |
| _elementList = elementList; |
| } |
| |
| /** |
| * Set the height to `newHeight`. |
| * |
| * Values of newHeight that are less than zero are converted to effectively |
| * setting the height to 0. This is equivalent to the `height` |
| * function in jQuery and the calculated `height` CSS value, converted to a |
| * num in pixels. |
| */ |
| void set height(newHeight) { |
| _elementList.forEach((e) => e.contentEdge.height = newHeight); |
| } |
| |
| /** |
| * Set the current computed width in pixels of this element. |
| * |
| * This is equivalent to the `width` function in jQuery and the calculated |
| * `width` CSS value, converted to a dimensionless num in pixels. |
| */ |
| void set width(newWidth) { |
| _elementList.forEach((e) => e.contentEdge.width = newWidth); |
| } |
| } |
| |
| /** |
| * A rectangle representing the dimensions of the space occupied by the |
| * element's content + padding in the |
| * [box model](http://www.w3.org/TR/CSS2/box.html). |
| */ |
| class _PaddingCssRect extends CssRect { |
| _PaddingCssRect(element) : super(element); |
| num get height => _element.offsetHeight + |
| _addOrSubtractToBoxModel(_HEIGHT, _PADDING); |
| num get width => _element.offsetWidth + |
| _addOrSubtractToBoxModel(_WIDTH, _PADDING); |
| |
| num get left => _element.getBoundingClientRect().left - |
| _addOrSubtractToBoxModel(['left'], _PADDING); |
| num get top => _element.getBoundingClientRect().top - |
| _addOrSubtractToBoxModel(['top'], _PADDING); |
| } |
| |
| /** |
| * A rectangle representing the dimensions of the space occupied by the |
| * element's content + padding + border in the |
| * [box model](http://www.w3.org/TR/CSS2/box.html). |
| */ |
| class _BorderCssRect extends CssRect { |
| _BorderCssRect(element) : super(element); |
| num get height => _element.offsetHeight; |
| num get width => _element.offsetWidth; |
| |
| num get left => _element.getBoundingClientRect().left; |
| num get top => _element.getBoundingClientRect().top; |
| } |
| |
| /** |
| * A rectangle representing the dimensions of the space occupied by the |
| * element's content + padding + border + margin in the |
| * [box model](http://www.w3.org/TR/CSS2/box.html). |
| */ |
| class _MarginCssRect extends CssRect { |
| _MarginCssRect(element) : super(element); |
| num get height => _element.offsetHeight + |
| _addOrSubtractToBoxModel(_HEIGHT, _MARGIN); |
| num get width => |
| _element.offsetWidth + _addOrSubtractToBoxModel(_WIDTH, _MARGIN); |
| |
| num get left => _element.getBoundingClientRect().left - |
| _addOrSubtractToBoxModel(['left'], _MARGIN); |
| num get top => _element.getBoundingClientRect().top - |
| _addOrSubtractToBoxModel(['top'], _MARGIN); |
| } |
| |
| /** |
| * A class for representing CSS dimensions. |
| * |
| * In contrast to the more general purpose [Rect] class, this class's values are |
| * mutable, so one can change the height of an element programmatically. |
| * |
| * _Important_ _note_: use of these methods will perform CSS calculations that |
| * can trigger a browser reflow. Therefore, use of these properties _during_ an |
| * animation frame is discouraged. See also: |
| * [Browser Reflow](https://developers.google.com/speed/articles/reflow) |
| */ |
| abstract class CssRect extends RectBase implements Rect { |
| Element _element; |
| |
| CssRect(this._element); |
| |
| num get left; |
| |
| num get top; |
| |
| /** |
| * The height of this rectangle. |
| * |
| * This is equivalent to the `height` function in jQuery and the calculated |
| * `height` CSS value, converted to a dimensionless num in pixels. Unlike |
| * [getBoundingClientRect], `height` will return the same numerical width if |
| * the element is hidden or not. |
| */ |
| num get height; |
| |
| /** |
| * The width of this rectangle. |
| * |
| * This is equivalent to the `width` function in jQuery and the calculated |
| * `width` CSS value, converted to a dimensionless num in pixels. Unlike |
| * [getBoundingClientRect], `width` will return the same numerical width if |
| * the element is hidden or not. |
| */ |
| num get width; |
| |
| /** |
| * Set the height to `newHeight`. |
| * |
| * newHeight can be either a [num] representing the height in pixels or a |
| * [Dimension] object. Values of newHeight that are less than zero are |
| * converted to effectively setting the height to 0. This is equivalent to the |
| * `height` function in jQuery and the calculated `height` CSS value, |
| * converted to a num in pixels. |
| * |
| * Note that only the content height can actually be set via this method. |
| */ |
| void set height(newHeight) { |
| throw new UnsupportedError("Can only set height for content rect."); |
| } |
| |
| /** |
| * Set the current computed width in pixels of this element. |
| * |
| * newWidth can be either a [num] representing the width in pixels or a |
| * [Dimension] object. This is equivalent to the `width` function in jQuery |
| * and the calculated |
| * `width` CSS value, converted to a dimensionless num in pixels. |
| * |
| * Note that only the content width can be set via this method. |
| */ |
| void set width(newWidth) { |
| throw new UnsupportedError("Can only set width for content rect."); |
| } |
| |
| /** |
| * Return a value that is used to modify the initial height or width |
| * measurement of an element. Depending on the value (ideally an enum) passed |
| * to augmentingMeasurement, we may need to add or subtract margin, padding, |
| * or border values, depending on the measurement we're trying to obtain. |
| */ |
| num _addOrSubtractToBoxModel(List<String> dimensions, |
| String augmentingMeasurement) { |
| // getComputedStyle always returns pixel values (hence, computed), so we're |
| // always dealing with pixels in this method. |
| var styles = _element.getComputedStyle(); |
| |
| var val = 0; |
| |
| for (String measurement in dimensions) { |
| // The border-box and default box model both exclude margin in the regular |
| // height/width calculation, so add it if we want it for this measurement. |
| if (augmentingMeasurement == _MARGIN) { |
| val += new Dimension.css(styles.getPropertyValue( |
| '$augmentingMeasurement-$measurement')).value; |
| } |
| |
| // The border-box includes padding and border, so remove it if we want |
| // just the content itself. |
| if (augmentingMeasurement == _CONTENT) { |
| val -= new Dimension.css( |
| styles.getPropertyValue('${_PADDING}-$measurement')).value; |
| } |
| |
| // At this point, we don't wan't to augment with border or margin, |
| // so remove border. |
| if (augmentingMeasurement != _MARGIN) { |
| val -= new Dimension.css(styles.getPropertyValue( |
| 'border-${measurement}-width')).value; |
| } |
| } |
| return val; |
| } |
| } |
| |
| final _HEIGHT = ['top', 'bottom']; |
| final _WIDTH = ['right', 'left']; |
| final _CONTENT = 'content'; |
| final _PADDING = 'padding'; |
| final _MARGIN = 'margin'; |
| |
| /** |
| * Class representing a |
| * [length measurement](https://developer.mozilla.org/en-US/docs/Web/CSS/length) |
| * in CSS. |
| */ |
| @Experimental() |
| class Dimension { |
| num _value; |
| String _unit; |
| |
| /** Set this CSS Dimension to a percentage `value`. */ |
| Dimension.percent(this._value) : _unit = '%'; |
| |
| /** Set this CSS Dimension to a pixel `value`. */ |
| Dimension.px(this._value) : _unit = 'px'; |
| |
| /** Set this CSS Dimension to a pica `value`. */ |
| Dimension.pc(this._value) : _unit = 'pc'; |
| |
| /** Set this CSS Dimension to a point `value`. */ |
| Dimension.pt(this._value) : _unit = 'pt'; |
| |
| /** Set this CSS Dimension to an inch `value`. */ |
| Dimension.inch(this._value) : _unit = 'in'; |
| |
| /** Set this CSS Dimension to a centimeter `value`. */ |
| Dimension.cm(this._value) : _unit = 'cm'; |
| |
| /** Set this CSS Dimension to a millimeter `value`. */ |
| Dimension.mm(this._value) : _unit = 'mm'; |
| |
| /** |
| * Set this CSS Dimension to the specified number of ems. |
| * |
| * 1em is equal to the current font size. (So 2ems is equal to double the font |
| * size). This is useful for producing website layouts that scale nicely with |
| * the user's desired font size. |
| */ |
| Dimension.em(this._value) : _unit = 'em'; |
| |
| /** |
| * Set this CSS Dimension to the specified number of x-heights. |
| * |
| * One ex is equal to the the x-height of a font's baseline to its mean line, |
| * generally the height of the letter "x" in the font, which is usually about |
| * half the font-size. |
| */ |
| Dimension.ex(this._value) : _unit = 'ex'; |
| |
| /** |
| * Construct a Dimension object from the valid, simple CSS string `cssValue` |
| * that represents a distance measurement. |
| * |
| * This constructor is intended as a convenience method for working with |
| * simplistic CSS length measurements. Non-numeric values such as `auto` or |
| * `inherit` or invalid CSS will cause this constructor to throw a |
| * FormatError. |
| */ |
| Dimension.css(String cssValue) { |
| if (cssValue == '') cssValue = '0px'; |
| if (cssValue.endsWith('%')) { |
| _unit = '%'; |
| } else { |
| _unit = cssValue.substring(cssValue.length - 2); |
| } |
| if (cssValue.contains('.')) { |
| _value = double.parse(cssValue.substring(0, |
| cssValue.length - _unit.length)); |
| } else { |
| _value = int.parse(cssValue.substring(0, cssValue.length - _unit.length)); |
| } |
| } |
| |
| /** Print out the CSS String representation of this value. */ |
| String toString() { |
| return '${_value}${_unit}'; |
| } |
| |
| /** Return a unitless, numerical value of this CSS value. */ |
| num get value => this._value; |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| typedef EventListener(Event event); |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Adapter for exposing DOM events as Dart streams. |
| */ |
| class _EventStream<T extends Event> extends Stream<T> { |
| final EventTarget _target; |
| final String _eventType; |
| final bool _useCapture; |
| |
| _EventStream(this._target, this._eventType, this._useCapture); |
| |
| // DOM events are inherently multi-subscribers. |
| Stream<T> asBroadcastStream({void onListen(StreamSubscription subscription), |
| void onCancel(StreamSubscription subscription)}) |
| => this; |
| bool get isBroadcast => true; |
| |
| StreamSubscription<T> listen(void onData(T event), |
| { void onError(error), |
| void onDone(), |
| bool cancelOnError}) { |
| |
| return new _EventStreamSubscription<T>( |
| this._target, this._eventType, onData, this._useCapture); |
| } |
| } |
| |
| /** A specialized Stream available to [Element]s to enable event delegation. */ |
| abstract class ElementStream<T extends Event> implements Stream<T> { |
| /** |
| * Return a stream that only fires when the particular event fires for |
| * elements matching the specified CSS selector. |
| * |
| * This is the Dart equivalent to jQuery's |
| * [delegate](http://api.jquery.com/delegate/). |
| */ |
| Stream<T> matches(String selector); |
| } |
| |
| /** |
| * Adapter for exposing DOM Element events as streams, while also allowing |
| * event delegation. |
| */ |
| class _ElementEventStreamImpl<T extends Event> extends _EventStream<T> |
| implements ElementStream<T> { |
| _ElementEventStreamImpl(target, eventType, useCapture) : |
| super(target, eventType, useCapture); |
| |
| Stream<T> matches(String selector) => |
| this.where((event) => event.target.matchesWithAncestors(selector)); |
| } |
| |
| /** |
| * Adapter for exposing events on a collection of DOM Elements as streams, |
| * while also allowing event delegation. |
| */ |
| class _ElementListEventStreamImpl<T extends Event> extends Stream<T> |
| implements ElementStream<T> { |
| final _StreamPool _pool; |
| Stream<T> _stream; |
| |
| _ElementListEventStreamImpl(targetList, eventType, useCapture) : |
| _pool = new _StreamPool.broadcast() { |
| for (Element target in targetList) { |
| var stream = new _EventStream(target, eventType, useCapture); |
| _pool.add(stream); |
| } |
| _stream = _pool.stream; |
| } |
| |
| Stream<T> matches(String selector) => |
| this.where((event) => event.target.matchesWithAncestors(selector)); |
| |
| // Delegate all regular Stream behavor to our wrapped Stream. |
| StreamSubscription<T> listen(void onData(T event), |
| { void onError(error), |
| void onDone(), |
| bool cancelOnError}) => |
| _stream.listen(onData, onError: onError, onDone: onDone, |
| cancelOnError: cancelOnError); |
| Stream<T> asBroadcastStream({void onListen(StreamSubscription subscription), |
| void onCancel(StreamSubscription subscription)}) |
| => _stream; |
| bool get isBroadcast => true; |
| } |
| |
| /** |
| * A pool of streams whose events are unified and emitted through a central |
| * stream. |
| */ |
| // TODO (efortuna): Remove this when Issue 12218 is addressed. |
| class _StreamPool<T> { |
| StreamController<T> _controller; |
| |
| /// Subscriptions to the streams that make up the pool. |
| var _subscriptions = new Map<Stream<T>, StreamSubscription<T>>(); |
| |
| /** |
| * Creates a new stream pool where [stream] can be listened to more than |
| * once. |
| * |
| * Any events from buffered streams in the pool will be emitted immediately, |
| * regardless of whether [stream] has any subscribers. |
| */ |
| _StreamPool.broadcast() { |
| _controller = new StreamController<T>.broadcast(sync: true, |
| onCancel: close); |
| } |
| |
| /** |
| * The stream through which all events from streams in the pool are emitted. |
| */ |
| Stream<T> get stream => _controller.stream; |
| |
| /** |
| * Adds [stream] as a member of this pool. |
| * |
| * Any events from [stream] will be emitted through [this.stream]. If |
| * [stream] is sync, they'll be emitted synchronously; if [stream] is async, |
| * they'll be emitted asynchronously. |
| */ |
| void add(Stream<T> stream) { |
| if (_subscriptions.containsKey(stream)) return; |
| _subscriptions[stream] = stream.listen(_controller.add, |
| onError: _controller.addError, |
| onDone: () => remove(stream)); |
| } |
| |
| /** Removes [stream] as a member of this pool. */ |
| void remove(Stream<T> stream) { |
| var subscription = _subscriptions.remove(stream); |
| if (subscription != null) subscription.cancel(); |
| } |
| |
| /** Removes all streams from this pool and closes [stream]. */ |
| void close() { |
| for (var subscription in _subscriptions.values) { |
| subscription.cancel(); |
| } |
| _subscriptions.clear(); |
| _controller.close(); |
| } |
| } |
| |
| class _EventStreamSubscription<T extends Event> extends StreamSubscription<T> { |
| int _pauseCount = 0; |
| EventTarget _target; |
| final String _eventType; |
| var _onData; |
| final bool _useCapture; |
| |
| _EventStreamSubscription(this._target, this._eventType, this._onData, |
| this._useCapture) { |
| _tryResume(); |
| } |
| |
| void cancel() { |
| if (_canceled) return; |
| |
| _unlisten(); |
| // Clear out the target to indicate this is complete. |
| _target = null; |
| _onData = null; |
| } |
| |
| bool get _canceled => _target == null; |
| |
| void onData(void handleData(T event)) { |
| if (_canceled) { |
| throw new StateError("Subscription has been canceled."); |
| } |
| // Remove current event listener. |
| _unlisten(); |
| |
| _onData = handleData; |
| _tryResume(); |
| } |
| |
| /// Has no effect. |
| void onError(void handleError(error)) {} |
| |
| /// Has no effect. |
| void onDone(void handleDone()) {} |
| |
| void pause([Future resumeSignal]) { |
| if (_canceled) return; |
| ++_pauseCount; |
| _unlisten(); |
| |
| if (resumeSignal != null) { |
| resumeSignal.whenComplete(resume); |
| } |
| } |
| |
| bool get isPaused => _pauseCount > 0; |
| |
| void resume() { |
| if (_canceled || !isPaused) return; |
| --_pauseCount; |
| _tryResume(); |
| } |
| |
| void _tryResume() { |
| if (_onData != null && !isPaused) { |
| _target.$dom_addEventListener(_eventType, _onData, _useCapture); |
| } |
| } |
| |
| void _unlisten() { |
| if (_onData != null) { |
| _target.$dom_removeEventListener(_eventType, _onData, _useCapture); |
| } |
| } |
| |
| Future asFuture([var futureValue]) { |
| // We just need a future that will never succeed or fail. |
| Completer completer = new Completer(); |
| return completer.future; |
| } |
| } |
| |
| /** |
| * A factory to expose DOM events as Streams. |
| */ |
| class EventStreamProvider<T extends Event> { |
| final String _eventType; |
| |
| const EventStreamProvider(this._eventType); |
| |
| /** |
| * Gets a [Stream] for this event type, on the specified target. |
| * |
| * This will always return a broadcast stream so multiple listeners can be |
| * used simultaneously. |
| * |
| * This may be used to capture DOM events: |
| * |
| * Element.keyDownEvent.forTarget(element, useCapture: true).listen(...); |
| * |
| * Or for listening to an event which will bubble through the DOM tree: |
| * |
| * MediaElement.pauseEvent.forTarget(document.body).listen(...); |
| * |
| * See also: |
| * |
| * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener) |
| */ |
| Stream<T> forTarget(EventTarget e, {bool useCapture: false}) => |
| new _EventStream(e, _eventType, useCapture); |
| |
| /** |
| * Gets an [ElementEventStream] for this event type, on the specified element. |
| * |
| * This will always return a broadcast stream so multiple listeners can be |
| * used simultaneously. |
| * |
| * This may be used to capture DOM events: |
| * |
| * Element.keyDownEvent.forElement(element, useCapture: true).listen(...); |
| * |
| * See also: |
| * |
| * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener) |
| */ |
| ElementStream<T> forElement(Element e, {bool useCapture: false}) { |
| return new _ElementEventStreamImpl(e, _eventType, useCapture); |
| } |
| |
| /** |
| * Gets an [ElementEventStream] for this event type, on the list of elements. |
| * |
| * This will always return a broadcast stream so multiple listeners can be |
| * used simultaneously. |
| * |
| * This may be used to capture DOM events: |
| * |
| * Element.keyDownEvent._forElementList(element, useCapture: true).listen(...); |
| * |
| * See also: |
| * |
| * [addEventListener](http://docs.webplatform.org/wiki/dom/methods/addEventListener) |
| */ |
| ElementStream<T> _forElementList(ElementList e, {bool useCapture: false}) { |
| return new _ElementListEventStreamImpl(e, _eventType, useCapture); |
| } |
| |
| /** |
| * Gets the type of the event which this would listen for on the specified |
| * event target. |
| * |
| * The target is necessary because some browsers may use different event names |
| * for the same purpose and the target allows differentiating browser support. |
| */ |
| String getEventType(EventTarget target) { |
| return _eventType; |
| } |
| } |
| |
| /** |
| * A factory to expose DOM events as streams, where the DOM event name has to |
| * be determined on the fly (for example, mouse wheel events). |
| */ |
| class _CustomEventStreamProvider<T extends Event> |
| implements EventStreamProvider<T> { |
| |
| final _eventTypeGetter; |
| const _CustomEventStreamProvider(this._eventTypeGetter); |
| |
| Stream<T> forTarget(EventTarget e, {bool useCapture: false}) { |
| return new _EventStream(e, _eventTypeGetter(e), useCapture); |
| } |
| |
| ElementStream<T> forElement(Element e, {bool useCapture: false}) { |
| return new _ElementEventStreamImpl(e, _eventTypeGetter(e), useCapture); |
| } |
| |
| ElementStream<T> _forElementList(ElementList e, |
| {bool useCapture: false}) { |
| return new _ElementListEventStreamImpl(e, _eventTypeGetter(e), useCapture); |
| } |
| |
| String getEventType(EventTarget target) { |
| return _eventTypeGetter(target); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| abstract class ImmutableListMixin<E> implements List<E> { |
| // From Iterable<$E>: |
| Iterator<E> get iterator { |
| // Note: NodeLists are not fixed size. And most probably length shouldn't |
| // be cached in both iterator _and_ forEach method. For now caching it |
| // for consistency. |
| return new FixedSizeListIterator<E>(this); |
| } |
| |
| // From Collection<E>: |
| void add(E value) { |
| throw new UnsupportedError("Cannot add to immutable List."); |
| } |
| |
| void addAll(Iterable<E> iterable) { |
| throw new UnsupportedError("Cannot add to immutable List."); |
| } |
| |
| // From List<E>: |
| void sort([int compare(E a, E b)]) { |
| throw new UnsupportedError("Cannot sort immutable List."); |
| } |
| |
| void insert(int index, E element) { |
| throw new UnsupportedError("Cannot add to immutable List."); |
| } |
| |
| void insertAll(int index, Iterable<E> iterable) { |
| throw new UnsupportedError("Cannot add to immutable List."); |
| } |
| |
| void setAll(int index, Iterable<E> iterable) { |
| throw new UnsupportedError("Cannot modify an immutable List."); |
| } |
| |
| E removeAt(int pos) { |
| throw new UnsupportedError("Cannot remove from immutable List."); |
| } |
| |
| E removeLast() { |
| throw new UnsupportedError("Cannot remove from immutable List."); |
| } |
| |
| bool remove(Object object) { |
| throw new UnsupportedError("Cannot remove from immutable List."); |
| } |
| |
| void removeWhere(bool test(E element)) { |
| throw new UnsupportedError("Cannot remove from immutable List."); |
| } |
| |
| void retainWhere(bool test(E element)) { |
| throw new UnsupportedError("Cannot remove from immutable List."); |
| } |
| |
| void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { |
| throw new UnsupportedError("Cannot setRange on immutable List."); |
| } |
| |
| void removeRange(int start, int end) { |
| throw new UnsupportedError("Cannot removeRange on immutable List."); |
| } |
| |
| void replaceRange(int start, int end, Iterable<E> iterable) { |
| throw new UnsupportedError("Cannot modify an immutable List."); |
| } |
| |
| void fillRange(int start, int end, [E fillValue]) { |
| throw new UnsupportedError("Cannot modify an immutable List."); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Internal class that does the actual calculations to determine keyCode and |
| * charCode for keydown, keypress, and keyup events for all browsers. |
| */ |
| class _KeyboardEventHandler extends EventStreamProvider<KeyEvent> { |
| // This code inspired by Closure's KeyHandling library. |
| // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keyhandler.js.source.html |
| |
| /** |
| * The set of keys that have been pressed down without seeing their |
| * corresponding keyup event. |
| */ |
| final List<KeyboardEvent> _keyDownList = <KeyboardEvent>[]; |
| |
| /** The type of KeyEvent we are tracking (keyup, keydown, keypress). */ |
| final String _type; |
| |
| /** The element we are watching for events to happen on. */ |
| final EventTarget _target; |
| |
| // The distance to shift from upper case alphabet Roman letters to lower case. |
| static final int _ROMAN_ALPHABET_OFFSET = "a".codeUnits[0] - "A".codeUnits[0]; |
| |
| /** Controller to produce KeyEvents for the stream. */ |
| final StreamController _controller = new StreamController(sync: true); |
| |
| static const _EVENT_TYPE = 'KeyEvent'; |
| |
| /** |
| * An enumeration of key identifiers currently part of the W3C draft for DOM3 |
| * and their mappings to keyCodes. |
| * http://www.w3.org/TR/DOM-Level-3-Events/keyset.html#KeySet-Set |
| */ |
| static const Map<String, int> _keyIdentifier = const { |
| 'Up': KeyCode.UP, |
| 'Down': KeyCode.DOWN, |
| 'Left': KeyCode.LEFT, |
| 'Right': KeyCode.RIGHT, |
| 'Enter': KeyCode.ENTER, |
| 'F1': KeyCode.F1, |
| 'F2': KeyCode.F2, |
| 'F3': KeyCode.F3, |
| 'F4': KeyCode.F4, |
| 'F5': KeyCode.F5, |
| 'F6': KeyCode.F6, |
| 'F7': KeyCode.F7, |
| 'F8': KeyCode.F8, |
| 'F9': KeyCode.F9, |
| 'F10': KeyCode.F10, |
| 'F11': KeyCode.F11, |
| 'F12': KeyCode.F12, |
| 'U+007F': KeyCode.DELETE, |
| 'Home': KeyCode.HOME, |
| 'End': KeyCode.END, |
| 'PageUp': KeyCode.PAGE_UP, |
| 'PageDown': KeyCode.PAGE_DOWN, |
| 'Insert': KeyCode.INSERT |
| }; |
| |
| /** Return a stream for KeyEvents for the specified target. */ |
| Stream<KeyEvent> forTarget(EventTarget e, {bool useCapture: false}) { |
| return new _KeyboardEventHandler.initializeAllEventListeners( |
| _type, e).stream; |
| } |
| |
| /** |
| * Accessor to the stream associated with a particular KeyboardEvent |
| * EventTarget. |
| * |
| * [forTarget] must be called to initialize this stream to listen to a |
| * particular EventTarget. |
| */ |
| Stream<KeyEvent> get stream { |
| if(_target != null) { |
| return _controller.stream; |
| } else { |
| throw new StateError("Not initialized. Call forTarget to access a stream " |
| "initialized with a particular EventTarget."); |
| } |
| } |
| |
| /** |
| * General constructor, performs basic initialization for our improved |
| * KeyboardEvent controller. |
| */ |
| _KeyboardEventHandler(this._type) : |
| _target = null, super(_EVENT_TYPE) { |
| } |
| |
| /** |
| * Hook up all event listeners under the covers so we can estimate keycodes |
| * and charcodes when they are not provided. |
| */ |
| _KeyboardEventHandler.initializeAllEventListeners(this._type, this._target) : |
| super(_EVENT_TYPE) { |
| Element.keyDownEvent.forTarget(_target, useCapture: true).listen( |
| processKeyDown); |
| Element.keyPressEvent.forTarget(_target, useCapture: true).listen( |
| processKeyPress); |
| Element.keyUpEvent.forTarget(_target, useCapture: true).listen( |
| processKeyUp); |
| } |
| |
| /** |
| * Notify all callback listeners that a KeyEvent of the relevant type has |
| * occurred. |
| */ |
| bool _dispatch(KeyEvent event) { |
| if (event.type == _type) |
| _controller.add(event); |
| } |
| |
| /** Determine if caps lock is one of the currently depressed keys. */ |
| bool get _capsLockOn => |
| _keyDownList.any((var element) => element.keyCode == KeyCode.CAPS_LOCK); |
| |
| /** |
| * Given the previously recorded keydown key codes, see if we can determine |
| * the keycode of this keypress [event]. (Generally browsers only provide |
| * charCode information for keypress events, but with a little |
| * reverse-engineering, we can also determine the keyCode.) Returns |
| * KeyCode.UNKNOWN if the keycode could not be determined. |
| */ |
| int _determineKeyCodeForKeypress(KeyboardEvent event) { |
| // Note: This function is a work in progress. We'll expand this function |
| // once we get more information about other keyboards. |
| for (var prevEvent in _keyDownList) { |
| if (prevEvent._shadowCharCode == event.charCode) { |
| return prevEvent.keyCode; |
| } |
| if ((event.shiftKey || _capsLockOn) && event.charCode >= "A".codeUnits[0] |
| && event.charCode <= "Z".codeUnits[0] && event.charCode + |
| _ROMAN_ALPHABET_OFFSET == prevEvent._shadowCharCode) { |
| return prevEvent.keyCode; |
| } |
| } |
| return KeyCode.UNKNOWN; |
| } |
| |
| /** |
| * Given the charater code returned from a keyDown [event], try to ascertain |
| * and return the corresponding charCode for the character that was pressed. |
| * This information is not shown to the user, but used to help polyfill |
| * keypress events. |
| */ |
| int _findCharCodeKeyDown(KeyboardEvent event) { |
| if (event.keyLocation == 3) { // Numpad keys. |
| switch (event.keyCode) { |
| case KeyCode.NUM_ZERO: |
| // Even though this function returns _charCodes_, for some cases the |
| // KeyCode == the charCode we want, in which case we use the keycode |
| // constant for readability. |
| return KeyCode.ZERO; |
| case KeyCode.NUM_ONE: |
| return KeyCode.ONE; |
| case KeyCode.NUM_TWO: |
| return KeyCode.TWO; |
| case KeyCode.NUM_THREE: |
| return KeyCode.THREE; |
| case KeyCode.NUM_FOUR: |
| return KeyCode.FOUR; |
| case KeyCode.NUM_FIVE: |
| return KeyCode.FIVE; |
| case KeyCode.NUM_SIX: |
| return KeyCode.SIX; |
| case KeyCode.NUM_SEVEN: |
| return KeyCode.SEVEN; |
| case KeyCode.NUM_EIGHT: |
| return KeyCode.EIGHT; |
| case KeyCode.NUM_NINE: |
| return KeyCode.NINE; |
| case KeyCode.NUM_MULTIPLY: |
| return 42; // Char code for * |
| case KeyCode.NUM_PLUS: |
| return 43; // + |
| case KeyCode.NUM_MINUS: |
| return 45; // - |
| case KeyCode.NUM_PERIOD: |
| return 46; // . |
| case KeyCode.NUM_DIVISION: |
| return 47; // / |
| } |
| } else if (event.keyCode >= 65 && event.keyCode <= 90) { |
| // Set the "char code" for key down as the lower case letter. Again, this |
| // will not show up for the user, but will be helpful in estimating |
| // keyCode locations and other information during the keyPress event. |
| return event.keyCode + _ROMAN_ALPHABET_OFFSET; |
| } |
| switch(event.keyCode) { |
| case KeyCode.SEMICOLON: |
| return KeyCode.FF_SEMICOLON; |
| case KeyCode.EQUALS: |
| return KeyCode.FF_EQUALS; |
| case KeyCode.COMMA: |
| return 44; // Ascii value for , |
| case KeyCode.DASH: |
| return 45; // - |
| case KeyCode.PERIOD: |
| return 46; // . |
| case KeyCode.SLASH: |
| return 47; // / |
| case KeyCode.APOSTROPHE: |
| return 96; // ` |
| case KeyCode.OPEN_SQUARE_BRACKET: |
| return 91; // [ |
| case KeyCode.BACKSLASH: |
| return 92; // \ |
| case KeyCode.CLOSE_SQUARE_BRACKET: |
| return 93; // ] |
| case KeyCode.SINGLE_QUOTE: |
| return 39; // ' |
| } |
| return event.keyCode; |
| } |
| |
| /** |
| * Returns true if the key fires a keypress event in the current browser. |
| */ |
| bool _firesKeyPressEvent(KeyEvent event) { |
| if (!Device.isIE && !Device.isWebKit) { |
| return true; |
| } |
| |
| if (Device.userAgent.contains('Mac') && event.altKey) { |
| return KeyCode.isCharacterKey(event.keyCode); |
| } |
| |
| // Alt but not AltGr which is represented as Alt+Ctrl. |
| if (event.altKey && !event.ctrlKey) { |
| return false; |
| } |
| |
| // Saves Ctrl or Alt + key for IE and WebKit, which won't fire keypress. |
| if (!event.shiftKey && |
| (_keyDownList.last.keyCode == KeyCode.CTRL || |
| _keyDownList.last.keyCode == KeyCode.ALT || |
| Device.userAgent.contains('Mac') && |
| _keyDownList.last.keyCode == KeyCode.META)) { |
| return false; |
| } |
| |
| // Some keys with Ctrl/Shift do not issue keypress in WebKit. |
| if (Device.isWebKit && event.ctrlKey && event.shiftKey && ( |
| event.keyCode == KeyCode.BACKSLASH || |
| event.keyCode == KeyCode.OPEN_SQUARE_BRACKET || |
| event.keyCode == KeyCode.CLOSE_SQUARE_BRACKET || |
| event.keyCode == KeyCode.TILDE || |
| event.keyCode == KeyCode.SEMICOLON || event.keyCode == KeyCode.DASH || |
| event.keyCode == KeyCode.EQUALS || event.keyCode == KeyCode.COMMA || |
| event.keyCode == KeyCode.PERIOD || event.keyCode == KeyCode.SLASH || |
| event.keyCode == KeyCode.APOSTROPHE || |
| event.keyCode == KeyCode.SINGLE_QUOTE)) { |
| return false; |
| } |
| |
| switch (event.keyCode) { |
| case KeyCode.ENTER: |
| // IE9 does not fire keypress on ENTER. |
| return !Device.isIE; |
| case KeyCode.ESC: |
| return !Device.isWebKit; |
| } |
| |
| return KeyCode.isCharacterKey(event.keyCode); |
| } |
| |
| /** |
| * Normalize the keycodes to the IE KeyCodes (this is what Chrome, IE, and |
| * Opera all use). |
| */ |
| int _normalizeKeyCodes(KeyboardEvent event) { |
| // Note: This may change once we get input about non-US keyboards. |
| if (Device.isFirefox) { |
| switch(event.keyCode) { |
| case KeyCode.FF_EQUALS: |
| return KeyCode.EQUALS; |
| case KeyCode.FF_SEMICOLON: |
| return KeyCode.SEMICOLON; |
| case KeyCode.MAC_FF_META: |
| return KeyCode.META; |
| case KeyCode.WIN_KEY_FF_LINUX: |
| return KeyCode.WIN_KEY; |
| } |
| } |
| return event.keyCode; |
| } |
| |
| /** Handle keydown events. */ |
| void processKeyDown(KeyboardEvent e) { |
| // Ctrl-Tab and Alt-Tab can cause the focus to be moved to another window |
| // before we've caught a key-up event. If the last-key was one of these |
| // we reset the state. |
| if (_keyDownList.length > 0 && |
| (_keyDownList.last.keyCode == KeyCode.CTRL && !e.ctrlKey || |
| _keyDownList.last.keyCode == KeyCode.ALT && !e.altKey || |
| Device.userAgent.contains('Mac') && |
| _keyDownList.last.keyCode == KeyCode.META && !e.metaKey)) { |
| _keyDownList.clear(); |
| } |
| |
| var event = new KeyEvent(e); |
| event._shadowKeyCode = _normalizeKeyCodes(event); |
| // Technically a "keydown" event doesn't have a charCode. This is |
| // calculated nonetheless to provide us with more information in giving |
| // as much information as possible on keypress about keycode and also |
| // charCode. |
| event._shadowCharCode = _findCharCodeKeyDown(event); |
| if (_keyDownList.length > 0 && event.keyCode != _keyDownList.last.keyCode && |
| !_firesKeyPressEvent(event)) { |
| // Some browsers have quirks not firing keypress events where all other |
| // browsers do. This makes them more consistent. |
| processKeyPress(event); |
| } |
| _keyDownList.add(event); |
| _dispatch(event); |
| } |
| |
| /** Handle keypress events. */ |
| void processKeyPress(KeyboardEvent event) { |
| var e = new KeyEvent(event); |
| // IE reports the character code in the keyCode field for keypress events. |
| // There are two exceptions however, Enter and Escape. |
| if (Device.isIE) { |
| if (e.keyCode == KeyCode.ENTER || e.keyCode == KeyCode.ESC) { |
| e._shadowCharCode = 0; |
| } else { |
| e._shadowCharCode = e.keyCode; |
| } |
| } else if (Device.isOpera) { |
| // Opera reports the character code in the keyCode field. |
| e._shadowCharCode = KeyCode.isCharacterKey(e.keyCode) ? e.keyCode : 0; |
| } |
| // Now we guestimate about what the keycode is that was actually |
| // pressed, given previous keydown information. |
| e._shadowKeyCode = _determineKeyCodeForKeypress(e); |
| |
| // Correct the key value for certain browser-specific quirks. |
| if (e._shadowKeyIdentifier != null && |
| _keyIdentifier.containsKey(e._shadowKeyIdentifier)) { |
| // This is needed for Safari Windows because it currently doesn't give a |
| // keyCode/which for non printable keys. |
| e._shadowKeyCode = _keyIdentifier[e._shadowKeyIdentifier]; |
| } |
| e._shadowAltKey = _keyDownList.any((var element) => element.altKey); |
| _dispatch(e); |
| } |
| |
| /** Handle keyup events. */ |
| void processKeyUp(KeyboardEvent event) { |
| var e = new KeyEvent(event); |
| KeyboardEvent toRemove = null; |
| for (var key in _keyDownList) { |
| if (key.keyCode == e.keyCode) { |
| toRemove = key; |
| } |
| } |
| if (toRemove != null) { |
| _keyDownList.removeWhere((element) => element == toRemove); |
| } else if (_keyDownList.length > 0) { |
| // This happens when we've reached some international keyboard case we |
| // haven't accounted for or we haven't correctly eliminated all browser |
| // inconsistencies. Filing bugs on when this is reached is welcome! |
| _keyDownList.removeLast(); |
| } |
| _dispatch(e); |
| } |
| } |
| |
| |
| /** |
| * Records KeyboardEvents that occur on a particular element, and provides a |
| * stream of outgoing KeyEvents with cross-browser consistent keyCode and |
| * charCode values despite the fact that a multitude of browsers that have |
| * varying keyboard default behavior. |
| * |
| * Example usage: |
| * |
| * KeyboardEventStream.onKeyDown(document.body).listen( |
| * keydownHandlerTest); |
| * |
| * This class is very much a work in progress, and we'd love to get information |
| * on how we can make this class work with as many international keyboards as |
| * possible. Bugs welcome! |
| */ |
| class KeyboardEventStream { |
| |
| /** Named constructor to produce a stream for onKeyPress events. */ |
| static Stream<KeyEvent> onKeyPress(EventTarget target) => |
| new _KeyboardEventHandler('keypress').forTarget(target); |
| |
| /** Named constructor to produce a stream for onKeyUp events. */ |
| static Stream<KeyEvent> onKeyUp(EventTarget target) => |
| new _KeyboardEventHandler('keyup').forTarget(target); |
| |
| /** Named constructor to produce a stream for onKeyDown events. */ |
| static Stream<KeyEvent> onKeyDown(EventTarget target) => |
| new _KeyboardEventHandler('keydown').forTarget(target); |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Defines the keycode values for keys that are returned by |
| * KeyboardEvent.keyCode. |
| * |
| * Important note: There is substantial divergence in how different browsers |
| * handle keycodes and their variants in different locales/keyboard layouts. We |
| * provide these constants to help make code processing keys more readable. |
| */ |
| abstract class KeyCode { |
| // These constant names were borrowed from Closure's Keycode enumeration |
| // class. |
| // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keycodes.js.source.html |
| static const int WIN_KEY_FF_LINUX = 0; |
| static const int MAC_ENTER = 3; |
| static const int BACKSPACE = 8; |
| static const int TAB = 9; |
| /** NUM_CENTER is also NUMLOCK for FF and Safari on Mac. */ |
| static const int NUM_CENTER = 12; |
| static const int ENTER = 13; |
| static const int SHIFT = 16; |
| static const int CTRL = 17; |
| static const int ALT = 18; |
| static const int PAUSE = 19; |
| static const int CAPS_LOCK = 20; |
| static const int ESC = 27; |
| static const int SPACE = 32; |
| static const int PAGE_UP = 33; |
| static const int PAGE_DOWN = 34; |
| static const int END = 35; |
| static const int HOME = 36; |
| static const int LEFT = 37; |
| static const int UP = 38; |
| static const int RIGHT = 39; |
| static const int DOWN = 40; |
| static const int NUM_NORTH_EAST = 33; |
| static const int NUM_SOUTH_EAST = 34; |
| static const int NUM_SOUTH_WEST = 35; |
| static const int NUM_NORTH_WEST = 36; |
| static const int NUM_WEST = 37; |
| static const int NUM_NORTH = 38; |
| static const int NUM_EAST = 39; |
| static const int NUM_SOUTH = 40; |
| static const int PRINT_SCREEN = 44; |
| static const int INSERT = 45; |
| static const int NUM_INSERT = 45; |
| static const int DELETE = 46; |
| static const int NUM_DELETE = 46; |
| static const int ZERO = 48; |
| static const int ONE = 49; |
| static const int TWO = 50; |
| static const int THREE = 51; |
| static const int FOUR = 52; |
| static const int FIVE = 53; |
| static const int SIX = 54; |
| static const int SEVEN = 55; |
| static const int EIGHT = 56; |
| static const int NINE = 57; |
| static const int FF_SEMICOLON = 59; |
| static const int FF_EQUALS = 61; |
| /** |
| * CAUTION: The question mark is for US-keyboard layouts. It varies |
| * for other locales and keyboard layouts. |
| */ |
| static const int QUESTION_MARK = 63; |
| static const int A = 65; |
| static const int B = 66; |
| static const int C = 67; |
| static const int D = 68; |
| static const int E = 69; |
| static const int F = 70; |
| static const int G = 71; |
| static const int H = 72; |
| static const int I = 73; |
| static const int J = 74; |
| static const int K = 75; |
| static const int L = 76; |
| static const int M = 77; |
| static const int N = 78; |
| static const int O = 79; |
| static const int P = 80; |
| static const int Q = 81; |
| static const int R = 82; |
| static const int S = 83; |
| static const int T = 84; |
| static const int U = 85; |
| static const int V = 86; |
| static const int W = 87; |
| static const int X = 88; |
| static const int Y = 89; |
| static const int Z = 90; |
| static const int META = 91; |
| static const int WIN_KEY_LEFT = 91; |
| static const int WIN_KEY_RIGHT = 92; |
| static const int CONTEXT_MENU = 93; |
| static const int NUM_ZERO = 96; |
| static const int NUM_ONE = 97; |
| static const int NUM_TWO = 98; |
| static const int NUM_THREE = 99; |
| static const int NUM_FOUR = 100; |
| static const int NUM_FIVE = 101; |
| static const int NUM_SIX = 102; |
| static const int NUM_SEVEN = 103; |
| static const int NUM_EIGHT = 104; |
| static const int NUM_NINE = 105; |
| static const int NUM_MULTIPLY = 106; |
| static const int NUM_PLUS = 107; |
| static const int NUM_MINUS = 109; |
| static const int NUM_PERIOD = 110; |
| static const int NUM_DIVISION = 111; |
| static const int F1 = 112; |
| static const int F2 = 113; |
| static const int F3 = 114; |
| static const int F4 = 115; |
| static const int F5 = 116; |
| static const int F6 = 117; |
| static const int F7 = 118; |
| static const int F8 = 119; |
| static const int F9 = 120; |
| static const int F10 = 121; |
| static const int F11 = 122; |
| static const int F12 = 123; |
| static const int NUMLOCK = 144; |
| static const int SCROLL_LOCK = 145; |
| |
| // OS-specific media keys like volume controls and browser controls. |
| static const int FIRST_MEDIA_KEY = 166; |
| static const int LAST_MEDIA_KEY = 183; |
| |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int SEMICOLON = 186; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int DASH = 189; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int EQUALS = 187; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int COMMA = 188; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int PERIOD = 190; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int SLASH = 191; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int APOSTROPHE = 192; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int TILDE = 192; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int SINGLE_QUOTE = 222; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int OPEN_SQUARE_BRACKET = 219; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int BACKSLASH = 220; |
| /** |
| * CAUTION: This constant requires localization for other locales and keyboard |
| * layouts. |
| */ |
| static const int CLOSE_SQUARE_BRACKET = 221; |
| static const int WIN_KEY = 224; |
| static const int MAC_FF_META = 224; |
| static const int WIN_IME = 229; |
| |
| /** A sentinel value if the keycode could not be determined. */ |
| static const int UNKNOWN = -1; |
| |
| /** |
| * Returns true if the keyCode produces a (US keyboard) character. |
| * Note: This does not (yet) cover characters on non-US keyboards (Russian, |
| * Hebrew, etc.). |
| */ |
| static bool isCharacterKey(int keyCode) { |
| if ((keyCode >= ZERO && keyCode <= NINE) || |
| (keyCode >= NUM_ZERO && keyCode <= NUM_MULTIPLY) || |
| (keyCode >= A && keyCode <= Z)) { |
| return true; |
| } |
| |
| // Safari sends zero key code for non-latin characters. |
| if (Device.isWebKit && keyCode == 0) { |
| return true; |
| } |
| |
| return (keyCode == SPACE || keyCode == QUESTION_MARK || keyCode == NUM_PLUS |
| || keyCode == NUM_MINUS || keyCode == NUM_PERIOD || |
| keyCode == NUM_DIVISION || keyCode == SEMICOLON || |
| keyCode == FF_SEMICOLON || keyCode == DASH || keyCode == EQUALS || |
| keyCode == FF_EQUALS || keyCode == COMMA || keyCode == PERIOD || |
| keyCode == SLASH || keyCode == APOSTROPHE || keyCode == SINGLE_QUOTE || |
| keyCode == OPEN_SQUARE_BRACKET || keyCode == BACKSLASH || |
| keyCode == CLOSE_SQUARE_BRACKET); |
| } |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Defines the standard key locations returned by |
| * KeyboardEvent.getKeyLocation. |
| */ |
| abstract class KeyLocation { |
| |
| /** |
| * The event key is not distinguished as the left or right version |
| * of the key, and did not originate from the numeric keypad (or did not |
| * originate with a virtual key corresponding to the numeric keypad). |
| */ |
| static const int STANDARD = 0; |
| |
| /** |
| * The event key is in the left key location. |
| */ |
| static const int LEFT = 1; |
| |
| /** |
| * The event key is in the right key location. |
| */ |
| static const int RIGHT = 2; |
| |
| /** |
| * The event key originated on the numeric keypad or with a virtual key |
| * corresponding to the numeric keypad. |
| */ |
| static const int NUMPAD = 3; |
| |
| /** |
| * The event key originated on a mobile device, either on a physical |
| * keypad or a virtual keyboard. |
| */ |
| static const int MOBILE = 4; |
| |
| /** |
| * The event key originated on a game controller or a joystick on a mobile |
| * device. |
| */ |
| static const int JOYSTICK = 5; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Defines the standard keyboard identifier names for keys that are returned |
| * by KeyEvent.getKeyboardIdentifier when the key does not have a direct |
| * unicode mapping. |
| */ |
| abstract class KeyName { |
| |
| /** The Accept (Commit, OK) key */ |
| static const String ACCEPT = "Accept"; |
| |
| /** The Add key */ |
| static const String ADD = "Add"; |
| |
| /** The Again key */ |
| static const String AGAIN = "Again"; |
| |
| /** The All Candidates key */ |
| static const String ALL_CANDIDATES = "AllCandidates"; |
| |
| /** The Alphanumeric key */ |
| static const String ALPHANUMERIC = "Alphanumeric"; |
| |
| /** The Alt (Menu) key */ |
| static const String ALT = "Alt"; |
| |
| /** The Alt-Graph key */ |
| static const String ALT_GRAPH = "AltGraph"; |
| |
| /** The Application key */ |
| static const String APPS = "Apps"; |
| |
| /** The ATTN key */ |
| static const String ATTN = "Attn"; |
| |
| /** The Browser Back key */ |
| static const String BROWSER_BACK = "BrowserBack"; |
| |
| /** The Browser Favorites key */ |
| static const String BROWSER_FAVORTIES = "BrowserFavorites"; |
| |
| /** The Browser Forward key */ |
| static const String BROWSER_FORWARD = "BrowserForward"; |
| |
| /** The Browser Home key */ |
| static const String BROWSER_NAME = "BrowserHome"; |
| |
| /** The Browser Refresh key */ |
| static const String BROWSER_REFRESH = "BrowserRefresh"; |
| |
| /** The Browser Search key */ |
| static const String BROWSER_SEARCH = "BrowserSearch"; |
| |
| /** The Browser Stop key */ |
| static const String BROWSER_STOP = "BrowserStop"; |
| |
| /** The Camera key */ |
| static const String CAMERA = "Camera"; |
| |
| /** The Caps Lock (Capital) key */ |
| static const String CAPS_LOCK = "CapsLock"; |
| |
| /** The Clear key */ |
| static const String CLEAR = "Clear"; |
| |
| /** The Code Input key */ |
| static const String CODE_INPUT = "CodeInput"; |
| |
| /** The Compose key */ |
| static const String COMPOSE = "Compose"; |
| |
| /** The Control (Ctrl) key */ |
| static const String CONTROL = "Control"; |
| |
| /** The Crsel key */ |
| static const String CRSEL = "Crsel"; |
| |
| /** The Convert key */ |
| static const String CONVERT = "Convert"; |
| |
| /** The Copy key */ |
| static const String COPY = "Copy"; |
| |
| /** The Cut key */ |
| static const String CUT = "Cut"; |
| |
| /** The Decimal key */ |
| static const String DECIMAL = "Decimal"; |
| |
| /** The Divide key */ |
| static const String DIVIDE = "Divide"; |
| |
| /** The Down Arrow key */ |
| static const String DOWN = "Down"; |
| |
| /** The diagonal Down-Left Arrow key */ |
| static const String DOWN_LEFT = "DownLeft"; |
| |
| /** The diagonal Down-Right Arrow key */ |
| static const String DOWN_RIGHT = "DownRight"; |
| |
| /** The Eject key */ |
| static const String EJECT = "Eject"; |
| |
| /** The End key */ |
| static const String END = "End"; |
| |
| /** |
| * The Enter key. Note: This key value must also be used for the Return |
| * (Macintosh numpad) key |
| */ |
| static const String ENTER = "Enter"; |
| |
| /** The Erase EOF key */ |
| static const String ERASE_EOF= "EraseEof"; |
| |
| /** The Execute key */ |
| static const String EXECUTE = "Execute"; |
| |
| /** The Exsel key */ |
| static const String EXSEL = "Exsel"; |
| |
| /** The Function switch key */ |
| static const String FN = "Fn"; |
| |
| /** The F1 key */ |
| static const String F1 = "F1"; |
| |
| /** The F2 key */ |
| static const String F2 = "F2"; |
| |
| /** The F3 key */ |
| static const String F3 = "F3"; |
| |
| /** The F4 key */ |
| static const String F4 = "F4"; |
| |
| /** The F5 key */ |
| static const String F5 = "F5"; |
| |
| /** The F6 key */ |
| static const String F6 = "F6"; |
| |
| /** The F7 key */ |
| static const String F7 = "F7"; |
| |
| /** The F8 key */ |
| static const String F8 = "F8"; |
| |
| /** The F9 key */ |
| static const String F9 = "F9"; |
| |
| /** The F10 key */ |
| static const String F10 = "F10"; |
| |
| /** The F11 key */ |
| static const String F11 = "F11"; |
| |
| /** The F12 key */ |
| static const String F12 = "F12"; |
| |
| /** The F13 key */ |
| static const String F13 = "F13"; |
| |
| /** The F14 key */ |
| static const String F14 = "F14"; |
| |
| /** The F15 key */ |
| static const String F15 = "F15"; |
| |
| /** The F16 key */ |
| static const String F16 = "F16"; |
| |
| /** The F17 key */ |
| static const String F17 = "F17"; |
| |
| /** The F18 key */ |
| static const String F18 = "F18"; |
| |
| /** The F19 key */ |
| static const String F19 = "F19"; |
| |
| /** The F20 key */ |
| static const String F20 = "F20"; |
| |
| /** The F21 key */ |
| static const String F21 = "F21"; |
| |
| /** The F22 key */ |
| static const String F22 = "F22"; |
| |
| /** The F23 key */ |
| static const String F23 = "F23"; |
| |
| /** The F24 key */ |
| static const String F24 = "F24"; |
| |
| /** The Final Mode (Final) key used on some asian keyboards */ |
| static const String FINAL_MODE = "FinalMode"; |
| |
| /** The Find key */ |
| static const String FIND = "Find"; |
| |
| /** The Full-Width Characters key */ |
| static const String FULL_WIDTH = "FullWidth"; |
| |
| /** The Half-Width Characters key */ |
| static const String HALF_WIDTH = "HalfWidth"; |
| |
| /** The Hangul (Korean characters) Mode key */ |
| static const String HANGUL_MODE = "HangulMode"; |
| |
| /** The Hanja (Korean characters) Mode key */ |
| static const String HANJA_MODE = "HanjaMode"; |
| |
| /** The Help key */ |
| static const String HELP = "Help"; |
| |
| /** The Hiragana (Japanese Kana characters) key */ |
| static const String HIRAGANA = "Hiragana"; |
| |
| /** The Home key */ |
| static const String HOME = "Home"; |
| |
| /** The Insert (Ins) key */ |
| static const String INSERT = "Insert"; |
| |
| /** The Japanese-Hiragana key */ |
| static const String JAPANESE_HIRAGANA = "JapaneseHiragana"; |
| |
| /** The Japanese-Katakana key */ |
| static const String JAPANESE_KATAKANA = "JapaneseKatakana"; |
| |
| /** The Japanese-Romaji key */ |
| static const String JAPANESE_ROMAJI = "JapaneseRomaji"; |
| |
| /** The Junja Mode key */ |
| static const String JUNJA_MODE = "JunjaMode"; |
| |
| /** The Kana Mode (Kana Lock) key */ |
| static const String KANA_MODE = "KanaMode"; |
| |
| /** |
| * The Kanji (Japanese name for ideographic characters of Chinese origin) |
| * Mode key |
| */ |
| static const String KANJI_MODE = "KanjiMode"; |
| |
| /** The Katakana (Japanese Kana characters) key */ |
| static const String KATAKANA = "Katakana"; |
| |
| /** The Start Application One key */ |
| static const String LAUNCH_APPLICATION_1 = "LaunchApplication1"; |
| |
| /** The Start Application Two key */ |
| static const String LAUNCH_APPLICATION_2 = "LaunchApplication2"; |
| |
| /** The Start Mail key */ |
| static const String LAUNCH_MAIL = "LaunchMail"; |
| |
| /** The Left Arrow key */ |
| static const String LEFT = "Left"; |
| |
| /** The Menu key */ |
| static const String MENU = "Menu"; |
| |
| /** |
| * The Meta key. Note: This key value shall be also used for the Apple |
| * Command key |
| */ |
| static const String META = "Meta"; |
| |
| /** The Media Next Track key */ |
| static const String MEDIA_NEXT_TRACK = "MediaNextTrack"; |
| |
| /** The Media Play Pause key */ |
| static const String MEDIA_PAUSE_PLAY = "MediaPlayPause"; |
| |
| /** The Media Previous Track key */ |
| static const String MEDIA_PREVIOUS_TRACK = "MediaPreviousTrack"; |
| |
| /** The Media Stop key */ |
| static const String MEDIA_STOP = "MediaStop"; |
| |
| /** The Mode Change key */ |
| static const String MODE_CHANGE = "ModeChange"; |
| |
| /** The Next Candidate function key */ |
| static const String NEXT_CANDIDATE = "NextCandidate"; |
| |
| /** The Nonconvert (Don't Convert) key */ |
| static const String NON_CONVERT = "Nonconvert"; |
| |
| /** The Number Lock key */ |
| static const String NUM_LOCK = "NumLock"; |
| |
| /** The Page Down (Next) key */ |
| static const String PAGE_DOWN = "PageDown"; |
| |
| /** The Page Up key */ |
| static const String PAGE_UP = "PageUp"; |
| |
| /** The Paste key */ |
| static const String PASTE = "Paste"; |
| |
| /** The Pause key */ |
| static const String PAUSE = "Pause"; |
| |
| /** The Play key */ |
| static const String PLAY = "Play"; |
| |
| /** |
| * The Power key. Note: Some devices may not expose this key to the |
| * operating environment |
| */ |
| static const String POWER = "Power"; |
| |
| /** The Previous Candidate function key */ |
| static const String PREVIOUS_CANDIDATE = "PreviousCandidate"; |
| |
| /** The Print Screen (PrintScrn, SnapShot) key */ |
| static const String PRINT_SCREEN = "PrintScreen"; |
| |
| /** The Process key */ |
| static const String PROCESS = "Process"; |
| |
| /** The Props key */ |
| static const String PROPS = "Props"; |
| |
| /** The Right Arrow key */ |
| static const String RIGHT = "Right"; |
| |
| /** The Roman Characters function key */ |
| static const String ROMAN_CHARACTERS = "RomanCharacters"; |
| |
| /** The Scroll Lock key */ |
| static const String SCROLL = "Scroll"; |
| |
| /** The Select key */ |
| static const String SELECT = "Select"; |
| |
| /** The Select Media key */ |
| static const String SELECT_MEDIA = "SelectMedia"; |
| |
| /** The Separator key */ |
| static const String SEPARATOR = "Separator"; |
| |
| /** The Shift key */ |
| static const String SHIFT = "Shift"; |
| |
| /** The Soft1 key */ |
| static const String SOFT_1 = "Soft1"; |
| |
| /** The Soft2 key */ |
| static const String SOFT_2 = "Soft2"; |
| |
| /** The Soft3 key */ |
| static const String SOFT_3 = "Soft3"; |
| |
| /** The Soft4 key */ |
| static const String SOFT_4 = "Soft4"; |
| |
| /** The Stop key */ |
| static const String STOP = "Stop"; |
| |
| /** The Subtract key */ |
| static const String SUBTRACT = "Subtract"; |
| |
| /** The Symbol Lock key */ |
| static const String SYMBOL_LOCK = "SymbolLock"; |
| |
| /** The Up Arrow key */ |
| static const String UP = "Up"; |
| |
| /** The diagonal Up-Left Arrow key */ |
| static const String UP_LEFT = "UpLeft"; |
| |
| /** The diagonal Up-Right Arrow key */ |
| static const String UP_RIGHT = "UpRight"; |
| |
| /** The Undo key */ |
| static const String UNDO = "Undo"; |
| |
| /** The Volume Down key */ |
| static const String VOLUME_DOWN = "VolumeDown"; |
| |
| /** The Volume Mute key */ |
| static const String VOLUMN_MUTE = "VolumeMute"; |
| |
| /** The Volume Up key */ |
| static const String VOLUMN_UP = "VolumeUp"; |
| |
| /** The Windows Logo key */ |
| static const String WIN = "Win"; |
| |
| /** The Zoom key */ |
| static const String ZOOM = "Zoom"; |
| |
| /** |
| * The Backspace (Back) key. Note: This key value shall be also used for the |
| * key labeled 'delete' MacOS keyboards when not modified by the 'Fn' key |
| */ |
| static const String BACKSPACE = "Backspace"; |
| |
| /** The Horizontal Tabulation (Tab) key */ |
| static const String TAB = "Tab"; |
| |
| /** The Cancel key */ |
| static const String CANCEL = "Cancel"; |
| |
| /** The Escape (Esc) key */ |
| static const String ESC = "Esc"; |
| |
| /** The Space (Spacebar) key: */ |
| static const String SPACEBAR = "Spacebar"; |
| |
| /** |
| * The Delete (Del) Key. Note: This key value shall be also used for the key |
| * labeled 'delete' MacOS keyboards when modified by the 'Fn' key |
| */ |
| static const String DEL = "Del"; |
| |
| /** The Combining Grave Accent (Greek Varia, Dead Grave) key */ |
| static const String DEAD_GRAVE = "DeadGrave"; |
| |
| /** |
| * The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute) |
| * key |
| */ |
| static const String DEAD_EACUTE = "DeadEacute"; |
| |
| /** The Combining Circumflex Accent (Hat, Dead Circumflex) key */ |
| static const String DEAD_CIRCUMFLEX = "DeadCircumflex"; |
| |
| /** The Combining Tilde (Dead Tilde) key */ |
| static const String DEAD_TILDE = "DeadTilde"; |
| |
| /** The Combining Macron (Long, Dead Macron) key */ |
| static const String DEAD_MACRON = "DeadMacron"; |
| |
| /** The Combining Breve (Short, Dead Breve) key */ |
| static const String DEAD_BREVE = "DeadBreve"; |
| |
| /** The Combining Dot Above (Derivative, Dead Above Dot) key */ |
| static const String DEAD_ABOVE_DOT = "DeadAboveDot"; |
| |
| /** |
| * The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika, |
| * Double Derivative, Dead Diaeresis) key |
| */ |
| static const String DEAD_UMLAUT = "DeadUmlaut"; |
| |
| /** The Combining Ring Above (Dead Above Ring) key */ |
| static const String DEAD_ABOVE_RING = "DeadAboveRing"; |
| |
| /** The Combining Double Acute Accent (Dead Doubleacute) key */ |
| static const String DEAD_DOUBLEACUTE = "DeadDoubleacute"; |
| |
| /** The Combining Caron (Hacek, V Above, Dead Caron) key */ |
| static const String DEAD_CARON = "DeadCaron"; |
| |
| /** The Combining Cedilla (Dead Cedilla) key */ |
| static const String DEAD_CEDILLA = "DeadCedilla"; |
| |
| /** The Combining Ogonek (Nasal Hook, Dead Ogonek) key */ |
| static const String DEAD_OGONEK = "DeadOgonek"; |
| |
| /** |
| * The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota |
| * Subscript, Dead Iota) key |
| */ |
| static const String DEAD_IOTA = "DeadIota"; |
| |
| /** |
| * The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key |
| */ |
| static const String DEAD_VOICED_SOUND = "DeadVoicedSound"; |
| |
| /** |
| * The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced |
| * Sound) key |
| */ |
| static const String DEC_SEMIVOICED_SOUND= "DeadSemivoicedSound"; |
| |
| /** |
| * Key value used when an implementation is unable to identify another key |
| * value, due to either hardware, platform, or software constraints |
| */ |
| static const String UNIDENTIFIED = "Unidentified"; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * A utility class for representing two-dimensional positions. |
| */ |
| class Point { |
| final num x; |
| final num y; |
| |
| const Point([num x = 0, num y = 0]): x = x, y = y; |
| |
| String toString() => '($x, $y)'; |
| |
| bool operator ==(other) { |
| if (other is !Point) return false; |
| return x == other.x && y == other.y; |
| } |
| |
| int get hashCode => JenkinsSmiHash.hash2(x.hashCode, y.hashCode); |
| |
| Point operator +(Point other) { |
| return new Point(x + other.x, y + other.y); |
| } |
| |
| Point operator -(Point other) { |
| return new Point(x - other.x, y - other.y); |
| } |
| |
| Point operator *(num factor) { |
| return new Point(x * factor, y * factor); |
| } |
| |
| /** |
| * Get the straight line (Euclidean) distance between the origin (0, 0) and |
| * this point. |
| */ |
| num get magnitude => sqrt(x * x + y * y); |
| |
| /** |
| * Returns the distance between two points. |
| */ |
| double distanceTo(Point other) { |
| var dx = x - other.x; |
| var dy = y - other.y; |
| return sqrt(dx * dx + dy * dy); |
| } |
| |
| /** |
| * Returns the squared distance between two points. |
| * |
| * Squared distances can be used for comparisons when the actual value is not |
| * required. |
| */ |
| num squaredDistanceTo(Point other) { |
| var dx = x - other.x; |
| var dy = y - other.y; |
| return dx * dx + dy * dy; |
| } |
| |
| Point ceil() => new Point(x.ceil(), y.ceil()); |
| Point floor() => new Point(x.floor(), y.floor()); |
| Point round() => new Point(x.round(), y.round()); |
| |
| /** |
| * Truncates x and y to integers and returns the result as a new point. |
| */ |
| Point toInt() => new Point(x.toInt(), y.toInt()); |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Contains the set of standard values returned by HTMLDocument.getReadyState. |
| */ |
| abstract class ReadyState { |
| /** |
| * Indicates the document is still loading and parsing. |
| */ |
| static const String LOADING = "loading"; |
| |
| /** |
| * Indicates the document is finished parsing but is still loading |
| * subresources. |
| */ |
| static const String INTERACTIVE = "interactive"; |
| |
| /** |
| * Indicates the document and all subresources have been loaded. |
| */ |
| static const String COMPLETE = "complete"; |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * A base class for representing two-dimensional rectangles. This will hopefully |
| * be moved merged with the dart:math Rect. |
| */ |
| // TODO(efortuna): Merge with Math rect after finalizing with Florian. |
| abstract class RectBase { |
| // Not used, but keeps the VM from complaining about Rect having a const |
| // constructor and this one not. |
| const RectBase(); |
| |
| num get left; |
| num get top; |
| num get width; |
| num get height; |
| |
| num get right => left + width; |
| num get bottom => top + height; |
| |
| // NOTE! All code below should be common with Rect. |
| |
| String toString() { |
| return '($left, $top, $width, $height)'; |
| } |
| |
| bool operator ==(other) { |
| if (other is !Rect) return false; |
| return left == other.left && top == other.top && width == other.width && |
| height == other.height; |
| } |
| |
| int get hashCode => JenkinsSmiHash.hash4(left.hashCode, top.hashCode, |
| width.hashCode, height.hashCode); |
| |
| /** |
| * Computes the intersection of this rectangle and the rectangle parameter. |
| * Returns null if there is no intersection. |
| */ |
| Rect intersection(Rect rect) { |
| var x0 = max(left, rect.left); |
| var x1 = min(left + width, rect.left + rect.width); |
| |
| if (x0 <= x1) { |
| var y0 = max(top, rect.top); |
| var y1 = min(top + height, rect.top + rect.height); |
| |
| if (y0 <= y1) { |
| return new Rect(x0, y0, x1 - x0, y1 - y0); |
| } |
| } |
| return null; |
| } |
| |
| |
| /** |
| * Returns whether a rectangle intersects this rectangle. |
| */ |
| bool intersects(Rect other) { |
| return (left <= other.left + other.width && other.left <= left + width && |
| top <= other.top + other.height && other.top <= top + height); |
| } |
| |
| /** |
| * Returns a new rectangle which completely contains this rectangle and the |
| * input rectangle. |
| */ |
| Rect union(Rect rect) { |
| var right = max(this.left + this.width, rect.left + rect.width); |
| var bottom = max(this.top + this.height, rect.top + rect.height); |
| |
| var left = min(this.left, rect.left); |
| var top = min(this.top, rect.top); |
| |
| return new Rect(left, top, right - left, bottom - top); |
| } |
| |
| /** |
| * Tests whether this rectangle entirely contains another rectangle. |
| */ |
| bool containsRect(Rect another) { |
| return left <= another.left && |
| left + width >= another.left + another.width && |
| top <= another.top && |
| top + height >= another.top + another.height; |
| } |
| |
| /** |
| * Tests whether this rectangle entirely contains a point. |
| */ |
| bool containsPoint(Point another) { |
| return another.x >= left && |
| another.x <= left + width && |
| another.y >= top && |
| another.y <= top + height; |
| } |
| |
| Rect ceil() => new Rect(left.ceil(), top.ceil(), width.ceil(), height.ceil()); |
| Rect floor() => new Rect(left.floor(), top.floor(), width.floor(), |
| height.floor()); |
| Rect round() => new Rect(left.round(), top.round(), width.round(), |
| height.round()); |
| |
| /** |
| * Truncates coordinates to integers and returns the result as a new |
| * rectangle. |
| */ |
| Rect toInt() => new Rect(left.toInt(), top.toInt(), width.toInt(), |
| height.toInt()); |
| |
| Point get topLeft => new Point(this.left, this.top); |
| Point get bottomRight => new Point(this.left + this.width, |
| this.top + this.height); |
| } |
| |
| |
| |
| /** |
| * A class for representing two-dimensional rectangles. |
| * |
| * This class is distinctive from RectBase in that it enforces that its |
| * properties are immutable. |
| */ |
| class Rect extends RectBase { |
| final num left; |
| final num top; |
| final num width; |
| final num height; |
| |
| const Rect(this.left, this.top, this.width, this.height): super(); |
| |
| factory Rect.fromPoints(Point a, Point b) { |
| var left; |
| var width; |
| if (a.x < b.x) { |
| left = a.x; |
| width = b.x - left; |
| } else { |
| left = b.x; |
| width = a.x - left; |
| } |
| var top; |
| var height; |
| if (a.y < b.y) { |
| top = a.y; |
| height = b.y - top; |
| } else { |
| top = b.y; |
| height = a.y - top; |
| } |
| |
| return new Rect(left, top, width, height); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| class _HttpRequestUtils { |
| |
| // Helper for factory HttpRequest.get |
| static HttpRequest get(String url, |
| onComplete(HttpRequest request), |
| bool withCredentials) { |
| final request = new HttpRequest(); |
| request.open('GET', url, async: true); |
| |
| request.withCredentials = withCredentials; |
| |
| request.onReadyStateChange.listen((e) { |
| if (request.readyState == HttpRequest.DONE) { |
| onComplete(request); |
| } |
| }); |
| |
| request.send(); |
| |
| return request; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| _serialize(var message) { |
| return new _JsSerializer().traverse(message); |
| } |
| |
| class _JsSerializer extends _Serializer { |
| |
| visitSendPortSync(SendPortSync x) { |
| if (x is _JsSendPortSync) return visitJsSendPortSync(x); |
| if (x is _LocalSendPortSync) return visitLocalSendPortSync(x); |
| if (x is _RemoteSendPortSync) return visitRemoteSendPortSync(x); |
| throw "Unknown port type $x"; |
| } |
| |
| visitJsSendPortSync(_JsSendPortSync x) { |
| return [ 'sendport', 'nativejs', x._id ]; |
| } |
| |
| visitLocalSendPortSync(_LocalSendPortSync x) { |
| return [ 'sendport', 'dart', |
| ReceivePortSync._isolateId, x._receivePort._portId ]; |
| } |
| |
| visitSendPort(SendPort x) { |
| throw new UnimplementedError('Asynchronous send port not yet implemented.'); |
| } |
| |
| visitRemoteSendPortSync(_RemoteSendPortSync x) { |
| return [ 'sendport', 'dart', x._isolateId, x._portId ]; |
| } |
| } |
| |
| _deserialize(var message) { |
| return new _JsDeserializer().deserialize(message); |
| } |
| |
| |
| class _JsDeserializer extends _Deserializer { |
| |
| static const _UNSPECIFIED = const Object(); |
| |
| deserializeSendPort(List x) { |
| String tag = x[1]; |
| switch (tag) { |
| case 'nativejs': |
| num id = x[2]; |
| return new _JsSendPortSync(id); |
| case 'dart': |
| num isolateId = x[2]; |
| num portId = x[3]; |
| return ReceivePortSync._lookup(isolateId, portId); |
| default: |
| throw 'Illegal SendPortSync type: $tag'; |
| } |
| } |
| } |
| |
| // The receiver is JS. |
| class _JsSendPortSync implements SendPortSync { |
| |
| final num _id; |
| _JsSendPortSync(this._id); |
| |
| callSync(var message) { |
| var serialized = _serialize(message); |
| var result = _callPortSync(_id, serialized); |
| return _deserialize(result); |
| } |
| |
| bool operator==(var other) { |
| return (other is _JsSendPortSync) && (_id == other._id); |
| } |
| |
| int get hashCode => _id; |
| } |
| |
| // TODO(vsm): Differentiate between Dart2Js and Dartium isolates. |
| // The receiver is a different Dart isolate, compiled to JS. |
| class _RemoteSendPortSync implements SendPortSync { |
| |
| int _isolateId; |
| int _portId; |
| _RemoteSendPortSync(this._isolateId, this._portId); |
| |
| callSync(var message) { |
| var serialized = _serialize(message); |
| var result = _call(_isolateId, _portId, serialized); |
| return _deserialize(result); |
| } |
| |
| static _call(int isolateId, int portId, var message) { |
| var target = 'dart-port-$isolateId-$portId'; |
| // TODO(vsm): Make this re-entrant. |
| // TODO(vsm): Set this up set once, on the first call. |
| var source = '$target-result'; |
| var result = null; |
| window.on[source].first.then((Event e) { |
| result = json.parse(_getPortSyncEventData(e)); |
| }); |
| _dispatchEvent(target, [source, message]); |
| return result; |
| } |
| |
| bool operator==(var other) { |
| return (other is _RemoteSendPortSync) && (_isolateId == other._isolateId) |
| && (_portId == other._portId); |
| } |
| |
| int get hashCode => _isolateId >> 16 + _portId; |
| } |
| |
| // The receiver is in the same Dart isolate, compiled to JS. |
| class _LocalSendPortSync implements SendPortSync { |
| |
| ReceivePortSync _receivePort; |
| |
| _LocalSendPortSync._internal(this._receivePort); |
| |
| callSync(var message) { |
| // TODO(vsm): Do a more efficient deep copy. |
| var copy = _deserialize(_serialize(message)); |
| var result = _receivePort._callback(copy); |
| return _deserialize(_serialize(result)); |
| } |
| |
| bool operator==(var other) { |
| return (other is _LocalSendPortSync) |
| && (_receivePort == other._receivePort); |
| } |
| |
| int get hashCode => _receivePort.hashCode; |
| } |
| |
| // TODO(vsm): Move this to dart:isolate. This will take some |
| // refactoring as there are dependences here on the DOM. Users |
| // interact with this class (or interface if we change it) directly - |
| // new ReceivePortSync. I think most of the DOM logic could be |
| // delayed until the corresponding SendPort is registered on the |
| // window. |
| |
| // A Dart ReceivePortSync (tagged 'dart' when serialized) is |
| // identifiable / resolvable by the combination of its isolateid and |
| // portid. When a corresponding SendPort is used within the same |
| // isolate, the _portMap below can be used to obtain the |
| // ReceivePortSync directly. Across isolates (or from JS), an |
| // EventListener can be used to communicate with the port indirectly. |
| class ReceivePortSync { |
| |
| static Map<int, ReceivePortSync> _portMap; |
| static int _portIdCount; |
| static int _cachedIsolateId; |
| |
| num _portId; |
| Function _callback; |
| StreamSubscription _portSubscription; |
| |
| ReceivePortSync() { |
| if (_portIdCount == null) { |
| _portIdCount = 0; |
| _portMap = new Map<int, ReceivePortSync>(); |
| } |
| _portId = _portIdCount++; |
| _portMap[_portId] = this; |
| } |
| |
| static int get _isolateId { |
| // TODO(vsm): Make this coherent with existing isolate code. |
| if (_cachedIsolateId == null) { |
| _cachedIsolateId = _getNewIsolateId(); |
| } |
| return _cachedIsolateId; |
| } |
| |
| static String _getListenerName(isolateId, portId) => |
| 'dart-port-$isolateId-$portId'; |
| String get _listenerName => _getListenerName(_isolateId, _portId); |
| |
| void receive(callback(var message)) { |
| _callback = callback; |
| if (_portSubscription == null) { |
| _portSubscription = window.on[_listenerName].listen((Event e) { |
| var data = json.parse(_getPortSyncEventData(e)); |
| var replyTo = data[0]; |
| var message = _deserialize(data[1]); |
| var result = _callback(message); |
| _dispatchEvent(replyTo, _serialize(result)); |
| }); |
| } |
| } |
| |
| void close() { |
| _portMap.remove(_portId); |
| if (_portSubscription != null) _portSubscription.cancel(); |
| } |
| |
| SendPortSync toSendPort() { |
| return new _LocalSendPortSync._internal(this); |
| } |
| |
| static SendPortSync _lookup(int isolateId, int portId) { |
| if (isolateId == _isolateId) { |
| return _portMap[portId].toSendPort(); |
| } else { |
| return new _RemoteSendPortSync(isolateId, portId); |
| } |
| } |
| } |
| |
| get _isolateId => ReceivePortSync._isolateId; |
| |
| void _dispatchEvent(String receiver, var message) { |
| var event = new CustomEvent(receiver, canBubble: false, cancelable:false, |
| detail: json.stringify(message)); |
| window.dispatchEvent(event); |
| } |
| |
| String _getPortSyncEventData(CustomEvent event) => event.detail; |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| typedef void _MicrotaskCallback(); |
| |
| /** |
| * This class attempts to invoke a callback as soon as the current event stack |
| * unwinds, but before the browser repaints. |
| */ |
| abstract class _MicrotaskScheduler { |
| bool _nextMicrotaskFrameScheduled = false; |
| final _MicrotaskCallback _callback; |
| |
| _MicrotaskScheduler(this._callback); |
| |
| /** |
| * Creates the best possible microtask scheduler for the current platform. |
| */ |
| factory _MicrotaskScheduler.best(_MicrotaskCallback callback) { |
| if (Window._supportsSetImmediate) { |
| return new _SetImmediateScheduler(callback); |
| } else if (MutationObserver.supported) { |
| return new _MutationObserverScheduler(callback); |
| } |
| return new _PostMessageScheduler(callback); |
| } |
| |
| /** |
| * Schedules a microtask callback if one has not been scheduled already. |
| */ |
| void maybeSchedule() { |
| if (this._nextMicrotaskFrameScheduled) { |
| return; |
| } |
| this._nextMicrotaskFrameScheduled = true; |
| this._schedule(); |
| } |
| |
| /** |
| * Does the actual scheduling of the callback. |
| */ |
| void _schedule(); |
| |
| /** |
| * Handles the microtask callback and forwards it if necessary. |
| */ |
| void _onCallback() { |
| // Ignore spurious messages. |
| if (!_nextMicrotaskFrameScheduled) { |
| return; |
| } |
| _nextMicrotaskFrameScheduled = false; |
| this._callback(); |
| } |
| } |
| |
| /** |
| * Scheduler which uses window.postMessage to schedule events. |
| */ |
| class _PostMessageScheduler extends _MicrotaskScheduler { |
| const _MICROTASK_MESSAGE = "DART-MICROTASK"; |
| |
| _PostMessageScheduler(_MicrotaskCallback callback): super(callback) { |
| // Messages from other windows do not cause a security risk as |
| // all we care about is that _handleMessage is called |
| // after the current event loop is unwound and calling the function is |
| // a noop when zero requests are pending. |
| window.onMessage.listen(this._handleMessage); |
| } |
| |
| void _schedule() { |
| window.postMessage(_MICROTASK_MESSAGE, "*"); |
| } |
| |
| void _handleMessage(e) { |
| this._onCallback(); |
| } |
| } |
| |
| /** |
| * Scheduler which uses a MutationObserver to schedule events. |
| */ |
| class _MutationObserverScheduler extends _MicrotaskScheduler { |
| MutationObserver _observer; |
| Element _dummy; |
| |
| _MutationObserverScheduler(_MicrotaskCallback callback): super(callback) { |
| // Mutation events get fired as soon as the current event stack is unwound |
| // so we just make a dummy event and listen for that. |
| _observer = new MutationObserver(this._handleMutation); |
| _dummy = new DivElement(); |
| _observer.observe(_dummy, attributes: true); |
| } |
| |
| void _schedule() { |
| // Toggle it to trigger the mutation event. |
| _dummy.hidden = !_dummy.hidden; |
| } |
| |
| _handleMutation(List<MutationRecord> mutations, MutationObserver observer) { |
| this._onCallback(); |
| } |
| } |
| |
| /** |
| * Scheduler which uses window.setImmediate to schedule events. |
| */ |
| class _SetImmediateScheduler extends _MicrotaskScheduler { |
| _SetImmediateScheduler(_MicrotaskCallback callback): super(callback); |
| |
| void _schedule() { |
| window._setImmediate(_handleImmediate); |
| } |
| |
| void _handleImmediate() { |
| this._onCallback(); |
| } |
| } |
| |
| List<TimeoutHandler> _pendingMicrotasks; |
| _MicrotaskScheduler _microtaskScheduler = null; |
| |
| void _maybeScheduleMicrotaskFrame() { |
| if (_microtaskScheduler == null) { |
| _microtaskScheduler = |
| new _MicrotaskScheduler.best(_completeMicrotasks); |
| } |
| _microtaskScheduler.maybeSchedule(); |
| } |
| |
| /** |
| * Registers a [callback] which is called after the current execution stack |
| * unwinds. |
| */ |
| void _addMicrotaskCallback(TimeoutHandler callback) { |
| if (_pendingMicrotasks == null) { |
| _pendingMicrotasks = <TimeoutHandler>[]; |
| _maybeScheduleMicrotaskFrame(); |
| } |
| _pendingMicrotasks.add(callback); |
| } |
| |
| |
| /** |
| * Complete all pending microtasks. |
| */ |
| void _completeMicrotasks() { |
| var callbacks = _pendingMicrotasks; |
| _pendingMicrotasks = null; |
| for (var callback in callbacks) { |
| callback(); |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // Patch file for the dart:isolate library. |
| |
| |
| /******************************************************** |
| Inserted from lib/isolate/serialization.dart |
| ********************************************************/ |
| |
| class _MessageTraverserVisitedMap { |
| |
| operator[](var object) => null; |
| void operator[]=(var object, var info) { } |
| |
| void reset() { } |
| void cleanup() { } |
| |
| } |
| |
| /** Abstract visitor for dart objects that can be sent as isolate messages. */ |
| abstract class _MessageTraverser { |
| |
| _MessageTraverserVisitedMap _visited; |
| _MessageTraverser() : _visited = new _MessageTraverserVisitedMap(); |
| |
| /** Visitor's entry point. */ |
| traverse(var x) { |
| if (isPrimitive(x)) return visitPrimitive(x); |
| _visited.reset(); |
| var result; |
| try { |
| result = _dispatch(x); |
| } finally { |
| _visited.cleanup(); |
| } |
| return result; |
| } |
| |
| _dispatch(var x) { |
| if (isPrimitive(x)) return visitPrimitive(x); |
| if (x is List) return visitList(x); |
| if (x is Map) return visitMap(x); |
| if (x is SendPort) return visitSendPort(x); |
| if (x is SendPortSync) return visitSendPortSync(x); |
| |
| // Overridable fallback. |
| return visitObject(x); |
| } |
| |
| visitPrimitive(x); |
| visitList(List x); |
| visitMap(Map x); |
| visitSendPort(SendPort x); |
| visitSendPortSync(SendPortSync x); |
| |
| visitObject(Object x) { |
| // TODO(floitsch): make this a real exception. (which one)? |
| throw "Message serialization: Illegal value $x passed"; |
| } |
| |
| static bool isPrimitive(x) { |
| return (x == null) || (x is String) || (x is num) || (x is bool); |
| } |
| } |
| |
| |
| /** Visitor that serializes a message as a JSON array. */ |
| abstract class _Serializer extends _MessageTraverser { |
| int _nextFreeRefId = 0; |
| |
| visitPrimitive(x) => x; |
| |
| visitList(List list) { |
| int copyId = _visited[list]; |
| if (copyId != null) return ['ref', copyId]; |
| |
| int id = _nextFreeRefId++; |
| _visited[list] = id; |
| var jsArray = _serializeList(list); |
| // TODO(floitsch): we are losing the generic type. |
| return ['list', id, jsArray]; |
| } |
| |
| visitMap(Map map) { |
| int copyId = _visited[map]; |
| if (copyId != null) return ['ref', copyId]; |
| |
| int id = _nextFreeRefId++; |
| _visited[map] = id; |
| var keys = _serializeList(map.keys.toList()); |
| var values = _serializeList(map.values.toList()); |
| // TODO(floitsch): we are losing the generic type. |
| return ['map', id, keys, values]; |
| } |
| |
| _serializeList(List list) { |
| int len = list.length; |
| var result = new List(len); |
| for (int i = 0; i < len; i++) { |
| result[i] = _dispatch(list[i]); |
| } |
| return result; |
| } |
| } |
| |
| /** Deserializes arrays created with [_Serializer]. */ |
| abstract class _Deserializer { |
| Map<int, dynamic> _deserialized; |
| |
| _Deserializer(); |
| |
| static bool isPrimitive(x) { |
| return (x == null) || (x is String) || (x is num) || (x is bool); |
| } |
| |
| deserialize(x) { |
| if (isPrimitive(x)) return x; |
| // TODO(floitsch): this should be new HashMap<int, dynamic>() |
| _deserialized = new HashMap(); |
| return _deserializeHelper(x); |
| } |
| |
| _deserializeHelper(x) { |
| if (isPrimitive(x)) return x; |
| assert(x is List); |
| switch (x[0]) { |
| case 'ref': return _deserializeRef(x); |
| case 'list': return _deserializeList(x); |
| case 'map': return _deserializeMap(x); |
| case 'sendport': return deserializeSendPort(x); |
| default: return deserializeObject(x); |
| } |
| } |
| |
| _deserializeRef(List x) { |
| int id = x[1]; |
| var result = _deserialized[id]; |
| assert(result != null); |
| return result; |
| } |
| |
| List _deserializeList(List x) { |
| int id = x[1]; |
| // We rely on the fact that Dart-lists are directly mapped to Js-arrays. |
| List dartList = x[2]; |
| _deserialized[id] = dartList; |
| int len = dartList.length; |
| for (int i = 0; i < len; i++) { |
| dartList[i] = _deserializeHelper(dartList[i]); |
| } |
| return dartList; |
| } |
| |
| Map _deserializeMap(List x) { |
| Map result = new Map(); |
| int id = x[1]; |
| _deserialized[id] = result; |
| List keys = x[2]; |
| List values = x[3]; |
| int len = keys.length; |
| assert(len == values.length); |
| for (int i = 0; i < len; i++) { |
| var key = _deserializeHelper(keys[i]); |
| var value = _deserializeHelper(values[i]); |
| result[key] = value; |
| } |
| return result; |
| } |
| |
| deserializeSendPort(List x); |
| |
| deserializeObject(List x) { |
| // TODO(floitsch): Use real exception (which one?). |
| throw "Unexpected serialized object"; |
| } |
| } |
| |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * Helper class to implement custom events which wrap DOM events. |
| */ |
| class _WrappedEvent implements Event { |
| final Event wrapped; |
| _WrappedEvent(this.wrapped); |
| |
| bool get bubbles => wrapped.bubbles; |
| |
| bool get cancelBubble => wrapped.bubbles; |
| void set cancelBubble(bool value) { |
| wrapped.cancelBubble = value; |
| } |
| |
| bool get cancelable => wrapped.cancelable; |
| |
| DataTransfer get clipboardData => wrapped.clipboardData; |
| |
| EventTarget get currentTarget => wrapped.currentTarget; |
| |
| bool get defaultPrevented => wrapped.defaultPrevented; |
| |
| int get eventPhase => wrapped.eventPhase; |
| |
| EventTarget get target => wrapped.target; |
| |
| int get timeStamp => wrapped.timeStamp; |
| |
| String get type => wrapped.type; |
| |
| void $dom_initEvent(String eventTypeArg, bool canBubbleArg, |
| bool cancelableArg) { |
| throw new UnsupportedError( |
| 'Cannot initialize this Event.'); |
| } |
| |
| void preventDefault() { |
| wrapped.preventDefault(); |
| } |
| |
| void stopImmediatePropagation() { |
| wrapped.stopImmediatePropagation(); |
| } |
| |
| void stopPropagation() { |
| wrapped.stopPropagation(); |
| } |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| /** |
| * A list which just wraps another list, for either intercepting list calls or |
| * retyping the list (for example, from List<A> to List<B> where B extends A). |
| */ |
| class _WrappedList<E> extends ListBase<E> { |
| final List _list; |
| |
| _WrappedList(this._list); |
| |
| // Iterable APIs |
| |
| Iterator<E> get iterator => new _WrappedIterator(_list.iterator); |
| |
| int get length => _list.length; |
| |
| // Collection APIs |
| |
| void add(E element) { _list.add(element); } |
| |
| bool remove(Object element) => _list.remove(element); |
| |
| void clear() { _list.clear(); } |
| |
| // List APIs |
| |
| E operator [](int index) => _list[index]; |
| |
| void operator []=(int index, E value) { _list[index] = value; } |
| |
| void set length(int newLength) { _list.length = newLength; } |
| |
| void sort([int compare(E a, E b)]) { _list.sort(compare); } |
| |
| int indexOf(Object element, [int start = 0]) => _list.indexOf(element, start); |
| |
| int lastIndexOf(Object element, [int start]) => _list.lastIndexOf(element, start); |
| |
| void insert(int index, E element) => _list.insert(index, element); |
| |
| E removeAt(int index) => _list.removeAt(index); |
| |
| void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { |
| _list.setRange(start, end, iterable, skipCount); |
| } |
| |
| void removeRange(int start, int end) { _list.removeRange(start, end); } |
| |
| void replaceRange(int start, int end, Iterable<E> iterable) { |
| _list.replaceRange(start, end, iterable); |
| } |
| |
| void fillRange(int start, int end, [E fillValue]) { |
| _list.fillRange(start, end, fillValue); |
| } |
| } |
| |
| /** |
| * Iterator wrapper for _WrappedList. |
| */ |
| class _WrappedIterator<E> implements Iterator<E> { |
| Iterator _iterator; |
| |
| _WrappedIterator(this._iterator); |
| |
| bool moveNext() { |
| return _iterator.moveNext(); |
| } |
| |
| E get current => _iterator.current; |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| // Conversions for Window. These check if the window is the local |
| // window, and if it's not, wraps or unwraps it with a secure wrapper. |
| // We need to test for EventTarget here as well as it's a base type. |
| // We omit an unwrapper for Window as no methods take a non-local |
| // window as a parameter. |
| |
| |
| WindowBase _convertNativeToDart_Window(win) { |
| if (win == null) return null; |
| return _DOMWindowCrossFrame._createSafe(win); |
| } |
| |
| EventTarget _convertNativeToDart_EventTarget(e) { |
| if (e == null) { |
| return null; |
| } |
| // Assume it's a Window if it contains the setInterval property. It may be |
| // from a different frame - without a patched prototype - so we cannot |
| // rely on Dart type checking. |
| if (JS('bool', r'"setInterval" in #', e)) { |
| var window = _DOMWindowCrossFrame._createSafe(e); |
| // If it's a native window. |
| if (window is EventTarget) { |
| return window; |
| } |
| return null; |
| } |
| else |
| return e; |
| } |
| |
| EventTarget _convertDartToNative_EventTarget(e) { |
| if (e is _DOMWindowCrossFrame) { |
| return e._window; |
| } else { |
| return e; |
| } |
| } |
| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| // TODO(vsm): Unify with Dartium version. |
| class _DOMWindowCrossFrame implements WindowBase { |
| // Private window. Note, this is a window in another frame, so it |
| // cannot be typed as "Window" as its prototype is not patched |
| // properly. Its fields and methods can only be accessed via JavaScript. |
| final _window; |
| |
| // Fields. |
| HistoryBase get history => |
| _HistoryCrossFrame._createSafe(JS('HistoryBase', '#.history', _window)); |
| LocationBase get location => |
| _LocationCrossFrame._createSafe(JS('LocationBase', '#.location', _window)); |
| |
| // TODO(vsm): Add frames to navigate subframes. See 2312. |
| |
| bool get closed => JS('bool', '#.closed', _window); |
| |
| WindowBase get opener => _createSafe(JS('WindowBase', '#.opener', _window)); |
| |
| WindowBase get parent => _createSafe(JS('WindowBase', '#.parent', _window)); |
| |
| WindowBase get top => _createSafe(JS('WindowBase', '#.top', _window)); |
| |
| // Methods. |
| void close() => JS('void', '#.close()', _window); |
| |
| void postMessage(var message, String targetOrigin, [List messagePorts = null]) { |
| if (messagePorts == null) { |
| JS('void', '#.postMessage(#,#)', _window, message, targetOrigin); |
| } else { |
| JS('void', '#.postMessage(#,#,#)', _window, message, targetOrigin, messagePorts); |
| } |
| } |
| |
| // Implementation support. |
| _DOMWindowCrossFrame(this._window); |
| |
| static WindowBase _createSafe(w) { |
| if (identical(w, window)) { |
| return w; |
| } else { |
| // TODO(vsm): Cache or implement equality. |
| return new _DOMWindowCrossFrame(w); |
| } |
| } |
| } |
| |
| class _LocationCrossFrame implements LocationBase { |
| // Private location. Note, this is a location object in another frame, so it |
| // cannot be typed as "Location" as its prototype is not patched |
| // properly. Its fields and methods can only be accessed via JavaScript. |
| var _location; |
| |
| void set href(String val) => _setHref(_location, val); |
| static void _setHref(location, val) { |
| JS('void', '#.href = #', location, val); |
| } |
| |
| // Implementation support. |
| _LocationCrossFrame(this._location); |
| |
| static LocationBase _createSafe(location) { |
| if (identical(location, window.location)) { |
| return location; |
| } else { |
| // TODO(vsm): Cache or implement equality. |
| return new _LocationCrossFrame(location); |
| } |
| } |
| } |
| |
| class _HistoryCrossFrame implements HistoryBase { |
| // Private history. Note, this is a history object in another frame, so it |
| // cannot be typed as "History" as its prototype is not patched |
| // properly. Its fields and methods can only be accessed via JavaScript. |
| var _history; |
| |
| void back() => JS('void', '#.back()', _history); |
| |
| void forward() => JS('void', '#.forward()', _history); |
| |
| void go(int distance) => JS('void', '#.go(#)', _history, distance); |
| |
| // Implementation support. |
| _HistoryCrossFrame(this._history); |
| |
| static HistoryBase _createSafe(h) { |
| if (identical(h, window.history)) { |
| return h; |
| } else { |
| // TODO(vsm): Cache or implement equality. |
| return new _HistoryCrossFrame(h); |
| } |
| } |
| } |
| /** |
| * A custom KeyboardEvent that attempts to eliminate cross-browser |
| * inconsistencies, and also provide both keyCode and charCode information |
| * for all key events (when such information can be determined). |
| * |
| * KeyEvent tries to provide a higher level, more polished keyboard event |
| * information on top of the "raw" [KeyboardEvent]. |
| * |
| * This class is very much a work in progress, and we'd love to get information |
| * on how we can make this class work with as many international keyboards as |
| * possible. Bugs welcome! |
| */ |
| class KeyEvent extends _WrappedEvent implements KeyboardEvent { |
| /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */ |
| KeyboardEvent _parent; |
| |
| /** The "fixed" value of whether the alt key is being pressed. */ |
| bool _shadowAltKey; |
| |
| /** Caculated value of what the estimated charCode is for this event. */ |
| int _shadowCharCode; |
| |
| /** Caculated value of what the estimated keyCode is for this event. */ |
| int _shadowKeyCode; |
| |
| /** Caculated value of what the estimated keyCode is for this event. */ |
| int get keyCode => _shadowKeyCode; |
| |
| /** Caculated value of what the estimated charCode is for this event. */ |
| int get charCode => this.type == 'keypress' ? _shadowCharCode : 0; |
| |
| /** Caculated value of whether the alt key is pressed is for this event. */ |
| bool get altKey => _shadowAltKey; |
| |
| /** Caculated value of what the estimated keyCode is for this event. */ |
| int get which => keyCode; |
| |
| /** Accessor to the underlying keyCode value is the parent event. */ |
| int get _realKeyCode => JS('int', '#.keyCode', _parent); |
| |
| /** Accessor to the underlying charCode value is the parent event. */ |
| int get _realCharCode => JS('int', '#.charCode', _parent); |
| |
| /** Accessor to the underlying altKey value is the parent event. */ |
| bool get _realAltKey => JS('bool', '#.altKey', _parent); |
| |
| /** Construct a KeyEvent with [parent] as the event we're emulating. */ |
| KeyEvent(KeyboardEvent parent): super(parent) { |
| _parent = parent; |
| _shadowAltKey = _realAltKey; |
| _shadowCharCode = _realCharCode; |
| _shadowKeyCode = _realKeyCode; |
| } |
| |
| // TODO(efortuna): If KeyEvent is sufficiently successful that we want to make |
| // it the default keyboard event handling, move these methods over to Element. |
| /** Accessor to provide a stream of KeyEvents on the desired target. */ |
| static EventStreamProvider<KeyEvent> keyDownEvent = |
| new _KeyboardEventHandler('keydown'); |
| /** Accessor to provide a stream of KeyEvents on the desired target. */ |
| static EventStreamProvider<KeyEvent> keyUpEvent = |
| new _KeyboardEventHandler('keyup'); |
| /** Accessor to provide a stream of KeyEvents on the desired target. */ |
| static EventStreamProvider<KeyEvent> keyPressEvent = |
| new _KeyboardEventHandler('keypress'); |
| |
| /** True if the altGraphKey is pressed during this event. */ |
| bool get altGraphKey => _parent.altGraphKey; |
| /** Accessor to the clipboardData available for this event. */ |
| DataTransfer get clipboardData => _parent.clipboardData; |
| /** True if the ctrl key is pressed during this event. */ |
| bool get ctrlKey => _parent.ctrlKey; |
| int get detail => _parent.detail; |
| /** |
| * Accessor to the part of the keyboard that the key was pressed from (one of |
| * KeyLocation.STANDARD, KeyLocation.RIGHT, KeyLocation.LEFT, |
| * KeyLocation.NUMPAD, KeyLocation.MOBILE, KeyLocation.JOYSTICK). |
| */ |
| int get keyLocation => _parent.keyLocation; |
| Point get layer => _parent.layer; |
| /** True if the Meta (or Mac command) key is pressed during this event. */ |
| bool get metaKey => _parent.metaKey; |
| Point get page => _parent.page; |
| /** True if the shift key was pressed during this event. */ |
| bool get shiftKey => _parent.shiftKey; |
| Window get view => _parent.view; |
| void $dom_initUIEvent(String type, bool canBubble, bool cancelable, |
| Window view, int detail) { |
| throw new UnsupportedError("Cannot initialize a UI Event from a KeyEvent."); |
| } |
| String get _shadowKeyIdentifier => JS('String', '#.keyIdentifier', _parent); |
| |
| int get $dom_charCode => charCode; |
| int get $dom_keyCode => keyCode; |
| String get $dom_keyIdentifier { |
| throw new UnsupportedError("keyIdentifier is unsupported."); |
| } |
| void $dom_initKeyboardEvent(String type, bool canBubble, bool cancelable, |
| Window view, String keyIdentifier, int keyLocation, bool ctrlKey, |
| bool altKey, bool shiftKey, bool metaKey, |
| bool altGraphKey) { |
| throw new UnsupportedError( |
| "Cannot initialize a KeyboardEvent from a KeyEvent."); |
| } |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| // On Firefox 11, the object obtained from 'window.location' is very strange. |
| // It can't be monkey-patched and seems immune to putting methods on |
| // Object.prototype. We are forced to wrap the object. |
| |
| class _LocationWrapper implements Location { |
| |
| final _ptr; // Opaque reference to real location. |
| |
| _LocationWrapper(this._ptr); |
| |
| // TODO(sra): Replace all the _set and _get calls with 'JS' forms. |
| |
| // final List<String> ancestorOrigins; |
| List<String> get ancestorOrigins => _get(_ptr, 'ancestorOrigins'); |
| |
| // String hash; |
| String get hash => _get(_ptr, 'hash'); |
| void set hash(String value) { |
| _set(_ptr, 'hash', value); |
| } |
| |
| // String host; |
| String get host => _get(_ptr, 'host'); |
| void set host(String value) { |
| _set(_ptr, 'host', value); |
| } |
| |
| // String hostname; |
| String get hostname => _get(_ptr, 'hostname'); |
| void set hostname(String value) { |
| _set(_ptr, 'hostname', value); |
| } |
| |
| // String href; |
| String get href => _get(_ptr, 'href'); |
| void set href(String value) { |
| _set(_ptr, 'href', value); |
| } |
| |
| // final String origin; |
| String get origin { |
| if (JS('bool', '("origin" in #)', _ptr)) { |
| return JS('String', '#.origin', _ptr); |
| } |
| return '${this.protocol}//${this.host}'; |
| } |
| |
| // String pathname; |
| String get pathname => _get(_ptr, 'pathname'); |
| void set pathname(String value) { |
| _set(_ptr, 'pathname', value); |
| } |
| |
| // String port; |
| String get port => _get(_ptr, 'port'); |
| void set port(String value) { |
| _set(_ptr, 'port', value); |
| } |
| |
| // String protocol; |
| String get protocol => _get(_ptr, 'protocol'); |
| void set protocol(String value) { |
| _set(_ptr, 'protocol', value); |
| } |
| |
| // String search; |
| String get search => _get(_ptr, 'search'); |
| void set search(String value) { |
| _set(_ptr, 'search', value); |
| } |
| |
| void assign(String url) => JS('void', '#.assign(#)', _ptr, url); |
| |
| void reload() => JS('void', '#.reload()', _ptr); |
| |
| void replace(String url) => JS('void', '#.replace(#)', _ptr, url); |
| |
| String toString() => JS('String', '#.toString()', _ptr); |
| |
| |
| static _get(p, m) => JS('var', '#[#]', p, m); |
| static _set(p, m, v) => JS('void', '#[#] = #', p, m, v); |
| } |
| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| class Platform { |
| /** |
| * Returns true if dart:typed_data types are supported on this |
| * browser. If false, using these types will generate a runtime |
| * error. |
| */ |
| static final supportsTypedData = JS('bool', '!!(window.ArrayBuffer)'); |
| |
| /** |
| * Returns true if SIMD types in dart:typed_data types are supported |
| * on this browser. If false, using these types will generate a runtime |
| * error. |
| */ |
| static final supportsSimd = false; |
| } |
| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| |
| // Iterator for arrays with fixed size. |
| class FixedSizeListIterator<T> implements Iterator<T> { |
| final List<T> _array; |
| final int _length; // Cache array length for faster access. |
| int _position; |
| T _current; |
| |
| FixedSizeListIterator(List<T> array) |
| : _array = array, |
| _position = -1, |
| _length = array.length; |
| |
| bool moveNext() { |
| int nextPosition = _position + 1; |
| if (nextPosition < _length) { |
| _current = _array[nextPosition]; |
| _position = nextPosition; |
| return true; |
| } |
| _current = null; |
| _position = _length; |
| return false; |
| } |
| |
| T get current => _current; |
| } |
| |
| // Iterator for arrays with variable size. |
| class _VariableSizeListIterator<T> implements Iterator<T> { |
| final List<T> _array; |
| int _position; |
| T _current; |
| |
| _VariableSizeListIterator(List<T> array) |
| : _array = array, |
| _position = -1; |
| |
| bool moveNext() { |
| int nextPosition = _position + 1; |
| if (nextPosition < _array.length) { |
| _current = _array[nextPosition]; |
| _position = nextPosition; |
| return true; |
| } |
| _current = null; |
| _position = _array.length; |
| return false; |
| } |
| |
| T get current => _current; |
| } |