Update ANGLE
[WebKit-https.git] / Source / WebCore / page / DOMWindow.idl
1 /*
2  * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
3  * Copyright (C) 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 typedef USVString CSSOMString;
28
29 [
30     CheckSecurity,
31     CustomDefineOwnProperty,
32     CustomDeleteProperty,
33     CustomGetOwnPropertyNames,
34     CustomGetOwnPropertySlot,
35     CustomGetPrototype,
36     CustomHeapSnapshot,
37     CustomPreventExtensions,
38     CustomProxyToJSObject,
39     CustomPut,
40     CustomToStringName,
41     ExportMacro=WEBCORE_EXPORT,
42     ImplicitThis,
43     InterfaceName=Window,
44     IsImmutablePrototypeExoticObject,
45     IsImmutablePrototypeExoticObjectOnPrototype,
46     JSCustomMarkFunction,
47     JSCustomToNativeObject,
48     JSLegacyParent=JSDOMWindowBase,
49     LegacyUnenumerableNamedProperties,
50     PrimaryGlobal,
51 ] interface DOMWindow : EventTarget {
52     // The current browsing context.
53     [DoNotCheckSecurity, Unforgeable, CustomGetter] readonly attribute WindowProxy window;
54     [Replaceable, DoNotCheckSecurityOnGetter, CustomGetter] readonly attribute WindowProxy self;
55     [Unforgeable] readonly attribute Document document;
56     attribute DOMString name;
57     [DoNotCheckSecurity, PutForwards=href, Unforgeable] readonly attribute Location location;
58     readonly attribute History history;
59     [EnabledAtRuntime=CustomElements, ImplementedAs=ensureCustomElementRegistry] readonly attribute CustomElementRegistry customElements;
60     [Replaceable] readonly attribute BarProp locationbar;
61     [Replaceable] readonly attribute BarProp menubar;
62     [Replaceable] readonly attribute BarProp personalbar;
63     [Replaceable] readonly attribute BarProp scrollbars;
64     [Replaceable] readonly attribute BarProp statusbar;
65     [Replaceable] readonly attribute BarProp toolbar;
66     attribute DOMString status;
67     [DoNotCheckSecurity, CallWith=IncumbentDocument, ForwardDeclareInHeader] void close();
68     [DoNotCheckSecurity, ForwardDeclareInHeader] readonly attribute boolean closed;
69     void stop();
70     [DoNotCheckSecurity, CallWith=IncumbentWindow, ForwardDeclareInHeader] void focus();
71     [DoNotCheckSecurity, ForwardDeclareInHeader] void blur();
72
73     // Other browsing contexts.
74     [Replaceable, DoNotCheckSecurityOnGetter, CustomGetter] readonly attribute WindowProxy frames;
75     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;
76     [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute WindowProxy? top;
77     [DoNotCheckSecurityOnGetter, CustomSetter] attribute WindowProxy? opener;
78     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute WindowProxy? parent;
79     [CheckSecurityForNode] readonly attribute Element? frameElement;
80     [CallWith=ActiveWindow&FirstWindow, MayThrowException] WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", optional [TreatNullAs=EmptyString] DOMString features = "");
81
82     // The user agent.
83     readonly attribute Navigator navigator;
84     readonly attribute DOMApplicationCache applicationCache;
85
86     // User prompts.
87     void alert();
88     void alert(DOMString message);
89     boolean confirm(optional DOMString message = "");
90     DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = "");
91     void print();
92
93     long requestAnimationFrame(RequestAnimationFrameCallback callback); // FIXME: Should return an unsigned long.
94     void cancelAnimationFrame(long handle); // FIXME: handle should be an unsigned long.
95
96     [CallWith=ExecState&IncumbentWindow, DoNotCheckSecurity, ForwardDeclareInHeader, MayThrowException] void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []);
97
98     // Obsolete members, still part of the HTML specification (https://html.spec.whatwg.org/#Window-partial).
99     void captureEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
100     void releaseEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
101
102     // WebStorage (https://html.spec.whatwg.org/multipage/webstorage.html#the-sessionstorage-attribute).
103     readonly attribute Storage sessionStorage;
104
105     // WebStorage (https://html.spec.whatwg.org/multipage/webstorage.html#the-localstorage-attribute).
106     readonly attribute Storage localStorage;
107
108     // Extensions from the CSSOM specification (https://drafts.csswg.org/cssom/#extensions-to-the-window-interface).
109     [NewObject] CSSStyleDeclaration getComputedStyle(Element element, optional CSSOMString? pseudoElement = null);
110
111     // Extensions from the CSSOM-View specification (https://drafts.csswg.org/cssom-view/#extensions-to-the-window-interface).
112     [NewObject] MediaQueryList matchMedia(CSSOMString query);
113     [Replaceable] readonly attribute Screen screen; // FIXME: Should be [SameObject].
114
115     // Browsing context (CSSOM-View).
116     void moveTo(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
117     void moveBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
118     void resizeTo(optional unrestricted float width = NaN, optional unrestricted float height = NaN); // Parameters should be mandatory and of type long.
119     void resizeBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
120
121     // Viewport (CSSOM-View).
122     [Replaceable] readonly attribute long innerHeight;
123     [Replaceable] readonly attribute long innerWidth;
124
125     // Viewport scrolling (CSSOM-View).
126     [Replaceable] readonly attribute double scrollX;
127     [Replaceable, ImplementedAs=scrollX] readonly attribute double pageXOffset;
128     [Replaceable] readonly attribute double scrollY;
129     [Replaceable, ImplementedAs=scrollY] readonly attribute double pageYOffset;
130     [ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options);
131     [ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y);
132     void scrollTo(optional ScrollToOptions options);
133     void scrollTo(unrestricted double x, unrestricted double y);
134     void scrollBy(optional ScrollToOptions option);
135     void scrollBy(unrestricted double x, unrestricted double y);
136
137     // Visual Viewport (https://wicg.github.io/ViewportAPI/spec.html)
138     [EnabledBySetting=VisualViewportAPI, Replaceable] readonly attribute VisualViewport visualViewport; // FIXME: Should be [SameObject]. https://bugs.webkit.org/show_bug.cgi?id=163414
139
140     // Client (CSSOM-View).
141     [Replaceable] readonly attribute long screenX;
142     [Replaceable] readonly attribute long screenY;
143     [Replaceable] readonly attribute long outerWidth;
144     [Replaceable] readonly attribute long outerHeight;
145     [Replaceable] readonly attribute double devicePixelRatio;
146
147     // Extensions from the Selection API (https://www.w3.org/TR/selection-api/#extensions-to-window-interface).
148     DOMSelection? getSelection();
149
150     // Extensions in Compatibility specification (https://compat.spec.whatwg.org/#windoworientation-interface).
151     [Conditional=ORIENTATION_EVENTS] readonly attribute long orientation;
152
153     // Non standard.
154     [Replaceable, CustomGetter] readonly attribute Event event;
155     attribute DOMString defaultStatus;
156     [ImplementedAs=defaultStatus] attribute DOMString defaultstatus; // For compatibility with legacy content.
157     boolean find(optional DOMString string = "undefined", optional boolean caseSensitive = false, optional boolean backwards = false, optional boolean wrap = false, optional boolean wholeWord = false, optional boolean searchInFrames = false, optional boolean showDialog = false); // FIXME: Using "undefined" as default parameter value is wrong.
158     [Replaceable] readonly attribute  boolean offscreenBuffering;
159     [Replaceable] readonly attribute long screenLeft;
160     [Replaceable] readonly attribute long screenTop;
161     long webkitRequestAnimationFrame(RequestAnimationFrameCallback callback);
162     [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id);
163     [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(long id);
164
165     // Non standard but may get added (https://github.com/whatwg/html/issues/2379).
166     [Replaceable] readonly attribute Navigator clientInformation;
167
168     // FIXME: This was removed from the CSSOM View specification.
169     readonly attribute StyleMedia styleMedia;
170
171     // FIXME: We should probably deprecate this (https://bugs.webkit.org/show_bug.cgi?id=79653).
172     // Blink already deprecated it (https://bugs.chromium.org/p/chromium/issues/detail?id=437569).
173     CSSRuleList getMatchedCSSRules(optional Element? element = null, optional DOMString? pseudoElement = null);
174
175     // FIXME: This has been dropped from the HTML specification and by other browsers.
176     [Custom] any showModalDialog(DOMString url, optional any dialogArgs, optional DOMString featureArgs);
177
178     // FIXME: Blink has already dropped these (https://bugs.chromium.org/p/chromium/issues/detail?id=398352).
179     WebKitPoint webkitConvertPointFromPageToNode(optional Node? node = null, optional WebKitPoint? p = null);
180     WebKitPoint webkitConvertPointFromNodeToPage(optional Node? node = null, optional WebKitPoint? p = null);
181
182     // Internal operations, not exposed to the Web.
183     [MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen] NodeList collectMatchingElementsInFlatTree(Node scope, DOMString selectors);
184     [MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen] Element? matchingElementInFlatTree(Node scope, DOMString selectors);
185
186     // iOS Gesture API event handlers.
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     // Event handler from DeviceOrientation Event Specification (https://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion).
192     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondevicemotion; // FIXME: Should be enumerable.
193
194     // Event handler from DeviceOrientation Event Specification (https://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation)
195     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondeviceorientation; // FIXME: Should be enumerable.
196
197     // Non standard event handlers.
198     [NotEnumerable, ImplementedAs=onwebkitAnimationEnd] attribute EventHandler onwebkitanimationend;
199     [NotEnumerable, ImplementedAs=onwebkitAnimationIteration] attribute EventHandler onwebkitanimationiteration;
200     [NotEnumerable, ImplementedAs=onwebkitAnimationStart] attribute EventHandler onwebkitanimationstart;
201     [NotEnumerable, ImplementedAs=onwebkitTransitionEnd] attribute EventHandler onwebkittransitionend;
202 };
203
204 DOMWindow implements GlobalCrypto;
205 DOMWindow implements GlobalEventHandlers;
206 DOMWindow implements GlobalPerformance;
207 DOMWindow implements WindowEventHandlers;
208 DOMWindow implements WindowOrWorkerGlobalScope;