blob: 4c21b9ff3f82a5a60db26392b0462309f063e05d [file] [log] [blame]
/*
* Copyright (C) 2006, 2007, 2011, 2015 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.
*/
[
Constructor,
ConstructorCallWith=Document,
CustomToJSObject,
ExportMacro=WEBCORE_EXPORT,
JSCustomHeader,
JSCustomMarkFunction,
JSGenerateToNativeObject,
] interface Document : Node {
readonly attribute DocumentType? doctype;
readonly attribute DOMImplementation implementation;
[DOMJIT=Getter] readonly attribute Element? documentElement;
[NewObject, MayThrowException, ImplementedAs=createElementForBindings] Element createElement(DOMString tagName);
[NewObject] DocumentFragment createDocumentFragment();
[NewObject] Text createTextNode(DOMString data);
[NewObject] Comment createComment(DOMString data);
[NewObject, MayThrowException] CDATASection createCDATASection(DOMString data);
[NewObject, MayThrowException] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
[NewObject, MayThrowException] Attr createAttribute(DOMString name);
HTMLCollection getElementsByTagName(DOMString tagname);
[CEReactions, MayThrowException, NewObject] Node importNode(Node importedNode, optional boolean deep = false);
[NewObject, MayThrowException] Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName);
[NewObject, MayThrowException] Attr createAttributeNS(DOMString? namespaceURI, DOMString qualifiedName);
HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
[ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString inputEncoding;
readonly attribute DOMString? xmlEncoding;
[SetterMayThrowException] attribute DOMString? xmlVersion;
attribute boolean xmlStandalone;
[CEReactions, MayThrowException] Node adoptNode(Node source);
[ImplementedAs=urlForBindings] readonly attribute USVString documentURI;
[MayThrowException, NewObject] Event createEvent(DOMString eventType);
[NewObject] Range createRange();
[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);
readonly attribute DOMWindow defaultView;
readonly attribute StyleSheetList styleSheets;
// FIXME: Using "undefined" as default parameter value is wrong.
CSSStyleDeclaration getOverrideStyle(optional Element? element = null, optional DOMString pseudoElement = "undefined");
readonly attribute DOMString contentType;
// FIXME: Using "undefined" as default parameter value is wrong.
[MayThrowException] XPathExpression createExpression(optional DOMString expression = "undefined", optional XPathNSResolver? resolver);
XPathNSResolver createNSResolver(Node? nodeResolver);
// FIXME: Using "undefined" as default parameter value is wrong.
[MayThrowException] XPathResult evaluate(optional DOMString expression = "undefined", optional Node? contextNode, optional XPathNSResolver? resolver, optional unsigned short type = 0, optional XPathResult? inResult);
// FIXME: The default value for the last parameter should be the empty string.
[CEReactions] boolean execCommand(DOMString command, optional boolean userInterface = false, optional DOMString? value = null);
boolean queryCommandEnabled(DOMString command);
boolean queryCommandIndeterm(DOMString command);
boolean queryCommandState(DOMString command);
boolean queryCommandSupported(DOMString command);
DOMString queryCommandValue(DOMString command);
[CEReactions] attribute DOMString title;
attribute DOMString dir;
attribute DOMString designMode;
readonly attribute USVString referrer;
[SetterMayThrowException] attribute USVString domain;
[ImplementedAs=urlForBindings] readonly attribute USVString URL;
[GetterMayThrowException, SetterMayThrowException] attribute USVString cookie;
[CEReactions, DOMJIT=Getter, ImplementedAs=bodyOrFrameset, SetterMayThrowException] attribute HTMLElement? body;
readonly attribute HTMLHeadElement? head;
readonly attribute HTMLCollection images;
readonly attribute HTMLCollection applets;
readonly attribute HTMLCollection links;
readonly attribute HTMLCollection forms;
readonly attribute HTMLCollection anchors;
readonly attribute HTMLCollection embeds;
readonly attribute HTMLCollection plugins;
readonly attribute HTMLCollection scripts;
readonly attribute DOMString lastModified;
NodeList getElementsByName([AtomicString] DOMString elementName);
[PutForwards=href, Unforgeable] readonly attribute Location? location;
[ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString charset;
readonly attribute DOMString readyState;
Range caretRangeFromPoint(optional long x = 0, optional long y = 0);
// Mozilla extensions
DOMSelection getSelection();
[ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString characterSet;
readonly attribute DOMString? preferredStylesheetSet;
attribute DOMString? selectedStylesheetSet;
// FIXME: This is not standard and has been dropped from Blink already.
[Custom] (CanvasRenderingContext2D or WebGLRenderingContextBase) getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
HTMLCollection getElementsByClassName(DOMString classNames);
boolean hasFocus();
readonly attribute DOMString compatMode;
#if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
// Mozilla version
readonly attribute boolean webkitIsFullScreen;
readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
readonly attribute Element webkitCurrentFullScreenElement;
void webkitCancelFullScreen();
// W3C version
readonly attribute boolean webkitFullscreenEnabled;
readonly attribute Element? webkitFullscreenElement;
void webkitExitFullscreen();
#endif
[Conditional=POINTER_LOCK, EnabledAtRuntime=PointerLock] void exitPointerLock();
[Conditional=POINTER_LOCK, EnabledAtRuntime=PointerLock] readonly attribute Element? pointerLockElement;
[Conditional=CSS_REGIONS] DOMNamedFlowCollection webkitGetNamedFlows();
readonly attribute FontFaceSet fonts;
#if defined(ENABLE_IOS_TOUCH_EVENTS) && ENABLE_IOS_TOUCH_EVENTS
#include <WebKitAdditions/DocumentIOS.idl>
#elif defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
[NewObject] Touch createTouch(optional DOMWindow? window = null, optional EventTarget? target = null,
optional long identifier = 0,
optional long pageX = 0, optional long pageY = 0, optional long screenX = 0, optional long screenY = 0,
optional long webkitRadiusX = 0, optional long webkitRadiusY = 0,
optional unrestricted float webkitRotationAngle = NaN, optional unrestricted float webkitForce = NaN);
[NewObject, Custom] TouchList createTouchList(Touch... touches);
#endif
// Page visibility API.
readonly attribute DOMString visibilityState;
readonly attribute boolean hidden;
// currentscript API: http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document-currentscript
readonly attribute HTMLScriptElement? currentScript;
// http://www.w3.org/TR/2014/WD-dom-20140204/#dom-document-origin
readonly attribute USVString origin;
// http://dev.w3.org/csswg/cssom-view/#dom-document-scrollingelement
readonly attribute Element? scrollingElement;
// Unique to Element and Document
// FIXME: Should these be exposed on Window as well (and therefore moved to GlobalEventHandlers.idl)?
[NotEnumerable] attribute EventHandler onbeforecopy;
[NotEnumerable] attribute EventHandler onbeforecut;
[NotEnumerable] attribute EventHandler onbeforeinput;
[NotEnumerable] attribute EventHandler onbeforepaste;
[NotEnumerable] attribute EventHandler oncopy;
[NotEnumerable] attribute EventHandler oncut;
[NotEnumerable] attribute EventHandler onpaste;
[NotEnumerable] attribute EventHandler onselectstart;
[NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
[NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
// Unique to Document and HTMLBodyElement
[NotEnumerable] attribute EventHandler onselectionchange;
// Unique to Document
[LenientThis] attribute EventHandler onreadystatechange;
[NotEnumerable, Conditional=CSP_NEXT] attribute EventHandler onsecuritypolicyviolation;
[NotEnumerable, Conditional=POINTER_LOCK, EnabledAtRuntime=PointerLock] attribute EventHandler onpointerlockchange;
[NotEnumerable, Conditional=POINTER_LOCK, EnabledAtRuntime=PointerLock] attribute EventHandler onpointerlockerror;
};
Document implements ParentNode;
Document implements NonElementParentNode;
Document implements DocumentOrShadowRoot;
Document implements GlobalEventHandlers;