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