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
26module 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