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