88bd63952502f27dcea3414d07fc1869ce1f89eb
[WebKit-https.git] / 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 [V8Custom] 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_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
223         [V8Custom] DOMObject getCSSCanvasContext(in DOMString contextId, in DOMString name, in long width, in long height);
224 #endif
225
226         // HTML 5
227         NodeList getElementsByClassName(in DOMString tagname);
228
229         // NodeSelector - Selector API
230         Element querySelector(in DOMString selectors)
231             raises(DOMException);
232         NodeList querySelectorAll(in DOMString selectors)
233             raises(DOMException);
234
235 #if defined(ENABLE_WML) && ENABLE_WML
236         // Only used from within WML layout tests, WML doesn't have JS support at all.
237         [DontEnum] void resetWMLPageState();
238         [DontEnum] void initializeWMLPageState();
239 #endif
240
241 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
242         // Event handler DOM attributes
243         attribute [DontEnum] EventListener onabort;
244         attribute [DontEnum] EventListener onblur;
245         attribute [DontEnum] EventListener onchange;
246         attribute [DontEnum] EventListener onclick;
247         attribute [DontEnum] EventListener oncontextmenu;
248         attribute [DontEnum] EventListener ondblclick;
249         attribute [DontEnum] EventListener ondrag;
250         attribute [DontEnum] EventListener ondragend;
251         attribute [DontEnum] EventListener ondragenter;
252         attribute [DontEnum] EventListener ondragleave;
253         attribute [DontEnum] EventListener ondragover;
254         attribute [DontEnum] EventListener ondragstart;
255         attribute [DontEnum] EventListener ondrop;
256         attribute [DontEnum] EventListener onerror;
257         attribute [DontEnum] EventListener onfocus;
258         attribute [DontEnum] EventListener oninput;
259         attribute [DontEnum] EventListener oninvalid;
260         attribute [DontEnum] EventListener onkeydown;
261         attribute [DontEnum] EventListener onkeypress;
262         attribute [DontEnum] EventListener onkeyup;
263         attribute [DontEnum] EventListener onload;
264         attribute [DontEnum] EventListener onmousedown;
265         attribute [DontEnum] EventListener onmousemove;
266         attribute [DontEnum] EventListener onmouseout;
267         attribute [DontEnum] EventListener onmouseover;
268         attribute [DontEnum] EventListener onmouseup;
269         attribute [DontEnum] EventListener onmousewheel;
270         attribute [DontEnum] EventListener onscroll;
271         attribute [DontEnum] EventListener onselect;
272         attribute [DontEnum] EventListener onsubmit;
273
274         // attribute [DontEnum] EventListener oncanplay;
275         // attribute [DontEnum] EventListener oncanplaythrough;
276         // attribute [DontEnum] EventListener ondurationchange;
277         // attribute [DontEnum] EventListener onemptied;
278         // attribute [DontEnum] EventListener onended;
279         // attribute [DontEnum] EventListener onformchange;
280         // attribute [DontEnum] EventListener onforminput;
281         // attribute [DontEnum] EventListener onloadeddata;
282         // attribute [DontEnum] EventListener onloadedmetadata;
283         // attribute [DontEnum] EventListener onloadstart;
284         // attribute [DontEnum] EventListener onpause;
285         // attribute [DontEnum] EventListener onplay;
286         // attribute [DontEnum] EventListener onplaying;
287         // attribute [DontEnum] EventListener onprogress;
288         // attribute [DontEnum] EventListener onratechange;
289         // attribute [DontEnum] EventListener onreadystatechange;
290         // attribute [DontEnum] EventListener onseeked;
291         // attribute [DontEnum] EventListener onseeking;
292         // attribute [DontEnum] EventListener onshow;
293         // attribute [DontEnum] EventListener onstalled;
294         // attribute [DontEnum] EventListener onsuspend;
295         // attribute [DontEnum] EventListener ontimeupdate;
296         // attribute [DontEnum] EventListener onvolumechange;
297         // attribute [DontEnum] EventListener onwaiting;
298
299         // WebKit extensions
300         attribute [DontEnum] EventListener onbeforecut;
301         attribute [DontEnum] EventListener oncut;
302         attribute [DontEnum] EventListener onbeforecopy;
303         attribute [DontEnum] EventListener oncopy;
304         attribute [DontEnum] EventListener onbeforepaste;
305         attribute [DontEnum] EventListener onpaste;
306         attribute [DontEnum] EventListener onreset;
307         attribute [DontEnum] EventListener onsearch;
308         attribute [DontEnum] EventListener onselectstart;
309         attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchstart;
310         attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchmove;
311         attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchend;
312         attribute [DontEnum,Conditional=TOUCH_EVENTS] EventListener ontouchcancel;
313 #endif
314     };
315
316 }