Organize event handlers a bit
[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     [RaisesException] boolean matches(DOMString selectors);
123     [RaisesException] Element closest(DOMString selectors);    
124     [ImplementedAs=matches, RaisesException] boolean webkitMatchesSelector(DOMString selectors);
125
126 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
127     // CSSOM View Module API
128     ClientRectList getClientRects();
129     ClientRect getBoundingClientRect();
130 #endif
131
132 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
133     // Objective-C extensions
134     readonly attribute DOMString innerText;
135 #endif
136
137 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
138     // Mozilla version
139     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
140     void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
141
142     // W3C version
143     void webkitRequestFullscreen();
144 #endif
145
146 #if defined(ENABLE_INDIE_UI) && ENABLE_INDIE_UI
147     [Reflect] attribute DOMString uiactions;
148 #endif
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
157     // Event Handlers
158
159     // Unique to Element and Document
160     // FIXME: Should these be exposed on Window as well (and therefore moved to GlobalEventHandlers.idl)?
161     [NotEnumerable] attribute EventHandler onbeforecopy;
162     [NotEnumerable] attribute EventHandler onbeforecut;
163     [NotEnumerable] attribute EventHandler onbeforepaste;
164     [NotEnumerable] attribute EventHandler oncopy;
165     [NotEnumerable] attribute EventHandler oncut;
166     [NotEnumerable] attribute EventHandler onpaste;
167     [NotEnumerable] attribute EventHandler onselectstart;
168     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
169     [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
170
171     // Unique to Element and DOMWindow
172     // FIXME: Should these be exposed on Document as well (and therefore moved to GlobalEventHandlers.idl)?
173     [NotEnumerable] attribute EventHandler onanimationend;
174     [NotEnumerable] attribute EventHandler onanimationiteration;
175     [NotEnumerable] attribute EventHandler onanimationstart;
176     [NotEnumerable] attribute EventHandler ontransitionend;
177     [NotEnumerable] attribute EventHandler onwebkitanimationend;
178     [NotEnumerable] attribute EventHandler onwebkitanimationiteration;
179     [NotEnumerable] attribute EventHandler onwebkitanimationstart;
180     [NotEnumerable] attribute EventHandler onwebkittransitionend;
181     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
182     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
183     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
184
185     // Unique to Element, HTMLBodyElement and HTMLFrameSetElement
186     [NotEnumerable] attribute EventHandler onfocusin;
187     [NotEnumerable] attribute EventHandler onfocusout;
188
189     // Unique to Element
190     [NotEnumerable] attribute EventHandler onbeforeload;
191     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyadded;
192     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyerror;
193     [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeymessage;
194     [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventHandler onwebkitneedkey;
195     [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventHandler onwebkitpresentationmodechanged;
196     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
197     [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
198 };
199
200 Element implements ChildNode;
201 Element implements ParentNode;
202 Element implements NonDocumentTypeChildNode;
203 Element implements GlobalEventHandlers;