summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/dom/element.idl
blob: 2f0674c60386c71f44df7626e6be2d34e49f3555 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

// See
// https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
// for details.
enum NativeScrollBehavior { "disable-native-scroll", "perform-before-native-scroll", "perform-after-native-scroll" };
callback ScrollStateCallback = void (ScrollState scrollState);

// https://dom.spec.whatwg.org/#interface-element

[
    Exposed=Window
] interface Element : Node {
    readonly attribute DOMString? namespaceURI;
    readonly attribute DOMString? prefix;
    readonly attribute DOMString localName;
    [Affects=Nothing] readonly attribute DOMString tagName;

    [Affects=Nothing, CEReactions, Reflect] attribute DOMString id;
    [Affects=Nothing, CEReactions, Reflect=class] attribute DOMString className;
    [Affects=Nothing, SameObject, PerWorldBindings, PutForwards=value] readonly attribute DOMTokenList classList;
    [Unscopable, CEReactions, Reflect] attribute DOMString slot;

    [Affects=Nothing] boolean hasAttributes();
    [Affects=Nothing, SameObject, PerWorldBindings, ImplementedAs=attributesForBindings] readonly attribute NamedNodeMap attributes;
    [Affects=Nothing] sequence<DOMString> getAttributeNames();
    [Affects=Nothing] DOMString? getAttribute(DOMString name);
    [Affects=Nothing] DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
    [RaisesException, CEReactions, CustomElementCallbacks] void setAttribute(DOMString name, TrustedString value);
    [RaisesException, CEReactions, CustomElementCallbacks] void setAttributeNS(DOMString? namespaceURI, DOMString name, TrustedString value);
    [CEReactions, CustomElementCallbacks] void removeAttribute(DOMString name);
    [CEReactions, CustomElementCallbacks] void removeAttributeNS(DOMString? namespaceURI, DOMString localName);
    [RaisesException, CEReactions, CustomElementCallbacks] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
    [Affects=Nothing] boolean hasAttribute(DOMString name);
    [Affects=Nothing] boolean hasAttributeNS(DOMString? namespaceURI, DOMString localName);

    Attr? getAttributeNode(DOMString name);
    Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
    [RaisesException, CEReactions, CustomElementCallbacks] Attr? setAttributeNode(Attr attr);
    [RaisesException, CEReactions, CustomElementCallbacks] Attr? setAttributeNodeNS(Attr attr);
    [RaisesException, CEReactions, CustomElementCallbacks] Attr removeAttributeNode(Attr attr);

    [RaisesException, MeasureAs=ElementAttachShadow] ShadowRoot attachShadow(ShadowRootInit shadowRootInitDict);
    [Affects=Nothing, PerWorldBindings, ImplementedAs=OpenShadowRoot] readonly attribute ShadowRoot? shadowRoot;

    [RaisesException] Element? closest(DOMString selectors);
    [RaisesException] boolean matches(DOMString selectors);
    [RaisesException, ImplementedAs=matches, MeasureAs=ElementPrefixedMatchesSelector] boolean webkitMatchesSelector(DOMString selectors); // historical alias of .matches

    [Affects=Nothing] HTMLCollection getElementsByTagName(DOMString localName);
    [Affects=Nothing] HTMLCollection getElementsByTagNameNS(DOMString? namespaceURI, DOMString localName);
    [Affects=Nothing] HTMLCollection getElementsByClassName(DOMString classNames);

    [RaisesException, CEReactions, CustomElementCallbacks] Element? insertAdjacentElement(DOMString where, Element element);
    [RaisesException] void insertAdjacentText(DOMString where, DOMString data);

    // CSS Shadow Parts
    // https://drafts.csswg.org/css-shadow-parts/#idl
    [Affects=Nothing, SameObject, PerWorldBindings, PutForwards=value] readonly attribute DOMTokenList part;

    // Pointer Events
    // https://w3c.github.io/pointerevents/#extensions-to-the-element-interface
    [RaisesException] void setPointerCapture (long pointerId);
    [RaisesException] void releasePointerCapture (long pointerId);
    boolean hasPointerCapture (long pointerId);

    // Mixin Slotable
    // https://dom.spec.whatwg.org/#mixin-slotable
    [ImplementedAs=assignedSlotForBinding] readonly attribute HTMLSlotElement? assignedSlot;

    // DOM Parsing and Serialization
    // https://w3c.github.io/DOM-Parsing/#extensions-to-the-element-interface
    //
    // TODO(mkwst): Write a spec for the `TrustedHTML` variants.
    [Affects=Nothing, CEReactions, CustomElementCallbacks, Custom=Setter, RuntimeCallStatsCounter=ElementInnerHTML] attribute HTMLString innerHTML;
    [Affects=Nothing, CEReactions, CustomElementCallbacks, Custom=Setter] attribute HTMLString outerHTML;
    [CEReactions, CustomElementCallbacks, RaisesException] void insertAdjacentHTML(DOMString position, HTMLString text);

    // Pointer Lock
    // https://w3c.github.io/pointerlock/#extensions-to-the-element-interface
    [MeasureAs=ElementRequestPointerLock] void requestPointerLock(optional PointerLockOptions options);

    // CSSOM View Module
    // https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface
    [Measure] DOMRectList getClientRects();
    [Affects=Nothing, Measure, RuntimeCallStatsCounter=ElementGetBoundingClientRect] DOMRect getBoundingClientRect();

    // TODO(sunyunjia): Add default value for scrollIntoView() once
    // crbug.com/734599 is fixed.
    void scrollIntoView(optional (ScrollIntoViewOptions or boolean) arg);
    [ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options);
    [ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y);
    void scrollTo(optional ScrollToOptions options);
    void scrollTo(unrestricted double x, unrestricted double y);
    void scrollBy(optional ScrollToOptions options);
    void scrollBy(unrestricted double x, unrestricted double y);
    [Affects=Nothing] attribute unrestricted double scrollTop;
    [Affects=Nothing] attribute unrestricted double scrollLeft;
    [Affects=Nothing] readonly attribute long scrollWidth;
    [Affects=Nothing] readonly attribute long scrollHeight;
    [Affects=Nothing] readonly attribute long clientTop;
    [Affects=Nothing] readonly attribute long clientLeft;
    [Affects=Nothing] readonly attribute long clientWidth;
    [Affects=Nothing] readonly attribute long clientHeight;

    // Typed OM
    // https://drafts.css-houdini.org/css-typed-om/#inline-stylepropertymap-objects
    [SameObject, MeasureAs=CSSTypedOMStylePropertyMap] readonly attribute StylePropertyMap attributeStyleMap;

    // Non-standard API
    [MeasureAs=ElementScrollIntoViewIfNeeded] void scrollIntoViewIfNeeded(optional boolean centerIfNeeded);
    [RuntimeEnabled=ShadowDOMV0, RaisesException, DeprecateAs=ElementCreateShadowRoot] ShadowRoot createShadowRoot();
    [RuntimeEnabled=ShadowDOMV0] NodeList getDestinationInsertionPoints();

    // Experimental accessibility API
    [RuntimeEnabled=ComputedAccessibilityInfo] readonly attribute DOMString? computedRole;
    [RuntimeEnabled=ComputedAccessibilityInfo] readonly attribute DOMString? computedName;

    // Accessibility Object Model
    [RuntimeEnabled=AccessibilityObjectModel] readonly attribute AccessibleNode? accessibleNode;

    [RuntimeEnabled=InvisibleDOM, CEReactions, CustomElementCallbacks, Reflect, ReflectOnly=("static","invisible"), ReflectEmpty="invisible", ReflectInvalid="invisible"] attribute DOMString invisible;

    // Event handler attributes
    attribute EventHandler onbeforecopy;
    attribute EventHandler onbeforecut;
    attribute EventHandler onbeforepaste;
    attribute EventHandler onsearch;

    // Declarative display locking.
    [RuntimeEnabled=DisplayLocking, CEReactions, CustomElementCallbacks, Reflect] attribute DOMString renderSubtree;
    [RuntimeEnabled=DisplayLocking, CallWith=ScriptState] Promise<any> updateRendering();

    // CSS version of display locking.
    [RuntimeEnabled=CSSRenderSubtree] void resetSubtreeRendered();

    // Element Timing
    [Affects=Nothing, CEReactions, Reflect=elementtiming] attribute DOMString elementTiming;
};

Element includes ParentNode;
Element includes ChildNode;
Element includes NonDocumentTypeChildNode;