Fast-path for casting JS wrappers to JSElement.
[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     readonly attribute long offsetLeft;
73     readonly attribute long offsetTop;
74     readonly attribute long offsetWidth;
75     readonly attribute long offsetHeight;
76     [ImplementedAs=bindingsOffsetParent] readonly attribute Element offsetParent;
77     readonly attribute long clientLeft;
78     readonly attribute long clientTop;
79     readonly attribute long clientWidth;
80     readonly attribute long clientHeight;
81     attribute long scrollLeft;
82     attribute long scrollTop;
83     readonly attribute long scrollWidth;
84     readonly attribute long scrollHeight;
85
86     void focus();
87     void blur();
88     void scrollIntoView(optional boolean alignWithTop);
89
90     // WebKit extensions
91
92     void scrollIntoViewIfNeeded(optional boolean centerIfNeeded);
93     void scrollByLines([Default=Undefined] optional long lines);
94     void scrollByPages([Default=Undefined] optional long pages);
95
96     // HTML 5
97     NodeList getElementsByClassName([Default=Undefined] optional DOMString name);
98
99     [Reflect=class] attribute DOMString className;
100     readonly attribute DOMTokenList classList;
101
102 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
103     readonly attribute DOMStringMap dataset;
104 #endif
105
106     // NodeSelector - Selector API
107     [RaisesException] Element querySelector(DOMString selectors);
108     [RaisesException] NodeList querySelectorAll(DOMString selectors);
109
110     // WebKit extension, pending specification.
111     [RaisesException] boolean webkitMatchesSelector([Default=Undefined] optional DOMString selectors);
112
113     // ElementTraversal API
114     readonly attribute Element firstElementChild;
115     readonly attribute Element lastElementChild;
116     readonly attribute Element previousElementSibling;
117     readonly attribute Element nextElementSibling;
118     readonly attribute unsigned long childElementCount;
119
120 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
121     // CSSOM View Module API
122     ClientRectList getClientRects();
123     ClientRect getBoundingClientRect();
124 #endif
125
126 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
127     // Objective-C extensions
128     readonly attribute DOMString innerText;
129 #endif
130
131 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
132     // Mozilla version
133     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
134     void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
135
136     // W3C version
137     void webkitRequestFullscreen();
138 #endif
139
140 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
141     [Reflect] attribute DOMString uiactions;
142 #endif
143
144     [Conditional=POINTER_LOCK] void webkitRequestPointerLock();
145
146     // CSS Regions API
147     [Conditional=CSS_REGIONS] readonly attribute DOMString webkitRegionOverset;
148     [Conditional=CSS_REGIONS] sequence<Range> webkitGetRegionFlowRanges();
149
150 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
151     // Event handler DOM attributes
152     [NotEnumerable] attribute EventListener onabort;
153     [NotEnumerable] attribute EventListener onblur;
154     [NotEnumerable] attribute EventListener onchange;
155     [NotEnumerable] attribute EventListener onclick;
156     [NotEnumerable] attribute EventListener oncontextmenu;
157     [NotEnumerable] attribute EventListener ondblclick;
158     [NotEnumerable] attribute EventListener ondrag;
159     [NotEnumerable] attribute EventListener ondragend;
160     [NotEnumerable] attribute EventListener ondragenter;
161     [NotEnumerable] attribute EventListener ondragleave;
162     [NotEnumerable] attribute EventListener ondragover;
163     [NotEnumerable] attribute EventListener ondragstart;
164     [NotEnumerable] attribute EventListener ondrop;
165     [NotEnumerable] attribute EventListener onerror;
166     [NotEnumerable] attribute EventListener onfocus;
167     [NotEnumerable] attribute EventListener oninput;
168     [NotEnumerable] attribute EventListener oninvalid;
169     [NotEnumerable] attribute EventListener onkeydown;
170     [NotEnumerable] attribute EventListener onkeypress;
171     [NotEnumerable] attribute EventListener onkeyup;
172     [NotEnumerable] attribute EventListener onload;
173     [NotEnumerable] attribute EventListener onmousedown;
174     [NotEnumerable] attribute EventListener onmouseenter;
175     [NotEnumerable] attribute EventListener onmouseleave;
176     [NotEnumerable] attribute EventListener onmousemove;
177     [NotEnumerable] attribute EventListener onmouseout;
178     [NotEnumerable] attribute EventListener onmouseover;
179     [NotEnumerable] attribute EventListener onmouseup;
180     [NotEnumerable] attribute EventListener onmousewheel;
181     [NotEnumerable] attribute EventListener onscroll;
182     [NotEnumerable] attribute EventListener onselect;
183     [NotEnumerable] attribute EventListener onsubmit;
184     [NotEnumerable] attribute EventListener onwheel;
185
186     // [NotEnumerable] attribute EventListener oncanplay;
187     // [NotEnumerable] attribute EventListener oncanplaythrough;
188     // [NotEnumerable] attribute EventListener ondurationchange;
189     // [NotEnumerable] attribute EventListener onemptied;
190     // [NotEnumerable] attribute EventListener onended;
191     // [NotEnumerable] attribute EventListener onloadeddata;
192     // [NotEnumerable] attribute EventListener onloadedmetadata;
193     // [NotEnumerable] attribute EventListener onloadstart;
194     // [NotEnumerable] attribute EventListener onpause;
195     // [NotEnumerable] attribute EventListener onplay;
196     // [NotEnumerable] attribute EventListener onplaying;
197     // [NotEnumerable] attribute EventListener onprogress;
198     // [NotEnumerable] attribute EventListener onratechange;
199     // [NotEnumerable] attribute EventListener onreadystatechange;
200     // [NotEnumerable] attribute EventListener onseeked;
201     // [NotEnumerable] attribute EventListener onseeking;
202     // [NotEnumerable] attribute EventListener onshow;
203     // [NotEnumerable] attribute EventListener onstalled;
204     // [NotEnumerable] attribute EventListener onsuspend;
205     // [NotEnumerable] attribute EventListener ontimeupdate;
206     // [NotEnumerable] attribute EventListener onvolumechange;
207     // [NotEnumerable] attribute EventListener onwaiting;
208
209     // WebKit extensions
210     [NotEnumerable] attribute EventListener onbeforecut;
211     [NotEnumerable] attribute EventListener oncut;
212     [NotEnumerable] attribute EventListener onbeforecopy;
213     [NotEnumerable] attribute EventListener oncopy;
214     [NotEnumerable] attribute EventListener onbeforepaste;
215     [NotEnumerable] attribute EventListener onpaste;
216     [NotEnumerable] attribute EventListener onreset;
217     [NotEnumerable] attribute EventListener onsearch;
218     [NotEnumerable] attribute EventListener onselectstart;
219     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
220     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
221     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
222     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
223     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
224     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
225     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
226     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
227     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
228     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
229 #endif
230 };
231
232 Element implements ChildNode;
233