ff4d9575290b7643c7b99705d745ba9f2bbdba35
[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     CustomPreventExtensions,
37     CustomProxyToJSObject,
38     CustomPut,
39     CustomToStringName,
40     ExportMacro=WEBCORE_EXPORT,
41     ImplicitThis,
42     InterfaceName=Window,
43     IsImmutablePrototypeExoticObject,
44     IsImmutablePrototypeExoticObjectOnPrototype,
45     JSCustomMarkFunction,
46     JSCustomToNativeObject,
47     JSLegacyParent=JSDOMWindowBase,
48     LegacyUnenumerableNamedProperties,
49     PrimaryGlobal,
50 ] interface DOMWindow : EventTarget {
51     // The current browsing context.
52     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, Unforgeable, ImplementedAs=self] readonly attribute WindowProxy window;
53     [Replaceable, DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow] readonly attribute WindowProxy self;
54     [Unforgeable] readonly attribute Document document;
55     attribute DOMString name;
56     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, PutForwards=href, Unforgeable] readonly attribute Location? location; // FIXME: Should not be nullable.
57     readonly attribute History history;
58     [EnabledAtRuntime=CustomElements, ImplementedAs=ensureCustomElementRegistry] readonly attribute CustomElementRegistry customElements;
59     [Replaceable] readonly attribute BarProp locationbar;
60     [Replaceable] readonly attribute BarProp menubar;
61     [Replaceable] readonly attribute BarProp personalbar;
62     [Replaceable] readonly attribute BarProp scrollbars;
63     [Replaceable] readonly attribute BarProp statusbar;
64     [Replaceable] readonly attribute BarProp toolbar;
65     attribute DOMString status;
66     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, CallWith=IncumbentDocument, ForwardDeclareInHeader] void close();
67     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, ForwardDeclareInHeader] readonly attribute boolean closed;
68     void stop();
69     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, CallWith=IncumbentWindow, ForwardDeclareInHeader] void focus();
70     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, ForwardDeclareInHeader] void blur();
71
72     // Other browsing contexts.
73     [Replaceable, DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, ImplementedAs=self] readonly attribute WindowProxy frames;
74     [Replaceable, DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow] readonly attribute unsigned long length;
75     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, Unforgeable] readonly attribute WindowProxy? top;
76     [DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow, CustomSetter] attribute WindowProxy? opener;
77     [Replaceable, DoNotCheckSecurityIf=CrossOriginWindowPolicyAllow] readonly attribute WindowProxy? parent;
78     [CheckSecurityForNode] readonly attribute Element? frameElement;
79     [CallWith=ActiveWindow&FirstWindow] WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", optional [TreatNullAs=EmptyString] DOMString features = "");
80
81     // The user agent.
82     readonly attribute Navigator navigator;
83     readonly attribute DOMApplicationCache applicationCache;
84
85     // User prompts.
86     void alert();
87     void alert(DOMString message);
88     boolean confirm(optional DOMString message = "");
89     DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = "");
90     void print();
91
92     [Custom] void queueMicrotask(VoidCallback callback);
93
94     long requestAnimationFrame(RequestAnimationFrameCallback callback); // FIXME: Should return an unsigned long.
95     void cancelAnimationFrame(long handle); // FIXME: handle should be an unsigned long.
96
97     [CallWith=ScriptState&IncumbentWindow, DoNotCheckSecurityIf=CrossOriginWindowPolicyAllowPostMessage, ForwardDeclareInHeader, MayThrowException] void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []);
98
99     // Obsolete members, still part of the HTML specification (https://html.spec.whatwg.org/#Window-partial).
100     void captureEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
101     void releaseEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
102
103     // WebStorage (https://html.spec.whatwg.org/multipage/webstorage.html#the-sessionstorage-attribute).
104     readonly attribute Storage sessionStorage;
105
106     // WebStorage (https://html.spec.whatwg.org/multipage/webstorage.html#the-localstorage-attribute).
107     readonly attribute Storage localStorage;
108
109     // Extensions from the CSSOM specification (https://drafts.csswg.org/cssom/#extensions-to-the-window-interface).
110     [NewObject] CSSStyleDeclaration getComputedStyle(Element element, optional CSSOMString? pseudoElement = null);
111
112     // Extensions from the CSSOM-View specification (https://drafts.csswg.org/cssom-view/#extensions-to-the-window-interface).
113     [NewObject] MediaQueryList matchMedia(CSSOMString query);
114     [Replaceable] readonly attribute Screen screen; // FIXME: Should be [SameObject].
115
116     // Browsing context (CSSOM-View).
117     void moveTo(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
118     void moveBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
119     void resizeTo(optional unrestricted float width = NaN, optional unrestricted float height = NaN); // Parameters should be mandatory and of type long.
120     void resizeBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: Parameters should be mandatory and of type long.
121
122     // Viewport (CSSOM-View).
123     [Replaceable] readonly attribute long innerHeight;
124     [Replaceable] readonly attribute long innerWidth;
125
126     // Viewport scrolling (CSSOM-View).
127     [Replaceable] readonly attribute double scrollX;
128     [Replaceable, ImplementedAs=scrollX] readonly attribute double pageXOffset;
129     [Replaceable] readonly attribute double scrollY;
130     [Replaceable, ImplementedAs=scrollY] readonly attribute double pageYOffset;
131     [ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options);
132     [ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y);
133     void scrollTo(optional ScrollToOptions options);
134     void scrollTo(unrestricted double x, unrestricted double y);
135     void scrollBy(optional ScrollToOptions option);
136     void scrollBy(unrestricted double x, unrestricted double y);
137
138     // Visual Viewport (https://wicg.github.io/ViewportAPI/spec.html)
139     [EnabledBySetting=VisualViewportAPI, Replaceable] readonly attribute VisualViewport visualViewport; // FIXME: Should be [SameObject]. https://bugs.webkit.org/show_bug.cgi?id=163414
140
141     // Client (CSSOM-View).
142     [Replaceable] readonly attribute long screenX;
143     [Replaceable] readonly attribute long screenY;
144     [Replaceable] readonly attribute long outerWidth;
145     [Replaceable] readonly attribute long outerHeight;
146     [Replaceable] readonly attribute double devicePixelRatio;
147
148     // Extensions from the Selection API (https://www.w3.org/TR/selection-api/#extensions-to-window-interface).
149     DOMSelection? getSelection();
150
151     // Extensions in Compatibility specification (https://compat.spec.whatwg.org/#windoworientation-interface).
152     [Conditional=ORIENTATION_EVENTS] readonly attribute long orientation;
153
154     // Non standard.
155     [Replaceable, CustomGetter] readonly attribute Event event;
156     attribute DOMString defaultStatus;
157     [ImplementedAs=defaultStatus] attribute DOMString defaultstatus; // For compatibility with legacy content.
158     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.
159     [Replaceable] readonly attribute  boolean offscreenBuffering;
160     [Replaceable] readonly attribute long screenLeft;
161     [Replaceable] readonly attribute long screenTop;
162     long webkitRequestAnimationFrame(RequestAnimationFrameCallback callback);
163     [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id);
164     [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(long id);
165
166     // Non standard but may get added (https://github.com/whatwg/html/issues/2379).
167     [Replaceable] readonly attribute Navigator clientInformation;
168
169     // FIXME: This was removed from the CSSOM View specification.
170     readonly attribute StyleMedia styleMedia;
171
172     // FIXME: We should probably deprecate this (https://bugs.webkit.org/show_bug.cgi?id=79653).
173     // Blink already deprecated it (https://bugs.chromium.org/p/chromium/issues/detail?id=437569).
174     CSSRuleList getMatchedCSSRules(optional Element? element = null, optional DOMString? pseudoElement = null);
175
176     // FIXME: This has been dropped from the HTML specification and by other browsers.
177     [Custom] any showModalDialog(DOMString url, optional any dialogArgs, optional DOMString featureArgs);
178
179     // FIXME: Blink has already dropped these (https://bugs.chromium.org/p/chromium/issues/detail?id=398352).
180     WebKitPoint webkitConvertPointFromPageToNode(optional Node? node = null, optional WebKitPoint? p = null);
181     WebKitPoint webkitConvertPointFromNodeToPage(optional Node? node = null, optional WebKitPoint? p = null);
182
183     // Internal operations, not exposed to the Web.
184     [MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen] NodeList collectMatchingElementsInFlatTree(Node scope, DOMString selectors);
185     [MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen] Element? matchingElementInFlatTree(Node scope, DOMString selectors);
186
187     // iOS Gesture API event handlers.
188     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
189     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
190     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
191
192     // Event handler from DeviceOrientation Event Specification (https://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion).
193     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondevicemotion; // FIXME: Should be enumerable.
194
195     // Event handler from DeviceOrientation Event Specification (https://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation)
196     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondeviceorientation; // FIXME: Should be enumerable.
197
198     // Non standard event handlers.
199     [NotEnumerable, ImplementedAs=onwebkitAnimationEnd] attribute EventHandler onwebkitanimationend;
200     [NotEnumerable, ImplementedAs=onwebkitAnimationIteration] attribute EventHandler onwebkitanimationiteration;
201     [NotEnumerable, ImplementedAs=onwebkitAnimationStart] attribute EventHandler onwebkitanimationstart;
202     [NotEnumerable, ImplementedAs=onwebkitTransitionEnd] attribute EventHandler onwebkittransitionend;
203 };
204
205 DOMWindow implements GlobalCrypto;
206 DOMWindow implements GlobalEventHandlers;
207 DOMWindow implements GlobalPerformance;
208 DOMWindow implements WindowEventHandlers;
209 DOMWindow implements WindowOrWorkerGlobalScope;