|
1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
|
4 * You can obtain one at http://mozilla.org/MPL/2.0/. |
|
5 * |
|
6 * The origin of this IDL file is: |
|
7 * http://www.whatwg.org/specs/web-apps/current-work/ |
|
8 * https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html |
|
9 * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html |
|
10 * http://dev.w3.org/csswg/cssom/ |
|
11 * http://dev.w3.org/csswg/cssom-view/ |
|
12 * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html |
|
13 * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html |
|
14 * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html |
|
15 * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html |
|
16 */ |
|
17 |
|
18 interface ApplicationCache; |
|
19 interface IID; |
|
20 interface MozFrameRequestCallback; |
|
21 interface nsIBrowserDOMWindow; |
|
22 interface nsIMessageBroadcaster; |
|
23 interface nsIDOMCrypto; |
|
24 typedef any Transferable; |
|
25 |
|
26 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
27 [Global, NeedNewResolve] |
|
28 /*sealed*/ interface Window : EventTarget { |
|
29 // the current browsing context |
|
30 [Unforgeable, Throws, |
|
31 CrossOriginReadable] readonly attribute WindowProxy window; |
|
32 [Replaceable, Throws, |
|
33 CrossOriginReadable] readonly attribute WindowProxy self; |
|
34 [Unforgeable, StoreInSlot, Pure, Func="nsGlobalWindow::WindowOnWebIDL"] readonly attribute Document? document; |
|
35 [Throws] attribute DOMString name; |
|
36 [PutForwards=href, Unforgeable, Throws, |
|
37 CrossOriginReadable, CrossOriginWritable] readonly attribute Location? location; |
|
38 [Throws] readonly attribute History history; |
|
39 [Replaceable, Throws] readonly attribute BarProp locationbar; |
|
40 [Replaceable, Throws] readonly attribute BarProp menubar; |
|
41 [Replaceable, Throws] readonly attribute BarProp personalbar; |
|
42 [Replaceable, Throws] readonly attribute BarProp scrollbars; |
|
43 [Replaceable, Throws] readonly attribute BarProp statusbar; |
|
44 [Replaceable, Throws] readonly attribute BarProp toolbar; |
|
45 [Throws] attribute DOMString status; |
|
46 [Throws, CrossOriginCallable] void close(); |
|
47 [Throws, CrossOriginReadable] readonly attribute boolean closed; |
|
48 [Throws] void stop(); |
|
49 [Throws, CrossOriginCallable] void focus(); |
|
50 [Throws, CrossOriginCallable] void blur(); |
|
51 |
|
52 // other browsing contexts |
|
53 [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy frames; |
|
54 [Replaceable, CrossOriginReadable] readonly attribute unsigned long length; |
|
55 [Unforgeable, Throws, CrossOriginReadable] readonly attribute WindowProxy top; |
|
56 [Throws, CrossOriginReadable] attribute any opener; |
|
57 //[Throws] readonly attribute WindowProxy parent; |
|
58 [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy? parent; |
|
59 [Throws] readonly attribute Element? frameElement; |
|
60 //[Throws] WindowProxy open(optional DOMString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "", optional boolean replace = false); |
|
61 [Throws] WindowProxy? open(optional DOMString url = "", optional DOMString target = "", [TreatNullAs=EmptyString] optional DOMString features = ""); |
|
62 // We think the indexed getter is a bug in the spec, it actually needs to live |
|
63 // on the WindowProxy |
|
64 //getter WindowProxy (unsigned long index); |
|
65 //getter object (DOMString name); |
|
66 |
|
67 // the user agent |
|
68 [Throws] readonly attribute Navigator navigator; |
|
69 #ifdef HAVE_SIDEBAR |
|
70 [Replaceable, Throws] readonly attribute External external; |
|
71 #endif |
|
72 [Throws] readonly attribute ApplicationCache applicationCache; |
|
73 |
|
74 // user prompts |
|
75 [Throws] void alert(optional DOMString message = ""); |
|
76 [Throws] boolean confirm(optional DOMString message = ""); |
|
77 [Throws] DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); |
|
78 [Throws] void print(); |
|
79 //[Throws] any showModalDialog(DOMString url, optional any argument); |
|
80 [Throws] any showModalDialog(DOMString url, optional any argument, optional DOMString options = ""); |
|
81 |
|
82 [Throws, CrossOriginCallable] void postMessage(any message, DOMString targetOrigin, optional sequence<Transferable> transfer); |
|
83 |
|
84 // also has obsolete members |
|
85 }; |
|
86 Window implements GlobalEventHandlers; |
|
87 Window implements WindowEventHandlers; |
|
88 |
|
89 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
90 [NoInterfaceObject] |
|
91 interface WindowTimers { |
|
92 [Throws] long setTimeout(Function handler, optional long timeout = 0, any... arguments); |
|
93 [Throws] long setTimeout(DOMString handler, optional long timeout = 0, any... unused); |
|
94 [Throws] void clearTimeout(optional long handle = 0); |
|
95 [Throws] long setInterval(Function handler, optional long timeout, any... arguments); |
|
96 [Throws] long setInterval(DOMString handler, optional long timeout, any... unused); |
|
97 [Throws] void clearInterval(optional long handle = 0); |
|
98 }; |
|
99 Window implements WindowTimers; |
|
100 |
|
101 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
102 [NoInterfaceObject] |
|
103 interface WindowBase64 { |
|
104 [Throws] DOMString btoa(DOMString btoa); |
|
105 [Throws] DOMString atob(DOMString atob); |
|
106 }; |
|
107 Window implements WindowBase64; |
|
108 |
|
109 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
110 [NoInterfaceObject] |
|
111 interface WindowSessionStorage { |
|
112 //[Throws] readonly attribute Storage sessionStorage; |
|
113 [Throws] readonly attribute Storage? sessionStorage; |
|
114 }; |
|
115 Window implements WindowSessionStorage; |
|
116 |
|
117 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
118 [NoInterfaceObject] |
|
119 interface WindowLocalStorage { |
|
120 [Throws] readonly attribute Storage? localStorage; |
|
121 }; |
|
122 Window implements WindowLocalStorage; |
|
123 |
|
124 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
125 partial interface Window { |
|
126 void captureEvents(); |
|
127 void releaseEvents(); |
|
128 }; |
|
129 |
|
130 // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html |
|
131 partial interface Window { |
|
132 //[Throws] Selection getSelection(); |
|
133 [Throws] Selection? getSelection(); |
|
134 }; |
|
135 |
|
136 // https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html |
|
137 Window implements IDBEnvironment; |
|
138 |
|
139 // http://dev.w3.org/csswg/cssom/ |
|
140 partial interface Window { |
|
141 //[NewObject, Throws] CSSStyleDeclaration getComputedStyle(Element elt, optional DOMString pseudoElt = ""); |
|
142 [NewObject, Throws] CSSStyleDeclaration? getComputedStyle(Element elt, optional DOMString pseudoElt = ""); |
|
143 }; |
|
144 |
|
145 // http://dev.w3.org/csswg/cssom-view/ |
|
146 enum ScrollBehavior { "auto", "instant", "smooth" }; |
|
147 |
|
148 dictionary ScrollOptions { |
|
149 ScrollBehavior behavior = "auto"; |
|
150 }; |
|
151 |
|
152 partial interface Window { |
|
153 //[Throws,NewObject] MediaQueryList matchMedia(DOMString query); |
|
154 [Throws,NewObject] MediaQueryList? matchMedia(DOMString query); |
|
155 //[SameObject] |
|
156 [Throws] readonly attribute Screen screen; |
|
157 |
|
158 // browsing context |
|
159 //[Throws] void moveTo(double x, double y); |
|
160 //[Throws] void moveBy(double x, double y); |
|
161 //[Throws] void resizeTo(double x, double y); |
|
162 //[Throws] void resizeBy(double x, double y); |
|
163 [Throws] void moveTo(long x, long y); |
|
164 [Throws] void moveBy(long x, long y); |
|
165 [Throws] void resizeTo(long x, long y); |
|
166 [Throws] void resizeBy(long x, long y); |
|
167 |
|
168 // viewport |
|
169 //[Throws] readonly attribute double innerWidth; |
|
170 //[Throws] readonly attribute double innerHeight; |
|
171 [Throws] attribute long innerWidth; |
|
172 [Throws] attribute long innerHeight; |
|
173 |
|
174 // viewport scrolling |
|
175 //[Throws] readonly attribute double scrollX; |
|
176 //[Throws] readonly attribute double pageXOffset; |
|
177 //[Throws] readonly attribute double scrollY; |
|
178 //[Throws] readonly attribute double pageYOffset; |
|
179 //void scroll(double x, double y, optional ScrollOptions options); |
|
180 //void scrollTo(double x, double y, optional ScrollOptions options); |
|
181 //void scrollBy(double x, double y, optional ScrollOptions options); |
|
182 [Replaceable, Throws] readonly attribute long scrollX; |
|
183 [Throws] readonly attribute long pageXOffset; |
|
184 [Replaceable, Throws] readonly attribute long scrollY; |
|
185 [Throws] readonly attribute long pageYOffset; |
|
186 void scroll(long x, long y); |
|
187 void scrollTo(long x, long y); |
|
188 void scrollBy(long x, long y); |
|
189 |
|
190 // client |
|
191 //[Throws] readonly attribute double screenX; |
|
192 //[Throws] readonly attribute double screenY; |
|
193 //[Throws] readonly attribute double outerWidth; |
|
194 //[Throws] readonly attribute double outerHeight; |
|
195 [Throws] attribute long screenX; |
|
196 [Throws] attribute long screenY; |
|
197 [Throws] attribute long outerWidth; |
|
198 [Throws] attribute long outerHeight; |
|
199 }; |
|
200 |
|
201 // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html |
|
202 partial interface Window { |
|
203 [Throws] long requestAnimationFrame(FrameRequestCallback callback); |
|
204 [Throws] void cancelAnimationFrame(long handle); |
|
205 }; |
|
206 callback FrameRequestCallback = void (DOMHighResTimeStamp time); |
|
207 |
|
208 // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html |
|
209 partial interface Window { |
|
210 [Replaceable, Throws] readonly attribute Performance? performance; |
|
211 }; |
|
212 |
|
213 // https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html |
|
214 partial interface Window { |
|
215 //[Throws] readonly attribute Crypto crypto; |
|
216 [Throws] readonly attribute nsIDOMCrypto crypto; |
|
217 }; |
|
218 |
|
219 #ifdef MOZ_WEBSPEECH |
|
220 // http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html |
|
221 [NoInterfaceObject] |
|
222 interface SpeechSynthesisGetter { |
|
223 [Throws, Pref="media.webspeech.synth.enabled"] readonly attribute SpeechSynthesis speechSynthesis; |
|
224 }; |
|
225 |
|
226 Window implements SpeechSynthesisGetter; |
|
227 #endif |
|
228 |
|
229 // http://www.whatwg.org/specs/web-apps/current-work/ |
|
230 [NoInterfaceObject] |
|
231 interface WindowModal { |
|
232 [Throws, Func="nsGlobalWindow::IsModalContentWindow"] readonly attribute any dialogArguments; |
|
233 [Throws, Func="nsGlobalWindow::IsModalContentWindow"] attribute any returnValue; |
|
234 }; |
|
235 Window implements WindowModal; |
|
236 |
|
237 // Mozilla-specific stuff |
|
238 partial interface Window { |
|
239 //[NewObject, Throws] CSSStyleDeclaration getDefaultComputedStyle(Element elt, optional DOMString pseudoElt = ""); |
|
240 [NewObject, Throws] CSSStyleDeclaration? getDefaultComputedStyle(Element elt, optional DOMString pseudoElt = ""); |
|
241 |
|
242 [Throws] long mozRequestAnimationFrame(MozFrameRequestCallback aCallback); |
|
243 |
|
244 /** |
|
245 * Cancel a refresh callback. |
|
246 */ |
|
247 [Throws] void mozCancelAnimationFrame(long aHandle); |
|
248 // Backwards-compat shim for now to make Google maps work |
|
249 [Throws] void mozCancelRequestAnimationFrame(long aHandle); |
|
250 |
|
251 /** |
|
252 * The current animation start time in milliseconds since the epoch. |
|
253 */ |
|
254 [Throws] readonly attribute long long mozAnimationStartTime; |
|
255 |
|
256 // Mozilla extensions |
|
257 /** |
|
258 * Method for scrolling this window by a number of lines. |
|
259 */ |
|
260 void scrollByLines(long numLines); |
|
261 |
|
262 /** |
|
263 * Method for scrolling this window by a number of pages. |
|
264 */ |
|
265 void scrollByPages(long numPages); |
|
266 |
|
267 /** |
|
268 * Method for sizing this window to the content in the window. |
|
269 */ |
|
270 [Throws] void sizeToContent(); |
|
271 |
|
272 // XXX Shouldn't this be in nsIDOMChromeWindow? |
|
273 [ChromeOnly, Replaceable, Throws] readonly attribute MozControllers controllers; |
|
274 |
|
275 [Throws] readonly attribute float mozInnerScreenX; |
|
276 [Throws] readonly attribute float mozInnerScreenY; |
|
277 [Throws] readonly attribute float devicePixelRatio; |
|
278 |
|
279 /* The maximum offset that the window can be scrolled to |
|
280 (i.e., the document width/height minus the scrollport width/height) */ |
|
281 [Replaceable, Throws] readonly attribute long scrollMaxX; |
|
282 [Replaceable, Throws] readonly attribute long scrollMaxY; |
|
283 |
|
284 [Throws] attribute boolean fullScreen; |
|
285 |
|
286 [Throws, ChromeOnly] void back(); |
|
287 [Throws, ChromeOnly] void forward(); |
|
288 [Throws, ChromeOnly] void home(); |
|
289 |
|
290 // XXX Should this be in nsIDOMChromeWindow? |
|
291 void updateCommands(DOMString action); |
|
292 |
|
293 /* Find in page. |
|
294 * @param str: the search pattern |
|
295 * @param caseSensitive: is the search caseSensitive |
|
296 * @param backwards: should we search backwards |
|
297 * @param wrapAround: should we wrap the search |
|
298 * @param wholeWord: should we search only for whole words |
|
299 * @param searchInFrames: should we search through all frames |
|
300 * @param showDialog: should we show the Find dialog |
|
301 */ |
|
302 [Throws] boolean find(optional DOMString str = "", |
|
303 optional boolean caseSensitive = false, |
|
304 optional boolean backwards = false, |
|
305 optional boolean wrapAround = false, |
|
306 optional boolean wholeWord = false, |
|
307 optional boolean searchInFrames = false, |
|
308 optional boolean showDialog = false); |
|
309 |
|
310 /** |
|
311 * Returns the number of times this document for this window has |
|
312 * been painted to the screen. |
|
313 */ |
|
314 [Throws] readonly attribute unsigned long long mozPaintCount; |
|
315 |
|
316 [Pure] |
|
317 attribute EventHandler onwheel; |
|
318 |
|
319 attribute EventHandler ondevicemotion; |
|
320 attribute EventHandler ondeviceorientation; |
|
321 attribute EventHandler ondeviceproximity; |
|
322 attribute EventHandler onuserproximity; |
|
323 attribute EventHandler ondevicelight; |
|
324 |
|
325 #ifdef MOZ_B2G |
|
326 attribute EventHandler onmoztimechange; |
|
327 attribute EventHandler onmoznetworkupload; |
|
328 attribute EventHandler onmoznetworkdownload; |
|
329 #endif |
|
330 |
|
331 void dump(DOMString str); |
|
332 |
|
333 /** |
|
334 * This method is here for backwards compatibility with 4.x only, |
|
335 * its implementation is a no-op |
|
336 */ |
|
337 void setResizable(boolean resizable); |
|
338 |
|
339 /** |
|
340 * This is the scriptable version of |
|
341 * nsIDOMWindow::openDialog() that takes 3 optional |
|
342 * arguments, plus any additional arguments are passed on as |
|
343 * arguments on the dialog's window object (window.arguments). |
|
344 */ |
|
345 [Throws, ChromeOnly] WindowProxy? openDialog(optional DOMString url = "", |
|
346 optional DOMString name = "", |
|
347 optional DOMString options = "", |
|
348 any... extraArguments); |
|
349 |
|
350 [Replaceable, Throws] readonly attribute object? content; |
|
351 |
|
352 [ChromeOnly, Throws] readonly attribute object? __content; |
|
353 |
|
354 [Throws, ChromeOnly] any getInterface(IID iid); |
|
355 }; |
|
356 |
|
357 Window implements TouchEventHandlers; |
|
358 |
|
359 Window implements OnErrorEventHandlerForWindow; |
|
360 |
|
361 // ConsoleAPI |
|
362 partial interface Window { |
|
363 [Replaceable, GetterThrows] |
|
364 readonly attribute Console console; |
|
365 }; |
|
366 |
|
367 #ifdef HAVE_SIDEBAR |
|
368 // Mozilla extension |
|
369 partial interface Window { |
|
370 [Replaceable, Throws] |
|
371 readonly attribute (External or WindowProxy) sidebar; |
|
372 }; |
|
373 #endif |
|
374 |
|
375 [Func="IsChromeOrXBL"] |
|
376 interface ChromeWindow { |
|
377 [Func="nsGlobalWindow::IsChromeWindow"] |
|
378 const unsigned short STATE_MAXIMIZED = 1; |
|
379 [Func="nsGlobalWindow::IsChromeWindow"] |
|
380 const unsigned short STATE_MINIMIZED = 2; |
|
381 [Func="nsGlobalWindow::IsChromeWindow"] |
|
382 const unsigned short STATE_NORMAL = 3; |
|
383 [Func="nsGlobalWindow::IsChromeWindow"] |
|
384 const unsigned short STATE_FULLSCREEN = 4; |
|
385 |
|
386 [Func="nsGlobalWindow::IsChromeWindow"] |
|
387 readonly attribute unsigned short windowState; |
|
388 |
|
389 /** |
|
390 * browserDOMWindow provides access to yet another layer of |
|
391 * utility functions implemented by chrome script. It will be null |
|
392 * for DOMWindows not corresponding to browsers. |
|
393 */ |
|
394 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
395 attribute nsIBrowserDOMWindow? browserDOMWindow; |
|
396 |
|
397 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
398 void getAttention(); |
|
399 |
|
400 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
401 void getAttentionWithCycleCount(long aCycleCount); |
|
402 |
|
403 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
404 void setCursor(DOMString cursor); |
|
405 |
|
406 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
407 void maximize(); |
|
408 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
409 void minimize(); |
|
410 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
411 void restore(); |
|
412 |
|
413 /** |
|
414 * Notify a default button is loaded on a dialog or a wizard. |
|
415 * defaultButton is the default button. |
|
416 */ |
|
417 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
418 void notifyDefaultButtonLoaded(Element defaultButton); |
|
419 |
|
420 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
421 readonly attribute nsIMessageBroadcaster messageManager; |
|
422 |
|
423 /** |
|
424 * On some operating systems, we must allow the window manager to |
|
425 * handle window dragging. This function tells the window manager to |
|
426 * start dragging the window. This function will fail unless called |
|
427 * while the left mouse button is held down, callers must check this. |
|
428 * |
|
429 * The optional panel argument should be set when moving a panel. |
|
430 * |
|
431 * Throws NS_ERROR_NOT_IMPLEMENTED if the OS doesn't support this. |
|
432 */ |
|
433 [Throws, Func="nsGlobalWindow::IsChromeWindow"] |
|
434 void beginWindowMove(Event mouseDownEvent, optional Element? panel = null); |
|
435 }; |
|
436 |
|
437 Window implements ChromeWindow; |