/*
 * Copyright (C) 2006, 2007, 2008, 2009 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 COMPUTER, 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 COMPUTER, 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,
    CustomGetOwnPropertySlot,
    EventTarget,
    CustomToJSObject,
    NoWrapperCache,
    CustomIndexedGetter,
    InterfaceName=Window
] interface DOMWindow {
    // DOM Level 0
    [Replaceable] readonly attribute Screen screen;
    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute History history;
    [Replaceable] readonly attribute BarInfo locationbar;
    [Replaceable] readonly attribute BarInfo menubar;
    [Replaceable] readonly attribute BarInfo personalbar;
    [Replaceable] readonly attribute BarInfo scrollbars;
    [Replaceable] readonly attribute BarInfo statusbar;
    [Replaceable] readonly attribute BarInfo toolbar;
    [Replaceable, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute Navigator navigator;
    [Replaceable] readonly attribute Navigator clientInformation;
    readonly attribute Crypto crypto;
    [DoNotCheckSecurity, CustomSetter, Unforgeable] attribute Location location;
    [MeasureAs=WindowEvent, NotEnumerable, Replaceable, CustomGetter, CustomSetter] readonly attribute Event event;

    DOMSelection getSelection();

    [CheckSecurityForNode] readonly attribute Element frameElement;

    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void focus();
    [DoNotCheckSecurity] void blur();
    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void close();

    void print();
    void stop();

    [Custom] DOMWindow open(DOMString url,
                            DOMString name,
                            optional DOMString options);

    [Custom] any showModalDialog(DOMString url,
                                       optional any dialogArgs,
                                       optional DOMString featureArgs);

    void alert([Default=Undefined] optional DOMString message);
    boolean confirm([Default=Undefined] optional DOMString message);
    [TreatReturnedNullStringAs=Null] DOMString prompt([Default=Undefined] optional DOMString message,
                                                [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString defaultValue);

    boolean find([Default=Undefined] optional DOMString string,
                 [Default=Undefined] optional boolean caseSensitive,
                 [Default=Undefined] optional boolean backwards,
                 [Default=Undefined] optional boolean wrap,
                 [Default=Undefined] optional boolean wholeWord,
                 [Default=Undefined] optional boolean searchInFrames,
                 [Default=Undefined] optional boolean showDialog);

    [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 long scrollX;
    [Replaceable] readonly attribute long scrollY;
    readonly attribute long pageXOffset;
    readonly attribute long pageYOffset;

    void scrollBy([Default=Undefined] optional long x, [Default=Undefined] optional long y);
    void scrollTo([Default=Undefined] optional long x, [Default=Undefined] optional long y);
    void scroll([Default=Undefined] optional long x, [Default=Undefined] optional long y);
    void moveBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
    void moveTo([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
    void resizeBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
    void resizeTo([Default=Undefined] optional float width, [Default=Undefined] optional float height); // FIXME: this should take longs not floats.

    [DoNotCheckSecurity] readonly attribute boolean closed;

    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;

    attribute DOMString name;

    attribute DOMString status;
    attribute DOMString defaultStatus;
    // This attribute is an alias of defaultStatus and is necessary for legacy uses.
    attribute DOMString defaultstatus;

    // Self referential attributes
    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow self;
    [DoNotCheckSecurity, Unforgeable] readonly attribute DOMWindow window;
    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute  DOMWindow frames;

    [Replaceable, DoNotCheckSecurityOnGetter, CustomSetter] readonly attribute DOMWindow opener;
    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow parent;
    [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute DOMWindow top;

    // DOM Level 2 AbstractView Interface
    readonly attribute Document document;

    // CSSOM View Module
    MediaQueryList matchMedia(DOMString query);

    // styleMedia has been removed from the CSSOM View specification.
    readonly attribute StyleMedia styleMedia;

    // DOM Level 2 Style Interface
    [PerWorldBindings] CSSStyleDeclaration getComputedStyle([Default=Undefined] optional Element element,
                                                              [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoElement);

    // WebKit extensions
    CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element,
                                   [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString pseudoElement);

    [Replaceable] readonly attribute double devicePixelRatio;

    DOMPoint webkitConvertPointFromPageToNode([Default=Undefined] optional Node node,
                                              [Default=Undefined] optional DOMPoint p);
    DOMPoint webkitConvertPointFromNodeToPage([Default=Undefined] optional Node node,
                                              [Default=Undefined] optional DOMPoint p);

    [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute DOMApplicationCache applicationCache;

    [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage sessionStorage;
    [EnabledAtRuntime, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage localStorage;

#if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
    // This is the interface orientation in degrees. Some examples are:
    //  0 is straight up; -90 is when the device is rotated 90 clockwise;
    //  90 is when rotated counter clockwise.
    readonly attribute long orientation;
#endif

    [Replaceable] readonly attribute Console console;

    // cross-document messaging
    [DoNotCheckSecurity, Custom, RaisesException] void postMessage(SerializedScriptValue message, DOMString targetOrigin, optional Array messagePorts);

    [Replaceable] readonly attribute Performance performance;

    // Timers
    [Custom] long setTimeout(any handler, [Default=Undefined] optional long timeout);
    void clearTimeout([Default=Undefined] optional long handle);
    [Custom] long setInterval(any handler, [Default=Undefined] optional long timeout);
    void clearInterval([Default=Undefined] optional long handle);

    [MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame(RequestAnimationFrameCallback callback);
    void cancelAnimationFrame(long id);
    [MeasureAs=PrefixedRequestAnimationFrame] 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.

    // Base64
    [RaisesException] DOMString atob([TreatNullAs=NullString,Default=Undefined] optional DOMString string);
    [RaisesException] DOMString btoa([TreatNullAs=NullString,Default=Undefined] optional DOMString string);

    [Replaceable] attribute DOMWindowCSS CSS;

    // Events
    attribute EventListener onabort;
    attribute EventListener onbeforeunload;
    attribute EventListener onblur;
    attribute EventListener oncanplay;
    attribute EventListener oncanplaythrough;
    attribute EventListener onchange;
    attribute EventListener onclick;
    attribute EventListener oncontextmenu;
    attribute EventListener ondblclick;
    attribute EventListener ondrag;
    attribute EventListener ondragend;
    attribute EventListener ondragenter;
    attribute EventListener ondragleave;
    attribute EventListener ondragover;
    attribute EventListener ondragstart;
    attribute EventListener ondrop;
    attribute EventListener ondurationchange;
    attribute EventListener onemptied;
    attribute EventListener onended;
    attribute EventListener onerror;
    attribute EventListener onfocus;
    attribute EventListener onhashchange;
    attribute EventListener oninput;
    attribute EventListener oninvalid;
    attribute EventListener onkeydown;
    attribute EventListener onkeypress;
    attribute EventListener onkeyup;
    attribute EventListener onload;
    attribute EventListener onloadeddata;
    attribute EventListener onloadedmetadata;
    attribute EventListener onloadstart;
    attribute EventListener onmessage;
    attribute EventListener onmousedown;
    attribute EventListener onmousemove;
    attribute EventListener onmouseout;
    attribute EventListener onmouseover;
    attribute EventListener onmouseup;
    attribute EventListener onmousewheel;
    attribute EventListener onoffline;
    attribute EventListener ononline;
    attribute EventListener onpagehide;
    attribute EventListener onpageshow;
    attribute EventListener onpause;
    attribute EventListener onplay;
    attribute EventListener onplaying;
    attribute EventListener onpopstate;
    attribute EventListener onprogress;
    attribute EventListener onratechange;
    attribute EventListener onresize;
    attribute EventListener onscroll;
    attribute EventListener onseeked;
    attribute EventListener onseeking;
    attribute EventListener onselect;
    attribute EventListener onstalled;
    attribute EventListener onstorage;
    attribute EventListener onsubmit;
    attribute EventListener onsuspend;
    attribute EventListener ontimeupdate;
    attribute EventListener onunload;
    attribute EventListener onvolumechange;
    attribute EventListener onwaiting;

    // Not implemented yet.
    // attribute EventListener onafterprint;
    // attribute EventListener onbeforeprint;
    // attribute EventListener onreadystatechange;
    // attribute EventListener onredo;
    // attribute EventListener onshow;
    // attribute EventListener onundo;

    // Webkit extensions
    attribute EventListener onreset;
    attribute EventListener onsearch;
    attribute EventListener onwebkitanimationend;
    attribute EventListener onwebkitanimationiteration;
    attribute EventListener onwebkitanimationstart;
    attribute EventListener onwebkittransitionend;
    attribute EventListener ontransitionend;
#if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
    attribute EventListener onorientationchange;
#endif
    [EnabledAtRuntime=touch] attribute EventListener ontouchstart;
    [EnabledAtRuntime=touch] attribute EventListener ontouchmove;
    [EnabledAtRuntime=touch] attribute EventListener ontouchend;
    [EnabledAtRuntime=touch] attribute EventListener ontouchcancel;

    [EnabledAtRuntime=deviceMotion] attribute EventListener ondevicemotion;
    [EnabledAtRuntime=deviceOrientation] attribute EventListener ondeviceorientation;

    // EventTarget interface
    [Custom] void addEventListener(DOMString type,
                                  EventListener listener,
                                  optional boolean useCapture);
    [Custom] void removeEventListener(DOMString type,
                                      EventListener listener,
                                      optional boolean useCapture);
    [RaisesException] boolean dispatchEvent(Event evt);

    [Custom] void captureEvents(/*in long eventFlags*/);
    [Custom] void releaseEvents(/*in long eventFlags*/);

    // Global constructors
    attribute StyleSheetConstructor StyleSheet;
    attribute CSSStyleSheetConstructor CSSStyleSheet;

    attribute CSSValueConstructor CSSValue;
    attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
    attribute CSSValueListConstructor CSSValueList;
    attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;

    attribute WebKitCSSFilterRuleConstructor WebKitCSSFilterRule;
    attribute WebKitCSSMixFunctionValueConstructor WebKitCSSMixFunctionValue;

    attribute WebKitCSSFilterValueConstructor WebKitCSSFilterValue;

#if defined(ENABLE_CSS_DEVICE_ADAPTATION) && ENABLE_CSS_DEVICE_ADAPTATION
    attribute WebKitCSSViewportRuleConstructor WebKitCSSViewportRule;
#endif

    attribute CSSRuleConstructor CSSRule;
    attribute CSSCharsetRuleConstructor CSSCharsetRule;
    attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
    attribute CSSHostRuleConstructor CSSHostRule;
    attribute CSSImportRuleConstructor CSSImportRule;
    attribute CSSMediaRuleConstructor CSSMediaRule;
    attribute CSSPageRuleConstructor CSSPageRule;
    attribute CSSStyleRuleConstructor CSSStyleRule;

    attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
    attribute MediaListConstructor MediaList;
    attribute CounterConstructor Counter;
    attribute CSSRuleListConstructor CSSRuleList;
    attribute RectConstructor Rect;
    attribute RGBColorConstructor RGBColor;
    attribute StyleSheetListConstructor StyleSheetList;

    // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
    attribute DOMCoreExceptionConstructor DOMException;
    attribute DOMStringListConstructor DOMStringList;
//        attribute NameListConstructor NameList;
//        attribute DOMImplementationListConstructor DOMImplementationList;
//        attribute DOMImplementationSourceConstructor DOMImplementationSource;
    attribute DOMImplementationConstructor DOMImplementation;
    attribute DOMSettableTokenListConstructor DOMSettableTokenList;
    attribute DOMTokenListConstructor DOMTokenList;
    attribute DocumentFragmentConstructor DocumentFragment;
    attribute DocumentConstructor Document;
    attribute NodeConstructor Node;
    attribute NodeListConstructor NodeList;
    attribute NamedNodeMapConstructor NamedNodeMap;
    attribute CharacterDataConstructor CharacterData;
    attribute AttrConstructor Attr;
    attribute ElementConstructor Element;
    attribute TextConstructor Text;
    attribute CommentConstructor Comment;
//        attribute TypeInfoConstructor TypeInfo;
//        attribute UserDataHandlerConstructor UserDataHandler;
//        attribute DOMErrorConstructor DOMError;
//        attribute DOMErrorHandlerConstructor DOMErrorHandler
//        attribute DOMLocatorConstructor DOMLocator;
//        attribute DOMConfigurationConstructor DOMConfiguration;
    attribute CDATASectionConstructor CDATASection;
    attribute DocumentTypeConstructor DocumentType;
    attribute NotationConstructor Notation;
    attribute EntityConstructor Entity;
    attribute EntityReferenceConstructor EntityReference;
    [EnabledAtRuntime=canvasPath] attribute DOMPathConstructor Path;
    attribute ProcessingInstructionConstructor ProcessingInstruction;
    attribute ShadowRootConstructor WebKitShadowRoot;
    attribute HTMLContentElementConstructor HTMLContentElement;
    attribute HTMLShadowElementConstructor HTMLShadowElement;

    attribute DOMSelectionConstructor Selection;
    attribute DOMWindowConstructor Window;

    attribute HTMLDocumentConstructor HTMLDocument;
    attribute HTMLElementConstructor HTMLElement;
    attribute HTMLAnchorElementConstructor HTMLAnchorElement;
    attribute HTMLAppletElementConstructor HTMLAppletElement;
    attribute HTMLAreaElementConstructor HTMLAreaElement;
    attribute HTMLBRElementConstructor HTMLBRElement;
    attribute HTMLBaseElementConstructor HTMLBaseElement;
    attribute HTMLBodyElementConstructor HTMLBodyElement;
    attribute HTMLButtonElementConstructor HTMLButtonElement;
    attribute HTMLCanvasElementConstructor HTMLCanvasElement;
    attribute HTMLDListElementConstructor HTMLDListElement;
    [Conditional=DATALIST_ELEMENT] attribute HTMLDataListElementConstructor HTMLDataListElement;
    [EnabledPerContext=dialogElement] attribute HTMLDialogElementConstructor HTMLDialogElement;
    attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
    attribute HTMLDivElementConstructor HTMLDivElement;
    attribute HTMLEmbedElementConstructor HTMLEmbedElement;
    attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
    attribute HTMLFontElementConstructor HTMLFontElement;
    attribute HTMLFormElementConstructor HTMLFormElement;
    attribute HTMLFrameElementConstructor HTMLFrameElement;
    attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
    attribute HTMLHRElementConstructor HTMLHRElement;
    attribute HTMLHeadElementConstructor HTMLHeadElement;
    attribute HTMLHeadingElementConstructor HTMLHeadingElement;
    attribute HTMLHtmlElementConstructor HTMLHtmlElement;
    attribute HTMLIFrameElementConstructor HTMLIFrameElement;
    attribute HTMLImageElementConstructor HTMLImageElement;
    attribute HTMLInputElementConstructor HTMLInputElement;
    attribute HTMLKeygenElementConstructor HTMLKeygenElement;
    attribute HTMLLIElementConstructor HTMLLIElement;
    attribute HTMLLabelElementConstructor HTMLLabelElement;
    attribute HTMLLegendElementConstructor HTMLLegendElement;
    attribute HTMLLinkElementConstructor HTMLLinkElement;
    attribute HTMLMapElementConstructor HTMLMapElement;
    attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
    attribute HTMLMenuElementConstructor HTMLMenuElement;
    attribute HTMLMetaElementConstructor HTMLMetaElement;
    attribute HTMLMeterElementConstructor HTMLMeterElement;
    attribute HTMLModElementConstructor HTMLModElement;
    attribute HTMLOListElementConstructor HTMLOListElement;
    attribute HTMLObjectElementConstructor HTMLObjectElement;
    attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
    attribute HTMLOptionElementConstructor HTMLOptionElement;
    attribute HTMLOutputElementConstructor HTMLOutputElement;
    attribute HTMLParagraphElementConstructor HTMLParagraphElement;
    attribute HTMLParamElementConstructor HTMLParamElement;
    attribute HTMLPreElementConstructor HTMLPreElement;
    attribute HTMLProgressElementConstructor HTMLProgressElement;
    attribute HTMLQuoteElementConstructor HTMLQuoteElement;
    attribute HTMLScriptElementConstructor HTMLScriptElement;
    attribute HTMLSelectElementConstructor HTMLSelectElement;
    attribute HTMLSpanElementConstructor HTMLSpanElement;
    attribute HTMLStyleElementConstructor HTMLStyleElement;
    attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
    attribute HTMLTableCellElementConstructor HTMLTableCellElement;
    attribute HTMLTableColElementConstructor HTMLTableColElement;
    attribute HTMLTableElementConstructor HTMLTableElement;
    attribute HTMLTableRowElementConstructor HTMLTableRowElement;
    attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
    attribute HTMLTemplateElementConstructor HTMLTemplateElement;
    attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
    attribute HTMLTitleElementConstructor HTMLTitleElement;
    attribute HTMLUListElementConstructor HTMLUListElement;

    attribute HTMLCollectionConstructor HTMLCollection;
    attribute HTMLAllCollectionConstructor HTMLAllCollection;
    attribute HTMLFormControlsCollectionConstructor HTMLFormControlsCollection;
    attribute HTMLOptionsCollectionConstructor HTMLOptionsCollection;
    attribute HTMLUnknownElementConstructor HTMLUnknownElement;

    [CustomConstructor] attribute HTMLImageElementConstructorConstructor Image; // Usable with new operator
    attribute HTMLOptionElementConstructorConstructor Option; // Usable with new operator

    [Conditional=ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyEventConstructor MediaKeyEvent;
    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeysConstructor MediaKeys;
    [Conditional=ENCRYPTED_MEDIA_V2|ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyErrorConstructor MediaKeyError;
    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyMessageEventConstructor MediaKeyMessageEvent;
    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyNeededEventConstructor MediaKeyNeededEvent;

    [EnabledAtRuntime=webkitVideoTrack] attribute HTMLTrackElementConstructor HTMLTrackElement;
    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackConstructor TextTrack;
    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueConstructor TextTrackCue; // Usable with the new operator
    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueListConstructor TextTrackCueList;
    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackListConstructor TextTrackList;
    [Conditional=WEBVTT_REGIONS, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackRegionConstructor TextTrackRegion; // Usable with the new operator
    [EnabledAtRuntime=webkitVideoTrack] attribute TrackEventConstructor TrackEvent;

    [EnabledAtRuntime=media] attribute HTMLAudioElementConstructorConstructor Audio; // Usable with the new operator
    [EnabledAtRuntime=media] attribute HTMLAudioElementConstructor HTMLAudioElement;
    [EnabledAtRuntime=media] attribute HTMLMediaElementConstructor HTMLMediaElement;
    [EnabledAtRuntime=media] attribute HTMLVideoElementConstructor HTMLVideoElement;
    [EnabledAtRuntime=media] attribute MediaErrorConstructor MediaError;
    [EnabledAtRuntime=media] attribute TimeRangesConstructor TimeRanges;
    [EnabledAtRuntime=media] attribute HTMLSourceElementConstructor HTMLSourceElement;
    [EnabledAtRuntime=media] attribute MediaControllerConstructor MediaController;

    attribute CanvasPatternConstructor CanvasPattern;
    attribute CanvasGradientConstructor CanvasGradient;
    attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;

    attribute ImageDataConstructor ImageData;
    attribute TextMetricsConstructor TextMetrics;

    [Conditional=WEBGL] attribute WebGLActiveInfoConstructor WebGLActiveInfo;
    [Conditional=WEBGL] attribute WebGLBufferConstructor WebGLBuffer;
    [Conditional=WEBGL] attribute WebGLFramebufferConstructor WebGLFramebuffer;
    [Conditional=WEBGL] attribute WebGLProgramConstructor WebGLProgram;
    [Conditional=WEBGL] attribute WebGLRenderbufferConstructor WebGLRenderbuffer;
    [Conditional=WEBGL] attribute WebGLRenderingContextConstructor WebGLRenderingContext;
    [Conditional=WEBGL] attribute WebGLShaderConstructor WebGLShader;
    [Conditional=WEBGL] attribute WebGLShaderPrecisionFormatConstructor WebGLShaderPrecisionFormat;
    [Conditional=WEBGL] attribute WebGLTextureConstructor WebGLTexture;
    [Conditional=WEBGL] attribute WebGLUniformLocationConstructor WebGLUniformLocation;

    attribute DOMStringMapConstructor DOMStringMap;

    attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
    attribute ArrayBufferViewConstructor ArrayBufferView;
    attribute Int8ArrayConstructor Int8Array; // Usable with new operator
    attribute Uint8ArrayConstructor Uint8Array; // Usable with new operator
    attribute Uint8ClampedArrayConstructor Uint8ClampedArray; // Usable with new operator
    attribute Int16ArrayConstructor Int16Array; // Usable with new operator
    attribute Uint16ArrayConstructor Uint16Array; // Usable with new operator
    attribute Int32ArrayConstructor Int32Array; // Usable with new operator
    attribute Uint32ArrayConstructor Uint32Array; // Usable with new operator
    attribute Float32ArrayConstructor Float32Array; // Usable with new operator
    attribute Float64ArrayConstructor Float64Array; // Usable with new operator
    attribute DataViewConstructor DataView; // Usable with new operator

    // Event Constructors
    attribute EventConstructor Event;
    attribute BeforeLoadEventConstructor BeforeLoadEvent;
    attribute CompositionEventConstructor CompositionEvent;
    attribute CustomEventConstructor CustomEvent;
    attribute ErrorEventConstructor ErrorEvent;
    attribute FocusEventConstructor FocusEvent;
    attribute HashChangeEventConstructor HashChangeEvent;
    attribute KeyboardEventConstructor KeyboardEvent;
    attribute MessageEventConstructor MessageEvent;
    attribute MouseEventConstructor MouseEvent;
    attribute MutationEventConstructor MutationEvent;
    attribute OverflowEventConstructor OverflowEvent;
    attribute PopStateEventConstructor PopStateEvent;
    attribute PageTransitionEventConstructor PageTransitionEvent;
    attribute ProgressEventConstructor ProgressEvent;
    attribute TextEventConstructor TextEvent;
    attribute TransitionEventConstructor TransitionEvent;
    attribute UIEventConstructor UIEvent;
    attribute AnimationEventConstructor WebKitAnimationEvent;
    attribute TransitionEventConstructor WebKitTransitionEvent;
    attribute WheelEventConstructor WheelEvent;
    attribute XMLHttpRequestProgressEventConstructor XMLHttpRequestProgressEvent;
    [EnabledAtRuntime=deviceMotion] attribute DeviceMotionEventConstructor DeviceMotionEvent;
    [EnabledAtRuntime=deviceOrientation] attribute DeviceOrientationEventConstructor DeviceOrientationEvent;
    [EnabledAtRuntime=touch] attribute TouchConstructor Touch;
    [EnabledAtRuntime=touch] attribute TouchEventConstructor TouchEvent;
    [EnabledAtRuntime=touch] attribute TouchListConstructor TouchList;
    attribute StorageEventConstructor StorageEvent;
    [Conditional=INPUT_SPEECH] attribute SpeechInputEventConstructor SpeechInputEvent;
    [Conditional=WEBGL] attribute WebGLContextEventConstructor WebGLContextEvent;
    [EnabledAtRuntime=requestAutocomplete] attribute AutocompleteErrorEventConstructor AutocompleteErrorEvent;
    [EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute SecurityPolicyViolationEventConstructor SecurityPolicyViolationEvent;

    attribute EventExceptionConstructor EventException;

    attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
    attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;

    attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator

    attribute DOMPointConstructor WebKitPoint; // Usable with new the operator

    attribute ClipboardConstructor Clipboard;

    attribute WorkerConstructor Worker; // Usable with the new operator
    [EnabledAtRuntime] attribute SharedWorkerConstructor SharedWorker; // Usable with the new operator

    attribute FileConstructor File;
    attribute FileListConstructor FileList;
    attribute BlobConstructor Blob;

    attribute NodeFilterConstructor NodeFilter;
    attribute RangeConstructor Range;
    attribute RangeExceptionConstructor RangeException;

    attribute EventSourceConstructor EventSource; // Usable with new the operator

    // Mozilla has a separate XMLDocument object for XML documents.
    // We just use Document for this.
    attribute DocumentConstructor XMLDocument;
    attribute DOMParserConstructor DOMParser;
    attribute XMLSerializerConstructor XMLSerializer;
    attribute XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
    attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
    attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
    attribute XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator

#if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
    attribute MessagePortConstructor MessagePort;
    attribute MessageChannelConstructor MessageChannel; // Usable with the new operator
#endif

    attribute DOMPluginConstructor Plugin;
    attribute DOMPluginArrayConstructor PluginArray;

    attribute DOMMimeTypeConstructor MimeType;
    attribute DOMMimeTypeArrayConstructor MimeTypeArray;

    attribute ClientRectConstructor ClientRect;
    attribute ClientRectListConstructor ClientRectList;

    attribute StorageConstructor Storage;

    attribute XPathEvaluatorConstructor XPathEvaluator;
    attribute XPathResultConstructor XPathResult;
    attribute XPathExceptionConstructor XPathException;

    [Conditional=SVG] attribute SVGZoomEventConstructor SVGZoomEvent;

#if defined(ENABLE_SVG) && ENABLE_SVG
    // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
    // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
    // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
    // SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
    attribute SVGAElementConstructor SVGAElement;
    attribute SVGAngleConstructor SVGAngle;
    attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
    attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
    attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
    attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
    attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
    attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
    attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
    attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
    attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
    attribute SVGAnimatedRectConstructor SVGAnimatedRect;
    attribute SVGAnimatedStringConstructor SVGAnimatedString;
    attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
    attribute SVGCircleElementConstructor SVGCircleElement;
    attribute SVGClipPathElementConstructor SVGClipPathElement;
    attribute SVGColorConstructor SVGColor;
    attribute SVGCursorElementConstructor SVGCursorElement;
//      attribute SVGCSSRuleConstructor SVGCSSRule;
    attribute SVGDefsElementConstructor SVGDefsElement;
    attribute SVGDescElementConstructor SVGDescElement;
    attribute SVGDocumentConstructor SVGDocument;
    attribute SVGElementConstructor SVGElement;
    attribute SVGElementInstanceConstructor SVGElementInstance;
    attribute SVGElementInstanceListConstructor SVGElementInstanceList;
    attribute SVGEllipseElementConstructor SVGEllipseElement;
    attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
    attribute SVGExceptionConstructor SVGException;
    attribute SVGGElementConstructor SVGGElement;
    attribute SVGGradientElementConstructor SVGGradientElement;
    attribute SVGImageElementConstructor SVGImageElement;
    attribute SVGLengthConstructor SVGLength;
    attribute SVGLengthListConstructor SVGLengthList;
    attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
    attribute SVGLineElementConstructor SVGLineElement;
    attribute SVGMarkerElementConstructor SVGMarkerElement;
    attribute SVGMaskElementConstructor SVGMaskElement;
    attribute SVGMatrixConstructor SVGMatrix;
    attribute SVGMetadataElementConstructor SVGMetadataElement;
    attribute SVGNumberConstructor SVGNumber;
    attribute SVGNumberListConstructor SVGNumberList;
    attribute SVGPaintConstructor SVGPaint;
    attribute SVGPathElementConstructor SVGPathElement;
    attribute SVGPathSegConstructor SVGPathSeg;
    attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
    attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
    attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
    attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
    attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
    attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
    attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
    attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
    attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
    attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
    attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
    attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
    attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
    attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
    attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
    attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
    attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
    attribute SVGPathSegListConstructor SVGPathSegList;
    attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
    attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
    attribute SVGPatternElementConstructor SVGPatternElement;
    attribute SVGPointConstructor SVGPoint;
    attribute SVGPointListConstructor SVGPointList;
    attribute SVGPolygonElementConstructor SVGPolygonElement;
    attribute SVGPolylineElementConstructor SVGPolylineElement;
    attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
    attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
    attribute SVGRectConstructor SVGRect;
    attribute SVGRectElementConstructor SVGRectElement;
    attribute SVGRenderingIntentConstructor SVGRenderingIntent;
    attribute SVGScriptElementConstructor SVGScriptElement;
    attribute SVGStopElementConstructor SVGStopElement;
    attribute SVGStringListConstructor SVGStringList;
    attribute SVGStyleElementConstructor SVGStyleElement;
    attribute SVGSVGElementConstructor SVGSVGElement;
    attribute SVGSwitchElementConstructor SVGSwitchElement;
    attribute SVGSymbolElementConstructor SVGSymbolElement;
    attribute SVGTextContentElementConstructor SVGTextContentElement;
    attribute SVGTextElementConstructor SVGTextElement;
    attribute SVGTextPathElementConstructor SVGTextPathElement;
    attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
    attribute SVGTitleElementConstructor SVGTitleElement;
    attribute SVGTransformConstructor SVGTransform;
    attribute SVGTransformListConstructor SVGTransformList;
    attribute SVGTRefElementConstructor SVGTRefElement;
    attribute SVGTSpanElementConstructor SVGTSpanElement;
    attribute SVGUnitTypesConstructor SVGUnitTypes;
    attribute SVGUseElementConstructor SVGUseElement;
    attribute SVGViewElementConstructor SVGViewElement;
    attribute SVGViewSpecConstructor SVGViewSpec;
    attribute SVGZoomAndPanConstructor SVGZoomAndPan;

    attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
    attribute SVGAnimateElementConstructor SVGAnimateElement;
    attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
    attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
    attribute SVGMPathElementConstructor SVGMPathElement;
    attribute SVGSetElementConstructor SVGSetElement;

#if defined(ENABLE_SVG_FONTS) && ENABLE_SVG_FONTS
    attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
    attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
    attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
//      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
    attribute SVGFontElementConstructor SVGFontElement;
    attribute SVGFontFaceElementConstructor SVGFontFaceElement;
    attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
    attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
    attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
    attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
    attribute SVGGlyphElementConstructor SVGGlyphElement;
    attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
    attribute SVGHKernElementConstructor SVGHKernElement;
    attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
    attribute SVGVKernElementConstructor SVGVKernElement;
#endif

    attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
    attribute SVGFEBlendElementConstructor SVGFEBlendElement;
    attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
    attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
    attribute SVGFECompositeElementConstructor SVGFECompositeElement;
    attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
    attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
    attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
    attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
    attribute SVGFEDropShadowElementConstructor SVGFEDropShadowElement;
    attribute SVGFEFloodElementConstructor SVGFEFloodElement;
    attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
    attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
    attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
    attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
    attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
    attribute SVGFEImageElementConstructor SVGFEImageElement;
    attribute SVGFEMergeElementConstructor SVGFEMergeElement;
    attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
    attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
    attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
    attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
    attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
    attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
    attribute SVGFETileElementConstructor SVGFETileElement;
    attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
    attribute SVGFilterElementConstructor SVGFilterElement;
#endif

    attribute DOMFormDataConstructor FormData;

    attribute FileErrorConstructor FileError;
    attribute FileReaderConstructor FileReader;

    attribute DOMURLConstructor URL;
    attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.

    attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
    attribute MutationObserverConstructor MutationObserver;
    attribute MutationRecordConstructor MutationRecord;

    [EnabledAtRuntime=mediaSource] attribute MediaSourceConstructor WebKitMediaSource;
    [EnabledAtRuntime=mediaSource] attribute SourceBufferConstructor WebKitSourceBuffer;
    [EnabledAtRuntime=mediaSource] attribute SourceBufferListConstructor WebKitSourceBufferList;

    // window.toString() requires special handling in V8
    [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString toString();
};

