blob: 1d5a7bc018166c6c2ace28f422ad70c9f12233e1 [file] [log] [blame]
/*
* Copyright (C) 2006-2016 Apple Inc. All rights reserved.
* Copyright (C) 2011 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
[
CheckSecurity,
CustomDeleteProperty,
CustomEnumerateProperty,
CustomGetOwnPropertySlot,
CustomGetPrototype,
CustomPreventExtensions,
CustomProxyToJSObject,
CustomPutFunction,
ExportMacro=WEBCORE_EXPORT,
ImplicitThis,
InterfaceName=Window,
IsImmutablePrototypeExoticObject,
IsImmutablePrototypeExoticObjectOnPrototype,
JSCustomDefineOwnProperty,
JSCustomMarkFunction,
JSCustomToNativeObject,
JSLegacyParent=JSDOMWindowBase,
LegacyUnenumerableNamedProperties,
PrimaryGlobal,
] interface DOMWindow : EventTarget {
[Replaceable] readonly attribute Screen screen;
readonly attribute History history;
[Replaceable] readonly attribute BarProp locationbar;
[Replaceable] readonly attribute BarProp menubar;
[Replaceable] readonly attribute BarProp personalbar;
[Replaceable] readonly attribute BarProp scrollbars;
[Replaceable] readonly attribute BarProp statusbar;
[Replaceable] readonly attribute BarProp toolbar;
readonly attribute Navigator navigator;
[Replaceable] readonly attribute Navigator clientInformation;
[DoNotCheckSecurity, CustomSetter, Unforgeable] attribute Location location;
[Replaceable, CustomGetter] readonly attribute Event event;
DOMSelection getSelection();
[CheckSecurityForNode] readonly attribute Element frameElement;
[DoNotCheckSecurity, CallWith=CallerWindow, ForwardDeclareInHeader] void focus();
[DoNotCheckSecurity, ForwardDeclareInHeader] void blur();
[DoNotCheckSecurity, CallWith=CallerDocument, ForwardDeclareInHeader] void close();
void print();
void stop();
[Custom] DOMWindow open(optional USVString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "");
[Custom] any showModalDialog(DOMString url, optional any dialogArgs, optional DOMString featureArgs);
void alert();
void alert(DOMString message);
boolean confirm(optional DOMString message = "");
DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = "");
// FIXME: Using "undefined" as default parameter value is wrong.
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);
[Replaceable] readonly attribute boolean offscreenBuffering;
[Replaceable] readonly attribute long outerHeight;
[Replaceable] readonly attribute long outerWidth;
[Replaceable] readonly attribute long innerHeight;
[Replaceable] readonly attribute long innerWidth;
[Replaceable] readonly attribute long screenX;
[Replaceable] readonly attribute long screenY;
[Replaceable] readonly attribute long screenLeft;
[Replaceable] readonly attribute long screenTop;
[Replaceable] readonly attribute double scrollX;
[Replaceable] readonly attribute double scrollY;
[Replaceable, ImplementedAs=scrollX] readonly attribute double pageXOffset;
[Replaceable, ImplementedAs=scrollY] readonly attribute double pageYOffset;
void scrollBy(unrestricted double x, unrestricted double y);
void scrollTo(unrestricted double x, unrestricted double y);
[ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y);
void scrollBy(optional ScrollToOptions option);
void scrollTo(optional ScrollToOptions options);
[ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options);
void moveBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: This should take longs, not floats.
void moveTo(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: This should take longs, not floats.
void resizeBy(optional unrestricted float x = NaN, optional unrestricted float y = NaN); // FIXME: This should take longs, not floats.
void resizeTo(optional unrestricted float width = NaN, optional unrestricted float height = NaN); // FIXME: This should take longs, not floats.
[DoNotCheckSecurity, ForwardDeclareInHeader] readonly attribute boolean closed;
[Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;
attribute DOMString name;
attribute DOMString status;
attribute DOMString defaultStatus;
[ImplementedAs=defaultStatus] attribute DOMString defaultstatus; // For compatibility with legacy content.
[Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow self;
[DoNotCheckSecurity, Unforgeable] readonly attribute DOMWindow window;
[Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow frames;
[Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow opener;
[Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow parent;
[DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute DOMWindow top;
[Unforgeable] readonly attribute Document document;
MediaQueryList matchMedia(DOMString query);
readonly attribute StyleMedia styleMedia; // Keeping for now, but styleMedia has been removed from the CSSOM View specification.
[NewObject] CSSStyleDeclaration getComputedStyle(Element element, optional DOMString? pseudoElement = null);
// FIXME: Drop the following overload of getComputedStyle once <rdar://problem/28020681> has been fixed.
[NewObject, MayThrowException] CSSStyleDeclaration? getComputedStyle(Document document, optional DOMString? pseudoElement = null);
CSSRuleList getMatchedCSSRules(optional Element? element = null, optional DOMString? pseudoElement = null);
[Replaceable] readonly attribute unrestricted double devicePixelRatio;
WebKitPoint webkitConvertPointFromPageToNode(optional Node? node = null, optional WebKitPoint? p = null);
WebKitPoint webkitConvertPointFromNodeToPage(optional Node? node = null, optional WebKitPoint? p = null);
readonly attribute DOMApplicationCache applicationCache;
[GetterMayThrowException] readonly attribute Storage sessionStorage;
[GetterMayThrowException] readonly attribute Storage localStorage;
// This is the interface orientation in degrees. Some examples:
// 0 when straight up; -90 when rotated 90 degrees clockwise; 90 counter clockwise.
[Conditional=ORIENTATION_EVENTS] readonly attribute long orientation;
[CallWith=ScriptState&CallerWindow, DoNotCheckSecurity, ForwardDeclareInHeader, MayThrowException] void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []);
long requestAnimationFrame(RequestAnimationFrameCallback callback);
void cancelAnimationFrame(long id);
long webkitRequestAnimationFrame(RequestAnimationFrameCallback callback);
[ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id);
[ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
void captureEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
void releaseEvents(); // Not implemented. Also not in modern standards. Empty function may help compatibility with legacy content.
attribute XMLDocumentConstructor SVGDocument;
attribute DOMURLConstructor webkitURL; // FIXME: Deprecate this.
attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Remove once we prove it is not needed for compatibility with legacy content.
[EnabledAtRuntime=CustomElements, ImplementedAs=ensureCustomElementRegistry] readonly attribute CustomElementRegistry customElements;
[MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen]
NodeList collectMatchingElementsInFlatTree(Node scope, DOMString selectors);
[MayThrowException, EnabledForWorld=shadowRootIsAlwaysOpen]
Element? matchingElementInFlatTree(Node scope, DOMString selectors);
// Event handlers unique to Element and DOMWindow.
// FIXME: Should these be exposed on Document as well (and therefore moved to GlobalEventHandlers.idl)?
[NotEnumerable] attribute EventHandler onanimationend;
[NotEnumerable] attribute EventHandler onanimationiteration;
[NotEnumerable] attribute EventHandler onanimationstart;
[NotEnumerable] attribute EventHandler ontransitionend;
[NotEnumerable, ImplementedAs=onwebkitAnimationEnd] attribute EventHandler onwebkitanimationend;
[NotEnumerable, ImplementedAs=onwebkitAnimationIteration] attribute EventHandler onwebkitanimationiteration;
[NotEnumerable, ImplementedAs=onwebkitAnimationStart] attribute EventHandler onwebkitanimationstart;
[NotEnumerable, ImplementedAs=onwebkitTransitionEnd] attribute EventHandler onwebkittransitionend;
[NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
[NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
[NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
// Event handlers unique to DOMWindow.
[NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondevicemotion;
[NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondeviceorientation;
[NotEnumerable, Conditional=PROXIMITY_EVENTS] attribute EventHandler onwebkitdeviceproximity;
};
DOMWindow implements GlobalCrypto;
DOMWindow implements GlobalEventHandlers;
DOMWindow implements GlobalPerformance;
DOMWindow implements WindowEventHandlers;
DOMWindow implements WindowOrWorkerGlobalScope;