Home | History | Annotate | Download | only in page
      1 /*
      2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 module window {
     27 
     28     interface [
     29         CheckDomainSecurity,
     30         CustomDefineGetter,
     31         CustomDefineSetter,
     32         CustomDeleteProperty,
     33         CustomGetOwnPropertySlot,
     34         CustomGetPropertyNames,
     35         CustomLookupGetter,
     36         CustomLookupSetter,
     37         CustomMarkFunction,
     38         CustomNativeConverter,
     39         CustomPutFunction,
     40         EventTarget,
     41         OmitConstructor,
     42         ExtendsDOMGlobalObject,
     43         GenerateNativeConverter,
     44         LegacyParent=JSDOMWindowBase
     45     ] DOMWindow {
     46         // DOM Level 0
     47         readonly attribute Screen screen;
     48         readonly attribute [DoNotCheckDomainSecurity, JSCCustomGetter] History history;
     49         attribute [Replaceable] BarInfo locationbar;
     50         attribute [Replaceable] BarInfo menubar;
     51         attribute [Replaceable] BarInfo personalbar;
     52         attribute [Replaceable] BarInfo scrollbars;
     53         attribute [Replaceable] BarInfo statusbar;
     54         attribute [Replaceable] BarInfo toolbar;
     55         attribute [Replaceable] Navigator navigator;
     56         attribute [Replaceable] Navigator clientInformation;
     57         attribute [DoNotCheckDomainSecurity, JSCCustom, V8CustomSetter, V8DisallowShadowing] Location location;
     58 
     59         attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
     60 
     61         readonly attribute [Custom] Crypto crypto;
     62 
     63         DOMSelection getSelection();
     64 
     65         readonly attribute [CheckNodeSecurity] Element frameElement;
     66 
     67         [DoNotCheckDomainSecurity] void focus();
     68         [DoNotCheckDomainSecurity] void blur();
     69         [DoNotCheckDomainSecurity] void close();
     70 
     71         void print();
     72         void stop();
     73 
     74         [Custom] DOMWindow open(in DOMString url,
     75                                 in DOMString name,
     76                                 in [Optional] DOMString options);
     77 
     78         [Custom] DOMObject showModalDialog(in DOMString url,
     79                                            in [Optional] DOMObject dialogArgs,
     80                                            in [Optional] DOMString featureArgs);
     81 
     82         void alert(in DOMString message);
     83         boolean confirm(in DOMString message);
     84         [ConvertNullStringTo=Null] DOMString prompt(in DOMString message,
     85                                                     in [ConvertUndefinedOrNullToNullString] DOMString defaultValue);
     86 
     87         boolean find(in DOMString string,
     88                      in boolean caseSensitive,
     89                      in boolean backwards,
     90                      in boolean wrap,
     91                      in boolean wholeWord,
     92                      in boolean searchInFrames,
     93                      in boolean showDialog);
     94 
     95         attribute [Replaceable] boolean offscreenBuffering;
     96 
     97         attribute [Replaceable] long outerHeight;
     98         attribute [Replaceable] long outerWidth;
     99         attribute [Replaceable] long innerHeight;
    100         attribute [Replaceable] long innerWidth;
    101         attribute [Replaceable] long screenX;
    102         attribute [Replaceable] long screenY;
    103         attribute [Replaceable] long screenLeft;
    104         attribute [Replaceable] long screenTop;
    105         attribute [Replaceable] long scrollX;
    106         attribute [Replaceable] long scrollY;
    107         readonly attribute long pageXOffset;
    108         readonly attribute long pageYOffset;
    109 
    110         [RequiresAllArguments] void scrollBy(in long x, in long y);
    111         [RequiresAllArguments] void scrollTo(in long x, in long y);
    112         [RequiresAllArguments] void scroll(in long x, in long y);
    113         [RequiresAllArguments] void moveBy(in float x, in float y); // FIXME: this should take longs not floats.
    114         [RequiresAllArguments] void moveTo(in float x, in float y); // FIXME: this should take longs not floats.
    115         [RequiresAllArguments] void resizeBy(in float x, in float y); // FIXME: this should take longs not floats.
    116         [RequiresAllArguments] void resizeTo(in float width, in float height); // FIXME: this should take longs not floats.
    117 
    118         readonly attribute [DoNotCheckDomainSecurity] boolean closed;
    119 
    120         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] unsigned long length;
    121 
    122         attribute DOMString name;
    123 
    124         attribute DOMString status;
    125         attribute DOMString defaultStatus;
    126 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
    127         // This attribute is an alias of defaultStatus and is necessary for legacy uses.
    128         attribute DOMString defaultstatus;
    129 #endif
    130 
    131         // Self referential attributes
    132         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow self;
    133         readonly attribute [DoNotCheckDomainSecurity, V8DisallowShadowing] DOMWindow window;
    134         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow frames;
    135 
    136         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8CustomSetter] DOMWindow opener;
    137         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow parent;
    138         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8DisallowShadowing, V8ReadOnly] DOMWindow top;
    139 
    140         // DOM Level 2 AbstractView Interface
    141         readonly attribute Document document;
    142 
    143         // CSSOM View Module
    144         readonly attribute Media media;
    145 
    146         // DOM Level 2 Style Interface
    147         CSSStyleDeclaration getComputedStyle(in Element element,
    148                                              in DOMString pseudoElement);
    149 
    150         // WebKit extensions
    151         CSSRuleList getMatchedCSSRules(in Element element,
    152                                        in DOMString pseudoElement,
    153                                        in [Optional] boolean authorOnly);
    154         attribute [Replaceable] double devicePixelRatio;
    155 
    156         WebKitPoint webkitConvertPointFromPageToNode(in Node node, in WebKitPoint p);
    157         WebKitPoint webkitConvertPointFromNodeToPage(in Node node, in WebKitPoint p);
    158 
    159 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
    160         readonly attribute [EnabledAtRuntime] DOMApplicationCache applicationCache;
    161 #endif
    162 #if defined(ENABLE_DATABASE) && ENABLE_DATABASE
    163         [EnabledAtRuntime] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize)
    164             raises(DOMException);
    165 #endif
    166 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
    167         readonly attribute [EnabledAtRuntime] Storage sessionStorage;
    168         readonly attribute [EnabledAtRuntime] Storage localStorage;
    169 #endif
    170 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
    171         readonly attribute [EnabledAtRuntime] NotificationCenter webkitNotifications;
    172 #endif
    173 #if defined(ENABLE_INDEXED_DATABASE) && ENABLE_INDEXED_DATABASE
    174         readonly attribute [EnabledAtRuntime] IndexedDatabaseRequest indexedDB;
    175 #endif
    176 
    177 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
    178         // This is the interface orientation in degrees. Some examples are:
    179         //  0 is straight up; -90 is when the device is rotated 90 clockwise;
    180         //  90 is when rotated counter clockwise.
    181         readonly attribute long orientation;
    182 #endif
    183 
    184                  attribute [Replaceable] Console console;
    185 
    186         // cross-document messaging
    187 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
    188         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] Array messagePorts, in DOMString targetOrigin)
    189             raises(DOMException);
    190 #else
    191         // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
    192         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
    193             raises(DOMException);
    194 #endif
    195 
    196         // Timers
    197         [Custom] long setTimeout(in TimeoutHandler handler, in long timeout);
    198         // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
    199         // [Custom] long setTimeout(in DOMString code, in long timeout);
    200         void clearTimeout(in long handle);
    201         [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
    202         // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
    203         // [Custom] long setInterval(in DOMString code, in long timeout);
    204         void clearInterval(in long handle);
    205 
    206         // Base64
    207         [Custom] DOMString atob(in DOMString string)
    208             raises(DOMException);
    209         [Custom] DOMString btoa(in DOMString string)
    210             raises(DOMException);
    211 
    212         // Events
    213 
    214         attribute EventListener onabort;
    215         attribute EventListener onbeforeunload;
    216         attribute EventListener onblur;
    217         attribute EventListener oncanplay;
    218         attribute EventListener oncanplaythrough;
    219         attribute EventListener onchange;
    220         attribute EventListener onclick;
    221         attribute EventListener oncontextmenu;
    222         attribute EventListener ondblclick;
    223         attribute EventListener ondrag;
    224         attribute EventListener ondragend;
    225         attribute EventListener ondragenter;
    226         attribute EventListener ondragleave;
    227         attribute EventListener ondragover;
    228         attribute EventListener ondragstart;
    229         attribute EventListener ondrop;
    230         attribute EventListener ondurationchange;
    231         attribute EventListener onemptied;
    232         attribute EventListener onended;
    233         attribute EventListener onerror;
    234         attribute EventListener onfocus;
    235         attribute EventListener onhashchange;
    236         attribute EventListener oninput;
    237         attribute EventListener oninvalid;
    238         attribute EventListener onkeydown;
    239         attribute EventListener onkeypress;
    240         attribute EventListener onkeyup;
    241         attribute EventListener onload;
    242         attribute EventListener onloadeddata;
    243         attribute EventListener onloadedmetadata;
    244         attribute EventListener onloadstart;
    245         attribute EventListener onmessage;
    246         attribute EventListener onmousedown;
    247         attribute EventListener onmousemove;
    248         attribute EventListener onmouseout;
    249         attribute EventListener onmouseover;
    250         attribute EventListener onmouseup;
    251         attribute EventListener onmousewheel;
    252         attribute EventListener onoffline;
    253         attribute EventListener ononline;
    254         attribute EventListener onpagehide;
    255         attribute EventListener onpageshow;
    256         attribute EventListener onpause;
    257         attribute EventListener onplay;
    258         attribute EventListener onplaying;
    259         attribute EventListener onpopstate;
    260         attribute EventListener onprogress;
    261         attribute EventListener onratechange;
    262         attribute EventListener onresize;
    263         attribute EventListener onscroll;
    264         attribute EventListener onseeked;
    265         attribute EventListener onseeking;
    266         attribute EventListener onselect;
    267         attribute EventListener onstalled;
    268         attribute EventListener onstorage;
    269         attribute EventListener onsubmit;
    270         attribute EventListener onsuspend;
    271         attribute EventListener ontimeupdate;
    272         attribute EventListener onunload;
    273         attribute EventListener onvolumechange;
    274         attribute EventListener onwaiting;
    275 
    276         // Not implemented yet.
    277         // attribute EventListener onafterprint;
    278         // attribute EventListener onbeforeprint;
    279         // attribute EventListener onformchange;
    280         // attribute EventListener onforminput;
    281         // attribute EventListener onreadystatechange;
    282         // attribute EventListener onredo;
    283         // attribute EventListener onshow;
    284         // attribute EventListener onundo;
    285 
    286         // Webkit extensions
    287         attribute EventListener onreset;
    288         attribute EventListener onsearch;
    289         attribute EventListener onwebkitanimationend;
    290         attribute EventListener onwebkitanimationiteration;
    291         attribute EventListener onwebkitanimationstart;
    292         attribute EventListener onwebkittransitionend;
    293 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
    294         attribute EventListener onorientationchange;
    295 #endif
    296  #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
    297         attribute [DontEnum] EventListener ontouchstart;
    298         attribute [DontEnum] EventListener ontouchmove;
    299         attribute [DontEnum] EventListener ontouchend;
    300         attribute [DontEnum] EventListener ontouchcancel;
    301  #endif
    302 
    303         // EventTarget interface
    304         [Custom] void addEventListener(in DOMString type,
    305                                       in EventListener listener,
    306                                       in boolean useCapture);
    307         [Custom] void removeEventListener(in DOMString type,
    308                                           in EventListener listener,
    309                                           in boolean useCapture);
    310         boolean dispatchEvent(in Event evt)
    311             raises(EventException);
    312 
    313         [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
    314         [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
    315 
    316 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
    317         // Global constructors
    318         attribute StyleSheetConstructor StyleSheet;
    319         attribute CSSStyleSheetConstructor CSSStyleSheet;
    320 
    321         attribute CSSValueConstructor CSSValue;
    322         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
    323         attribute CSSValueListConstructor CSSValueList;
    324         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
    325 
    326         attribute CSSRuleConstructor CSSRule;
    327         attribute CSSCharsetRuleConstructor CSSCharsetRule;
    328         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
    329         attribute CSSImportRuleConstructor CSSImportRule;
    330         attribute CSSMediaRuleConstructor CSSMediaRule;
    331         attribute CSSPageRuleConstructor CSSPageRule;
    332         attribute CSSStyleRuleConstructor CSSStyleRule;
    333 
    334         attribute CSSVariablesRuleConstructor CSSVariablesRule;
    335         attribute CSSVariablesDeclarationConstructor CSSVariablesDeclaration;
    336 
    337         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
    338         attribute MediaListConstructor MediaList;
    339         attribute CounterConstructor Counter;
    340         attribute CSSRuleListConstructor CSSRuleList;
    341         attribute RectConstructor Rect;
    342         attribute RGBColorConstructor RGBColor;
    343         attribute StyleSheetListConstructor StyleSheetList;
    344 
    345         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
    346         attribute DOMCoreExceptionConstructor DOMException;
    347 //        attribute DOMStringListConstructor DOMStringList;
    348 //        attribute NameListConstructor NameList;
    349 //        attribute DOMImplementationListConstructor DOMImplementationList;
    350 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
    351         attribute DOMImplementationConstructor DOMImplementation;
    352         attribute DocumentFragmentConstructor DocumentFragment;
    353         attribute DocumentConstructor Document;
    354         attribute NodeConstructor Node;
    355         attribute NodeListConstructor NodeList;
    356         attribute NamedNodeMapConstructor NamedNodeMap;
    357         attribute CharacterDataConstructor CharacterData;
    358         attribute AttrConstructor Attr;
    359         attribute ElementConstructor Element;
    360         attribute TextConstructor Text;
    361         attribute CommentConstructor Comment;
    362 //        attribute TypeInfoConstructor TypeInfo;
    363 //        attribute UserDataHandlerConstructor UserDataHandler;
    364 //        attribute DOMErrorConstructor DOMError;
    365 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
    366 //        attribute DOMLocatorConstructor DOMLocator;
    367 //        attribute DOMConfigurationConstructor DOMConfiguration;
    368         attribute CDATASectionConstructor CDATASection;
    369         attribute DocumentTypeConstructor DocumentType;
    370         attribute NotationConstructor Notation;
    371         attribute EntityConstructor Entity;
    372         attribute EntityReferenceConstructor EntityReference;
    373         attribute ProcessingInstructionConstructor ProcessingInstruction;
    374 
    375         attribute HTMLDocumentConstructor HTMLDocument;
    376 
    377         attribute HTMLElementConstructor HTMLElement;
    378         attribute HTMLAnchorElementConstructor HTMLAnchorElement;
    379         attribute HTMLAppletElementConstructor HTMLAppletElement;
    380         attribute HTMLAreaElementConstructor HTMLAreaElement;
    381         attribute HTMLBRElementConstructor HTMLBRElement;
    382         attribute HTMLBaseElementConstructor HTMLBaseElement;
    383         attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
    384         attribute HTMLBlockquoteElementConstructor HTMLBlockquoteElement;
    385         attribute HTMLBodyElementConstructor HTMLBodyElement;
    386         attribute HTMLButtonElementConstructor HTMLButtonElement;
    387         attribute HTMLCanvasElementConstructor HTMLCanvasElement;
    388         attribute [Conditional=DATAGRID] HTMLDataGridElementConstructor HTMLDataGridElement;
    389         attribute [Conditional=DATAGRID] HTMLDataGridCellElementConstructor HTMLDataGridCellElement;
    390         attribute [Conditional=DATAGRID] HTMLDataGridColElementConstructor HTMLDataGridColElement;
    391         attribute HTMLDListElementConstructor HTMLDListElement;
    392         attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
    393         attribute HTMLDivElementConstructor HTMLDivElement;
    394         attribute HTMLEmbedElementConstructor HTMLEmbedElement;
    395         attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
    396         attribute HTMLFontElementConstructor HTMLFontElement;
    397         attribute HTMLFormElementConstructor HTMLFormElement;
    398         attribute HTMLFrameElementConstructor HTMLFrameElement;
    399         attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
    400         attribute HTMLHRElementConstructor HTMLHRElement;
    401         attribute HTMLHeadElementConstructor HTMLHeadElement;
    402         attribute HTMLHeadingElementConstructor HTMLHeadingElement;
    403         attribute HTMLHtmlElementConstructor HTMLHtmlElement;
    404         attribute HTMLIFrameElementConstructor HTMLIFrameElement;
    405         attribute HTMLImageElementConstructor HTMLImageElement;
    406         attribute HTMLInputElementConstructor HTMLInputElement;
    407         attribute HTMLIsIndexElementConstructor HTMLIsIndexElement;
    408         attribute HTMLLIElementConstructor HTMLLIElement;
    409         attribute HTMLLabelElementConstructor HTMLLabelElement;
    410         attribute HTMLLegendElementConstructor HTMLLegendElement;
    411         attribute HTMLLinkElementConstructor HTMLLinkElement;
    412         attribute HTMLMapElementConstructor HTMLMapElement;
    413         attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
    414         attribute HTMLMenuElementConstructor HTMLMenuElement;
    415         attribute HTMLMetaElementConstructor HTMLMetaElement;
    416         attribute HTMLModElementConstructor HTMLModElement;
    417         attribute HTMLOListElementConstructor HTMLOListElement;
    418         attribute HTMLObjectElementConstructor HTMLObjectElement;
    419         attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
    420         attribute HTMLOptionElementConstructor HTMLOptionElement;
    421         attribute HTMLParagraphElementConstructor HTMLParagraphElement;
    422         attribute HTMLParamElementConstructor HTMLParamElement;
    423         attribute HTMLPreElementConstructor HTMLPreElement;
    424         attribute HTMLQuoteElementConstructor HTMLQuoteElement;
    425         attribute HTMLScriptElementConstructor HTMLScriptElement;
    426         attribute HTMLSelectElementConstructor HTMLSelectElement;
    427         attribute HTMLStyleElementConstructor HTMLStyleElement;
    428         attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
    429         attribute HTMLTableCellElementConstructor HTMLTableCellElement;
    430         attribute HTMLTableColElementConstructor HTMLTableColElement;
    431         attribute HTMLTableElementConstructor HTMLTableElement;
    432         attribute HTMLTableRowElementConstructor HTMLTableRowElement;
    433         attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
    434         attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
    435         attribute HTMLTitleElementConstructor HTMLTitleElement;
    436         attribute HTMLUListElementConstructor HTMLUListElement;
    437 
    438         attribute HTMLCollectionConstructor HTMLCollection;
    439         attribute HTMLAllCollectionConstructor HTMLAllCollection;
    440 
    441         attribute [CustomGetter] HTMLImageElementConstructor Image; // Usable with new operator
    442         attribute [CustomGetter] HTMLOptionElementConstructor Option; // Usable with new operator
    443 
    444         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
    445         attribute ImageDataConstructor ImageData;
    446         attribute [Conditional=3D_CANVAS] WebGLRenderingContextConstructor WebGLRenderingContext;
    447         attribute TextMetricsConstructor TextMetrics;
    448 
    449         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLArrayBufferConstructor WebGLArrayBuffer; // Usable with new operator
    450         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLByteArrayConstructor WebGLByteArray; // Usable with new operator
    451         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLUnsignedByteArrayConstructor WebGLUnsignedByteArray; // Usable with new operator
    452         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLShortArrayConstructor WebGLShortArray; // Usable with new operator
    453         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLUnsignedShortArrayConstructor WebGLUnsignedShortArray; // Usable with new operator
    454         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLIntArrayConstructor WebGLIntArray; // Usable with new operator
    455         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLUnsignedIntArrayConstructor WebGLUnsignedIntArray; // Usable with new operator
    456         attribute [JSCCustomGetter,Conditional=3D_CANVAS] WebGLFloatArrayConstructor WebGLFloatArray; // Usable with new operator
    457 
    458         attribute EventConstructor Event;
    459         attribute BeforeLoadEventConstructor BeforeLoadEvent;
    460         attribute KeyboardEventConstructor KeyboardEvent;
    461         attribute MouseEventConstructor MouseEvent;
    462         attribute MutationEventConstructor MutationEvent;
    463         attribute OverflowEventConstructor OverflowEvent;
    464         attribute PageTransitionEventConstructor PageTransitionEvent;
    465         attribute ProgressEventConstructor ProgressEvent;
    466         attribute TextEventConstructor TextEvent;
    467         attribute UIEventConstructor UIEvent;
    468         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
    469         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
    470         attribute WheelEventConstructor WheelEvent;
    471         attribute MessageEventConstructor MessageEvent;
    472         attribute EventExceptionConstructor EventException;
    473 
    474         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
    475         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
    476 
    477         attribute [JSCCustomGetter] WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
    478 
    479         attribute [JSCCustomGetter] WebKitPointConstructor WebKitPoint; // Usable with new the operator
    480 
    481         attribute ClipboardConstructor Clipboard;
    482 
    483         attribute FileConstructor File;
    484         attribute FileListConstructor FileList;
    485         attribute BlobConstructor Blob;
    486 
    487         attribute NodeFilterConstructor NodeFilter;
    488         attribute RangeConstructor Range;
    489         attribute RangeExceptionConstructor RangeException;
    490 
    491 #if ENABLE_EVENTSOURCE
    492         attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
    493 #endif
    494 
    495         // Mozilla has a separate XMLDocument object for XML documents.
    496         // We just use Document for this.
    497         attribute DocumentConstructor XMLDocument;
    498 
    499         attribute DOMParserConstructor DOMParser;
    500         attribute XMLSerializerConstructor XMLSerializer;
    501 
    502         attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
    503         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
    504         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
    505 
    506         attribute [JSCCustomGetter,Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
    507 
    508 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
    509         attribute MessagePortConstructor MessagePort;
    510         attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel; // Usable with the new operator
    511 #endif
    512 
    513 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
    514         attribute [JSCCustomGetter] WorkerConstructor Worker; // Usable with the new operator
    515 #endif
    516 
    517 #if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
    518         attribute [JSCCustomGetter, EnabledAtRuntime] SharedWorkerConstructor SharedWorker; // Usable with the new operator
    519 #endif
    520 
    521 #if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
    522         attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
    523 #endif
    524 
    525         attribute PluginConstructor Plugin;
    526         attribute PluginArrayConstructor PluginArray;
    527 
    528         attribute MimeTypeConstructor MimeType;
    529         attribute MimeTypeArrayConstructor MimeTypeArray;
    530 
    531         attribute ClientRectConstructor ClientRect;
    532         attribute ClientRectListConstructor ClientRectList;
    533 
    534 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
    535         attribute StorageConstructor Storage;
    536         attribute StorageEventConstructor StorageEvent;
    537 #endif
    538 
    539         attribute [CustomGetter, Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor Audio; // Usable with the new operator
    540         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
    541         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
    542         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
    543         attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
    544 
    545 #if defined(ENABLE_XPATH) && ENABLE_XPATH
    546         attribute XPathEvaluatorConstructor XPathEvaluator;
    547         attribute XPathResultConstructor XPathResult;
    548         attribute XPathExceptionConstructor XPathException;
    549 #endif
    550 
    551 #if defined(ENABLE_SVG) && ENABLE_SVG
    552         // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
    553         // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
    554         // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
    555         // SVGStylable, SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
    556         attribute SVGAElementConstructor SVGAElement;
    557         attribute SVGAngleConstructor SVGAngle;
    558         attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
    559         attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
    560         attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
    561         attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
    562         attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
    563         attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
    564         attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
    565         attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
    566         attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
    567         attribute SVGAnimatedRectConstructor SVGAnimatedRect;
    568         attribute SVGAnimatedStringConstructor SVGAnimatedString;
    569         attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
    570         attribute SVGCircleElementConstructor SVGCircleElement;
    571         attribute SVGClipPathElementConstructor SVGClipPathElement;
    572         attribute SVGColorConstructor SVGColor;
    573         attribute SVGCursorElementConstructor SVGCursorElement;
    574 //      attribute SVGCSSRuleConstructor SVGCSSRule;
    575         attribute SVGDefsElementConstructor SVGDefsElement;
    576         attribute SVGDescElementConstructor SVGDescElement;
    577         attribute SVGDocumentConstructor SVGDocument;
    578         attribute SVGElementConstructor SVGElement;
    579         attribute SVGElementInstanceConstructor SVGElementInstance;
    580         attribute SVGElementInstanceListConstructor SVGElementInstanceList;
    581         attribute SVGEllipseElementConstructor SVGEllipseElement;
    582         attribute SVGExceptionConstructor SVGException;
    583         attribute SVGGElementConstructor SVGGElement;
    584         attribute SVGGradientElementConstructor SVGGradientElement;
    585         attribute SVGImageElementConstructor SVGImageElement;
    586         attribute SVGLengthConstructor SVGLength;
    587         attribute SVGLengthListConstructor SVGLengthList;
    588         attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
    589         attribute SVGLineElementConstructor SVGLineElement;
    590         attribute SVGMarkerElementConstructor SVGMarkerElement;
    591         attribute SVGMaskElementConstructor SVGMaskElement;
    592         attribute SVGMatrixConstructor SVGMatrix;
    593         attribute SVGMetadataElementConstructor SVGMetadataElement;
    594         attribute SVGNumberConstructor SVGNumber;
    595         attribute SVGNumberListConstructor SVGNumberList;
    596         attribute SVGPaintConstructor SVGPaint;
    597         attribute SVGPathElementConstructor SVGPathElement;
    598         attribute SVGPathSegConstructor SVGPathSeg;
    599         attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
    600         attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
    601         attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
    602         attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
    603         attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
    604         attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
    605         attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
    606         attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
    607         attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
    608         attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
    609         attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
    610         attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
    611         attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
    612         attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
    613         attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
    614         attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
    615         attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
    616         attribute SVGPathSegListConstructor SVGPathSegList;
    617         attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
    618         attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
    619         attribute SVGPatternElementConstructor SVGPatternElement;
    620         attribute SVGPointConstructor SVGPoint;
    621         attribute SVGPointListConstructor SVGPointList;
    622         attribute SVGPolygonElementConstructor SVGPolygonElement;
    623         attribute SVGPolylineElementConstructor SVGPolylineElement;
    624         attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
    625         attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
    626         attribute SVGRectConstructor SVGRect;
    627         attribute SVGRectElementConstructor SVGRectElement;
    628         attribute SVGRenderingIntentConstructor SVGRenderingIntent;
    629         attribute SVGScriptElementConstructor SVGScriptElement;
    630         attribute SVGStopElementConstructor SVGStopElement;
    631         attribute SVGStringListConstructor SVGStringList;
    632         attribute SVGStyleElementConstructor SVGStyleElement;
    633         attribute SVGSVGElementConstructor SVGSVGElement;
    634         attribute SVGSwitchElementConstructor SVGSwitchElement;
    635         attribute SVGSymbolElementConstructor SVGSymbolElement;
    636         attribute SVGTextContentElementConstructor SVGTextContentElement;
    637         attribute SVGTextElementConstructor SVGTextElement;
    638         attribute SVGTextPathElementConstructor SVGTextPathElement;
    639         attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
    640         attribute SVGTitleElementConstructor SVGTitleElement;
    641         attribute SVGTransformConstructor SVGTransform;
    642         attribute SVGTransformListConstructor SVGTransformList;
    643         attribute SVGTRefElementConstructor SVGTRefElement;
    644         attribute SVGTSpanElementConstructor SVGTSpanElement;
    645         attribute SVGUnitTypesConstructor SVGUnitTypes;
    646         attribute SVGUseElementConstructor SVGUseElement;
    647         attribute SVGViewElementConstructor SVGViewElement;
    648 //      attribute SVGViewSpecConstructor SVGViewSpec;
    649         attribute SVGZoomEventConstructor SVGZoomEvent;
    650 
    651 #if defined(ENABLE_SVG_ANIMATION) && ENABLE_SVG_ANIMATION
    652         attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
    653         attribute SVGAnimateElementConstructor SVGAnimateElement;
    654 //      attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
    655         attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
    656 //      attribute SVGMPathElementConstructor SVGMPathElement;
    657         attribute SVGSetElementConstructor SVGSetElement;
    658 #endif
    659 
    660 #if ENABLE_SVG_FONTS && ENABLE_SVG_FONTS
    661 //      attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
    662         attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
    663 //      attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
    664 //      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
    665         attribute SVGFontElementConstructor SVGFontElement;
    666         attribute SVGFontFaceElementConstructor SVGFontFaceElement;
    667         attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
    668         attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
    669         attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
    670         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
    671         attribute SVGGlyphElementConstructor SVGGlyphElement;
    672 //      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
    673 //      attribute SVGHKernElementConstructor SVGHKernElement;
    674         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
    675 //      attribute SVGVKernElementConstructor SVGVKernElement;
    676 #endif
    677 
    678 #if defined(ENABLE_SVG_FOREIGN_OBJECT) && ENABLE_SVG_FOREIGN_OBJECT
    679         attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
    680 #endif
    681 
    682 #if defined(ENABLE_FILTERS) && ENABLE_FILTERS
    683         attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
    684         attribute SVGFEBlendElementConstructor SVGFEBlendElement;
    685         attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
    686         attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
    687         attribute SVGFECompositeElementConstructor SVGFECompositeElement;
    688 //      attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
    689         attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
    690         attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
    691         attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
    692         attribute SVGFEFloodElementConstructor SVGFEFloodElement;
    693         attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
    694         attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
    695         attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
    696         attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
    697         attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
    698         attribute SVGFEImageElementConstructor SVGFEImageElement;
    699         attribute SVGFEMergeElementConstructor SVGFEMergeElement;
    700         attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
    701         attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
    702         attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
    703         attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
    704         attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
    705         attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
    706         attribute SVGFETileElementConstructor SVGFETileElement;
    707         attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
    708         attribute SVGFilterElementConstructor SVGFilterElement;
    709 #endif
    710 #endif
    711 
    712 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
    713         attribute TouchEventConstructor TouchEvent;
    714 #endif
    715 
    716 #endif // defined(LANGUAGE_JAVASCRIPT)
    717 
    718 #if defined(V8_BINDING) && V8_BINDING
    719         // window.toString() requires special handling in V8
    720         [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
    721 #endif // defined(V8_BINDING)
    722     };
    723 
    724 }
    725 
    726