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        ExtendsDOMGlobalObject,
42        GenerateNativeConverter,
43        ReplaceableConstructor,
44        LegacyParent=JSDOMWindowBase
45    ] DOMWindow {
46        // DOM Level 0
47        attribute [Replaceable] Screen screen;
48        attribute [Replaceable, DoNotCheckDomainSecurityOnGet, 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        readonly attribute Crypto crypto;
58        attribute [DoNotCheckDomainSecurity, JSCCustom, V8CustomSetter, V8DisallowShadowing, CPPCustom] Location location;
59
60        attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
61
62
63        DOMSelection getSelection();
64
65        readonly attribute [CheckNodeSecurity] Element frameElement;
66
67        [DoNotCheckDomainSecurity] void focus();
68        [DoNotCheckDomainSecurity] void blur();
69        [DoNotCheckDomainSecurity, CallWith=ScriptExecutionContext] 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        MediaQueryList matchMedia(in DOMString query);
145
146        // styleMedia has been removed from the CSSOM View specification.
147        readonly attribute StyleMedia styleMedia;
148
149        // DOM Level 2 Style Interface
150        CSSStyleDeclaration getComputedStyle(in Element element,
151                                             in [ConvertUndefinedOrNullToNullString] DOMString pseudoElement);
152
153        // WebKit extensions
154#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
155        CSSRuleList getMatchedCSSRules(in Element element,
156                                       in DOMString pseudoElement);
157#endif
158
159        attribute [Replaceable] double devicePixelRatio;
160
161        WebKitPoint webkitConvertPointFromPageToNode(in Node node, in WebKitPoint p);
162        WebKitPoint webkitConvertPointFromNodeToPage(in Node node, in WebKitPoint p);
163
164#if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
165        readonly attribute [EnabledAtRuntime] DOMApplicationCache applicationCache;
166#endif
167#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
168        [EnabledAtRuntime, RequiresAllArguments=Raise] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
169            raises(DOMException);
170#endif
171#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
172        readonly attribute [EnabledAtRuntime] Storage sessionStorage
173            getter raises(DOMException);
174        readonly attribute [EnabledAtRuntime] Storage localStorage
175            getter raises(DOMException);
176#endif
177#if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
178        readonly attribute [EnabledAtRuntime] NotificationCenter webkitNotifications;
179#endif
180#if defined(ENABLE_INDEXED_DATABASE) && ENABLE_INDEXED_DATABASE
181        readonly attribute [EnabledAtRuntime] IDBFactory webkitIndexedDB;
182
183        attribute [EnabledAtRuntime] IDBCursorConstructor webkitIDBCursor;
184        attribute [EnabledAtRuntime] IDBDatabaseConstructor webkitIDBDatabase;
185        attribute [EnabledAtRuntime] IDBDatabaseErrorConstructor webkitIDBDatabaseError;
186        attribute [EnabledAtRuntime] IDBDatabaseExceptionConstructor webkitIDBDatabaseException;
187        attribute [EnabledAtRuntime] IDBFactoryConstructor webkitIDBFactory;
188        attribute [EnabledAtRuntime] IDBIndexConstructor webkitIDBIndex;
189        attribute [EnabledAtRuntime] IDBKeyRangeConstructor webkitIDBKeyRange;
190        attribute [EnabledAtRuntime] IDBObjectStoreConstructor webkitIDBObjectStore;
191        attribute [EnabledAtRuntime] IDBRequestConstructor webkitIDBRequest;
192        attribute [EnabledAtRuntime] IDBTransactionConstructor webkitIDBTransaction;
193#endif
194#if defined(ENABLE_FILE_SYSTEM) && ENABLE_FILE_SYSTEM
195        const unsigned short TEMPORARY = 0;
196        const unsigned short PERSISTENT = 1;
197        [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(in unsigned short type, in long long size, in [Callback, Optional] FileSystemCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
198        [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(in DOMString url, in [Callback, Optional] EntryCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
199
200        attribute [EnabledAtRuntime=FileSystem] WebKitFlagsConstructor WebKitFlags;
201#endif
202
203#if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
204        // This is the interface orientation in degrees. Some examples are:
205        //  0 is straight up; -90 is when the device is rotated 90 clockwise;
206        //  90 is when rotated counter clockwise.
207        readonly attribute long orientation;
208#endif
209
210                 attribute [Replaceable] Console console;
211
212        // cross-document messaging
213#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
214        [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] Array messagePorts, in DOMString targetOrigin)
215            raises(DOMException);
216#else
217        // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
218        [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
219            raises(DOMException);
220#endif
221
222#if defined(ENABLE_WEB_TIMING) && ENABLE_WEB_TIMING
223        attribute [Replaceable] Performance performance;
224#endif
225
226        // Timers
227        [Custom] long setTimeout(in TimeoutHandler handler, in long timeout);
228        // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
229        // [Custom] long setTimeout(in DOMString code, in long timeout);
230        void clearTimeout(in long handle);
231        [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
232        // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
233        // [Custom] long setInterval(in DOMString code, in long timeout);
234        void clearInterval(in long handle);
235
236#if defined(ENABLE_REQUEST_ANIMATION_FRAME)
237        // WebKit animation extensions
238        long webkitRequestAnimationFrame(in [Callback] RequestAnimationFrameCallback callback, in Element element);
239        void webkitCancelRequestAnimationFrame(in long id);
240#endif
241
242        // Base64
243        DOMString atob(in [ConvertNullToNullString] DOMString string)
244            raises(DOMException);
245        DOMString btoa(in [ConvertNullToNullString] DOMString string)
246            raises(DOMException);
247
248        // Events
249        attribute EventListener onabort;
250        attribute EventListener onbeforeunload;
251        attribute EventListener onblur;
252        attribute EventListener oncanplay;
253        attribute EventListener oncanplaythrough;
254        attribute EventListener onchange;
255        attribute EventListener onclick;
256        attribute EventListener oncontextmenu;
257        attribute EventListener ondblclick;
258        attribute EventListener ondrag;
259        attribute EventListener ondragend;
260        attribute EventListener ondragenter;
261        attribute EventListener ondragleave;
262        attribute EventListener ondragover;
263        attribute EventListener ondragstart;
264        attribute EventListener ondrop;
265        attribute EventListener ondurationchange;
266        attribute EventListener onemptied;
267        attribute EventListener onended;
268        attribute EventListener onerror;
269        attribute EventListener onfocus;
270        attribute EventListener onhashchange;
271        attribute EventListener oninput;
272        attribute EventListener oninvalid;
273        attribute EventListener onkeydown;
274        attribute EventListener onkeypress;
275        attribute EventListener onkeyup;
276        attribute EventListener onload;
277        attribute EventListener onloadeddata;
278        attribute EventListener onloadedmetadata;
279        attribute EventListener onloadstart;
280        attribute EventListener onmessage;
281        attribute EventListener onmousedown;
282        attribute EventListener onmousemove;
283        attribute EventListener onmouseout;
284        attribute EventListener onmouseover;
285        attribute EventListener onmouseup;
286        attribute EventListener onmousewheel;
287        attribute EventListener onoffline;
288        attribute EventListener ononline;
289        attribute EventListener onpagehide;
290        attribute EventListener onpageshow;
291        attribute EventListener onpause;
292        attribute EventListener onplay;
293        attribute EventListener onplaying;
294        attribute EventListener onpopstate;
295        attribute EventListener onprogress;
296        attribute EventListener onratechange;
297        attribute EventListener onresize;
298        attribute EventListener onscroll;
299        attribute EventListener onseeked;
300        attribute EventListener onseeking;
301        attribute EventListener onselect;
302        attribute EventListener onstalled;
303        attribute EventListener onstorage;
304        attribute EventListener onsubmit;
305        attribute EventListener onsuspend;
306        attribute EventListener ontimeupdate;
307        attribute EventListener onunload;
308        attribute EventListener onvolumechange;
309        attribute EventListener onwaiting;
310
311        // Not implemented yet.
312        // attribute EventListener onafterprint;
313        // attribute EventListener onbeforeprint;
314        // attribute EventListener onreadystatechange;
315        // attribute EventListener onredo;
316        // attribute EventListener onshow;
317        // attribute EventListener onundo;
318
319        // Webkit extensions
320        attribute EventListener onreset;
321        attribute EventListener onsearch;
322        attribute EventListener onwebkitanimationend;
323        attribute EventListener onwebkitanimationiteration;
324        attribute EventListener onwebkitanimationstart;
325        attribute EventListener onwebkittransitionend;
326#if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
327        attribute EventListener onorientationchange;
328#endif
329        attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchstart;
330        attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchmove;
331        attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchend;
332        attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchcancel;
333
334        attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] DeviceMotionEventConstructor DeviceMotionEvent;
335        attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] EventListener ondevicemotion;
336        attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] DeviceOrientationEventConstructor DeviceOrientationEvent;
337        attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] EventListener ondeviceorientation;
338
339        // EventTarget interface
340        [Custom] void addEventListener(in DOMString type,
341                                      in EventListener listener,
342                                      in boolean useCapture);
343        [Custom] void removeEventListener(in DOMString type,
344                                          in EventListener listener,
345                                          in boolean useCapture);
346        boolean dispatchEvent(in Event evt)
347            raises(EventException);
348
349        [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
350        [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
351
352#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
353        // Global constructors
354        attribute StyleSheetConstructor StyleSheet;
355        attribute CSSStyleSheetConstructor CSSStyleSheet;
356
357        attribute CSSValueConstructor CSSValue;
358        attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
359        attribute CSSValueListConstructor CSSValueList;
360        attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
361
362        attribute CSSRuleConstructor CSSRule;
363        attribute CSSCharsetRuleConstructor CSSCharsetRule;
364        attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
365        attribute CSSImportRuleConstructor CSSImportRule;
366        attribute CSSMediaRuleConstructor CSSMediaRule;
367        attribute CSSPageRuleConstructor CSSPageRule;
368        attribute CSSStyleRuleConstructor CSSStyleRule;
369
370        attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
371        attribute MediaListConstructor MediaList;
372        attribute CounterConstructor Counter;
373        attribute CSSRuleListConstructor CSSRuleList;
374        attribute RectConstructor Rect;
375        attribute RGBColorConstructor RGBColor;
376        attribute StyleSheetListConstructor StyleSheetList;
377
378        // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
379        attribute DOMCoreExceptionConstructor DOMException;
380        attribute DOMStringListConstructor DOMStringList;
381//        attribute NameListConstructor NameList;
382//        attribute DOMImplementationListConstructor DOMImplementationList;
383//        attribute DOMImplementationSourceConstructor DOMImplementationSource;
384        attribute DOMImplementationConstructor DOMImplementation;
385        attribute DOMSettableTokenListConstructor DOMSettableTokenList;
386        attribute DOMTokenListConstructor DOMTokenList;
387        attribute DocumentFragmentConstructor DocumentFragment;
388        attribute DocumentConstructor Document;
389        attribute NodeConstructor Node;
390        attribute NodeListConstructor NodeList;
391        attribute NamedNodeMapConstructor NamedNodeMap;
392        attribute CharacterDataConstructor CharacterData;
393        attribute AttrConstructor Attr;
394        attribute ElementConstructor Element;
395        attribute TextConstructor Text;
396        attribute CommentConstructor Comment;
397//        attribute TypeInfoConstructor TypeInfo;
398//        attribute UserDataHandlerConstructor UserDataHandler;
399//        attribute DOMErrorConstructor DOMError;
400//        attribute DOMErrorHandlerConstructor DOMErrorHandler
401//        attribute DOMLocatorConstructor DOMLocator;
402//        attribute DOMConfigurationConstructor DOMConfiguration;
403        attribute CDATASectionConstructor CDATASection;
404        attribute DocumentTypeConstructor DocumentType;
405        attribute NotationConstructor Notation;
406        attribute EntityConstructor Entity;
407        attribute EntityReferenceConstructor EntityReference;
408        attribute ProcessingInstructionConstructor ProcessingInstruction;
409
410        attribute HTMLDocumentConstructor HTMLDocument;
411
412        attribute HTMLElementConstructor HTMLElement;
413        attribute HTMLAnchorElementConstructor HTMLAnchorElement;
414        attribute HTMLAppletElementConstructor HTMLAppletElement;
415        attribute HTMLAreaElementConstructor HTMLAreaElement;
416        attribute HTMLBRElementConstructor HTMLBRElement;
417        attribute HTMLBaseElementConstructor HTMLBaseElement;
418        attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
419        attribute HTMLBlockquoteElementConstructor HTMLBlockquoteElement;
420        attribute HTMLBodyElementConstructor HTMLBodyElement;
421        attribute HTMLButtonElementConstructor HTMLButtonElement;
422        attribute HTMLCanvasElementConstructor HTMLCanvasElement;
423        attribute HTMLDListElementConstructor HTMLDListElement;
424        attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
425        attribute HTMLDivElementConstructor HTMLDivElement;
426        attribute HTMLEmbedElementConstructor HTMLEmbedElement;
427        attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
428        attribute HTMLFontElementConstructor HTMLFontElement;
429        attribute HTMLFormElementConstructor HTMLFormElement;
430        attribute HTMLFrameElementConstructor HTMLFrameElement;
431        attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
432        attribute HTMLHRElementConstructor HTMLHRElement;
433        attribute HTMLHeadElementConstructor HTMLHeadElement;
434        attribute HTMLHeadingElementConstructor HTMLHeadingElement;
435        attribute HTMLHtmlElementConstructor HTMLHtmlElement;
436        attribute HTMLIFrameElementConstructor HTMLIFrameElement;
437        attribute HTMLImageElementConstructor HTMLImageElement;
438        attribute HTMLInputElementConstructor HTMLInputElement;
439        attribute HTMLIsIndexElementConstructor HTMLIsIndexElement;
440        attribute HTMLKeygenElementConstructor HTMLKeygenElement;
441        attribute HTMLLIElementConstructor HTMLLIElement;
442        attribute HTMLLabelElementConstructor HTMLLabelElement;
443        attribute HTMLLegendElementConstructor HTMLLegendElement;
444        attribute HTMLLinkElementConstructor HTMLLinkElement;
445        attribute HTMLMapElementConstructor HTMLMapElement;
446        attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
447        attribute HTMLMenuElementConstructor HTMLMenuElement;
448        attribute HTMLMetaElementConstructor HTMLMetaElement;
449#if defined(ENABLE_METER_TAG) && ENABLE_METER_TAG
450        attribute HTMLMeterElementConstructor HTMLMeterElement;
451#endif
452        attribute HTMLModElementConstructor HTMLModElement;
453        attribute HTMLOListElementConstructor HTMLOListElement;
454        attribute HTMLObjectElementConstructor HTMLObjectElement;
455        attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
456        attribute HTMLOptionElementConstructor HTMLOptionElement;
457        attribute HTMLOutputElementConstructor HTMLOutputElement;
458        attribute HTMLParagraphElementConstructor HTMLParagraphElement;
459        attribute HTMLParamElementConstructor HTMLParamElement;
460        attribute HTMLPreElementConstructor HTMLPreElement;
461#if defined(ENABLE_PROGRESS_TAG) && ENABLE_PROGRESS_TAG
462        attribute HTMLProgressElementConstructor HTMLProgressElement;
463#endif
464        attribute HTMLQuoteElementConstructor HTMLQuoteElement;
465        attribute HTMLScriptElementConstructor HTMLScriptElement;
466        attribute HTMLSelectElementConstructor HTMLSelectElement;
467        attribute HTMLStyleElementConstructor HTMLStyleElement;
468        attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
469        attribute HTMLTableCellElementConstructor HTMLTableCellElement;
470        attribute HTMLTableColElementConstructor HTMLTableColElement;
471        attribute HTMLTableElementConstructor HTMLTableElement;
472        attribute HTMLTableRowElementConstructor HTMLTableRowElement;
473        attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
474        attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
475        attribute HTMLTitleElementConstructor HTMLTitleElement;
476        attribute HTMLUListElementConstructor HTMLUListElement;
477
478        attribute HTMLCollectionConstructor HTMLCollection;
479        attribute HTMLAllCollectionConstructor HTMLAllCollection;
480
481        attribute [CustomGetter] HTMLImageElementConstructor Image; // Usable with new operator
482        attribute [CustomGetter] HTMLOptionElementConstructor Option; // Usable with new operator
483
484        attribute CanvasPatternConstructor CanvasPattern;
485        attribute CanvasGradientConstructor CanvasGradient;
486        attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
487        attribute ImageDataConstructor ImageData;
488        attribute [Conditional=WEBGL] WebGLActiveInfoConstructor WebGLActiveInfo;
489        attribute [Conditional=WEBGL] WebGLBufferConstructor WebGLBuffer;
490        attribute [Conditional=WEBGL] WebGLFramebufferConstructor WebGLFramebuffer;
491        attribute [Conditional=WEBGL] WebGLProgramConstructor WebGLProgram;
492        attribute [Conditional=WEBGL] WebGLRenderbufferConstructor WebGLRenderbuffer;
493        attribute [Conditional=WEBGL] WebGLRenderingContextConstructor WebGLRenderingContext;
494        attribute [Conditional=WEBGL] WebGLShaderConstructor WebGLShader;
495        attribute [Conditional=WEBGL] WebGLTextureConstructor WebGLTexture;
496        attribute [Conditional=WEBGL] WebGLUniformLocationConstructor WebGLUniformLocation;
497        attribute TextMetricsConstructor TextMetrics;
498
499        attribute DOMStringMapConstructor DOMStringMap;
500
501        attribute [JSCCustomGetter] ArrayBufferConstructor ArrayBuffer; // Usable with new operator
502        attribute [JSCCustomGetter] Int8ArrayConstructor Int8Array; // Usable with new operator
503        attribute [JSCCustomGetter] Uint8ArrayConstructor Uint8Array; // Usable with new operator
504        attribute [JSCCustomGetter] Int16ArrayConstructor Int16Array; // Usable with new operator
505        attribute [JSCCustomGetter] Uint16ArrayConstructor Uint16Array; // Usable with new operator
506        attribute [JSCCustomGetter] Int32ArrayConstructor Int32Array; // Usable with new operator
507        attribute [JSCCustomGetter] Uint32ArrayConstructor Uint32Array; // Usable with new operator
508        attribute [JSCCustomGetter] Float32ArrayConstructor Float32Array; // Usable with new operator
509        attribute [JSCCustomGetter] DataViewConstructor DataView; // Usable with new operator
510
511        attribute [JSCCustomGetter,Conditional=WEB_AUDIO,EnabledAtRuntime] AudioContextConstructor webkitAudioContext; // Usable with new operator
512        attribute [Conditional=WEB_AUDIO] AudioPannerNodeConstructor webkitAudioPannerNode; // Needed for panning model constants
513
514        attribute EventConstructor Event;
515        attribute BeforeLoadEventConstructor BeforeLoadEvent;
516        attribute HashChangeEventConstructor HashChangeEvent;
517        attribute KeyboardEventConstructor KeyboardEvent;
518        attribute MouseEventConstructor MouseEvent;
519        attribute MutationEventConstructor MutationEvent;
520        attribute OverflowEventConstructor OverflowEvent;
521        attribute PageTransitionEventConstructor PageTransitionEvent;
522        attribute ProgressEventConstructor ProgressEvent;
523        attribute TextEventConstructor TextEvent;
524        attribute UIEventConstructor UIEvent;
525        attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
526        attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
527        attribute WheelEventConstructor WheelEvent;
528        attribute MessageEventConstructor MessageEvent;
529        attribute EventExceptionConstructor EventException;
530
531        attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
532        attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
533
534        attribute [JSCCustomGetter] WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
535
536        attribute [JSCCustomGetter] WebKitPointConstructor WebKitPoint; // Usable with new the operator
537
538        attribute ClipboardConstructor Clipboard;
539
540        attribute FileConstructor File;
541        attribute FileListConstructor FileList;
542        attribute BlobConstructor Blob;
543
544        attribute NodeFilterConstructor NodeFilter;
545        attribute RangeConstructor Range;
546        attribute RangeExceptionConstructor RangeException;
547
548#if ENABLE_EVENTSOURCE
549        attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
550#endif
551
552        // Mozilla has a separate XMLDocument object for XML documents.
553        // We just use Document for this.
554        attribute DocumentConstructor XMLDocument;
555
556        attribute DOMParserConstructor DOMParser;
557        attribute XMLSerializerConstructor XMLSerializer;
558
559        attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
560        attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
561        attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
562
563        attribute [JSCCustomGetter,Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
564
565#if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
566        attribute MessagePortConstructor MessagePort;
567        attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel; // Usable with the new operator
568#endif
569
570#if defined(ENABLE_WORKERS) && ENABLE_WORKERS
571        attribute [JSCCustomGetter] WorkerConstructor Worker; // Usable with the new operator
572#endif
573
574#if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
575        attribute [JSCCustomGetter, EnabledAtRuntime] SharedWorkerConstructor SharedWorker; // Usable with the new operator
576#endif
577
578#if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
579        attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
580#endif
581
582        attribute DOMPluginConstructor Plugin;
583        attribute DOMPluginArrayConstructor PluginArray;
584
585        attribute DOMMimeTypeConstructor MimeType;
586        attribute DOMMimeTypeArrayConstructor MimeTypeArray;
587
588        attribute ClientRectConstructor ClientRect;
589        attribute ClientRectListConstructor ClientRectList;
590
591#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
592        attribute StorageConstructor Storage;
593        attribute StorageEventConstructor StorageEvent;
594#endif
595
596        attribute [CustomGetter, Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor Audio; // Usable with the new operator
597        attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
598        attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
599        attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
600        attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
601        attribute [Conditional=VIDEO, EnabledAtRuntime] TimeRangesConstructor TimeRanges;
602
603#if defined(ENABLE_ANIMATION_API) && ENABLE_ANIMATION_API
604        attribute WebKitAnimationConstructor WebKitAnimation;
605        attribute WebKitAnimationListConstructor WebKitAnimationList;
606#endif
607
608#if defined(ENABLE_XPATH) && ENABLE_XPATH
609        attribute XPathEvaluatorConstructor XPathEvaluator;
610        attribute XPathResultConstructor XPathResult;
611        attribute XPathExceptionConstructor XPathException;
612#endif
613
614#if defined(ENABLE_SVG) && ENABLE_SVG
615        // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
616        // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
617        // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
618        // SVGStylable, SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
619        attribute SVGAElementConstructor SVGAElement;
620        attribute SVGAngleConstructor SVGAngle;
621        attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
622        attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
623        attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
624        attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
625        attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
626        attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
627        attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
628        attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
629        attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
630        attribute SVGAnimatedRectConstructor SVGAnimatedRect;
631        attribute SVGAnimatedStringConstructor SVGAnimatedString;
632        attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
633        attribute SVGCircleElementConstructor SVGCircleElement;
634        attribute SVGClipPathElementConstructor SVGClipPathElement;
635        attribute SVGColorConstructor SVGColor;
636        attribute SVGCursorElementConstructor SVGCursorElement;
637//      attribute SVGCSSRuleConstructor SVGCSSRule;
638        attribute SVGDefsElementConstructor SVGDefsElement;
639        attribute SVGDescElementConstructor SVGDescElement;
640        attribute SVGDocumentConstructor SVGDocument;
641        attribute SVGElementConstructor SVGElement;
642        attribute SVGElementInstanceConstructor SVGElementInstance;
643        attribute SVGElementInstanceListConstructor SVGElementInstanceList;
644        attribute SVGEllipseElementConstructor SVGEllipseElement;
645        attribute SVGExceptionConstructor SVGException;
646        attribute SVGGElementConstructor SVGGElement;
647        attribute SVGGradientElementConstructor SVGGradientElement;
648        attribute SVGImageElementConstructor SVGImageElement;
649        attribute SVGLengthConstructor SVGLength;
650        attribute SVGLengthListConstructor SVGLengthList;
651        attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
652        attribute SVGLineElementConstructor SVGLineElement;
653        attribute SVGMarkerElementConstructor SVGMarkerElement;
654        attribute SVGMaskElementConstructor SVGMaskElement;
655        attribute SVGMatrixConstructor SVGMatrix;
656        attribute SVGMetadataElementConstructor SVGMetadataElement;
657        attribute SVGNumberConstructor SVGNumber;
658        attribute SVGNumberListConstructor SVGNumberList;
659        attribute SVGPaintConstructor SVGPaint;
660        attribute SVGPathElementConstructor SVGPathElement;
661        attribute SVGPathSegConstructor SVGPathSeg;
662        attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
663        attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
664        attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
665        attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
666        attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
667        attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
668        attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
669        attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
670        attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
671        attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
672        attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
673        attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
674        attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
675        attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
676        attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
677        attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
678        attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
679        attribute SVGPathSegListConstructor SVGPathSegList;
680        attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
681        attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
682        attribute SVGPatternElementConstructor SVGPatternElement;
683        attribute SVGPointConstructor SVGPoint;
684        attribute SVGPointListConstructor SVGPointList;
685        attribute SVGPolygonElementConstructor SVGPolygonElement;
686        attribute SVGPolylineElementConstructor SVGPolylineElement;
687        attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
688        attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
689        attribute SVGRectConstructor SVGRect;
690        attribute SVGRectElementConstructor SVGRectElement;
691        attribute SVGRenderingIntentConstructor SVGRenderingIntent;
692        attribute SVGScriptElementConstructor SVGScriptElement;
693        attribute SVGStopElementConstructor SVGStopElement;
694        attribute SVGStringListConstructor SVGStringList;
695        attribute SVGStyleElementConstructor SVGStyleElement;
696        attribute SVGSVGElementConstructor SVGSVGElement;
697        attribute SVGSwitchElementConstructor SVGSwitchElement;
698        attribute SVGSymbolElementConstructor SVGSymbolElement;
699        attribute SVGTextContentElementConstructor SVGTextContentElement;
700        attribute SVGTextElementConstructor SVGTextElement;
701        attribute SVGTextPathElementConstructor SVGTextPathElement;
702        attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
703        attribute SVGTitleElementConstructor SVGTitleElement;
704        attribute SVGTransformConstructor SVGTransform;
705        attribute SVGTransformListConstructor SVGTransformList;
706        attribute SVGTRefElementConstructor SVGTRefElement;
707        attribute SVGTSpanElementConstructor SVGTSpanElement;
708        attribute SVGUnitTypesConstructor SVGUnitTypes;
709        attribute SVGUseElementConstructor SVGUseElement;
710        attribute SVGViewElementConstructor SVGViewElement;
711//      attribute SVGViewSpecConstructor SVGViewSpec;
712        attribute SVGZoomEventConstructor SVGZoomEvent;
713
714#if defined(ENABLE_SVG_ANIMATION) && ENABLE_SVG_ANIMATION
715        attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
716        attribute SVGAnimateElementConstructor SVGAnimateElement;
717//      attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
718        attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
719//      attribute SVGMPathElementConstructor SVGMPathElement;
720        attribute SVGSetElementConstructor SVGSetElement;
721#endif
722
723#if defined(ENABLE_SVG_FONTS) && ENABLE_SVG_FONTS
724//      attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
725        attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
726//      attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
727//      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
728        attribute SVGFontElementConstructor SVGFontElement;
729        attribute SVGFontFaceElementConstructor SVGFontFaceElement;
730        attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
731        attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
732        attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
733        attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
734        attribute SVGGlyphElementConstructor SVGGlyphElement;
735//      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
736        attribute SVGHKernElementConstructor SVGHKernElement;
737        attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
738        attribute SVGVKernElementConstructor SVGVKernElement;
739#endif
740
741#if defined(ENABLE_SVG_FOREIGN_OBJECT) && ENABLE_SVG_FOREIGN_OBJECT
742        attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
743#endif
744
745#if defined(ENABLE_FILTERS) && ENABLE_FILTERS
746        attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
747        attribute SVGFEBlendElementConstructor SVGFEBlendElement;
748        attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
749        attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
750        attribute SVGFECompositeElementConstructor SVGFECompositeElement;
751        attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
752        attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
753        attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
754        attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
755        attribute SVGFEDropShadowElementConstructor SVGFEDropShadowElement;
756        attribute SVGFEFloodElementConstructor SVGFEFloodElement;
757        attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
758        attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
759        attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
760        attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
761        attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
762        attribute SVGFEImageElementConstructor SVGFEImageElement;
763        attribute SVGFEMergeElementConstructor SVGFEMergeElement;
764        attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
765        attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
766        attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
767        attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
768        attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
769        attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
770        attribute SVGFETileElementConstructor SVGFETileElement;
771        attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
772        attribute SVGFilterElementConstructor SVGFilterElement;
773#endif
774#endif
775
776        attribute [Conditional=DATABASE] SQLExceptionConstructor SQLException;
777
778        attribute [Conditional=TOUCH_EVENTS] TouchEventConstructor TouchEvent;
779
780        attribute DOMFormDataConstructor FormData;
781
782        attribute [Conditional=BLOB|FILE_SYSTEM] FileErrorConstructor FileError;
783        attribute [Conditional=BLOB] FileReaderConstructor FileReader;
784
785        attribute [Conditional=BLOB] WebKitBlobBuilderConstructor WebKitBlobBuilder;
786
787        readonly attribute [Conditional=BLOB] DOMURL webkitURL;
788
789#if defined(ENABLE_QUOTA) && ENABLE_QUOTA
790        readonly attribute [EnabledAtRuntime=Quota] StorageInfo webkitStorageInfo;
791#endif
792
793#endif // defined(LANGUAGE_JAVASCRIPT)
794
795#if defined(V8_BINDING) && V8_BINDING
796        // window.toString() requires special handling in V8
797        [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
798#endif // defined(V8_BINDING)
799    };
800
801}
802
803