Some event handler fixes
[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     Constructor,
23     ConstructorCallWith=ScriptExecutionContext,
24     CustomToJSObject,
25     JSCustomHeader,
26     JSGenerateToNativeObject,
27 ] interface 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, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
35     DocumentFragment   createDocumentFragment();
36     [ReturnNewObject] Text createTextNode([Default=Undefined] optional DOMString data);
37     [ReturnNewObject] Comment createComment([Default=Undefined] optional DOMString data);
38     [ReturnNewObject, RaisesException] CDATASection createCDATASection([Default=Undefined] optional DOMString data);
39     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
40                                                                                  [Default=Undefined] optional DOMString data);
41     [ReturnNewObject, RaisesException] Attr createAttribute([Default=Undefined] optional DOMString name);
42     [ReturnNewObject, RaisesException] EntityReference createEntityReference([Default=Undefined] optional DOMString name);
43     NodeList getElementsByTagName([Default=Undefined] optional DOMString tagname);
44
45     // Introduced in DOM Level 2:
46
47     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
48                     optional boolean deep);
49     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
50                             [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
51     [ObjCLegacyUnnamedParameters, ReturnNewObject, RaisesException] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
52                                                                           [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
53     [ObjCLegacyUnnamedParameters] NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
54                                                    [Default=Undefined] optional DOMString localName);
55     Element getElementById([Default=Undefined,ObjCExplicitAtomicString,RequiresExistingAtomicString] optional DOMString elementId);
56
57     // DOM Level 3 Core
58
59     [TreatReturnedNullStringAs=Null] readonly attribute DOMString inputEncoding;
60
61     [TreatReturnedNullStringAs=Null] readonly attribute DOMString xmlEncoding;
62     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlVersion;
63     [SetterRaisesException] attribute boolean xmlStandalone;
64
65     [RaisesException] Node               adoptNode([Default=Undefined] optional Node source);
66
67 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
68     // document.documentURI was writable in DOM3 Core, but is read-only in DOM4
69     // (see http://www.w3.org/TR/2011/WD-dom-20110915/#document). We need to keep
70     // the writable version around for Objective C clients, but are moving to
71     // read-only for other clients.
72              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString documentURI;
73 #else
74     [TreatReturnedNullStringAs=Null] readonly attribute DOMString documentURI;
75 #endif
76
77     // DOM Level 2 Events (DocumentEvents interface)
78
79     [RaisesException] Event              createEvent([Default=Undefined] optional DOMString eventType);
80
81     // DOM Level 2 Tranversal and Range (DocumentRange interface)
82
83     Range              createRange();
84
85     // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
86
87     [ObjCLegacyUnnamedParameters, RaisesException] NodeIterator createNodeIterator([Default=Undefined] optional Node root,
88                                                    [Default=Undefined] optional unsigned long whatToShow,
89                                                    [Default=Undefined] optional NodeFilter filter,
90                                                    [Default=Undefined] optional boolean expandEntityReferences);
91     [ObjCLegacyUnnamedParameters, RaisesException] TreeWalker createTreeWalker([Default=Undefined] optional Node root,
92                                                [Default=Undefined] optional unsigned long whatToShow,
93                                                [Default=Undefined] optional NodeFilter filter,
94                                                [Default=Undefined] optional boolean expandEntityReferences);
95
96     // DOM Level 2 Abstract Views (DocumentView interface)
97
98     readonly attribute DOMWindow defaultView;
99
100     // DOM Level 2 Style (DocumentStyle interface)
101
102     readonly attribute StyleSheetList styleSheets;
103
104     // DOM Level 2 Style (DocumentCSS interface)
105
106     [ObjCLegacyUnnamedParameters] CSSStyleDeclaration getOverrideStyle([Default=Undefined] optional Element element,
107                                                         [Default=Undefined] optional DOMString pseudoElement);
108
109     readonly attribute DOMString contentType;
110
111     // DOM Level 3 XPath (XPathEvaluator interface)
112     [ObjCLegacyUnnamedParameters, RaisesException] XPathExpression createExpression([Default=Undefined] optional DOMString expression,
113                                                     [Default=Undefined] optional XPathNSResolver resolver);
114     XPathNSResolver    createNSResolver(Node nodeResolver);
115     [ObjCLegacyUnnamedParameters, RaisesException] XPathResult evaluate([Default=Undefined] optional DOMString expression,
116                                                   [Default=Undefined] optional Node contextNode,
117                                                   [Default=Undefined] optional XPathNSResolver resolver,
118                                                   [Default=Undefined] optional unsigned short type,
119                                                   [Default=Undefined] optional XPathResult inResult);
120
121     // Common extensions
122     boolean            execCommand([Default=Undefined] optional DOMString command,
123                                    [Default=Undefined] optional boolean userInterface,
124                                    [TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString value);
125
126 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
127     // FIXME: remove the these two versions once optional is implemented for Objective-C.
128     boolean            execCommand(DOMString command,
129                                    boolean userInterface);
130     boolean            execCommand(DOMString command);
131 #endif
132
133     boolean            queryCommandEnabled([Default=Undefined] optional DOMString command);
134     boolean            queryCommandIndeterm([Default=Undefined] optional DOMString command);
135     boolean            queryCommandState([Default=Undefined] optional DOMString command);
136     boolean            queryCommandSupported([Default=Undefined] optional DOMString command);
137     DOMString          queryCommandValue([Default=Undefined] optional DOMString command);
138
139     // Moved down from HTMLDocument
140
141              [TreatNullAs=NullString] attribute DOMString title;
142     readonly attribute DOMString referrer;
143 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
144     [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
145 #else
146     readonly attribute DOMString domain;
147 #endif
148     readonly attribute DOMString URL;
149
150     [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
151
152     [SetterRaisesException, ImplementedAs=bodyOrFrameset] attribute HTMLElement body;
153
154     readonly attribute HTMLHeadElement head;
155     readonly attribute HTMLCollection images;
156     readonly attribute HTMLCollection applets;
157     readonly attribute HTMLCollection links;
158     readonly attribute HTMLCollection forms;
159     readonly attribute HTMLCollection anchors;
160     readonly attribute DOMString lastModified;
161
162     NodeList getElementsByName([Default=Undefined,AtomicString] optional DOMString elementName);
163
164 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
165              [Custom] attribute Location location;
166 #endif
167
168     // IE extensions
169
170              [TreatReturnedNullStringAs=Undefined, TreatNullAs=NullString] attribute DOMString charset;
171     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString defaultCharset;
172     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString readyState;
173
174     Element            elementFromPoint([Default=Undefined] optional long x, 
175                                         [Default=Undefined] optional long y);
176     Range              caretRangeFromPoint([Default=Undefined] optional long x, 
177                                            [Default=Undefined] optional long y);
178
179     // Mozilla extensions
180 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
181     DOMSelection       getSelection();
182 #endif
183     [TreatReturnedNullStringAs=Null] readonly attribute DOMString characterSet;
184
185     // WebKit extensions
186
187     [TreatReturnedNullStringAs=Null] readonly attribute DOMString preferredStylesheetSet;
188              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectedStylesheetSet;
189
190 #if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
191     CSSStyleDeclaration createCSSStyleDeclaration();
192 #endif
193
194 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
195     // DOM Level 2 Style Interface
196     [ObjCLegacyUnnamedParameters, ObjCUseDefaultView] CSSStyleDeclaration getComputedStyle(Element element,
197                                                                   DOMString pseudoElement);
198
199     // WebKit extension
200     // FIXME: remove the first version once optional is implemented for Objective-C.
201     [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(Element element,
202                                               DOMString pseudoElement);
203     [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(Element element,
204                                               DOMString pseudoElement,
205                                               optional boolean authorOnly);
206                                               
207 #endif
208
209 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
210     CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
211 #endif
212
213     // HTML 5
214     NodeList getElementsByClassName([Default=Undefined] optional DOMString tagname);
215
216     readonly attribute Element activeElement;
217     boolean hasFocus();
218
219     readonly attribute DOMString compatMode;
220
221     // NodeSelector - Selector API
222     [RaisesException] Element querySelector(DOMString selectors);
223     [RaisesException] NodeList querySelectorAll(DOMString selectors);
224
225 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
226     // Mozilla version
227     readonly attribute boolean webkitIsFullScreen;
228     readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
229     readonly attribute Element webkitCurrentFullScreenElement;
230     void webkitCancelFullScreen();
231
232     // W3C version
233     readonly attribute boolean webkitFullscreenEnabled;
234     readonly attribute Element webkitFullscreenElement;
235     void webkitExitFullscreen();
236 #endif
237
238     [Conditional=POINTER_LOCK] void exitPointerLock();
239     [Conditional=POINTER_LOCK] readonly attribute Element pointerLockElement;
240
241     [Conditional=CSS_REGIONS] DOMNamedFlowCollection webkitGetNamedFlows();
242
243 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
244     [Conditional=FONT_LOAD_EVENTS] readonly attribute FontLoader fonts;
245 #endif
246
247     [NotEnumerable] attribute EventListener onabort;
248     [NotEnumerable] attribute EventListener onbeforecopy;
249     [NotEnumerable] attribute EventListener onbeforecut;
250     [NotEnumerable] attribute EventListener onbeforepaste;
251     [NotEnumerable] attribute EventListener onblur;
252     [NotEnumerable] attribute EventListener onchange;
253     [NotEnumerable] attribute EventListener onclick;
254     [NotEnumerable] attribute EventListener oncontextmenu;
255     [NotEnumerable] attribute EventListener oncopy;
256     [NotEnumerable] attribute EventListener oncut;
257     [NotEnumerable] attribute EventListener ondblclick;
258     [NotEnumerable] attribute EventListener ondrag;
259     [NotEnumerable] attribute EventListener ondragend;
260     [NotEnumerable] attribute EventListener ondragenter;
261     [NotEnumerable] attribute EventListener ondragleave;
262     [NotEnumerable] attribute EventListener ondragover;
263     [NotEnumerable] attribute EventListener ondragstart;
264     [NotEnumerable] attribute EventListener ondrop;
265     [NotEnumerable] attribute EventListener onerror;
266     [NotEnumerable] attribute EventListener onfocus;
267     [NotEnumerable] attribute EventListener oninput;
268     [NotEnumerable] attribute EventListener oninvalid;
269     [NotEnumerable] attribute EventListener onkeydown;
270     [NotEnumerable] attribute EventListener onkeypress;
271     [NotEnumerable] attribute EventListener onkeyup;
272     [NotEnumerable] attribute EventListener onload;
273     [NotEnumerable] attribute EventListener onmousedown;
274     [NotEnumerable] attribute EventListener onmouseenter;
275     [NotEnumerable] attribute EventListener onmouseleave;
276     [NotEnumerable] attribute EventListener onmousemove;
277     [NotEnumerable] attribute EventListener onmouseout;
278     [NotEnumerable] attribute EventListener onmouseover;
279     [NotEnumerable] attribute EventListener onmouseup;
280     [NotEnumerable] attribute EventListener onmousewheel;
281     [NotEnumerable] attribute EventListener onpaste;
282     [NotEnumerable] attribute EventListener onreadystatechange;
283     [NotEnumerable] attribute EventListener onreset;
284     [NotEnumerable] attribute EventListener onscroll;
285     [NotEnumerable] attribute EventListener onsearch;
286     [NotEnumerable] attribute EventListener onselect;
287     [NotEnumerable] attribute EventListener onselectionchange;
288     [NotEnumerable] attribute EventListener onselectstart;
289     [NotEnumerable] attribute EventListener onsubmit;
290     [NotEnumerable] attribute EventListener onwheel;
291
292     [NotEnumerable, Conditional=CSP_NEXT] attribute EventListener onsecuritypolicyviolation;
293
294     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
295     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
296
297     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockchange;
298     [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockerror;
299
300     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
301     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
302     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
303     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
304
305     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
306     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
307     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
308     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
309
310 #if defined(ENABLE_IOS_TOUCH_EVENTS) && ENABLE_IOS_TOUCH_EVENTS
311 #include <WebKitAdditions/DocumentIOS.idl>
312 #elif defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
313     [ReturnNewObject, RaisesException] Touch createTouch([Default=Undefined] optional DOMWindow window,
314                                                      [Default=Undefined] optional EventTarget target,
315                                                      [Default=Undefined] optional long identifier,
316                                                      [Default=Undefined] optional long pageX,
317                                                      [Default=Undefined] optional long pageY,
318                                                      [Default=Undefined] optional long screenX,
319                                                      [Default=Undefined] optional long screenY,
320                                                      [Default=Undefined] optional long webkitRadiusX,
321                                                      [Default=Undefined] optional long webkitRadiusY,
322                                                      [Default=Undefined] optional unrestricted float webkitRotationAngle,
323                                                      [Default=Undefined] optional unrestricted float webkitForce);
324     [ReturnNewObject, Custom, RaisesException] TouchList createTouchList();
325 #endif
326
327     // Page visibility API.
328     readonly attribute DOMString visibilityState;
329     readonly attribute boolean hidden;
330
331     // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces
332     [Conditional=CSP_NEXT] readonly attribute DOMSecurityPolicy securityPolicy;
333
334     // currentscript API: http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document-currentscript
335     readonly attribute HTMLScriptElement currentScript;
336
337     // http://www.w3.org/TR/2014/WD-dom-20140204/#dom-document-origin
338     readonly attribute DOMString origin;
339 };
340