| /* |
| * Copyright (C) 2006, 2007, 2011 Apple Inc. All rights reserved. |
| * Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public License |
| * along with this library; see the file COPYING.LIB. If not, write to |
| * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| callback CustomElementConstructor = Element (); |
| |
| // https://html.spec.whatwg.org/#the-document-object |
| enum DocumentReadyState { "loading", "interactive", "complete" }; |
| |
| // http://www.w3.org/TR/page-visibility/#VisibilityState |
| enum VisibilityState { "hidden", "visible", "prerender", "unloaded" }; |
| |
| // https://mikewest.github.io/cors-rfc1918/#feature-detect |
| enum AddressSpace { "local", "private", "public" }; |
| |
| typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; |
| |
| // https://dom.spec.whatwg.org/#interface-document |
| |
| // FIXME: Document should have a constructor. crbug.com/238234 |
| interface Document : Node { |
| [SameObject] readonly attribute DOMImplementation implementation; |
| readonly attribute DOMString URL; |
| // FIXME: documentURI should not be nullable. |
| [ImplementedAs=url] readonly attribute DOMString? documentURI; |
| readonly attribute DOMString origin; |
| [RuntimeEnabled=suborigins] readonly attribute DOMString suborigin; |
| readonly attribute DOMString compatMode; |
| |
| readonly attribute DOMString characterSet; |
| [ImplementedAs=characterSet] readonly attribute DOMString charset; // legacy alias of .characterSet |
| [ImplementedAs=characterSet] readonly attribute DOMString inputEncoding; // legacy alias of .characterSet |
| readonly attribute DOMString contentType; |
| |
| readonly attribute DocumentType? doctype; |
| readonly attribute Element? documentElement; |
| HTMLCollection getElementsByTagName(DOMString localName); |
| HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName); |
| HTMLCollection getElementsByClassName(DOMString classNames); |
| |
| [NewObject, CustomElementCallbacks, PerWorldBindings, RaisesException] Element createElement(DOMString localName); |
| [NewObject, CustomElementCallbacks, RaisesException] Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName); |
| [NewObject] DocumentFragment createDocumentFragment(); |
| [NewObject] Text createTextNode(DOMString data); |
| [NewObject] Comment createComment(DOMString data); |
| [NewObject, RaisesException] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); |
| |
| [NewObject, CEReactions, CustomElementCallbacks, RaisesException] Node importNode(Node node, optional boolean deep = false); |
| [RaisesException, CEReactions, CustomElementCallbacks] Node adoptNode(Node node); |
| |
| [NewObject, RaisesException, MeasureAs=DocumentCreateAttribute] Attr createAttribute(DOMString localName); |
| [NewObject, RaisesException, MeasureAs=DocumentCreateAttributeNS] Attr createAttributeNS(DOMString? namespaceURI, DOMString qualifiedName); |
| |
| [NewObject, RaisesException, CallWith=ExecutionContext] Event createEvent(DOMString eventType); |
| |
| [NewObject] Range createRange(); |
| |
| // NodeFilter.SHOW_ALL = 0xFFFFFFFF |
| [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); |
| [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); |
| |
| // NonDocumentRootScroller (https://github.com/bokand/NonDocumentRootScroller) |
| [RaisesException=Setter, RuntimeEnabled=SetRootScroller] attribute Element? rootScroller; |
| |
| // FIXME: CDATASection has been removed from the spec. crbug.com/437205 |
| [RaisesException, MeasureAs=DocumentCreateCDATASection] CDATASection createCDATASection(DOMString data); |
| |
| // FIXME: xmlEncoding/xmlVersion/xmlStandalone have been removed from the spec. |
| [MeasureAs=DocumentXMLEncoding] readonly attribute DOMString? xmlEncoding; |
| [RaisesException=Setter, MeasureAs=DocumentXMLVersion] attribute DOMString? xmlVersion; |
| [RaisesException=Setter, MeasureAs=DocumentXMLStandalone] attribute boolean xmlStandalone; |
| |
| // HTML |
| // https://html.spec.whatwg.org/#the-document-object |
| |
| // resource metadata management |
| |
| // Inheritance of [Unforgeable] attributes is not supported. So we have to |
| // define the same unforgeable attributes in derived interfaces as well. |
| // See that HTMLDocument and XMLDocument redefine 'location' attribute. |
| // Keep all the definitions consistent. |
| // TODO(yukishiino): Support inheritance of attributes defined on instance. |
| [PutForwards=href, Unforgeable] readonly attribute Location? location; |
| [RaisesException=Setter] attribute DOMString domain; |
| readonly attribute DOMString referrer; |
| [RaisesException] attribute DOMString cookie; |
| readonly attribute DOMString lastModified; |
| readonly attribute DocumentReadyState readyState; |
| |
| // DOM tree accessors |
| [CEReactions, CustomElementCallbacks] attribute DOMString title; |
| [CEReactions, CustomElementCallbacks] attribute DOMString dir; |
| [CEReactions, RaisesException=Setter, CustomElementCallbacks, PerWorldBindings] attribute HTMLElement? body; |
| readonly attribute HTMLHeadElement? head; |
| [SameObject, Measure] readonly attribute HTMLCollection images; |
| [SameObject, Measure] readonly attribute HTMLCollection embeds; |
| [SameObject, ImplementedAs=embeds, Measure] readonly attribute HTMLCollection plugins; |
| [SameObject, Measure] readonly attribute HTMLCollection links; |
| [SameObject, Measure] readonly attribute HTMLCollection forms; |
| [SameObject, Measure] readonly attribute HTMLCollection scripts; |
| [PerWorldBindings] NodeList getElementsByName(DOMString elementName); |
| [ImplementedAs=currentScriptForBinding] readonly attribute HTMLOrSVGScriptElement? currentScript; |
| |
| // dynamic markup insertion |
| // FIXME: There are two open() methods in the spec. |
| [Custom, CEReactions, CustomElementCallbacks, RaisesException] void open(); |
| [CEReactions, RaisesException] void close(); |
| [CallWith=EnteredWindow, CEReactions, CustomElementCallbacks, RaisesException] void write(DOMString... text); |
| [CallWith=EnteredWindow, CEReactions, CustomElementCallbacks, RaisesException] void writeln(DOMString... text); |
| |
| // user interaction |
| [ImplementedAs=domWindow] readonly attribute Window? defaultView; |
| boolean hasFocus(); |
| [CEReactions, CustomElementCallbacks, MeasureAs=DocumentDesignMode] attribute DOMString designMode; |
| [CEReactions, CustomElementCallbacks, RaisesException] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = ""); |
| [RaisesException] boolean queryCommandEnabled(DOMString commandId); |
| [RaisesException] boolean queryCommandIndeterm(DOMString commandId); |
| [RaisesException] boolean queryCommandState(DOMString commandId); |
| [RaisesException] boolean queryCommandSupported(DOMString commandId); |
| [RaisesException] DOMString queryCommandValue(DOMString commandId); |
| |
| [LenientThis] attribute EventHandler onreadystatechange; |
| |
| // HTML obsolete features |
| // https://html.spec.whatwg.org/#Document-partial |
| |
| // FIXME: *Color are on HTMLDocument. |
| |
| [Measure] readonly attribute HTMLCollection anchors; |
| [Measure] readonly attribute HTMLCollection applets; |
| |
| // FIXME: clear(), captureEvents(), releaseEvents() and all are on HTMLDocument. |
| |
| // CSS Object Model (CSSOM) |
| // http://dev.w3.org/csswg/cssom/#extensions-to-the-document-interface |
| attribute DOMString? selectedStylesheetSet; |
| readonly attribute DOMString? preferredStylesheetSet; |
| |
| readonly attribute Element? scrollingElement; |
| |
| // Pointer Lock |
| // https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#extensions-to-the-document-interface |
| attribute EventHandler onpointerlockchange; |
| attribute EventHandler onpointerlockerror; |
| [MeasureAs=DocumentPointerLockElement] readonly attribute Element? pointerLockElement; |
| [MeasureAs=DocumentExitPointerLock] void exitPointerLock(); |
| |
| // Touch Events |
| // http://rawgit.com/w3c/touch-events/v1-errata/touchevents.html#extensions-to-the-document-interface |
| // FIXME: The arguments should not be optional. |
| [RuntimeEnabled=Touch, Measure, LegacyInterfaceTypeChecking] Touch createTouch([Default=Undefined] optional Window window, |
| [Default=Undefined] optional EventTarget target, |
| [Default=Undefined] optional long identifier, |
| [Default=Undefined] optional unrestricted double pageX, |
| [Default=Undefined] optional unrestricted double pageY, |
| [Default=Undefined] optional unrestricted double screenX, |
| [Default=Undefined] optional unrestricted double screenY, |
| [Default=Undefined] optional unrestricted double radiusX, |
| [Default=Undefined] optional unrestricted double radiusY, |
| [Default=Undefined] optional unrestricted float rotationAngle, |
| [Default=Undefined] optional unrestricted float force); |
| [RuntimeEnabled=Touch] TouchList createTouchList(Touch... touches); |
| |
| // Custom Elements |
| // http://w3c.github.io/webcomponents/spec/custom/#extensions-to-document-interface-to-register |
| // FIXME: The registerElement return type should be Function. |
| [CallWith=ScriptState, CustomElementCallbacks, RaisesException, MeasureAs=DocumentRegisterElement] CustomElementConstructor registerElement(DOMString type, optional ElementRegistrationOptions options); |
| // http://w3c.github.io/webcomponents/spec/custom/#extensions-to-document-interface-to-instantiate |
| // FIXME: The typeExtension arguments should not be nullable. |
| [CustomElementCallbacks, PerWorldBindings, RaisesException] Element createElement(DOMString localName, DOMString? typeExtension); |
| [CustomElementCallbacks, RaisesException] Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName, DOMString? typeExtension); |
| |
| // Page Visibility |
| // http://www.w3.org/TR/page-visibility/#sec-document-interface |
| readonly attribute boolean hidden; |
| readonly attribute VisibilityState visibilityState; |
| |
| // CORS and RFC1918 |
| // https://mikewest.github.io/cors-rfc1918/#feature-detect |
| [RuntimeEnabled=CorsRFC1918, ImplementedAs=addressSpaceForBindings] readonly attribute AddressSpace addressSpace; |
| |
| // Non-standard APIs |
| [MeasureAs=DocumentCaretRangeFromPoint] Range caretRangeFromPoint([Default=Undefined] optional long x, [Default=Undefined] optional long y); |
| |
| // Deprecated prefixed page visibility API. |
| // TODO(davidben): This is a property so attaching a deprecation warning results in false positives when outputting |
| // document in the console. It's possible http://crbug.com/43394 will resolve this. |
| [MeasureAs=PrefixedPageVisibility, ImplementedAs=visibilityState] readonly attribute DOMString webkitVisibilityState; |
| [MeasureAs=PrefixedPageVisibility, ImplementedAs=hidden] readonly attribute boolean webkitHidden; |
| |
| // Event handler attributes |
| attribute EventHandler onbeforecopy; |
| attribute EventHandler onbeforecut; |
| attribute EventHandler onbeforepaste; |
| attribute EventHandler oncopy; |
| attribute EventHandler oncut; |
| attribute EventHandler onpaste; |
| attribute EventHandler onsearch; |
| [RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation; |
| attribute EventHandler onselectionchange; |
| attribute EventHandler onselectstart; |
| attribute EventHandler onwheel; |
| }; |
| |
| Document implements GlobalEventHandlers; |
| Document implements ParentNode; |
| Document implements NonElementParentNode; |
| Document implements DocumentOrShadowRoot; |