Remove Objective-C specific extended attributes from the bindings
[WebKit-https.git] / Source / WebCore / dom / Document.idl
1 /*
2  * Copyright (C) 2006, 2007, 2011, 2015 Apple Inc. All rights reserved.
3  * Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20
21 [
22     Constructor,
23     ConstructorCallWith=ScriptExecutionContext,
24     CustomToJSObject,
25     ExportMacro=WEBCORE_EXPORT,
26     JSCustomHeader,
27     JSCustomMarkFunction,
28     JSGenerateToNativeObject,
29 ] interface Document : Node {
30
31     // DOM Level 1 Core
32     readonly attribute DocumentType? doctype;
33     readonly attribute DOMImplementation implementation;
34     readonly attribute Element? documentElement;
35
36     [NewObject, RaisesException, ImplementedAs=createElementForBindings] Element createElement(DOMString tagName);
37     [NewObject] DocumentFragment   createDocumentFragment();
38
39     [NewObject] Text createTextNode(DOMString data);
40     [NewObject] Comment createComment(DOMString data);
41     [NewObject, RaisesException] CDATASection createCDATASection(DOMString data);
42     [NewObject, RaisesException] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
43     [NewObject, RaisesException] Attr createAttribute(DOMString name);
44
45     HTMLCollection getElementsByTagName(DOMString tagname);
46
47     // Introduced in DOM Level 2:
48
49     [NewObject, RaisesException] Node importNode(Node importedNode, optional boolean deep = false);
50
51     [NewObject, RaisesException] Element createElementNS(DOMString? namespaceURI, DOMString qualifiedName);
52     [NewObject, RaisesException] Attr createAttributeNS(DOMString? namespaceURI, DOMString qualifiedName);
53
54     HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
55
56     // DOM Level 3 Core
57
58     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString inputEncoding;
59
60     readonly attribute DOMString? xmlEncoding;
61     [SetterRaisesException] attribute DOMString? xmlVersion;
62     [SetterRaisesException] attribute boolean xmlStandalone;
63
64     [RaisesException] Node adoptNode(Node source);
65
66 #if defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
67     // document.documentURI was writable in DOM3 Core, but is read-only in DOM4
68     // (see http://www.w3.org/TR/2011/WD-dom-20110915/#document). We need to keep
69     // the writable version around for GObject clients, but are moving to
70     // read-only for other clients.
71     attribute DOMString? documentURI;
72 #else
73     [ImplementedAs=urlForBindings] readonly attribute USVString documentURI;
74 #endif
75
76     // DOM Level 2 Events (DocumentEvents interface)
77
78     [RaisesException, NewObject] Event createEvent(DOMString eventType);
79
80     // DOM Level 2 Tranversal and Range (DocumentRange interface)
81
82     [NewObject] Range              createRange();
83
84     // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
85
86 #if defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
87     NodeIterator createNodeIterator(Node root,
88         optional unsigned long whatToShow = 0xFFFFFFFF,
89         optional NodeFilter? filter,
90         optional boolean expandEntityReferences);
91     TreeWalker createTreeWalker(Node root,
92         optional unsigned long whatToShow = 0xFFFFFFFF,
93         optional NodeFilter? filter,
94         optional boolean expandEntityReferences);
95 #else
96     [NewObject] NodeIterator createNodeIterator(Node root,
97         optional unsigned long whatToShow = 0xFFFFFFFF,
98         optional NodeFilter? filter = null);
99     [NewObject] TreeWalker createTreeWalker(Node root,
100         optional unsigned long whatToShow = 0xFFFFFFFF,
101         optional NodeFilter? filter = null);
102 #endif
103
104     // DOM Level 2 Abstract Views (DocumentView interface)
105
106     readonly attribute DOMWindow defaultView;
107
108     // DOM Level 2 Style (DocumentStyle interface)
109
110     readonly attribute StyleSheetList styleSheets;
111
112     // DOM Level 2 Style (DocumentCSS interface)
113
114     // FIXME: Using "undefined" as default parameter value is wrong.
115     CSSStyleDeclaration getOverrideStyle(optional Element? element = null, optional DOMString pseudoElement = "undefined");
116
117     readonly attribute DOMString contentType;
118
119     // DOM Level 3 XPath (XPathEvaluator interface)
120     // FIXME: Using "undefined" as default parameter value is wrong.
121     [RaisesException] XPathExpression createExpression(optional DOMString expression = "undefined", optional XPathNSResolver? resolver);
122     XPathNSResolver createNSResolver(Node? nodeResolver);
123
124     // FIXME: Using "undefined" as default parameter value is wrong.
125     [RaisesException] XPathResult evaluate(optional DOMString expression = "undefined",
126                                                   optional Node? contextNode,
127                                                   optional XPathNSResolver? resolver,
128                                                   optional unsigned short type = 0,
129                                                   optional XPathResult? inResult);
130
131     // Common extensions
132     // FIXME: The default value for the last parameter should be the empty string.
133     boolean execCommand(DOMString command, optional boolean userInterface = false, optional DOMString? value = null);
134
135     boolean queryCommandEnabled(DOMString command);
136     boolean queryCommandIndeterm(DOMString command);
137     boolean queryCommandState(DOMString command);
138     boolean queryCommandSupported(DOMString command);
139     DOMString queryCommandValue(DOMString command);
140
141     // Moved down from HTMLDocument
142
143     [SetterRaisesException] attribute DOMString title;
144     attribute DOMString dir;
145     attribute DOMString designMode;
146
147     readonly attribute USVString referrer;
148 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
149     [SetterRaisesException] attribute USVString domain;
150 #else
151     readonly attribute DOMString domain;
152 #endif
153     [ImplementedAs=urlForBindings] readonly attribute USVString URL;
154
155     [GetterRaisesException, SetterRaisesException] attribute USVString cookie;
156
157     [SetterRaisesException, ImplementedAs=bodyOrFrameset] attribute HTMLElement? body;
158
159     readonly attribute HTMLHeadElement? head;
160     readonly attribute HTMLCollection images;
161     readonly attribute HTMLCollection applets;
162     readonly attribute HTMLCollection links;
163     readonly attribute HTMLCollection forms;
164     readonly attribute HTMLCollection anchors;
165     readonly attribute HTMLCollection embeds;
166     readonly attribute HTMLCollection plugins;
167     readonly attribute HTMLCollection scripts;
168     readonly attribute DOMString lastModified;
169
170     NodeList getElementsByName([AtomicString] DOMString elementName);
171
172 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
173     [PutForwards=href, Unforgeable] readonly attribute Location? location;
174 #endif
175
176     // IE extensions
177
178 #if defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
179     attribute DOMString charset;
180 #else
181     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString charset;
182 #endif
183     readonly attribute DOMString readyState;
184
185     Element            elementFromPoint(optional long x = 0, optional long y = 0);
186     Range              caretRangeFromPoint(optional long x = 0, optional long y = 0);
187
188     // Mozilla extensions
189 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
190     DOMSelection       getSelection();
191 #endif
192     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString characterSet;
193
194     // WebKit extensions
195
196     readonly attribute DOMString? preferredStylesheetSet;
197     attribute DOMString? selectedStylesheetSet;
198
199 #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
200     CSSStyleDeclaration createCSSStyleDeclaration();
201 #endif
202
203     CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
204
205     // HTML 5
206     HTMLCollection getElementsByClassName(DOMString classNames);
207
208     readonly attribute Element? activeElement;
209     boolean hasFocus();
210
211     readonly attribute DOMString compatMode;
212
213 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
214     // Mozilla version
215     readonly attribute boolean webkitIsFullScreen;
216     readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
217     readonly attribute Element webkitCurrentFullScreenElement;
218     void webkitCancelFullScreen();
219
220     // W3C version
221     readonly attribute boolean webkitFullscreenEnabled;
222     readonly attribute Element? webkitFullscreenElement;
223     void webkitExitFullscreen();
224 #endif
225
226     [Conditional=POINTER_LOCK] void exitPointerLock();
227     [Conditional=POINTER_LOCK] readonly attribute Element? pointerLockElement;
228
229 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
230     [Conditional=CSS_REGIONS] DOMNamedFlowCollection webkitGetNamedFlows();
231
232     readonly attribute FontFaceSet fonts;
233
234 #if defined(ENABLE_IOS_TOUCH_EVENTS) && ENABLE_IOS_TOUCH_EVENTS
235 #include <WebKitAdditions/DocumentIOS.idl>
236 #elif defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
237     [NewObject, RaisesException] Touch createTouch(optional DOMWindow? window = null,
238                                                    optional EventTarget? target = null,
239                                                    optional long identifier = 0,
240                                                    optional long pageX = 0,
241                                                    optional long pageY = 0,
242                                                    optional long screenX = 0,
243                                                    optional long screenY = 0,
244                                                    optional long webkitRadiusX = 0,
245                                                    optional long webkitRadiusY = 0,
246                                                    optional unrestricted float webkitRotationAngle = NaN,
247                                                    optional unrestricted float webkitForce = NaN);
248     [NewObject, Custom] TouchList createTouchList(Touch... touches);
249 #endif
250
251 #endif
252
253     // Page visibility API.
254     readonly attribute DOMString visibilityState;
255     readonly attribute boolean hidden;
256
257     // currentscript API: http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document-currentscript
258     readonly attribute HTMLScriptElement? currentScript;
259
260     // http://www.w3.org/TR/2014/WD-dom-20140204/#dom-document-origin
261     readonly attribute USVString origin;
262
263     // http://dev.w3.org/csswg/cssom-view/#dom-document-scrollingelement
264     readonly attribute Element? scrollingElement;
265
266
267     // Event Handlers
268
269     // Unique to Element and Document
270     // FIXME: Should these be exposed on Window as well (and therefore moved to GlobalEventHandlers.idl)?
271     [NotEnumerable] attribute EventHandler onbeforecopy;
272     [NotEnumerable] attribute EventHandler onbeforecut;
273     [NotEnumerable] attribute EventHandler onbeforepaste;
274     [NotEnumerable] attribute EventHandler oncopy;
275     [NotEnumerable] attribute EventHandler oncut;
276     [NotEnumerable] attribute EventHandler onpaste;
277     [NotEnumerable] attribute EventHandler onselectstart;
278     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
279     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
280
281     // Unique to Document and HTMLBodyElement
282     [NotEnumerable] attribute EventHandler onselectionchange;
283
284     // Unique to Document
285     [LenientThis] attribute EventHandler onreadystatechange;
286     [NotEnumerable, Conditional=CSP_NEXT] attribute EventHandler onsecuritypolicyviolation;
287     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventHandler onpointerlockchange;
288     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventHandler onpointerlockerror;
289 };
290
291 Document implements ParentNode;
292 Document implements NonElementParentNode;
293 Document implements GlobalEventHandlers;