7e0ee08322d2ee9979652326839760150aedd27b
[WebKit-https.git] / Source / WebCore / dom / Element.idl
1 /*
2  * Copyright (C) 2006, 2007, 2009, 2015 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     CustomToJSObject,
23     JSCustomHeader,
24     JSGenerateToNativeObject,
25     ExportMacro=WEBCORE_EXPORT,
26 ] interface Element : Node {
27
28     // DOM Level 1 Core
29
30     readonly attribute DOMString? tagName;
31
32     // FIXME: Using "undefined" as default parameter value is wrong.
33     DOMString? getAttribute(optional DOMString name = "undefined");
34
35     [ObjCLegacyUnnamedParameters, RaisesException, InvokesCustomElementLifecycleCallbacks]
36
37     // FIXME: Using "undefined" as default parameter value is wrong.
38     void setAttribute(optional DOMString name = "undefined", optional DOMString value = "undefined");
39
40     // FIXME: Using "undefined" as default parameter value is wrong.
41     [InvokesCustomElementLifecycleCallbacks] void removeAttribute(optional DOMString name = "undefined");
42     Attr getAttributeNode(optional DOMString name = "undefined");
43
44     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr setAttributeNode(Attr newAttr);
45     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr removeAttributeNode(Attr oldAttr);
46
47 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
48     [ImplementedAs=getElementsByTagNameForObjC] NodeList getElementsByTagName(optional DOMString name);
49 #else
50     // FIXME: Using "undefined" as default parameter value is wrong.
51     HTMLCollection getElementsByTagName(optional DOMString name = "undefined");
52 #endif
53
54 #if !defined(LANGUAGE_OBJECTIVE_C)
55     // For ObjC this is defined on Node for legacy support.
56     readonly attribute NamedNodeMap attributes;
57     boolean hasAttributes();
58 #endif
59
60     // DOM Level 2 Core
61
62     // FIXME: Using "undefined" as default parameter value is wrong.
63     [ObjCLegacyUnnamedParameters] DOMString? getAttributeNS(optional DOMString? namespaceURI = null, optional DOMString localName = "undefined");
64
65     [ObjCLegacyUnnamedParameters, RaisesException, InvokesCustomElementLifecycleCallbacks]
66
67     // FIXME: Using "undefined" as default parameter value is wrong.
68     void setAttributeNS(optional DOMString? namespaceURI = null, optional DOMString qualifiedName = "undefined", optional DOMString value = "undefined");
69
70     [ObjCLegacyUnnamedParameters, InvokesCustomElementLifecycleCallbacks] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
71
72 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
73     [ObjCLegacyUnnamedParameters, ImplementedAs=getElementsByTagNameNSForObjC] NodeList getElementsByTagNameNS(optional DOMString namespaceURI, optional DOMString localName);
74 #else
75     // FIXME: Using "undefined" as default parameter value is wrong.
76     HTMLCollection getElementsByTagNameNS(optional DOMString? namespaceURI = null, optional DOMString localName = "undefined");
77 #endif
78
79     // FIXME: Using "undefined" as default parameter value is wrong.
80     [ObjCLegacyUnnamedParameters] Attr getAttributeNodeNS(optional DOMString? namespaceURI = null, optional DOMString localName = "undefined");
81     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr setAttributeNodeNS(Attr newAttr);
82     boolean hasAttribute(DOMString name);
83     // FIXME: Using "undefined" as default parameter value is wrong.
84     [ObjCLegacyUnnamedParameters] boolean hasAttributeNS(optional DOMString? namespaceURI = null, optional DOMString localName = "undefined");
85
86     [ImplementedAs=cssomStyle] readonly attribute CSSStyleDeclaration style;
87
88     // DOM 4
89 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
90     [Reflect] attribute DOMString id;
91 #endif
92
93     // Common extensions
94
95 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
96     readonly attribute long offsetLeft;
97     readonly attribute long offsetTop;
98     readonly attribute long offsetWidth;
99     readonly attribute long offsetHeight;
100     readonly attribute long clientLeft;
101     readonly attribute long clientTop;
102     readonly attribute long clientWidth;
103     readonly attribute long clientHeight;
104 #else
105     readonly attribute double offsetLeft;
106     readonly attribute double offsetTop;
107     readonly attribute double offsetWidth;
108     readonly attribute double offsetHeight;
109     readonly attribute double clientLeft;
110     readonly attribute double clientTop;
111     readonly attribute double clientWidth;
112     readonly attribute double clientHeight;
113 #endif
114
115     attribute long scrollLeft;
116     attribute long scrollTop;
117     readonly attribute long scrollWidth;
118     readonly attribute long scrollHeight;
119
120     [ImplementedAs=bindingsOffsetParent] readonly attribute Element offsetParent;
121
122 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
123     void focus();
124     void blur();
125 #endif
126
127     void scrollIntoView(optional boolean alignWithTop = true);
128
129     // WebKit extensions
130
131     void scrollIntoViewIfNeeded(optional boolean centerIfNeeded = true);
132     void scrollByLines(optional long lines = 0);
133     void scrollByPages(optional long pages = 0);
134
135     // HTML 5
136 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
137     [ImplementedAs=getElementsByClassNameForObjC] NodeList getElementsByClassName(optional DOMString name);
138 #else
139     // FIXME: Using "undefined" as default parameter value is wrong.
140     HTMLCollection getElementsByClassName(optional DOMString name = "undefined");
141 #endif
142     [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString innerHTML;
143     [TreatNullAs=EmptyString, SetterRaisesException] attribute DOMString outerHTML;
144
145
146     [Reflect=class] attribute DOMString className;
147     [PutForwards=value] readonly attribute DOMTokenList classList;
148
149 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
150     readonly attribute DOMStringMap dataset;
151 #endif
152
153     [RaisesException] boolean matches(DOMString selectors);
154     [RaisesException] Element closest(DOMString selectors);    
155     [ImplementedAs=matches, RaisesException] boolean webkitMatchesSelector(DOMString selectors);
156
157 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
158     // CSSOM View Module API
159     ClientRectList getClientRects();
160     ClientRect getBoundingClientRect();
161 #endif
162
163 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
164     // Objective-C extensions
165     readonly attribute DOMString innerText;
166 #endif
167
168 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
169     // Mozilla version
170     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
171     void webkitRequestFullScreen(optional unsigned short flags = 0);
172
173     // W3C version
174     void webkitRequestFullscreen();
175 #endif
176
177 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
178     [Reflect] attribute DOMString uiactions;
179 #endif
180
181     [Conditional=POINTER_LOCK] void requestPointerLock();
182
183     // CSS Regions API
184     [Conditional=CSS_REGIONS] readonly attribute DOMString webkitRegionOverset;
185     [Conditional=CSS_REGIONS] sequence<Range> webkitGetRegionFlowRanges();
186
187     // Shadow DOM API
188 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
189     [Conditional=SHADOW_DOM, EnabledAtRuntime=ShadowDOM, RaisesException] ShadowRoot attachShadow(ShadowRootInit init);
190     [Conditional=SHADOW_DOM, EnabledAtRuntime=ShadowDOM, ImplementedAs=shadowRootForBindings, CallWith=ScriptState] readonly attribute ShadowRoot shadowRoot;
191     [Conditional=SHADOW_DOM, EnabledAtRuntime=ShadowDOM, Reflect] attribute DOMString slot;
192 #endif
193
194     // Event Handlers
195
196     // Unique to Element and Document
197     // FIXME: Should these be exposed on Window as well (and therefore moved to GlobalEventHandlers.idl)?
198     [NotEnumerable] attribute EventHandler onbeforecopy;
199     [NotEnumerable] attribute EventHandler onbeforecut;
200     [NotEnumerable] attribute EventHandler onbeforepaste;
201     [NotEnumerable] attribute EventHandler oncopy;
202     [NotEnumerable] attribute EventHandler oncut;
203     [NotEnumerable] attribute EventHandler onpaste;
204     [NotEnumerable] attribute EventHandler onselectstart;
205     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
206     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
207
208     // Unique to Element and DOMWindow
209     // FIXME: Should these be exposed on Document as well (and therefore moved to GlobalEventHandlers.idl)?
210     [NotEnumerable] attribute EventHandler onanimationend;
211     [NotEnumerable] attribute EventHandler onanimationiteration;
212     [NotEnumerable] attribute EventHandler onanimationstart;
213     [NotEnumerable] attribute EventHandler ontransitionend;
214     [NotEnumerable, ImplementedAs=onwebkitAnimationEnd] attribute EventHandler onwebkitanimationend;
215     [NotEnumerable, ImplementedAs=onwebkitAnimationIteration] attribute EventHandler onwebkitanimationiteration;
216     [NotEnumerable, ImplementedAs=onwebkitAnimationStart] attribute EventHandler onwebkitanimationstart;
217     [NotEnumerable, ImplementedAs=onwebkitTransitionEnd] attribute EventHandler onwebkittransitionend;
218     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
219     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
220     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
221
222     // Unique to Element, HTMLBodyElement and HTMLFrameSetElement
223     [NotEnumerable] attribute EventHandler onfocusin;
224     [NotEnumerable] attribute EventHandler onfocusout;
225
226     // Unique to Element
227     [NotEnumerable] attribute EventHandler onbeforeload;
228     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyadded;
229     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyerror;
230     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeymessage;
231     [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventHandler onwebkitneedkey;
232     [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventHandler onwebkitpresentationmodechanged;
233     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
234     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
235 };
236
237 enum ShadowRootMode { "open", "closed" };
238
239 dictionary ShadowRootInit {
240     required ShadowRootMode mode;
241 };
242
243 Element implements Animatable;
244 Element implements ChildNode;
245 Element implements ParentNode;
246 Element implements NonDocumentTypeChildNode;
247 Element implements GlobalEventHandlers;