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