Move insertAdjacent*() API from HTMLElement to 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     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, InvokesCustomElementLifecycleCallbacks]
35
36     void setAttribute(DOMString name, DOMString value);
37
38     [InvokesCustomElementLifecycleCallbacks] void removeAttribute(DOMString name);
39     Attr? getAttributeNode(DOMString name);
40
41     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr? setAttributeNode(Attr newAttr);
42     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr removeAttributeNode(Attr oldAttr);
43
44     HTMLCollection getElementsByTagName(DOMString name);
45
46     readonly attribute NamedNodeMap attributes;
47     boolean hasAttributes();
48
49     // DOM Level 2 Core
50
51     [ObjCLegacyUnnamedParameters] DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
52
53     [ObjCLegacyUnnamedParameters, RaisesException, InvokesCustomElementLifecycleCallbacks]
54
55     void setAttributeNS(DOMString? namespaceURI, DOMString qualifiedName, DOMString value);
56
57     [ObjCLegacyUnnamedParameters, InvokesCustomElementLifecycleCallbacks] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
58
59     HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
60
61     [ObjCLegacyUnnamedParameters] Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
62     [RaisesException, InvokesCustomElementLifecycleCallbacks] Attr? setAttributeNodeNS(Attr newAttr);
63     boolean hasAttribute(DOMString name);
64
65     [ObjCLegacyUnnamedParameters] boolean hasAttributeNS(DOMString? namespaceURI, DOMString localName);
66
67     [ImplementedAs=cssomStyle] readonly attribute CSSStyleDeclaration style;
68
69     // DOM 4
70     [Reflect] attribute DOMString id;
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_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || 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 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
115     readonly attribute DOMStringMap dataset;
116 #endif
117
118     [RaisesException] boolean matches(DOMString selectors);
119     [RaisesException] Element closest(DOMString selectors);    
120     [ImplementedAs=matches, RaisesException] boolean webkitMatchesSelector(DOMString selectors);
121
122 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
123     // CSSOM View Module API
124     ClientRectList getClientRects();
125     ClientRect getBoundingClientRect();
126 #endif
127
128 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
129     // Objective-C extensions
130     readonly attribute DOMString innerText;
131 #endif
132
133 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
134     // Mozilla version
135     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
136     void webkitRequestFullScreen(optional unsigned short flags = 0);
137
138     // W3C version
139     void webkitRequestFullscreen();
140 #endif
141
142 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
143     [Reflect] attribute DOMString uiactions;
144 #endif
145
146     [RaisesException] Element insertAdjacentElement(DOMString where, Element element);
147     [RaisesException] void insertAdjacentHTML(DOMString where, DOMString html);
148     [RaisesException] void insertAdjacentText(DOMString where, DOMString text);
149
150     [Conditional=POINTER_LOCK] void requestPointerLock();
151
152     // CSS Regions API
153     [Conditional=CSS_REGIONS] readonly attribute DOMString webkitRegionOverset;
154     [Conditional=CSS_REGIONS] sequence<Range> webkitGetRegionFlowRanges();
155
156     // Shadow DOM API
157 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
158     [EnabledAtRuntime=ShadowDOM, RaisesException] ShadowRoot attachShadow(ShadowRootInit init);
159     [EnabledAtRuntime=ShadowDOM, ImplementedAs=shadowRootForBindings, CallWith=ScriptState] readonly attribute ShadowRoot shadowRoot;
160     [EnabledAtRuntime=ShadowDOM, Reflect] attribute DOMString slot;
161 #endif
162
163     // Event Handlers
164
165     // Unique to Element and Document
166     // FIXME: Should these be exposed on Window as well (and therefore moved to GlobalEventHandlers.idl)?
167     [NotEnumerable] attribute EventHandler onbeforecopy;
168     [NotEnumerable] attribute EventHandler onbeforecut;
169     [NotEnumerable] attribute EventHandler onbeforepaste;
170     [NotEnumerable] attribute EventHandler oncopy;
171     [NotEnumerable] attribute EventHandler oncut;
172     [NotEnumerable] attribute EventHandler onpaste;
173     [NotEnumerable] attribute EventHandler onselectstart;
174     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
175     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
176
177     // Unique to Element and DOMWindow
178     // FIXME: Should these be exposed on Document as well (and therefore moved to GlobalEventHandlers.idl)?
179     [NotEnumerable] attribute EventHandler onanimationend;
180     [NotEnumerable] attribute EventHandler onanimationiteration;
181     [NotEnumerable] attribute EventHandler onanimationstart;
182     [NotEnumerable] attribute EventHandler ontransitionend;
183     [NotEnumerable, ImplementedAs=onwebkitAnimationEnd] attribute EventHandler onwebkitanimationend;
184     [NotEnumerable, ImplementedAs=onwebkitAnimationIteration] attribute EventHandler onwebkitanimationiteration;
185     [NotEnumerable, ImplementedAs=onwebkitAnimationStart] attribute EventHandler onwebkitanimationstart;
186     [NotEnumerable, ImplementedAs=onwebkitTransitionEnd] attribute EventHandler onwebkittransitionend;
187     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
188     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
189     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
190
191     // Unique to Element, HTMLBodyElement and HTMLFrameSetElement
192     [NotEnumerable] attribute EventHandler onfocusin;
193     [NotEnumerable] attribute EventHandler onfocusout;
194
195     // Unique to Element
196     [NotEnumerable] attribute EventHandler onbeforeload;
197     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyadded;
198     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyerror;
199     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeymessage;
200     [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventHandler onwebkitneedkey;
201     [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventHandler onwebkitpresentationmodechanged;
202     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
203     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
204 };
205
206 enum ShadowRootMode { "open", "closed" };
207
208 dictionary ShadowRootInit {
209     required ShadowRootMode mode;
210 };
211
212 Element implements ChildNode;
213 Element implements NonDocumentTypeChildNode;
214 Element implements ParentNode;
215 Element implements Slotable;