blob: aafcdaf198774f3978c3bb59d14dda1808c46a90 [file] [log] [blame]
* Copyright (C) 2006, 2007, 2011 Apple Inc. All rights reserved.
* Copyright (C) 2006, 2007 Samuel Weinig <>
* 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
* 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 ();
enum DocumentReadyState { "loading", "interactive", "complete" };
enum VisibilityState { "hidden", "visible", "prerender", "unloaded" };
// FIXME: Document should have a constructor.
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, CustomElementCallbacks, RaisesException] Node importNode(Node node, optional boolean deep = false);
[RaisesException, 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);
// FIXME: CDATASection has been removed from the spec.
[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;
// 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
[CustomElementCallbacks] attribute DOMString title;
[CustomElementCallbacks] attribute DOMString dir;
[RaisesException=Setter, CustomElementCallbacks, PerWorldBindings] attribute HTMLElement? body;
readonly attribute HTMLHeadElement? head;
[SameObject] readonly attribute HTMLCollection images;
[SameObject] readonly attribute HTMLCollection embeds;
[SameObject, ImplementedAs=embeds] readonly attribute HTMLCollection plugins;
[SameObject] readonly attribute HTMLCollection links;
[SameObject] readonly attribute HTMLCollection forms;
[SameObject] readonly attribute HTMLCollection scripts;
[PerWorldBindings] NodeList getElementsByName(DOMString elementName);
readonly attribute HTMLScriptElement? currentScript;
// dynamic markup insertion
// FIXME: There are two open() methods in the spec.
[Custom, CustomElementCallbacks, RaisesException] void open();
[RaisesException] void close();
[CallWith=FirstWindow, CustomElementCallbacks, RaisesException] void write(DOMString... text);
[CallWith=FirstWindow, CustomElementCallbacks, RaisesException] void writeln(DOMString... text);
// user interaction
[ImplementedAs=domWindow] readonly attribute Window? defaultView;
readonly attribute Element? activeElement;
boolean hasFocus();
[CustomElementCallbacks, MeasureAs=DocumentDesignMode] attribute DOMString designMode;
[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
// FIXME: *Color are on HTMLDocument.
readonly attribute HTMLCollection anchors;
readonly attribute HTMLCollection applets;
// FIXME: clear(), captureEvents(), releaseEvents() and all are on HTMLDocument.
// CSS Object Model (CSSOM)
[SameObject] readonly attribute StyleSheetList styleSheets;
attribute DOMString? selectedStylesheetSet;
readonly attribute DOMString? preferredStylesheetSet;
// CSSOM View Module
// FIXME: The x and y arguments should be of type double.
Element? elementFromPoint(long x, long y);
sequence<Element> elementsFromPoint(long x, long y);
readonly attribute Element? scrollingElement;
// Selection API
Selection? getSelection();
// Pointer Lock
attribute EventHandler onpointerlockchange;
attribute EventHandler onpointerlockerror;
[MeasureAs=DocumentPointerLockElement] readonly attribute Element? pointerLockElement;
[MeasureAs=DocumentExitPointerLock] void exitPointerLock();
// Touch Events
// 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
// FIXME: The registerElement return type should be Function.
[CallWith=ScriptState, CustomElementCallbacks, RaisesException, MeasureAs=DocumentRegisterElement] CustomElementConstructor registerElement(DOMString type, optional ElementRegistrationOptions options);
// 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
readonly attribute boolean hidden;
readonly attribute VisibilityState visibilityState;
// 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 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;