ddb9bb643001a2d8a303651995a68575003bfef1
[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     // ElementTraversal API
131     readonly attribute Element firstElementChild;
132     readonly attribute Element lastElementChild;
133     readonly attribute Element previousElementSibling;
134     readonly attribute Element nextElementSibling;
135     readonly attribute unsigned long childElementCount;
136
137 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
138     // CSSOM View Module API
139     ClientRectList getClientRects();
140     ClientRect getBoundingClientRect();
141 #endif
142
143 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
144     // Objective-C extensions
145     readonly attribute DOMString innerText;
146 #endif
147
148 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
149     // Mozilla version
150     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
151     void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
152
153     // W3C version
154     void webkitRequestFullscreen();
155 #endif
156
157 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
158     [Reflect] attribute DOMString uiactions;
159 #endif
160
161     [Conditional=POINTER_LOCK] void requestPointerLock();
162
163     // CSS Regions API
164     [Conditional=CSS_REGIONS] readonly attribute DOMString webkitRegionOverset;
165     [Conditional=CSS_REGIONS] sequence<Range> webkitGetRegionFlowRanges();
166
167 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
168     // Event handler DOM attributes
169     [NotEnumerable] attribute EventListener onabort;
170     [NotEnumerable] attribute EventListener onblur;
171     [NotEnumerable] attribute EventListener onchange;
172     [NotEnumerable] attribute EventListener onclick;
173     [NotEnumerable] attribute EventListener oncontextmenu;
174     [NotEnumerable] attribute EventListener ondblclick;
175     [NotEnumerable] attribute EventListener ondrag;
176     [NotEnumerable] attribute EventListener ondragend;
177     [NotEnumerable] attribute EventListener ondragenter;
178     [NotEnumerable] attribute EventListener ondragleave;
179     [NotEnumerable] attribute EventListener ondragover;
180     [NotEnumerable] attribute EventListener ondragstart;
181     [NotEnumerable] attribute EventListener ondrop;
182     [NotEnumerable] attribute EventListener onerror;
183     [NotEnumerable] attribute EventListener onfocus;
184     [NotEnumerable] attribute EventListener oninput;
185     [NotEnumerable] attribute EventListener oninvalid;
186     [NotEnumerable] attribute EventListener onkeydown;
187     [NotEnumerable] attribute EventListener onkeypress;
188     [NotEnumerable] attribute EventListener onkeyup;
189     [NotEnumerable] attribute EventListener onload;
190     [NotEnumerable] attribute EventListener onmousedown;
191     [NotEnumerable] attribute EventListener onmouseenter;
192     [NotEnumerable] attribute EventListener onmouseleave;
193     [NotEnumerable] attribute EventListener onmousemove;
194     [NotEnumerable] attribute EventListener onmouseout;
195     [NotEnumerable] attribute EventListener onmouseover;
196     [NotEnumerable] attribute EventListener onmouseup;
197     [NotEnumerable] attribute EventListener onmousewheel;
198     [NotEnumerable] attribute EventListener onscroll;
199     [NotEnumerable] attribute EventListener onselect;
200     [NotEnumerable] attribute EventListener onsubmit;
201     [NotEnumerable] attribute EventListener onwheel;
202
203     // [NotEnumerable] attribute EventListener oncanplay;
204     // [NotEnumerable] attribute EventListener oncanplaythrough;
205     // [NotEnumerable] attribute EventListener ondurationchange;
206     // [NotEnumerable] attribute EventListener onemptied;
207     // [NotEnumerable] attribute EventListener onended;
208     // [NotEnumerable] attribute EventListener onloadeddata;
209     // [NotEnumerable] attribute EventListener onloadedmetadata;
210     // [NotEnumerable] attribute EventListener onloadstart;
211     // [NotEnumerable] attribute EventListener onpause;
212     // [NotEnumerable] attribute EventListener onplay;
213     // [NotEnumerable] attribute EventListener onplaying;
214     // [NotEnumerable] attribute EventListener onprogress;
215     // [NotEnumerable] attribute EventListener onratechange;
216     // [NotEnumerable] attribute EventListener onreadystatechange;
217     // [NotEnumerable] attribute EventListener onseeked;
218     // [NotEnumerable] attribute EventListener onseeking;
219     // [NotEnumerable] attribute EventListener onshow;
220     // [NotEnumerable] attribute EventListener onstalled;
221     // [NotEnumerable] attribute EventListener onsuspend;
222     // [NotEnumerable] attribute EventListener ontimeupdate;
223     // [NotEnumerable] attribute EventListener onvolumechange;
224     // [NotEnumerable] attribute EventListener onwaiting;
225
226     // WebKit extensions
227     [NotEnumerable] attribute EventListener onbeforecut;
228     [NotEnumerable] attribute EventListener oncut;
229     [NotEnumerable] attribute EventListener onbeforecopy;
230     [NotEnumerable] attribute EventListener oncopy;
231     [NotEnumerable] attribute EventListener onbeforepaste;
232     [NotEnumerable] attribute EventListener onpaste;
233     [NotEnumerable] attribute EventListener onreset;
234     [NotEnumerable] attribute EventListener onsearch;
235     [NotEnumerable] attribute EventListener onselectstart;
236     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
237     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
238     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
239     [NotEnumerable,Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
240     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
241     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
242     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
243     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
244     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
245     [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
246 #endif
247 };
248
249 Element implements ChildNode;
250