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