2718580af964514c1cb46109b5d6f04889c483be
[WebKit-https.git] / Source / WebCore / page / DOMWindow.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009, 2013 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 [
28     CheckSecurity,
29     JSCustomDefineOwnProperty,
30     CustomDeleteProperty,
31     CustomGetOwnPropertySlot,
32     CustomEnumerateProperty,
33     CustomProxyToJSObject,
34     JSCustomMarkFunction,
35     JSCustomToNativeObject,
36     CustomPutFunction,
37     EventTarget,
38     JSGenerateToNativeObject,
39     ReplaceableConstructor,
40     JSLegacyParent=JSDOMWindowBase,
41     InterfaceName=Window,
42 ] interface DOMWindow {
43     // DOM Level 0
44     [Replaceable] readonly attribute Screen screen;
45     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute History history;
46     [Replaceable] readonly attribute BarProp locationbar;
47     [Replaceable] readonly attribute BarProp menubar;
48     [Replaceable] readonly attribute BarProp personalbar;
49     [Replaceable] readonly attribute BarProp scrollbars;
50     [Replaceable] readonly attribute BarProp statusbar;
51     [Replaceable] readonly attribute BarProp toolbar;
52     [Replaceable] readonly attribute Navigator navigator;
53     [Replaceable] readonly attribute Navigator clientInformation;
54     readonly attribute Crypto crypto;
55     [DoNotCheckSecurity, CustomSetter, Unforgeable] attribute Location location;
56     [Replaceable, CustomGetter] readonly attribute Event event;
57
58     DOMSelection getSelection();
59
60     [CheckSecurityForNode] readonly attribute Element frameElement;
61
62     [DoNotCheckSecurity, CallWith=ScriptExecutionContext, ForwardDeclareInHeader] void focus();
63     [DoNotCheckSecurity, ForwardDeclareInHeader] void blur();
64     [DoNotCheckSecurity, CallWith=ScriptExecutionContext, ForwardDeclareInHeader] void close();
65
66     void print();
67     void stop();
68
69     [Custom] DOMWindow open(DOMString url,
70                             DOMString name,
71                             optional DOMString options);
72
73     [Custom] any showModalDialog(DOMString url,
74                                        optional any dialogArgs,
75                                        optional DOMString featureArgs);
76
77     void alert([Default=Undefined] optional DOMString message);
78     boolean confirm([Default=Undefined] optional DOMString message);
79     [TreatReturnedNullStringAs=Null] DOMString prompt([Default=Undefined] optional DOMString message,
80                                                 [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString defaultValue);
81
82     boolean find([Default=Undefined] optional DOMString string,
83                  [Default=Undefined] optional boolean caseSensitive,
84                  [Default=Undefined] optional boolean backwards,
85                  [Default=Undefined] optional boolean wrap,
86                  [Default=Undefined] optional boolean wholeWord,
87                  [Default=Undefined] optional boolean searchInFrames,
88                  [Default=Undefined] optional boolean showDialog);
89
90     [Replaceable] readonly attribute  boolean offscreenBuffering;
91
92     [Replaceable] readonly attribute long outerHeight;
93     [Replaceable] readonly attribute long outerWidth;
94     [Replaceable] readonly attribute long innerHeight;
95     [Replaceable] readonly attribute long innerWidth;
96     [Replaceable] readonly attribute long screenX;
97     [Replaceable] readonly attribute long screenY;
98     [Replaceable] readonly attribute long screenLeft;
99     [Replaceable] readonly attribute long screenTop;
100     [Replaceable] readonly attribute long scrollX;
101     [Replaceable] readonly attribute long scrollY;
102     readonly attribute long pageXOffset;
103     readonly attribute long pageYOffset;
104
105     void scrollBy([Default=Undefined] optional long x, [Default=Undefined] optional long y);
106     void scrollTo([Default=Undefined] optional long x, [Default=Undefined] optional long y);
107     void scroll([Default=Undefined] optional long x, [Default=Undefined] optional long y);
108     void moveBy([Default=Undefined] optional unrestricted float x, [Default=Undefined] optional unrestricted float y); // FIXME: this should take longs not floats.
109     void moveTo([Default=Undefined] optional unrestricted float x, [Default=Undefined] optional unrestricted float y); // FIXME: this should take longs not floats.
110     void resizeBy([Default=Undefined] optional unrestricted float x, [Default=Undefined] optional unrestricted float y); // FIXME: this should take longs not floats.
111     void resizeTo([Default=Undefined] optional unrestricted float width, [Default=Undefined] optional unrestricted float height); // FIXME: this should take longs not floats.
112
113     [DoNotCheckSecurity, ForwardDeclareInHeader] readonly attribute boolean closed;
114
115     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;
116
117     attribute DOMString name;
118
119     attribute DOMString status;
120     attribute DOMString defaultStatus;
121 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
122     // This attribute is an alias of defaultStatus and is necessary for legacy uses.
123     [ImplementedAs=defaultStatus] attribute DOMString defaultstatus;
124 #endif
125
126     // Self referential attributes
127     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow self;
128     [DoNotCheckSecurity, Unforgeable] readonly attribute DOMWindow window;
129     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute  DOMWindow frames;
130
131     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow opener;
132     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow parent;
133     [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute DOMWindow top;
134
135     // DOM Level 2 AbstractView Interface
136     [Unforgeable] readonly attribute Document document;
137
138     // CSSOM View Module
139     MediaQueryList matchMedia(DOMString query);
140
141     // styleMedia has been removed from the CSSOM View specification.
142     readonly attribute StyleMedia styleMedia;
143
144     // DOM Level 2 Style Interface
145     CSSStyleDeclaration getComputedStyle([Default=Undefined] optional Element element,
146                                                               [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoElement);
147
148     // WebKit extensions
149 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
150     CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element,
151                                    [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoElement);
152 #endif
153
154     [Replaceable] readonly attribute unrestricted double devicePixelRatio;
155     
156     WebKitPoint webkitConvertPointFromPageToNode([Default=Undefined] optional Node node, 
157                                                  [Default=Undefined] optional WebKitPoint p);
158     WebKitPoint webkitConvertPointFromNodeToPage([Default=Undefined] optional Node node, 
159                                                  [Default=Undefined] optional WebKitPoint p);
160
161     readonly attribute DOMApplicationCache applicationCache;
162
163     [GetterRaisesException] readonly attribute Storage sessionStorage;
164     [GetterRaisesException] readonly attribute Storage localStorage;
165
166     // This is the interface orientation in degrees. Some examples are:
167     //  0 is straight up; -90 is when the device is rotated 90 clockwise;
168     //  90 is when rotated counter clockwise.
169     [Conditional=ORIENTATION_EVENTS] readonly attribute long orientation;
170
171     // cross-document messaging
172 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
173     [DoNotCheckSecurity, Custom, RaisesException, ForwardDeclareInHeader] void postMessage(SerializedScriptValue message, DOMString targetOrigin, optional Array messagePorts);
174 #else
175     // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
176     [DoNotCheckSecurity, Custom, RaisesException, ForwardDeclareInHeader] void postMessage(SerializedScriptValue message, optional MessagePort messagePort, DOMString targetOrigin);
177 #endif
178
179     [Conditional=WEB_TIMING, Replaceable] readonly attribute Performance performance;
180
181     [Conditional=REQUEST_ANIMATION_FRAME] long requestAnimationFrame(RequestAnimationFrameCallback callback);
182     [Conditional=REQUEST_ANIMATION_FRAME] void cancelAnimationFrame(long id);
183     [Conditional=REQUEST_ANIMATION_FRAME] long webkitRequestAnimationFrame(RequestAnimationFrameCallback callback);
184     [Conditional=REQUEST_ANIMATION_FRAME, ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id);
185     [Conditional=REQUEST_ANIMATION_FRAME, ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
186
187     [Replaceable] readonly attribute DOMWindowCSS CSS;
188
189     // EventTarget interface
190     [Custom] void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
191     [Custom] void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
192     [RaisesException] boolean dispatchEvent(Event event);
193
194     void captureEvents(/*in long eventFlags*/);
195     void releaseEvents(/*in long eventFlags*/);
196
197 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
198     // Additional constructors.
199     [CustomGetter, CustomConstructor] attribute HTMLImageElementNamedConstructor Image; // Usable with new operator
200
201     [Conditional=IOS_TOUCH_EVENTS, CustomGetter] attribute TouchConstructor Touch; // Usable with the new operator
202     [Conditional=IOS_TOUCH_EVENTS, CustomGetter] attribute TouchListConstructor TouchList; // Usable with the new operator
203
204     attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
205     attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
206     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBCursorConstructor webkitIDBCursor;
207     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBDatabaseConstructor webkitIDBDatabase;
208     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBFactoryConstructor webkitIDBFactory;
209     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBIndexConstructor webkitIDBIndex;
210     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBKeyRangeConstructor webkitIDBKeyRange;
211     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBObjectStoreConstructor webkitIDBObjectStore;
212     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBRequestConstructor webkitIDBRequest;
213     [Conditional=INDEXED_DATABASE, EnabledAtRuntime=IndexedDB] attribute IDBTransactionConstructor webkitIDBTransaction;
214 #endif // defined(LANGUAGE_JAVASCRIPT)
215
216
217     // Event Handlers
218
219     // FIXME: This should be in GlobalEventHandlers.idl according to HTML5 - https://html.spec.whatwg.org/multipage/webappapis.html#globaleventhandlers
220     [NotEnumerable] attribute EventHandler onresize;
221
222     // Unique to Element and DOMWindow
223     // FIXME: Should these be exposed on Document as well (and therefore moved to GlobalEventHandlers.idl)?
224     [NotEnumerable] attribute EventHandler onanimationend;
225     [NotEnumerable] attribute EventHandler onanimationiteration;
226     [NotEnumerable] attribute EventHandler onanimationstart;
227     [NotEnumerable] attribute EventHandler ontransitionend;
228     [NotEnumerable] attribute EventHandler onwebkitanimationend;
229     [NotEnumerable] attribute EventHandler onwebkitanimationiteration;
230     [NotEnumerable] attribute EventHandler onwebkitanimationstart;
231     [NotEnumerable] attribute EventHandler onwebkittransitionend;
232     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
233     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
234     [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
235
236     // Unique to DOMWindow
237     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondevicemotion;
238     [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondeviceorientation;
239     [NotEnumerable, Conditional=PROXIMITY_EVENTS] attribute EventHandler onwebkitdeviceproximity;
240 };
241
242 DOMWindow implements GlobalEventHandlers;
243 DOMWindow implements WindowBase64;
244 DOMWindow implements WindowEventHandlers;
245 DOMWindow implements WindowTimers;