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