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