/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is: * http://www.whatwg.org/specs/web-apps/current-work/ * https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html * https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html * http://dev.w3.org/csswg/cssom/ * http://dev.w3.org/csswg/cssom-view/ * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html * http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html * https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object * https://w3c.github.io/requestidlecallback/ * https://drafts.css-houdini.org/css-paint-api-1/#dom-window-paintworklet */ // invalid widl // interface ApplicationCache; // interface IID; // interface nsIBrowserDOMWindow; // interface XULControllers; // http://www.whatwg.org/specs/web-apps/current-work/ [Global=Window, Exposed=Window, LegacyUnenumerableNamedProperties] /*sealed*/ interface Window : EventTarget { // the current browsing context [Unforgeable, Constant, StoreInSlot, CrossOriginReadable] readonly attribute Window window; [Replaceable, Constant, StoreInSlot, CrossOriginReadable] readonly attribute Window self; [Unforgeable, StoreInSlot, Pure] readonly attribute Document? document; [Throws] attribute DOMString name; [PutForwards=href, Unforgeable, BinaryName="getLocation", CrossOriginReadable, CrossOriginWritable] readonly attribute Location location; [Throws] readonly attribute History history; [Func="CustomElementRegistry::IsCustomElementEnabled"] readonly attribute CustomElementRegistry customElements; [Replaceable, Throws] readonly attribute BarProp locationbar; [Replaceable, Throws] readonly attribute BarProp menubar; [Replaceable, Throws] readonly attribute BarProp personalbar; [Replaceable, Throws] readonly attribute BarProp scrollbars; [Replaceable, Throws] readonly attribute BarProp statusbar; [Replaceable, Throws] readonly attribute BarProp toolbar; [Throws] attribute DOMString status; [Throws, CrossOriginCallable] undefined close(); [Throws, CrossOriginReadable] readonly attribute boolean closed; [Throws] undefined stop(); [Throws, CrossOriginCallable] undefined focus(); [Throws, CrossOriginCallable] undefined blur(); [Replaceable] readonly attribute any event; // other browsing contexts [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy frames; [Replaceable, CrossOriginReadable] readonly attribute unsigned long length; //[Unforgeable, Throws, CrossOriginReadable] readonly attribute WindowProxy top; [Unforgeable, Throws, CrossOriginReadable] readonly attribute WindowProxy? top; [Throws, CrossOriginReadable] attribute any opener; //[Throws] readonly attribute WindowProxy parent; [Replaceable, Throws, CrossOriginReadable] readonly attribute WindowProxy? parent; [Throws, NeedsSubjectPrincipal] readonly attribute Element? frameElement; //[Throws] WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = ""); [Throws] WindowProxy? open(optional DOMString url = "", optional DOMString target = "", [TreatNullAs=EmptyString] optional DOMString features = ""); getter object (DOMString name); // the user agent readonly attribute Navigator navigator; //#ifdef HAVE_SIDEBAR [Replaceable, Throws] readonly attribute External external; //#endif [Throws, Pref="browser.cache.offline.enable", Func="nsGlobalWindowInner::OfflineCacheAllowedForContext"] readonly attribute ApplicationCache applicationCache; // user prompts [Throws, NeedsSubjectPrincipal] undefined alert(); [Throws, NeedsSubjectPrincipal] undefined alert(DOMString message); [Throws, NeedsSubjectPrincipal] boolean confirm(optional DOMString message = ""); [Throws, NeedsSubjectPrincipal] DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); [Throws, Func="nsGlobalWindowInner::IsWindowPrintEnabled"] undefined print(); [Throws, CrossOriginCallable, NeedsSubjectPrincipal] undefined postMessage(any message, DOMString targetOrigin, optional sequence transfer = []); // also has obsolete members }; Window includes GlobalEventHandlers; Window includes WindowEventHandlers; // https://www.w3.org/TR/appmanifest/#onappinstalled-attribute partial interface Window { [Pref="dom.manifest.onappinstalled"] attribute EventHandler onappinstalled; }; // http://www.whatwg.org/specs/web-apps/current-work/ interface mixin WindowSessionStorage { //[Throws] readonly attribute Storage sessionStorage; [Throws] readonly attribute Storage? sessionStorage; }; Window includes WindowSessionStorage; // http://www.whatwg.org/specs/web-apps/current-work/ interface mixin WindowLocalStorage { [Throws] readonly attribute Storage? localStorage; }; Window includes WindowLocalStorage; // http://www.whatwg.org/specs/web-apps/current-work/ partial interface Window { undefined captureEvents(); undefined releaseEvents(); }; // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html partial interface Window { //[Throws] Selection getSelection(); [Throws] Selection? getSelection(); }; // http://dev.w3.org/csswg/cssom/ partial interface Window { //[NewObject, Throws] CSSStyleDeclaration getComputedStyle(Element elt, optional DOMString pseudoElt = ""); [NewObject, Throws] CSSStyleDeclaration? getComputedStyle(Element elt, optional DOMString pseudoElt = ""); }; // http://dev.w3.org/csswg/cssom-view/ enum ScrollBehavior { "auto", "instant", "smooth" }; dictionary ScrollOptions { ScrollBehavior behavior = "auto"; }; dictionary ScrollToOptions : ScrollOptions { unrestricted double left; unrestricted double top; }; partial interface Window { //[Throws, NewObject, NeedsCallerType] MediaQueryList matchMedia(DOMString query); [Throws, NewObject, NeedsCallerType] MediaQueryList? matchMedia(DOMString query); // Per spec, screen is SameObject, but we don't actually guarantee that given // nsGlobalWindow::Cleanup. :( //[SameObject, Replaceable, Throws] readonly attribute Screen screen; [Replaceable, Throws] readonly attribute Screen screen; // browsing context //[Throws] undefined moveTo(double x, double y); //[Throws] undefined moveBy(double x, double y); //[Throws] undefined resizeTo(double x, double y); //[Throws] undefined resizeBy(double x, double y); [Throws, NeedsCallerType] undefined moveTo(long x, long y); [Throws, NeedsCallerType] undefined moveBy(long x, long y); [Throws, NeedsCallerType] undefined resizeTo(long x, long y); [Throws, NeedsCallerType] undefined resizeBy(long x, long y); // viewport // These are writable because we allow chrome to write them. And they need // to use 'any' as the type, because non-chrome writing them needs to act // like a [Replaceable] attribute would, which needs the original JS value. //[Replaceable, Throws] readonly attribute double innerWidth; //[Replaceable, Throws] readonly attribute double innerHeight; [Throws, NeedsCallerType] attribute any innerWidth; [Throws, NeedsCallerType] attribute any innerHeight; // viewport scrolling undefined scroll(unrestricted double x, unrestricted double y); undefined scroll(optional ScrollToOptions options); undefined scrollTo(unrestricted double x, unrestricted double y); undefined scrollTo(optional ScrollToOptions options); undefined scrollBy(unrestricted double x, unrestricted double y); undefined scrollBy(optional ScrollToOptions options); // The four properties below are double per spec at the moment, but whether // that will continue is unclear. [Replaceable, Throws] readonly attribute double scrollX; [Replaceable, Throws] readonly attribute double pageXOffset; [Replaceable, Throws] readonly attribute double scrollY; [Replaceable, Throws] readonly attribute double pageYOffset; // client // These are writable because we allow chrome to write them. And they need // to use 'any' as the type, because non-chrome writing them needs to act // like a [Replaceable] attribute would, which needs the original JS value. //[Replaceable, Throws] readonly attribute double screenX; //[Replaceable, Throws] readonly attribute double screenY; //[Replaceable, Throws] readonly attribute double outerWidth; //[Replaceable, Throws] readonly attribute double outerHeight; [Throws, NeedsCallerType] attribute any screenX; [Throws, NeedsCallerType] attribute any screenY; [Throws, NeedsCallerType] attribute any outerWidth; [Throws, NeedsCallerType] attribute any outerHeight; [Replaceable] readonly attribute double devicePixelRatio; }; // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html partial interface Window { [Throws] long requestAnimationFrame(FrameRequestCallback callback); [Throws] undefined cancelAnimationFrame(long handle); }; callback FrameRequestCallback = undefined (DOMHighResTimeStamp time); // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html partial interface Window { [Replaceable, Pure, StoreInSlot] readonly attribute Performance? performance; }; // https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html Window includes GlobalCrypto; // https://fidoalliance.org/specifications/download/ Window includes GlobalU2F; //#ifdef MOZ_WEBSPEECH // http://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html interface mixin SpeechSynthesisGetter { [Throws, Pref="media.webspeech.synth.enabled"] readonly attribute SpeechSynthesis speechSynthesis; }; Window includes SpeechSynthesisGetter; //#endif Window includes TouchEventHandlers; Window includes OnErrorEventHandlerForWindow; //#if defined(MOZ_WIDGET_ANDROID) // https://compat.spec.whatwg.org/#windoworientation-interface partial interface Window { [NeedsCallerType] readonly attribute short orientation; attribute EventHandler onorientationchange; }; //#endif callback PromiseDocumentFlushedCallback = any (); partial interface Window { [Pref="dom.vr.enabled"] attribute EventHandler onvrdisplayconnect; [Pref="dom.vr.enabled"] attribute EventHandler onvrdisplaydisconnect; [Pref="dom.vr.enabled"] attribute EventHandler onvrdisplayactivate; [Pref="dom.vr.enabled"] attribute EventHandler onvrdisplaydeactivate; [Pref="dom.vr.enabled"] attribute EventHandler onvrdisplaypresentchange; }; // https://drafts.css-houdini.org/css-paint-api-1/#dom-window-paintworklet partial interface Window { [Pref="dom.paintWorklet.enabled", Throws] readonly attribute Worklet paintWorklet; }; Window includes WindowOrWorkerGlobalScope; partial interface Window { [Throws, Func="nsGlobalWindowInner::IsRequestIdleCallbackEnabled"] unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options); [Func="nsGlobalWindowInner::IsRequestIdleCallbackEnabled"] undefined cancelIdleCallback(unsigned long handle); }; dictionary IdleRequestOptions { unsigned long timeout; }; callback IdleRequestCallback = undefined (IdleDeadline deadline);