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