2011-04-06 Vitaly Repeshko <vitalyr@chromium.org>
[WebKit-https.git] / Source / WebCore / dom / Document.idl
1 /*
2  * Copyright (C) 2006, 2007 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 module core {
22
23     interface [
24         CustomToJS,
25         GenerateNativeConverter,
26         CustomMarkFunction,
27         InlineGetOwnPropertySlot
28     ] Document : Node {
29
30         // DOM Level 1 Core
31         readonly attribute DocumentType doctype;
32         readonly attribute DOMImplementation implementation;
33         readonly attribute Element documentElement;
34
35         [ReturnsNew] Element createElement(in [ConvertNullToNullString] DOMString tagName)
36             raises (DOMException);
37         DocumentFragment   createDocumentFragment();
38         [ReturnsNew] Text createTextNode(in DOMString data);
39         [ReturnsNew] Comment createComment(in DOMString data);
40         [ReturnsNew] CDATASection createCDATASection(in DOMString data)
41             raises(DOMException);
42         [OldStyleObjC, ReturnsNew] ProcessingInstruction createProcessingInstruction(in DOMString target,
43                                                                                      in DOMString data)
44             raises (DOMException);
45         [ReturnsNew] Attr createAttribute(in DOMString name)
46             raises (DOMException);
47         [ReturnsNew] EntityReference createEntityReference(in DOMString name)
48             raises(DOMException);
49         NodeList           getElementsByTagName(in DOMString tagname);
50
51         // Introduced in DOM Level 2:
52
53         [OldStyleObjC, ReturnsNew] Node importNode(in Node importedNode,
54                                                    in boolean deep)
55             raises (DOMException);
56         [OldStyleObjC, ReturnsNew] Element createElementNS(in [ConvertNullToNullString] DOMString namespaceURI,
57                                                            in [ConvertNullToNullString] DOMString qualifiedName)
58             raises (DOMException);
59         [OldStyleObjC, ReturnsNew] Attr createAttributeNS(in [ConvertNullToNullString] DOMString namespaceURI,
60                                                           in [ConvertNullToNullString] DOMString qualifiedName)
61             raises (DOMException);
62         [OldStyleObjC] NodeList getElementsByTagNameNS(in [ConvertNullToNullString] DOMString namespaceURI,
63                                                        in DOMString localName);
64         Element            getElementById(in DOMString elementId);
65
66         // DOM Level 3 Core
67
68         readonly attribute [ConvertNullStringTo=Null] DOMString inputEncoding;
69
70         readonly attribute [ConvertNullStringTo=Null] DOMString xmlEncoding;
71                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString xmlVersion
72                     setter raises (DOMException);
73                  attribute boolean xmlStandalone
74                     setter raises (DOMException);
75
76         Node               adoptNode(in Node source)
77             raises (DOMException);
78
79                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString documentURI;
80
81         // DOM Level 2 Events (DocumentEvents interface)
82
83         Event              createEvent(in DOMString eventType)
84             raises(DOMException);
85
86         // DOM Level 2 Tranversal and Range (DocumentRange interface)
87
88         Range              createRange();
89
90         // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
91
92         [OldStyleObjC] NodeIterator createNodeIterator(in Node root,
93                                                        in unsigned long whatToShow,
94                                                        in NodeFilter filter,
95                                                        in boolean expandEntityReferences)
96             raises(DOMException);
97         [OldStyleObjC] TreeWalker createTreeWalker(in Node root,
98                                                    in unsigned long whatToShow,
99                                                    in NodeFilter filter,
100                                                    in boolean expandEntityReferences)
101             raises(DOMException);
102
103         // DOM Level 2 Abstract Views (DocumentView interface)
104
105         readonly attribute DOMWindow defaultView;
106
107         // DOM Level 2 Style (DocumentStyle interface)
108
109         readonly attribute StyleSheetList styleSheets;
110
111         // DOM Level 2 Style (DocumentCSS interface)
112
113         [OldStyleObjC] CSSStyleDeclaration getOverrideStyle(in Element element,
114                                                             in DOMString pseudoElement);
115 #if defined(ENABLE_XPATH) && ENABLE_XPATH
116         // DOM Level 3 XPath (XPathEvaluator interface)
117         [OldStyleObjC] XPathExpression createExpression(in DOMString expression,
118                                                         in XPathNSResolver resolver)
119             raises(DOMException);
120         XPathNSResolver    createNSResolver(in Node nodeResolver);
121         [OldStyleObjC, V8Custom] XPathResult evaluate(in DOMString expression,
122                                                       in Node contextNode,
123                                                       in XPathNSResolver resolver,
124                                                       in unsigned short type,
125                                                       in XPathResult inResult)
126             raises(DOMException);
127 #endif // ENABLE_XPATH
128
129         // Common extensions
130
131         boolean            execCommand(in DOMString command,
132                                        in boolean userInterface,
133                                        in [ConvertUndefinedOrNullToNullString] DOMString value);
134
135 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
136         // FIXME: remove the these two versions once [Optional] is implemented for Objective-C.
137         boolean            execCommand(in DOMString command,
138                                        in boolean userInterface);
139         boolean            execCommand(in DOMString command);
140 #endif
141
142         boolean            queryCommandEnabled(in DOMString command);
143         boolean            queryCommandIndeterm(in DOMString command);
144         boolean            queryCommandState(in DOMString command);
145         boolean            queryCommandSupported(in DOMString command);
146         [ConvertNullStringTo=False] DOMString queryCommandValue(in DOMString command);
147
148         // Moved down from HTMLDocument
149
150                  attribute [ConvertNullToNullString] DOMString title;
151         readonly attribute DOMString referrer;
152 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
153                  attribute [ConvertNullToNullString] DOMString domain
154                      setter raises (DOMException);
155 #else
156         readonly attribute DOMString domain;
157 #endif
158         readonly attribute DOMString URL;
159
160                  attribute [ConvertNullToNullString] DOMString cookie
161                      setter raises (DOMException),
162                      getter raises (DOMException);
163
164         // FIXME: the DOM spec does NOT have this attribute
165         // raising an exception.
166                  attribute HTMLElement body
167                      setter raises (DOMException);
168
169         readonly attribute HTMLHeadElement head;
170         readonly attribute HTMLCollection images;
171         readonly attribute HTMLCollection applets;
172         readonly attribute HTMLCollection links;
173         readonly attribute HTMLCollection forms;
174         readonly attribute HTMLCollection anchors;
175         readonly attribute DOMString lastModified;
176
177         NodeList getElementsByName(in DOMString elementName);
178
179 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
180                  attribute [Custom] Location location;
181 #endif
182
183         // IE extensions
184
185                  attribute [ConvertNullStringTo=Undefined, ConvertNullToNullString] DOMString charset;
186         readonly attribute [ConvertNullStringTo=Undefined] DOMString defaultCharset;
187         readonly attribute [ConvertNullStringTo=Undefined] DOMString readyState;
188
189         Element            elementFromPoint(in long x, in long y);
190         Range              caretRangeFromPoint(in long x, in long y);
191
192         // Mozilla extensions
193 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
194         DOMSelection       getSelection();
195 #endif
196         readonly attribute [ConvertNullStringTo=Null] DOMString characterSet;
197
198         // WebKit extensions
199
200         readonly attribute [ConvertNullStringTo=Null] DOMString preferredStylesheetSet;
201                  attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString selectedStylesheetSet;
202
203 #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
204         CSSStyleDeclaration createCSSStyleDeclaration();
205 #endif
206
207 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
208         // DOM Level 2 Style Interface
209         [OldStyleObjC, UsesView] CSSStyleDeclaration getComputedStyle(in Element element,
210                                                                       in DOMString pseudoElement);
211
212         // WebKit extension
213         // FIXME: remove the first version once [Optional] is implemented for Objective-C.
214         [UsesView] CSSRuleList getMatchedCSSRules(in Element element,
215                                                   in DOMString pseudoElement);
216         [UsesView] CSSRuleList getMatchedCSSRules(in Element element,
217                                                   in DOMString pseudoElement,
218                                                   in [Optional] boolean authorOnly);
219                                                   
220 #endif
221
222 #if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
223 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
224         [V8Custom] DOMObject getCSSCanvasContext(in DOMString contextId, in DOMString name, in long width, in long height);
225 #endif
226 #endif
227
228         // HTML 5
229         NodeList getElementsByClassName(in DOMString tagname);
230
231         readonly attribute DOMString compatMode;
232
233         // NodeSelector - Selector API
234         [RequiresAllArguments=Raise] Element querySelector(in DOMString selectors)
235             raises(DOMException);
236         [RequiresAllArguments=Raise] NodeList querySelectorAll(in DOMString selectors)
237             raises(DOMException);
238
239 #if defined(ENABLE_WML) && ENABLE_WML
240         // Only used from within WML layout tests, WML doesn't have JS support at all.
241         [DontEnum] void resetWMLPageState();
242         [DontEnum] void initializeWMLPageState();
243 #endif
244
245 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
246         readonly attribute boolean webkitIsFullScreen;
247         readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
248         readonly attribute Element webkitCurrentFullScreenElement;
249         void webkitCancelFullScreen();
250 #endif
251
252 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
253         // Event handler DOM attributes
254         attribute [DontEnum] EventListener onabort;
255         attribute [DontEnum] EventListener onblur;
256         attribute [DontEnum] EventListener onchange;
257         attribute [DontEnum] EventListener onclick;
258         attribute [DontEnum] EventListener oncontextmenu;
259         attribute [DontEnum] EventListener ondblclick;
260         attribute [DontEnum] EventListener ondrag;
261         attribute [DontEnum] EventListener ondragend;
262         attribute [DontEnum] EventListener ondragenter;
263         attribute [DontEnum] EventListener ondragleave;
264         attribute [DontEnum] EventListener ondragover;
265         attribute [DontEnum] EventListener ondragstart;
266         attribute [DontEnum] EventListener ondrop;
267         attribute [DontEnum] EventListener onerror;
268         attribute [DontEnum] EventListener onfocus;
269         attribute [DontEnum] EventListener oninput;
270         attribute [DontEnum] EventListener oninvalid;
271         attribute [DontEnum] EventListener onkeydown;
272         attribute [DontEnum] EventListener onkeypress;
273         attribute [DontEnum] EventListener onkeyup;
274         attribute [DontEnum] EventListener onload;
275         attribute [DontEnum] EventListener onmousedown;
276         attribute [DontEnum] EventListener onmousemove;
277         attribute [DontEnum] EventListener onmouseout;
278         attribute [DontEnum] EventListener onmouseover;
279         attribute [DontEnum] EventListener onmouseup;
280         attribute [DontEnum] EventListener onmousewheel;
281         attribute [DontEnum] EventListener onreadystatechange;
282         attribute [DontEnum] EventListener onscroll;
283         attribute [DontEnum] EventListener onselect;
284         attribute [DontEnum] EventListener onsubmit;
285
286         // attribute [DontEnum] EventListener oncanplay;
287         // attribute [DontEnum] EventListener oncanplaythrough;
288         // attribute [DontEnum] EventListener ondurationchange;
289         // attribute [DontEnum] EventListener onemptied;
290         // attribute [DontEnum] EventListener onended;
291         // attribute [DontEnum] EventListener onloadeddata;
292         // attribute [DontEnum] EventListener onloadedmetadata;
293         // attribute [DontEnum] EventListener onloadstart;
294         // attribute [DontEnum] EventListener onpause;
295         // attribute [DontEnum] EventListener onplay;
296         // attribute [DontEnum] EventListener onplaying;
297         // attribute [DontEnum] EventListener onprogress;
298         // attribute [DontEnum] EventListener onratechange;
299         // attribute [DontEnum] EventListener onseeked;
300         // attribute [DontEnum] EventListener onseeking;
301         // attribute [DontEnum] EventListener onshow;
302         // attribute [DontEnum] EventListener onstalled;
303         // attribute [DontEnum] EventListener onsuspend;
304         // attribute [DontEnum] EventListener ontimeupdate;
305         // attribute [DontEnum] EventListener onvolumechange;
306         // attribute [DontEnum] EventListener onwaiting;
307
308         // WebKit extensions
309         attribute [DontEnum] EventListener onbeforecut;
310         attribute [DontEnum] EventListener oncut;
311         attribute [DontEnum] EventListener onbeforecopy;
312         attribute [DontEnum] EventListener oncopy;
313         attribute [DontEnum] EventListener onbeforepaste;
314         attribute [DontEnum] EventListener onpaste;
315         attribute [DontEnum] EventListener onreset;
316         attribute [DontEnum] EventListener onsearch;
317         attribute [DontEnum] EventListener onselectstart;
318         attribute [DontEnum] EventListener onselectionchange;
319         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchstart;
320         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchmove;
321         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchend;
322         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchcancel;
323         attribute [DontEnum, Conditional=FULLSCREEN_API] EventListener onwebkitfullscreenchange;
324 #endif
325
326 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
327         [ReturnsNew, EnabledAtRuntime] Touch createTouch(in DOMWindow window,
328                                                          in EventTarget target,
329                                                          in long identifier,
330                                                          in long pageX,
331                                                          in long pageY,
332                                                          in long ScreenX,
333                                                          in long screenY)
334             raises (DOMException);
335         [ReturnsNew, EnabledAtRuntime, Custom] TouchList createTouchList()
336             raises (DOMException);
337 #endif
338
339 #if defined(LANGUAGE_CPP) && LANGUAGE_CPP
340         // Extra WebCore methods exposed to allow compile-time casting in C++
341         boolean isHTMLDocument();
342 #endif
343
344     };
345
346 }