Element Traversal is not just Elements anymore
[WebKit-https.git] / Source / WebCore / dom / Element.idl
1 /*
2  * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
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     JSCustomHeader,
23     JSGenerateToNativeObject,
24 ] interface Element : Node {
25
26     // DOM Level 1 Core
27
28     [TreatReturnedNullStringAs=Null] readonly attribute DOMString tagName;
29
30     [TreatReturnedNullStringAs=Null] DOMString getAttribute([Default=Undefined] optional DOMString name);
31     [ObjCLegacyUnnamedParameters, RaisesException] void setAttribute([Default=Undefined] optional DOMString name,
32                                      [Default=Undefined] optional DOMString value);
33     void removeAttribute([Default=Undefined] optional DOMString name);
34     Attr getAttributeNode([Default=Undefined] optional DOMString name);
35     [RaisesException] Attr setAttributeNode([Default=Undefined] optional Attr newAttr);
36     [RaisesException] Attr removeAttributeNode([Default=Undefined] optional Attr oldAttr);
37     NodeList getElementsByTagName([Default=Undefined] optional DOMString name);
38
39 #if !defined(LANGUAGE_OBJECTIVE_C)
40     // For ObjC this is defined on Node for legacy support.
41     readonly attribute NamedNodeMap     attributes;
42     boolean            hasAttributes();
43 #endif
44
45     // DOM Level 2 Core
46
47     [ObjCLegacyUnnamedParameters] DOMString getAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
48                                             [Default=Undefined] optional DOMString localName);
49     [ObjCLegacyUnnamedParameters, RaisesException] void setAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
50                                        [Default=Undefined] optional DOMString qualifiedName, 
51                                        [Default=Undefined] optional DOMString value);
52     [ObjCLegacyUnnamedParameters] void removeAttributeNS([TreatNullAs=NullString] DOMString namespaceURI,
53                                           DOMString localName);
54     [ObjCLegacyUnnamedParameters] NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
55                                                    [Default=Undefined] optional DOMString localName);
56     [ObjCLegacyUnnamedParameters] Attr getAttributeNodeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
57                                            [Default=Undefined] optional DOMString localName);
58     [RaisesException] Attr setAttributeNodeNS([Default=Undefined] optional Attr newAttr);
59     boolean hasAttribute(DOMString name);
60     [ObjCLegacyUnnamedParameters] boolean hasAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
61                                           [Default=Undefined] optional DOMString localName);
62
63     readonly attribute CSSStyleDeclaration style;
64
65     // DOM 4
66 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
67     [Reflect] attribute DOMString id;
68 #endif
69
70     // Common extensions
71
72 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
73     readonly attribute long offsetLeft;
74     readonly attribute long offsetTop;
75     readonly attribute long offsetWidth;
76     readonly attribute long offsetHeight;
77     readonly attribute long clientLeft;
78     readonly attribute long clientTop;
79     readonly attribute long clientWidth;
80     readonly attribute long clientHeight;
81 #else
82     readonly attribute double offsetLeft;
83     readonly attribute double offsetTop;
84     readonly attribute double offsetWidth;
85     readonly attribute double offsetHeight;
86     readonly attribute double clientLeft;
87     readonly attribute double clientTop;
88     readonly attribute double clientWidth;
89     readonly attribute double clientHeight;
90 #endif
91
92     attribute long scrollLeft;
93     attribute long scrollTop;
94     readonly attribute long scrollWidth;
95     readonly attribute long scrollHeight;
96
97     [ImplementedAs=bindingsOffsetParent] readonly attribute Element offsetParent;
98
99     void focus();
100     void blur();
101     void scrollIntoView(optional boolean alignWithTop);
102
103     // WebKit extensions
104
105     void scrollIntoViewIfNeeded(optional boolean centerIfNeeded);
106     void scrollByLines([Default=Undefined] optional long lines);
107     void scrollByPages([Default=Undefined] optional long pages);
108
109     // HTML 5
110     NodeList getElementsByClassName([Default=Undefined] optional DOMString name);
111     [TreatNullAs=NullString, SetterRaisesException] attribute DOMString innerHTML;
112     [TreatNullAs=NullString, SetterRaisesException] attribute DOMString outerHTML;
113              
114
115     [Reflect=class] attribute DOMString className;
116     readonly attribute DOMTokenList classList;
117
118 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
119     readonly attribute DOMStringMap dataset;
120 #endif
121
122     // NodeSelector - Selector API
123     [RaisesException] Element querySelector(DOMString selectors);
124     [RaisesException] NodeList querySelectorAll(DOMString selectors);
125
126     [RaisesException] boolean matches(DOMString selectors);
127     [RaisesException] Element closest(DOMString selectors);    
128     [ImplementedAs=matches, RaisesException] boolean webkitMatchesSelector(DOMString selectors);
129
130     // From the ParentNode interface - https://dom.spec.whatwg.org/#interface-parentnode
131     // FIXME: Move this to a seperate ParentNode IDL file when one exists.
132     readonly attribute Element firstElementChild;
133     readonly attribute Element lastElementChild;
134     readonly attribute unsigned long childElementCount;
135
136     // From the NonDocumentTypeChildNode interface - https://dom.spec.whatwg.org/#nondocumenttypechildnode
137     // FIXME: Move this to a seperate NonDocumentTypeChildNode IDL file when one exists.
138     readonly attribute Element previousElementSibling;
139     readonly attribute Element nextElementSibling;
140
141 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
142     // CSSOM View Module API
143     ClientRectList getClientRects();
144     ClientRect getBoundingClientRect();
145 #endif
146
147 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
148     // Objective-C extensions
149     readonly attribute DOMString innerText;
150 #endif
151
152 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
153     // Mozilla version
154     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
155     void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
156
157     // W3C version
158     void webkitRequestFullscreen();
159 #endif
160
161 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
162     [Reflect] attribute DOMString uiactions;
163 #endif
164
165     [Conditional=POINTER_LOCK] void requestPointerLock();
166
167     // CSS Regions API
168     [Conditional=CSS_REGIONS] readonly attribute DOMString webkitRegionOverset;
169     [Conditional=CSS_REGIONS] sequence<Range> webkitGetRegionFlowRanges();
170
171     // FIXME: These should be on HTMLElement and SVGElement, not on Element.
172     // But we don't want to copy and paste this entire list; we can leave on Element
173     // for the moment since it doesn't do much real harm.
174
175     [NotEnumerable] attribute EventHandler onabort;
176     [NotEnumerable] attribute EventHandler onanimationend;
177     [NotEnumerable] attribute EventHandler onanimationiteration;
178     [NotEnumerable] attribute EventHandler onanimationstart;
179     [NotEnumerable] attribute EventHandler onbeforecopy;
180     [NotEnumerable] attribute EventHandler onbeforecut;
181     [NotEnumerable] attribute EventHandler onbeforeload;
182     [NotEnumerable] attribute EventHandler onbeforepaste;
183     [NotEnumerable] attribute EventHandler onblur;
184     [NotEnumerable] attribute EventHandler oncanplay;
185     [NotEnumerable] attribute EventHandler oncanplaythrough;
186     [NotEnumerable] attribute EventHandler onchange;
187     [NotEnumerable] attribute EventHandler onclick;
188     [NotEnumerable] attribute EventHandler oncontextmenu;
189     [NotEnumerable] attribute EventHandler oncopy;
190     [NotEnumerable] attribute EventHandler oncut;
191     [NotEnumerable] attribute EventHandler ondblclick;
192     [NotEnumerable] attribute EventHandler ondrag;
193     [NotEnumerable] attribute EventHandler ondragend;
194     [NotEnumerable] attribute EventHandler ondragenter;
195     [NotEnumerable] attribute EventHandler ondragleave;
196     [NotEnumerable] attribute EventHandler ondragover;
197     [NotEnumerable] attribute EventHandler ondragstart;
198     [NotEnumerable] attribute EventHandler ondrop;
199     [NotEnumerable] attribute EventHandler ondurationchange;
200     [NotEnumerable] attribute EventHandler onemptied;
201     [NotEnumerable] attribute EventHandler onended;
202     [NotEnumerable] attribute EventHandler onerror;
203     [NotEnumerable] attribute EventHandler onfocus;
204     [NotEnumerable] attribute EventHandler onfocusin;
205     [NotEnumerable] attribute EventHandler onfocusout;
206     [NotEnumerable] attribute EventHandler ongesturechange;
207     [NotEnumerable] attribute EventHandler ongestureend;
208     [NotEnumerable] attribute EventHandler ongesturestart;
209     [NotEnumerable] attribute EventHandler oninput;
210     [NotEnumerable] attribute EventHandler oninvalid;
211     [NotEnumerable] attribute EventHandler onkeydown;
212     [NotEnumerable] attribute EventHandler onkeypress;
213     [NotEnumerable] attribute EventHandler onkeyup;
214     [NotEnumerable] attribute EventHandler onload;
215     [NotEnumerable] attribute EventHandler onloadeddata;
216     [NotEnumerable] attribute EventHandler onloadedmetadata;
217     [NotEnumerable] attribute EventHandler onloadstart;
218     [NotEnumerable] attribute EventHandler onmousedown;
219     [NotEnumerable] attribute EventHandler onmouseenter;
220     [NotEnumerable] attribute EventHandler onmouseleave;
221     [NotEnumerable] attribute EventHandler onmousemove;
222     [NotEnumerable] attribute EventHandler onmouseout;
223     [NotEnumerable] attribute EventHandler onmouseover;
224     [NotEnumerable] attribute EventHandler onmouseup;
225     [NotEnumerable] attribute EventHandler onmousewheel;
226     [NotEnumerable] attribute EventHandler onpaste;
227     [NotEnumerable] attribute EventHandler onpause;
228     [NotEnumerable] attribute EventHandler onplay;
229     [NotEnumerable] attribute EventHandler onplaying;
230     [NotEnumerable] attribute EventHandler onprogress;
231     [NotEnumerable] attribute EventHandler onratechange;
232     [NotEnumerable] attribute EventHandler onreset;
233     [NotEnumerable] attribute EventHandler onscroll;
234     [NotEnumerable] attribute EventHandler onsearch;
235     [NotEnumerable] attribute EventHandler onseeked;
236     [NotEnumerable] attribute EventHandler onseeking;
237     [NotEnumerable] attribute EventHandler onselect;
238     [NotEnumerable] attribute EventHandler onselectstart;
239     [NotEnumerable] attribute EventHandler onstalled;
240     [NotEnumerable] attribute EventHandler onsubmit;
241     [NotEnumerable] attribute EventHandler onsuspend;
242     [NotEnumerable] attribute EventHandler ontimeupdate;
243     [NotEnumerable] attribute EventHandler ontransitionend;
244     [NotEnumerable] attribute EventHandler onvolumechange;
245     [NotEnumerable] attribute EventHandler onwaiting;
246     [NotEnumerable] attribute EventHandler onwebkitanimationend;
247     [NotEnumerable] attribute EventHandler onwebkitanimationiteration;
248     [NotEnumerable] attribute EventHandler onwebkitanimationstart;
249     [NotEnumerable] attribute EventHandler onwebkittransitionend;
250     [NotEnumerable] attribute EventHandler onwheel;
251
252     // Some sites use the existence of event handler properties for feature detection,
253     // so they actually need to be conditional, not just non-enumerable.
254
255     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchcancel;
256     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchend;
257     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchmove;
258     [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchstart;
259
260     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealbottom;
261     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealleft;
262     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealright;
263     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealtop;
264
265     [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcechanged;
266     [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcedown;
267     [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcewillbegin;
268     [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceup;
269
270     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyadded;
271     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyerror;
272     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeymessage;
273
274     [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventHandler onwebkitneedkey;
275
276     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
277     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
278
279     [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventHandler onautocomplete;
280     [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventHandler onautocompleteerror;
281
282     [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventHandler onwebkitpresentationmodechanged;
283
284     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
285     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
286 };
287
288 Element implements ChildNode;
289