WebCore: Adding support for the optional creation callback that could be
[WebKit-https.git] / WebCore / page / DOMWindow.idl
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, Custom] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in DatabaseCallback creationCallback)
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         DOMString atob(in [ConvertNullToNullString] DOMString string)
208             raises(DOMException);
209         DOMString btoa(in [ConvertNullToNullString] DOMString string)
210             raises(DOMException);
211
212         // Events
213         attribute EventListener onabort;
214         attribute EventListener onbeforeunload;
215         attribute EventListener onblur;
216         attribute EventListener oncanplay;
217         attribute EventListener oncanplaythrough;
218         attribute EventListener onchange;
219         attribute EventListener onclick;
220         attribute EventListener oncontextmenu;
221         attribute EventListener ondblclick;
222         attribute EventListener ondrag;
223         attribute EventListener ondragend;
224         attribute EventListener ondragenter;
225         attribute EventListener ondragleave;
226         attribute EventListener ondragover;
227         attribute EventListener ondragstart;
228         attribute EventListener ondrop;
229         attribute EventListener ondurationchange;
230         attribute EventListener onemptied;
231         attribute EventListener onended;
232         attribute EventListener onerror;
233         attribute EventListener onfocus;
234         attribute EventListener onhashchange;
235         attribute EventListener oninput;
236         attribute EventListener oninvalid;
237         attribute EventListener onkeydown;
238         attribute EventListener onkeypress;
239         attribute EventListener onkeyup;
240         attribute EventListener onload;
241         attribute EventListener onloadeddata;
242         attribute EventListener onloadedmetadata;
243         attribute EventListener onloadstart;
244         attribute EventListener onmessage;
245         attribute EventListener onmousedown;
246         attribute EventListener onmousemove;
247         attribute EventListener onmouseout;
248         attribute EventListener onmouseover;
249         attribute EventListener onmouseup;
250         attribute EventListener onmousewheel;
251         attribute EventListener onoffline;
252         attribute EventListener ononline;
253         attribute EventListener onpagehide;
254         attribute EventListener onpageshow;
255         attribute EventListener onpause;
256         attribute EventListener onplay;
257         attribute EventListener onplaying;
258         attribute EventListener onpopstate;
259         attribute EventListener onprogress;
260         attribute EventListener onratechange;
261         attribute EventListener onresize;
262         attribute EventListener onscroll;
263         attribute EventListener onseeked;
264         attribute EventListener onseeking;
265         attribute EventListener onselect;
266         attribute EventListener onstalled;
267         attribute EventListener onstorage;
268         attribute EventListener onsubmit;
269         attribute EventListener onsuspend;
270         attribute EventListener ontimeupdate;
271         attribute EventListener onunload;
272         attribute EventListener onvolumechange;
273         attribute EventListener onwaiting;
274
275         // Not implemented yet.
276         // attribute EventListener onafterprint;
277         // attribute EventListener onbeforeprint;
278         // attribute EventListener onformchange;
279         // attribute EventListener onforminput;
280         // attribute EventListener onreadystatechange;
281         // attribute EventListener onredo;
282         // attribute EventListener onshow;
283         // attribute EventListener onundo;
284
285         // Webkit extensions
286         attribute EventListener onreset;
287         attribute EventListener onsearch;
288         attribute EventListener onwebkitanimationend;
289         attribute EventListener onwebkitanimationiteration;
290         attribute EventListener onwebkitanimationstart;
291         attribute EventListener onwebkittransitionend;
292 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
293         attribute EventListener onorientationchange;
294 #endif
295  #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
296         attribute [DontEnum] EventListener ontouchstart;
297         attribute [DontEnum] EventListener ontouchmove;
298         attribute [DontEnum] EventListener ontouchend;
299         attribute [DontEnum] EventListener ontouchcancel;
300  #endif
301
302         // EventTarget interface
303         [Custom] void addEventListener(in DOMString type,
304                                       in EventListener listener,
305                                       in boolean useCapture);
306         [Custom] void removeEventListener(in DOMString type,
307                                           in EventListener listener,
308                                           in boolean useCapture);
309         boolean dispatchEvent(in Event evt)
310             raises(EventException);
311
312         [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
313         [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
314
315 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
316         // Global constructors
317         attribute StyleSheetConstructor StyleSheet;
318         attribute CSSStyleSheetConstructor CSSStyleSheet;
319
320         attribute CSSValueConstructor CSSValue;
321         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
322         attribute CSSValueListConstructor CSSValueList;
323         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
324
325         attribute CSSRuleConstructor CSSRule;
326         attribute CSSCharsetRuleConstructor CSSCharsetRule;
327         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
328         attribute CSSImportRuleConstructor CSSImportRule;
329         attribute CSSMediaRuleConstructor CSSMediaRule;
330         attribute CSSPageRuleConstructor CSSPageRule;
331         attribute CSSStyleRuleConstructor CSSStyleRule;
332         
333         attribute CSSVariablesRuleConstructor CSSVariablesRule;
334         attribute CSSVariablesDeclarationConstructor CSSVariablesDeclaration;
335
336         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
337         attribute MediaListConstructor MediaList;
338         attribute CounterConstructor Counter;
339         attribute CSSRuleListConstructor CSSRuleList;
340         attribute RectConstructor Rect;
341         attribute RGBColorConstructor RGBColor;
342         attribute StyleSheetListConstructor StyleSheetList;
343
344         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
345         attribute DOMCoreExceptionConstructor DOMException;
346 //        attribute DOMStringListConstructor DOMStringList;
347 //        attribute NameListConstructor NameList;
348 //        attribute DOMImplementationListConstructor DOMImplementationList;
349 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
350         attribute DOMImplementationConstructor DOMImplementation;
351         attribute DocumentFragmentConstructor DocumentFragment;
352         attribute DocumentConstructor Document;
353         attribute NodeConstructor Node;
354         attribute NodeListConstructor NodeList;
355         attribute NamedNodeMapConstructor NamedNodeMap;
356         attribute CharacterDataConstructor CharacterData;
357         attribute AttrConstructor Attr;
358         attribute ElementConstructor Element;
359         attribute TextConstructor Text;
360         attribute CommentConstructor Comment;
361 //        attribute TypeInfoConstructor TypeInfo;
362 //        attribute UserDataHandlerConstructor UserDataHandler;
363 //        attribute DOMErrorConstructor DOMError;
364 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
365 //        attribute DOMLocatorConstructor DOMLocator;
366 //        attribute DOMConfigurationConstructor DOMConfiguration;
367         attribute CDATASectionConstructor CDATASection;
368         attribute DocumentTypeConstructor DocumentType;
369         attribute NotationConstructor Notation;
370         attribute EntityConstructor Entity;
371         attribute EntityReferenceConstructor EntityReference;
372         attribute ProcessingInstructionConstructor ProcessingInstruction;
373
374         attribute HTMLDocumentConstructor HTMLDocument;
375
376         attribute HTMLElementConstructor HTMLElement;
377         attribute HTMLAnchorElementConstructor HTMLAnchorElement;
378         attribute HTMLAppletElementConstructor HTMLAppletElement;
379         attribute HTMLAreaElementConstructor HTMLAreaElement;
380         attribute HTMLBRElementConstructor HTMLBRElement;
381         attribute HTMLBaseElementConstructor HTMLBaseElement;
382         attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
383         attribute HTMLBlockquoteElementConstructor HTMLBlockquoteElement;
384         attribute HTMLBodyElementConstructor HTMLBodyElement;
385         attribute HTMLButtonElementConstructor HTMLButtonElement;
386         attribute HTMLCanvasElementConstructor HTMLCanvasElement;
387         attribute [Conditional=DATAGRID] HTMLDataGridElementConstructor HTMLDataGridElement;
388         attribute [Conditional=DATAGRID] HTMLDataGridCellElementConstructor HTMLDataGridCellElement;
389         attribute [Conditional=DATAGRID] HTMLDataGridColElementConstructor HTMLDataGridColElement;
390         attribute HTMLDListElementConstructor HTMLDListElement;
391         attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
392         attribute HTMLDivElementConstructor HTMLDivElement;
393         attribute HTMLEmbedElementConstructor HTMLEmbedElement;
394         attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
395         attribute HTMLFontElementConstructor HTMLFontElement;
396         attribute HTMLFormElementConstructor HTMLFormElement;
397         attribute HTMLFrameElementConstructor HTMLFrameElement;
398         attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
399         attribute HTMLHRElementConstructor HTMLHRElement;
400         attribute HTMLHeadElementConstructor HTMLHeadElement;
401         attribute HTMLHeadingElementConstructor HTMLHeadingElement;
402         attribute HTMLHtmlElementConstructor HTMLHtmlElement;
403         attribute HTMLIFrameElementConstructor HTMLIFrameElement;
404         attribute HTMLImageElementConstructor HTMLImageElement;
405         attribute HTMLInputElementConstructor HTMLInputElement;
406         attribute HTMLIsIndexElementConstructor HTMLIsIndexElement;
407         attribute HTMLLIElementConstructor HTMLLIElement;
408         attribute HTMLLabelElementConstructor HTMLLabelElement;
409         attribute HTMLLegendElementConstructor HTMLLegendElement;
410         attribute HTMLLinkElementConstructor HTMLLinkElement;
411         attribute HTMLMapElementConstructor HTMLMapElement;
412         attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
413         attribute HTMLMenuElementConstructor HTMLMenuElement;
414         attribute HTMLMetaElementConstructor HTMLMetaElement;
415         attribute HTMLModElementConstructor HTMLModElement;
416         attribute HTMLOListElementConstructor HTMLOListElement;
417         attribute HTMLObjectElementConstructor HTMLObjectElement;
418         attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
419         attribute HTMLOptionElementConstructor HTMLOptionElement;
420         attribute HTMLParagraphElementConstructor HTMLParagraphElement;
421         attribute HTMLParamElementConstructor HTMLParamElement;
422         attribute HTMLPreElementConstructor HTMLPreElement;
423         attribute HTMLQuoteElementConstructor HTMLQuoteElement;
424         attribute HTMLScriptElementConstructor HTMLScriptElement;
425         attribute HTMLSelectElementConstructor HTMLSelectElement;
426         attribute HTMLStyleElementConstructor HTMLStyleElement;
427         attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
428         attribute HTMLTableCellElementConstructor HTMLTableCellElement;
429         attribute HTMLTableColElementConstructor HTMLTableColElement;
430         attribute HTMLTableElementConstructor HTMLTableElement;
431         attribute HTMLTableRowElementConstructor HTMLTableRowElement;
432         attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
433         attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
434         attribute HTMLTitleElementConstructor HTMLTitleElement;
435         attribute HTMLUListElementConstructor HTMLUListElement;
436
437         attribute HTMLCollectionConstructor HTMLCollection;
438         attribute HTMLAllCollectionConstructor HTMLAllCollection;
439
440         attribute [CustomGetter] HTMLImageElementConstructor Image; // Usable with new operator
441         attribute [CustomGetter] HTMLOptionElementConstructor Option; // Usable with new operator
442
443         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
444         attribute ImageDataConstructor ImageData;
445         attribute [Conditional=3D_CANVAS,EnabledAtRuntime] WebGLRenderingContextConstructor WebGLRenderingContext;
446         attribute TextMetricsConstructor TextMetrics;
447
448         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLArrayBufferConstructor WebGLArrayBuffer; // Usable with new operator
449         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLByteArrayConstructor WebGLByteArray; // Usable with new operator
450         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedByteArrayConstructor WebGLUnsignedByteArray; // Usable with new operator
451         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLShortArrayConstructor WebGLShortArray; // Usable with new operator
452         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedShortArrayConstructor WebGLUnsignedShortArray; // Usable with new operator
453         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLIntArrayConstructor WebGLIntArray; // Usable with new operator
454         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedIntArrayConstructor WebGLUnsignedIntArray; // Usable with new operator
455         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLFloatArrayConstructor WebGLFloatArray; // Usable with new operator
456
457         attribute EventConstructor Event;
458         attribute BeforeLoadEventConstructor BeforeLoadEvent;
459         attribute KeyboardEventConstructor KeyboardEvent;
460         attribute MouseEventConstructor MouseEvent;
461         attribute MutationEventConstructor MutationEvent;
462         attribute OverflowEventConstructor OverflowEvent;
463         attribute PageTransitionEventConstructor PageTransitionEvent;
464         attribute ProgressEventConstructor ProgressEvent;
465         attribute TextEventConstructor TextEvent;
466         attribute UIEventConstructor UIEvent;
467         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
468         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
469         attribute WheelEventConstructor WheelEvent;
470         attribute MessageEventConstructor MessageEvent;
471         attribute EventExceptionConstructor EventException;
472
473         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
474         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
475
476         attribute [JSCCustomGetter] WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
477
478         attribute [JSCCustomGetter] WebKitPointConstructor WebKitPoint; // Usable with new the operator
479
480         attribute ClipboardConstructor Clipboard;
481
482         attribute FileConstructor File;
483         attribute FileListConstructor FileList;
484         attribute BlobConstructor Blob;
485
486         attribute NodeFilterConstructor NodeFilter;
487         attribute RangeConstructor Range;
488         attribute RangeExceptionConstructor RangeException;
489
490 #if ENABLE_EVENTSOURCE
491         attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
492 #endif
493
494         // Mozilla has a separate XMLDocument object for XML documents. 
495         // We just use Document for this.
496         attribute DocumentConstructor XMLDocument;
497
498         attribute DOMParserConstructor DOMParser;
499         attribute XMLSerializerConstructor XMLSerializer;
500
501         attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
502         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
503         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
504
505         attribute [JSCCustomGetter,Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
506
507 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
508         attribute MessagePortConstructor MessagePort;
509         attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel; // Usable with the new operator
510 #endif
511
512 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
513         attribute [JSCCustomGetter] WorkerConstructor Worker; // Usable with the new operator
514 #endif
515
516 #if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
517         attribute [JSCCustomGetter, EnabledAtRuntime] SharedWorkerConstructor SharedWorker; // Usable with the new operator
518 #endif
519
520 #if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
521         attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
522 #endif
523
524         attribute PluginConstructor Plugin;
525         attribute PluginArrayConstructor PluginArray;
526
527         attribute MimeTypeConstructor MimeType;
528         attribute MimeTypeArrayConstructor MimeTypeArray;
529
530         attribute ClientRectConstructor ClientRect;
531         attribute ClientRectListConstructor ClientRectList;
532
533 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
534         attribute StorageConstructor Storage;
535         attribute StorageEventConstructor StorageEvent;
536 #endif
537
538         attribute [CustomGetter, Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor Audio; // Usable with the new operator
539         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
540         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
541         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
542         attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
543
544 #if defined(ENABLE_XPATH) && ENABLE_XPATH
545         attribute XPathEvaluatorConstructor XPathEvaluator;
546         attribute XPathResultConstructor XPathResult;
547         attribute XPathExceptionConstructor XPathException;
548 #endif
549
550 #if defined(ENABLE_SVG) && ENABLE_SVG
551         // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
552         // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
553         // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
554         // SVGStylable, SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
555         attribute SVGAElementConstructor SVGAElement;
556         attribute SVGAngleConstructor SVGAngle;
557         attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
558         attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
559         attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
560         attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
561         attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
562         attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
563         attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
564         attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
565         attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
566         attribute SVGAnimatedRectConstructor SVGAnimatedRect;
567         attribute SVGAnimatedStringConstructor SVGAnimatedString;
568         attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
569         attribute SVGCircleElementConstructor SVGCircleElement;
570         attribute SVGClipPathElementConstructor SVGClipPathElement;
571         attribute SVGColorConstructor SVGColor;
572         attribute SVGCursorElementConstructor SVGCursorElement;
573 //      attribute SVGCSSRuleConstructor SVGCSSRule;
574         attribute SVGDefsElementConstructor SVGDefsElement;
575         attribute SVGDescElementConstructor SVGDescElement;
576         attribute SVGDocumentConstructor SVGDocument;
577         attribute SVGElementConstructor SVGElement;
578         attribute SVGElementInstanceConstructor SVGElementInstance;
579         attribute SVGElementInstanceListConstructor SVGElementInstanceList;
580         attribute SVGEllipseElementConstructor SVGEllipseElement;
581         attribute SVGExceptionConstructor SVGException;
582         attribute SVGGElementConstructor SVGGElement;
583         attribute SVGGradientElementConstructor SVGGradientElement;
584         attribute SVGImageElementConstructor SVGImageElement;
585         attribute SVGLengthConstructor SVGLength;
586         attribute SVGLengthListConstructor SVGLengthList;
587         attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
588         attribute SVGLineElementConstructor SVGLineElement;
589         attribute SVGMarkerElementConstructor SVGMarkerElement;
590         attribute SVGMaskElementConstructor SVGMaskElement;
591         attribute SVGMatrixConstructor SVGMatrix;
592         attribute SVGMetadataElementConstructor SVGMetadataElement;
593         attribute SVGNumberConstructor SVGNumber;
594         attribute SVGNumberListConstructor SVGNumberList;
595         attribute SVGPaintConstructor SVGPaint;
596         attribute SVGPathElementConstructor SVGPathElement;
597         attribute SVGPathSegConstructor SVGPathSeg;
598         attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
599         attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
600         attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
601         attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
602         attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
603         attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
604         attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
605         attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
606         attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
607         attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
608         attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
609         attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
610         attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
611         attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
612         attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
613         attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
614         attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
615         attribute SVGPathSegListConstructor SVGPathSegList;
616         attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
617         attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
618         attribute SVGPatternElementConstructor SVGPatternElement;
619         attribute SVGPointConstructor SVGPoint;
620         attribute SVGPointListConstructor SVGPointList;
621         attribute SVGPolygonElementConstructor SVGPolygonElement;
622         attribute SVGPolylineElementConstructor SVGPolylineElement;
623         attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
624         attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
625         attribute SVGRectConstructor SVGRect;
626         attribute SVGRectElementConstructor SVGRectElement;
627         attribute SVGRenderingIntentConstructor SVGRenderingIntent;
628         attribute SVGScriptElementConstructor SVGScriptElement;
629         attribute SVGStopElementConstructor SVGStopElement;
630         attribute SVGStringListConstructor SVGStringList;
631         attribute SVGStyleElementConstructor SVGStyleElement;
632         attribute SVGSVGElementConstructor SVGSVGElement;
633         attribute SVGSwitchElementConstructor SVGSwitchElement;
634         attribute SVGSymbolElementConstructor SVGSymbolElement;
635         attribute SVGTextContentElementConstructor SVGTextContentElement;
636         attribute SVGTextElementConstructor SVGTextElement;
637         attribute SVGTextPathElementConstructor SVGTextPathElement;
638         attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
639         attribute SVGTitleElementConstructor SVGTitleElement;
640         attribute SVGTransformConstructor SVGTransform;
641         attribute SVGTransformListConstructor SVGTransformList;
642         attribute SVGTRefElementConstructor SVGTRefElement;
643         attribute SVGTSpanElementConstructor SVGTSpanElement;
644         attribute SVGUnitTypesConstructor SVGUnitTypes;
645         attribute SVGUseElementConstructor SVGUseElement;
646         attribute SVGViewElementConstructor SVGViewElement;
647 //      attribute SVGViewSpecConstructor SVGViewSpec;
648         attribute SVGZoomEventConstructor SVGZoomEvent;
649
650 #if defined(ENABLE_SVG_ANIMATION) && ENABLE_SVG_ANIMATION
651         attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
652         attribute SVGAnimateElementConstructor SVGAnimateElement;
653 //      attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
654         attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
655 //      attribute SVGMPathElementConstructor SVGMPathElement;
656         attribute SVGSetElementConstructor SVGSetElement;
657 #endif
658
659 #if ENABLE_SVG_FONTS && ENABLE_SVG_FONTS
660 //      attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
661         attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
662 //      attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
663 //      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
664         attribute SVGFontElementConstructor SVGFontElement;
665         attribute SVGFontFaceElementConstructor SVGFontFaceElement;
666         attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
667         attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
668         attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
669         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
670         attribute SVGGlyphElementConstructor SVGGlyphElement;
671 //      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
672 //      attribute SVGHKernElementConstructor SVGHKernElement;
673         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
674 //      attribute SVGVKernElementConstructor SVGVKernElement;
675 #endif
676
677 #if defined(ENABLE_SVG_FOREIGN_OBJECT) && ENABLE_SVG_FOREIGN_OBJECT
678         attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
679 #endif
680
681 #if defined(ENABLE_FILTERS) && ENABLE_FILTERS
682         attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
683         attribute SVGFEBlendElementConstructor SVGFEBlendElement;
684         attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
685         attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
686         attribute SVGFECompositeElementConstructor SVGFECompositeElement;
687 //      attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
688         attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
689         attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
690         attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
691         attribute SVGFEFloodElementConstructor SVGFEFloodElement;
692         attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
693         attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
694         attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
695         attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
696         attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
697         attribute SVGFEImageElementConstructor SVGFEImageElement;
698         attribute SVGFEMergeElementConstructor SVGFEMergeElement;
699         attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
700         attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
701         attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
702         attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
703         attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
704         attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
705         attribute SVGFETileElementConstructor SVGFETileElement;
706         attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
707         attribute SVGFilterElementConstructor SVGFilterElement;
708 #endif
709 #endif
710
711 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
712         attribute TouchEventConstructor TouchEvent;
713 #endif
714
715 #endif // defined(LANGUAGE_JAVASCRIPT)
716
717 #if defined(V8_BINDING) && V8_BINDING
718         // window.toString() requires special handling in V8
719         [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
720 #endif // defined(V8_BINDING)
721     };
722
723 }
724