Remove CPP bindings generator.
[WebKit-https.git] / Source / WebCore / dom / Document.idl
1 /*
2  * Copyright (C) 2006, 2007, 2011 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     CustomToJSObject,
23     JSGenerateToNativeObject,
24 ] interface Document : Node {
25
26     // DOM Level 1 Core
27     readonly attribute DocumentType doctype;
28     readonly attribute DOMImplementation implementation;
29     readonly attribute Element documentElement;
30
31     [ReturnNewObject, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
32     DocumentFragment   createDocumentFragment();
33     [ReturnNewObject] Text createTextNode([Default=Undefined] optional DOMString data);
34     [ReturnNewObject] Comment createComment([Default=Undefined] optional DOMString data);
35     [ReturnNewObject, RaisesException] CDATASection createCDATASection([Default=Undefined] optional DOMString data);
36     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
37                                                                                  [Default=Undefined] optional DOMString data);
38     [ReturnNewObject, RaisesException] Attr createAttribute([Default=Undefined] optional DOMString name);
39     [ReturnNewObject, RaisesException] EntityReference createEntityReference([Default=Undefined] optional DOMString name);
40     NodeList getElementsByTagName([Default=Undefined] optional DOMString tagname);
41
42     // Introduced in DOM Level 2:
43
44     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
45                     optional boolean deep);
46     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
47                             [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
48     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
49                                                                           [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
50     [ObjCLegacyUnnamedParameters] NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
51                                                    [Default=Undefined] optional DOMString localName);
52     Element getElementById([Default=Undefined] optional DOMString elementId);
53
54     // DOM Level 3 Core
55
56     [TreatReturnedNullStringAs=Null] readonly attribute DOMString inputEncoding;
57
58     [TreatReturnedNullStringAs=Null] readonly attribute DOMString xmlEncoding;
59     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlVersion;
60     [SetterRaisesException] attribute boolean xmlStandalone;
61
62     [RaisesException] Node               adoptNode([Default=Undefined] optional Node source);
63
64 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
65     // document.documentURI was writable in DOM3 Core, but is read-only in DOM4
66     // (see http://www.w3.org/TR/2011/WD-dom-20110915/#document). We need to keep
67     // the writable version around for Objective C clients, but are moving to
68     // read-only for other clients.
69              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString documentURI;
70 #else
71     [TreatReturnedNullStringAs=Null] readonly attribute DOMString documentURI;
72 #endif
73
74     // DOM Level 2 Events (DocumentEvents interface)
75
76     [RaisesException] Event              createEvent([Default=Undefined] optional DOMString eventType);
77
78     // DOM Level 2 Tranversal and Range (DocumentRange interface)
79
80     Range              createRange();
81
82     // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
83
84     [ObjCLegacyUnnamedParameters, RaisesException] NodeIterator createNodeIterator([Default=Undefined] optional Node root,
85                                                    [Default=Undefined] optional unsigned long whatToShow,
86                                                    [Default=Undefined] optional NodeFilter filter,
87                                                    [Default=Undefined] optional boolean expandEntityReferences);
88     [ObjCLegacyUnnamedParameters, RaisesException] TreeWalker createTreeWalker([Default=Undefined] optional Node root,
89                                                [Default=Undefined] optional unsigned long whatToShow,
90                                                [Default=Undefined] optional NodeFilter filter,
91                                                [Default=Undefined] optional boolean expandEntityReferences);
92
93     // DOM Level 2 Abstract Views (DocumentView interface)
94
95     readonly attribute DOMWindow defaultView;
96
97     // DOM Level 2 Style (DocumentStyle interface)
98
99     readonly attribute StyleSheetList styleSheets;
100
101     // DOM Level 2 Style (DocumentCSS interface)
102
103     [ObjCLegacyUnnamedParameters] CSSStyleDeclaration getOverrideStyle([Default=Undefined] optional Element element,
104                                                         [Default=Undefined] optional DOMString pseudoElement);
105
106     // DOM Level 3 XPath (XPathEvaluator interface)
107     [ObjCLegacyUnnamedParameters, RaisesException] XPathExpression createExpression([Default=Undefined] optional DOMString expression,
108                                                     [Default=Undefined] optional XPathNSResolver resolver);
109     XPathNSResolver    createNSResolver(Node nodeResolver);
110     [ObjCLegacyUnnamedParameters, RaisesException] XPathResult evaluate([Default=Undefined] optional DOMString expression,
111                                                   [Default=Undefined] optional Node contextNode,
112                                                   [Default=Undefined] optional XPathNSResolver resolver,
113                                                   [Default=Undefined] optional unsigned short type,
114                                                   [Default=Undefined] optional XPathResult inResult);
115
116     // Common extensions
117     boolean            execCommand([Default=Undefined] optional DOMString command,
118                                    [Default=Undefined] optional boolean userInterface,
119                                    [TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString value);
120
121 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
122     // FIXME: remove the these two versions once optional is implemented for Objective-C.
123     boolean            execCommand(DOMString command,
124                                    boolean userInterface);
125     boolean            execCommand(DOMString command);
126 #endif
127
128     boolean            queryCommandEnabled([Default=Undefined] optional DOMString command);
129     boolean            queryCommandIndeterm([Default=Undefined] optional DOMString command);
130     boolean            queryCommandState([Default=Undefined] optional DOMString command);
131     boolean            queryCommandSupported([Default=Undefined] optional DOMString command);
132     DOMString          queryCommandValue([Default=Undefined] optional DOMString command);
133
134     // Moved down from HTMLDocument
135
136              [TreatNullAs=NullString] attribute DOMString title;
137     readonly attribute DOMString referrer;
138 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
139     [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
140 #else
141     readonly attribute DOMString domain;
142 #endif
143     readonly attribute DOMString URL;
144
145     [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
146
147     [SetterRaisesException] attribute HTMLElement body;
148
149     readonly attribute HTMLHeadElement head;
150     readonly attribute HTMLCollection images;
151     readonly attribute HTMLCollection applets;
152     readonly attribute HTMLCollection links;
153     readonly attribute HTMLCollection forms;
154     readonly attribute HTMLCollection anchors;
155     readonly attribute DOMString lastModified;
156
157     NodeList getElementsByName([Default=Undefined] optional DOMString elementName);
158
159 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
160              [Custom] attribute Location location;
161 #endif
162
163     // IE extensions
164
165              [TreatReturnedNullStringAs=Undefined, TreatNullAs=NullString] attribute DOMString charset;
166     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString defaultCharset;
167     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString readyState;
168
169     Element            elementFromPoint([Default=Undefined] optional long x, 
170                                         [Default=Undefined] optional long y);
171     Range              caretRangeFromPoint([Default=Undefined] optional long x, 
172                                            [Default=Undefined] optional long y);
173
174     // Mozilla extensions
175 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
176     DOMSelection       getSelection();
177 #endif
178     [TreatReturnedNullStringAs=Null] readonly attribute DOMString characterSet;
179
180     // WebKit extensions
181
182     [TreatReturnedNullStringAs=Null] readonly attribute DOMString preferredStylesheetSet;
183              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectedStylesheetSet;
184
185 #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
186     CSSStyleDeclaration createCSSStyleDeclaration();
187 #endif
188
189 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
190     // DOM Level 2 Style Interface
191     [ObjCLegacyUnnamedParameters, ObjCUseDefaultView] CSSStyleDeclaration getComputedStyle(Element element,
192                                                                   DOMString pseudoElement);
193
194     // WebKit extension
195     // FIXME: remove the first version once optional is implemented for Objective-C.
196     [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(Element element,
197                                               DOMString pseudoElement);
198     [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(Element element,
199                                               DOMString pseudoElement,
200                                               optional boolean authorOnly);
201                                               
202 #endif
203
204 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
205     CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
206 #endif
207
208     // HTML 5
209     NodeList getElementsByClassName([Default=Undefined] optional DOMString tagname);
210
211     readonly attribute DOMString compatMode;
212
213     // NodeSelector - Selector API
214     [RaisesException] Element querySelector(DOMString selectors);
215     [RaisesException] NodeList querySelectorAll(DOMString selectors);
216
217 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
218     // Mozilla version
219     readonly attribute boolean webkitIsFullScreen;
220     readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
221     readonly attribute Element webkitCurrentFullScreenElement;
222     void webkitCancelFullScreen();
223
224     // W3C version
225     readonly attribute boolean webkitFullscreenEnabled;
226     readonly attribute Element webkitFullscreenElement;
227     void webkitExitFullscreen();
228 #endif
229
230     [Conditional=POINTER_LOCK] void webkitExitPointerLock();
231     [Conditional=POINTER_LOCK] readonly attribute Element webkitPointerLockElement;
232
233     [Conditional=CSS_REGIONS] DOMNamedFlowCollection webkitGetNamedFlows();
234
235 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
236     [Conditional=FONT_LOAD_EVENTS] readonly attribute FontLoader fontloader;
237 #endif
238
239 #if (!defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C) && (!defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT)
240     // Event handler DOM attributes
241     [NotEnumerable] attribute EventListener onabort;
242     [NotEnumerable] attribute EventListener onblur;
243     [NotEnumerable] attribute EventListener onchange;
244     [NotEnumerable] attribute EventListener onclick;
245     [NotEnumerable] attribute EventListener oncontextmenu;
246     [NotEnumerable] attribute EventListener ondblclick;
247     [NotEnumerable] attribute EventListener ondrag;
248     [NotEnumerable] attribute EventListener ondragend;
249     [NotEnumerable] attribute EventListener ondragenter;
250     [NotEnumerable] attribute EventListener ondragleave;
251     [NotEnumerable] attribute EventListener ondragover;
252     [NotEnumerable] attribute EventListener ondragstart;
253     [NotEnumerable] attribute EventListener ondrop;
254     [NotEnumerable] attribute EventListener onerror;
255     [NotEnumerable] attribute EventListener onfocus;
256     [NotEnumerable] attribute EventListener oninput;
257     [NotEnumerable] attribute EventListener oninvalid;
258     [NotEnumerable] attribute EventListener onkeydown;
259     [NotEnumerable] attribute EventListener onkeypress;
260     [NotEnumerable] attribute EventListener onkeyup;
261     [NotEnumerable] attribute EventListener onload;
262     [NotEnumerable] attribute EventListener onmousedown;
263     [NotEnumerable] attribute EventListener onmouseenter;
264     [NotEnumerable] attribute EventListener onmouseleave;
265     [NotEnumerable] attribute EventListener onmousemove;
266     [NotEnumerable] attribute EventListener onmouseout;
267     [NotEnumerable] attribute EventListener onmouseover;
268     [NotEnumerable] attribute EventListener onmouseup;
269     [NotEnumerable] attribute EventListener onmousewheel;
270     [NotEnumerable] attribute EventListener onreadystatechange;
271     [NotEnumerable] attribute EventListener onscroll;
272     [NotEnumerable] attribute EventListener onselect;
273     [NotEnumerable] attribute EventListener onsubmit;
274     [NotEnumerable] attribute EventListener onwheel;
275
276     // [NotEnumerable] attribute EventListener oncanplay;
277     // [NotEnumerable] attribute EventListener oncanplaythrough;
278     // [NotEnumerable] attribute EventListener ondurationchange;
279     // [NotEnumerable] attribute EventListener onemptied;
280     // [NotEnumerable] attribute EventListener onended;
281     // [NotEnumerable] attribute EventListener onloadeddata;
282     // [NotEnumerable] attribute EventListener onloadedmetadata;
283     // [NotEnumerable] attribute EventListener onloadstart;
284     // [NotEnumerable] attribute EventListener onpause;
285     // [NotEnumerable] attribute EventListener onplay;
286     // [NotEnumerable] attribute EventListener onplaying;
287     // [NotEnumerable] attribute EventListener onprogress;
288     // [NotEnumerable] attribute EventListener onratechange;
289     // [NotEnumerable] attribute EventListener onseeked;
290     // [NotEnumerable] attribute EventListener onseeking;
291     // [NotEnumerable] attribute EventListener onshow;
292     // [NotEnumerable] attribute EventListener onstalled;
293     // [NotEnumerable] attribute EventListener onsuspend;
294     // [NotEnumerable] attribute EventListener ontimeupdate;
295     // [NotEnumerable] attribute EventListener onvolumechange;
296     // [NotEnumerable] attribute EventListener onwaiting;
297
298     // WebKit extensions
299     [NotEnumerable] attribute EventListener onbeforecut;
300     [NotEnumerable] attribute EventListener oncut;
301     [NotEnumerable] attribute EventListener onbeforecopy;
302     [NotEnumerable] attribute EventListener oncopy;
303     [NotEnumerable] attribute EventListener onbeforepaste;
304     [NotEnumerable] attribute EventListener onpaste;
305     [NotEnumerable] attribute EventListener onreset;
306     [NotEnumerable] attribute EventListener onsearch;
307     [NotEnumerable] attribute EventListener onselectstart;
308     [NotEnumerable] attribute EventListener onselectionchange;
309     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
310     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
311     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
312     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
313     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
314     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
315     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onwebkitpointerlockchange;
316     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onwebkitpointerlockerror;
317     [NotEnumerable, Conditional=CSP_NEXT] attribute EventListener onsecuritypolicyviolation;
318     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
319     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
320     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
321     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
322 #endif
323
324 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
325     // FIXME: Consider defining an ENABLE macro for iOS touch event code, say IOS_TOUCH_EVENTS,
326     // and/or modifying the bindings scripts to support generating more complicated conditional code.
327 #if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
328 #include <WebKitAdditions/DocumentIOS.idl>
329 #else
330     [ReturnNewObject, RaisesException] Touch createTouch([Default=Undefined] optional DOMWindow window,
331                                                      [Default=Undefined] optional EventTarget target,
332                                                      [Default=Undefined] optional long identifier,
333                                                      [Default=Undefined] optional long pageX,
334                                                      [Default=Undefined] optional long pageY,
335                                                      [Default=Undefined] optional long screenX,
336                                                      [Default=Undefined] optional long screenY,
337                                                      [Default=Undefined] optional long webkitRadiusX,
338                                                      [Default=Undefined] optional long webkitRadiusY,
339                                                      [Default=Undefined] optional float webkitRotationAngle,
340                                                      [Default=Undefined] optional float webkitForce);
341     [ReturnNewObject, Custom, RaisesException] TouchList createTouchList();
342 #endif // defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
343 #endif
344
345     // Page visibility API.
346     [Conditional=PAGE_VISIBILITY_API] readonly attribute DOMString visibilityState;
347     [Conditional=PAGE_VISIBILITY_API] readonly attribute boolean hidden;
348
349     // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces
350     [Conditional=CSP_NEXT] readonly attribute DOMSecurityPolicy securityPolicy;
351
352     // currentscript API: http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document-currentscript
353     readonly attribute HTMLScriptElement currentScript;
354 };
355