2010-04-27 Garret Kelly <gdk@chromium.org>
[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 StyleMedia styleMedia;
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             getter raises(DOMException);
170 #endif
171 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
172         readonly attribute [EnabledAtRuntime] NotificationCenter webkitNotifications;
173 #endif
174 #if defined(ENABLE_INDEXED_DATABASE) && ENABLE_INDEXED_DATABASE
175         readonly attribute [EnabledAtRuntime] IndexedDatabaseRequest indexedDB;
176 #endif
177
178 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
179         // This is the interface orientation in degrees. Some examples are:
180         //  0 is straight up; -90 is when the device is rotated 90 clockwise;
181         //  90 is when rotated counter clockwise.
182         readonly attribute long orientation;
183 #endif
184
185                  attribute [Replaceable] Console console;
186
187         // cross-document messaging
188 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
189         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] Array messagePorts, in DOMString targetOrigin)
190             raises(DOMException);
191 #else
192         // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
193         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
194             raises(DOMException);
195 #endif
196
197         // Timers
198         [Custom] long setTimeout(in TimeoutHandler handler, in long timeout);
199         // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
200         // [Custom] long setTimeout(in DOMString code, in long timeout);
201         void clearTimeout(in long handle);
202         [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
203         // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
204         // [Custom] long setInterval(in DOMString code, in long timeout);
205         void clearInterval(in long handle);
206
207         // Base64
208         DOMString atob(in [ConvertNullToNullString] DOMString string)
209             raises(DOMException);
210         DOMString btoa(in [ConvertNullToNullString] DOMString string)
211             raises(DOMException);
212
213         // Events
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         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchstart;
297         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchmove;
298         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchend;
299         attribute [DontEnum,Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchcancel;
300
301         // EventTarget interface
302         [Custom] void addEventListener(in DOMString type,
303                                       in EventListener listener,
304                                       in boolean useCapture);
305         [Custom] void removeEventListener(in DOMString type,
306                                           in EventListener listener,
307                                           in boolean useCapture);
308         boolean dispatchEvent(in Event evt)
309             raises(EventException);
310
311         [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
312         [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
313
314 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
315         // Global constructors
316         attribute StyleSheetConstructor StyleSheet;
317         attribute CSSStyleSheetConstructor CSSStyleSheet;
318
319         attribute CSSValueConstructor CSSValue;
320         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
321         attribute CSSValueListConstructor CSSValueList;
322         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
323
324         attribute CSSRuleConstructor CSSRule;
325         attribute CSSCharsetRuleConstructor CSSCharsetRule;
326         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
327         attribute CSSImportRuleConstructor CSSImportRule;
328         attribute CSSMediaRuleConstructor CSSMediaRule;
329         attribute CSSPageRuleConstructor CSSPageRule;
330         attribute CSSStyleRuleConstructor CSSStyleRule;
331         
332         attribute CSSVariablesRuleConstructor CSSVariablesRule;
333         attribute CSSVariablesDeclarationConstructor CSSVariablesDeclaration;
334
335         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
336         attribute MediaListConstructor MediaList;
337         attribute CounterConstructor Counter;
338         attribute CSSRuleListConstructor CSSRuleList;
339         attribute RectConstructor Rect;
340         attribute RGBColorConstructor RGBColor;
341         attribute StyleSheetListConstructor StyleSheetList;
342
343         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
344         attribute DOMCoreExceptionConstructor DOMException;
345 //        attribute DOMStringListConstructor DOMStringList;
346 //        attribute NameListConstructor NameList;
347 //        attribute DOMImplementationListConstructor DOMImplementationList;
348 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
349         attribute DOMImplementationConstructor DOMImplementation;
350         attribute DocumentFragmentConstructor DocumentFragment;
351         attribute DocumentConstructor Document;
352         attribute NodeConstructor Node;
353         attribute NodeListConstructor NodeList;
354         attribute NamedNodeMapConstructor NamedNodeMap;
355         attribute CharacterDataConstructor CharacterData;
356         attribute AttrConstructor Attr;
357         attribute ElementConstructor Element;
358         attribute TextConstructor Text;
359         attribute CommentConstructor Comment;
360 //        attribute TypeInfoConstructor TypeInfo;
361 //        attribute UserDataHandlerConstructor UserDataHandler;
362 //        attribute DOMErrorConstructor DOMError;
363 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
364 //        attribute DOMLocatorConstructor DOMLocator;
365 //        attribute DOMConfigurationConstructor DOMConfiguration;
366         attribute CDATASectionConstructor CDATASection;
367         attribute DocumentTypeConstructor DocumentType;
368         attribute NotationConstructor Notation;
369         attribute EntityConstructor Entity;
370         attribute EntityReferenceConstructor EntityReference;
371         attribute ProcessingInstructionConstructor ProcessingInstruction;
372
373         attribute HTMLDocumentConstructor HTMLDocument;
374
375         attribute HTMLElementConstructor HTMLElement;
376         attribute HTMLAnchorElementConstructor HTMLAnchorElement;
377         attribute HTMLAppletElementConstructor HTMLAppletElement;
378         attribute HTMLAreaElementConstructor HTMLAreaElement;
379         attribute HTMLBRElementConstructor HTMLBRElement;
380         attribute HTMLBaseElementConstructor HTMLBaseElement;
381         attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
382         attribute HTMLBlockquoteElementConstructor HTMLBlockquoteElement;
383         attribute HTMLBodyElementConstructor HTMLBodyElement;
384         attribute HTMLButtonElementConstructor HTMLButtonElement;
385         attribute HTMLCanvasElementConstructor HTMLCanvasElement;
386         attribute [Conditional=DATAGRID] HTMLDataGridElementConstructor HTMLDataGridElement;
387         attribute [Conditional=DATAGRID] HTMLDataGridCellElementConstructor HTMLDataGridCellElement;
388         attribute [Conditional=DATAGRID] HTMLDataGridColElementConstructor HTMLDataGridColElement;
389         attribute HTMLDListElementConstructor HTMLDListElement;
390         attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
391         attribute HTMLDivElementConstructor HTMLDivElement;
392         attribute HTMLEmbedElementConstructor HTMLEmbedElement;
393         attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
394         attribute HTMLFontElementConstructor HTMLFontElement;
395         attribute HTMLFormElementConstructor HTMLFormElement;
396         attribute HTMLFrameElementConstructor HTMLFrameElement;
397         attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
398         attribute HTMLHRElementConstructor HTMLHRElement;
399         attribute HTMLHeadElementConstructor HTMLHeadElement;
400         attribute HTMLHeadingElementConstructor HTMLHeadingElement;
401         attribute HTMLHtmlElementConstructor HTMLHtmlElement;
402         attribute HTMLIFrameElementConstructor HTMLIFrameElement;
403         attribute HTMLImageElementConstructor HTMLImageElement;
404         attribute HTMLInputElementConstructor HTMLInputElement;
405         attribute HTMLIsIndexElementConstructor HTMLIsIndexElement;
406         attribute HTMLLIElementConstructor HTMLLIElement;
407         attribute HTMLLabelElementConstructor HTMLLabelElement;
408         attribute HTMLLegendElementConstructor HTMLLegendElement;
409         attribute HTMLLinkElementConstructor HTMLLinkElement;
410         attribute HTMLMapElementConstructor HTMLMapElement;
411         attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
412         attribute HTMLMenuElementConstructor HTMLMenuElement;
413         attribute HTMLMetaElementConstructor HTMLMetaElement;
414         attribute HTMLModElementConstructor HTMLModElement;
415         attribute HTMLOListElementConstructor HTMLOListElement;
416         attribute HTMLObjectElementConstructor HTMLObjectElement;
417         attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
418         attribute HTMLOptionElementConstructor HTMLOptionElement;
419         attribute HTMLParagraphElementConstructor HTMLParagraphElement;
420         attribute HTMLParamElementConstructor HTMLParamElement;
421         attribute HTMLPreElementConstructor HTMLPreElement;
422 #if defined(ENABLE_PROGRESS_TAG) && ENABLE_PROGRESS_TAG
423         attribute HTMLProgressElementConstructor HTMLProgressElement;
424 #endif
425         attribute HTMLQuoteElementConstructor HTMLQuoteElement;
426         attribute HTMLScriptElementConstructor HTMLScriptElement;
427         attribute HTMLSelectElementConstructor HTMLSelectElement;
428         attribute HTMLStyleElementConstructor HTMLStyleElement;
429         attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
430         attribute HTMLTableCellElementConstructor HTMLTableCellElement;
431         attribute HTMLTableColElementConstructor HTMLTableColElement;
432         attribute HTMLTableElementConstructor HTMLTableElement;
433         attribute HTMLTableRowElementConstructor HTMLTableRowElement;
434         attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
435         attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
436         attribute HTMLTitleElementConstructor HTMLTitleElement;
437         attribute HTMLUListElementConstructor HTMLUListElement;
438
439         attribute HTMLCollectionConstructor HTMLCollection;
440         attribute HTMLAllCollectionConstructor HTMLAllCollection;
441
442         attribute [CustomGetter] HTMLImageElementConstructor Image; // Usable with new operator
443         attribute [CustomGetter] HTMLOptionElementConstructor Option; // Usable with new operator
444
445         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
446         attribute ImageDataConstructor ImageData;
447         attribute [Conditional=3D_CANVAS,EnabledAtRuntime] WebGLRenderingContextConstructor WebGLRenderingContext;
448         attribute TextMetricsConstructor TextMetrics;
449
450         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLArrayBufferConstructor WebGLArrayBuffer; // Usable with new operator
451         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLByteArrayConstructor WebGLByteArray; // Usable with new operator
452         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedByteArrayConstructor WebGLUnsignedByteArray; // Usable with new operator
453         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLShortArrayConstructor WebGLShortArray; // Usable with new operator
454         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedShortArrayConstructor WebGLUnsignedShortArray; // Usable with new operator
455         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLIntArrayConstructor WebGLIntArray; // Usable with new operator
456         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLUnsignedIntArrayConstructor WebGLUnsignedIntArray; // Usable with new operator
457         attribute [JSCCustomGetter,Conditional=3D_CANVAS,EnabledAtRuntime] WebGLFloatArrayConstructor WebGLFloatArray; // Usable with new operator
458
459         attribute EventConstructor Event;
460         attribute BeforeLoadEventConstructor BeforeLoadEvent;
461         attribute KeyboardEventConstructor KeyboardEvent;
462         attribute MouseEventConstructor MouseEvent;
463         attribute MutationEventConstructor MutationEvent;
464         attribute OverflowEventConstructor OverflowEvent;
465         attribute PageTransitionEventConstructor PageTransitionEvent;
466         attribute ProgressEventConstructor ProgressEvent;
467         attribute TextEventConstructor TextEvent;
468         attribute UIEventConstructor UIEvent;
469         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
470         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
471         attribute WheelEventConstructor WheelEvent;
472         attribute MessageEventConstructor MessageEvent;
473         attribute EventExceptionConstructor EventException;
474
475         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
476         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
477
478         attribute [JSCCustomGetter] WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
479
480         attribute [JSCCustomGetter] WebKitPointConstructor WebKitPoint; // Usable with new the operator
481
482         attribute ClipboardConstructor Clipboard;
483
484         attribute FileConstructor File;
485         attribute FileListConstructor FileList;
486         attribute BlobConstructor Blob;
487
488         attribute NodeFilterConstructor NodeFilter;
489         attribute RangeConstructor Range;
490         attribute RangeExceptionConstructor RangeException;
491
492 #if ENABLE_EVENTSOURCE
493         attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
494 #endif
495
496         // Mozilla has a separate XMLDocument object for XML documents. 
497         // We just use Document for this.
498         attribute DocumentConstructor XMLDocument;
499
500         attribute DOMParserConstructor DOMParser;
501         attribute XMLSerializerConstructor XMLSerializer;
502
503         attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
504         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
505         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
506
507         attribute [JSCCustomGetter,Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
508
509 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
510         attribute MessagePortConstructor MessagePort;
511         attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel; // Usable with the new operator
512 #endif
513
514 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
515         attribute [JSCCustomGetter] WorkerConstructor Worker; // Usable with the new operator
516 #endif
517
518 #if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
519         attribute [JSCCustomGetter, EnabledAtRuntime] SharedWorkerConstructor SharedWorker; // Usable with the new operator
520 #endif
521
522 #if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
523         attribute [JSCCustomGetter,EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
524 #endif
525
526         attribute PluginConstructor Plugin;
527         attribute PluginArrayConstructor PluginArray;
528
529         attribute MimeTypeConstructor MimeType;
530         attribute MimeTypeArrayConstructor MimeTypeArray;
531
532         attribute ClientRectConstructor ClientRect;
533         attribute ClientRectListConstructor ClientRectList;
534
535 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
536         attribute StorageConstructor Storage;
537         attribute StorageEventConstructor StorageEvent;
538 #endif
539
540         attribute [CustomGetter, Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor Audio; // Usable with the new operator
541         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
542         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
543         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
544         attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
545
546 #if defined(ENABLE_XPATH) && ENABLE_XPATH
547         attribute XPathEvaluatorConstructor XPathEvaluator;
548         attribute XPathResultConstructor XPathResult;
549         attribute XPathExceptionConstructor XPathException;
550 #endif
551
552 #if defined(ENABLE_SVG) && ENABLE_SVG
553         // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
554         // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
555         // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
556         // SVGStylable, SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
557         attribute SVGAElementConstructor SVGAElement;
558         attribute SVGAngleConstructor SVGAngle;
559         attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
560         attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
561         attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
562         attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
563         attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
564         attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
565         attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
566         attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
567         attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
568         attribute SVGAnimatedRectConstructor SVGAnimatedRect;
569         attribute SVGAnimatedStringConstructor SVGAnimatedString;
570         attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
571         attribute SVGCircleElementConstructor SVGCircleElement;
572         attribute SVGClipPathElementConstructor SVGClipPathElement;
573         attribute SVGColorConstructor SVGColor;
574         attribute SVGCursorElementConstructor SVGCursorElement;
575 //      attribute SVGCSSRuleConstructor SVGCSSRule;
576         attribute SVGDefsElementConstructor SVGDefsElement;
577         attribute SVGDescElementConstructor SVGDescElement;
578         attribute SVGDocumentConstructor SVGDocument;
579         attribute SVGElementConstructor SVGElement;
580         attribute SVGElementInstanceConstructor SVGElementInstance;
581         attribute SVGElementInstanceListConstructor SVGElementInstanceList;
582         attribute SVGEllipseElementConstructor SVGEllipseElement;
583         attribute SVGExceptionConstructor SVGException;
584         attribute SVGGElementConstructor SVGGElement;
585         attribute SVGGradientElementConstructor SVGGradientElement;
586         attribute SVGImageElementConstructor SVGImageElement;
587         attribute SVGLengthConstructor SVGLength;
588         attribute SVGLengthListConstructor SVGLengthList;
589         attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
590         attribute SVGLineElementConstructor SVGLineElement;
591         attribute SVGMarkerElementConstructor SVGMarkerElement;
592         attribute SVGMaskElementConstructor SVGMaskElement;
593         attribute SVGMatrixConstructor SVGMatrix;
594         attribute SVGMetadataElementConstructor SVGMetadataElement;
595         attribute SVGNumberConstructor SVGNumber;
596         attribute SVGNumberListConstructor SVGNumberList;
597         attribute SVGPaintConstructor SVGPaint;
598         attribute SVGPathElementConstructor SVGPathElement;
599         attribute SVGPathSegConstructor SVGPathSeg;
600         attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
601         attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
602         attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
603         attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
604         attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
605         attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
606         attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
607         attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
608         attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
609         attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
610         attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
611         attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
612         attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
613         attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
614         attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
615         attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
616         attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
617         attribute SVGPathSegListConstructor SVGPathSegList;
618         attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
619         attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
620         attribute SVGPatternElementConstructor SVGPatternElement;
621         attribute SVGPointConstructor SVGPoint;
622         attribute SVGPointListConstructor SVGPointList;
623         attribute SVGPolygonElementConstructor SVGPolygonElement;
624         attribute SVGPolylineElementConstructor SVGPolylineElement;
625         attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
626         attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
627         attribute SVGRectConstructor SVGRect;
628         attribute SVGRectElementConstructor SVGRectElement;
629         attribute SVGRenderingIntentConstructor SVGRenderingIntent;
630         attribute SVGScriptElementConstructor SVGScriptElement;
631         attribute SVGStopElementConstructor SVGStopElement;
632         attribute SVGStringListConstructor SVGStringList;
633         attribute SVGStyleElementConstructor SVGStyleElement;
634         attribute SVGSVGElementConstructor SVGSVGElement;
635         attribute SVGSwitchElementConstructor SVGSwitchElement;
636         attribute SVGSymbolElementConstructor SVGSymbolElement;
637         attribute SVGTextContentElementConstructor SVGTextContentElement;
638         attribute SVGTextElementConstructor SVGTextElement;
639         attribute SVGTextPathElementConstructor SVGTextPathElement;
640         attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
641         attribute SVGTitleElementConstructor SVGTitleElement;
642         attribute SVGTransformConstructor SVGTransform;
643         attribute SVGTransformListConstructor SVGTransformList;
644         attribute SVGTRefElementConstructor SVGTRefElement;
645         attribute SVGTSpanElementConstructor SVGTSpanElement;
646         attribute SVGUnitTypesConstructor SVGUnitTypes;
647         attribute SVGUseElementConstructor SVGUseElement;
648         attribute SVGViewElementConstructor SVGViewElement;
649 //      attribute SVGViewSpecConstructor SVGViewSpec;
650         attribute SVGZoomEventConstructor SVGZoomEvent;
651
652 #if defined(ENABLE_SVG_ANIMATION) && ENABLE_SVG_ANIMATION
653         attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
654         attribute SVGAnimateElementConstructor SVGAnimateElement;
655 //      attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
656         attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
657 //      attribute SVGMPathElementConstructor SVGMPathElement;
658         attribute SVGSetElementConstructor SVGSetElement;
659 #endif
660
661 #if ENABLE_SVG_FONTS && ENABLE_SVG_FONTS
662 //      attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
663         attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
664 //      attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
665 //      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
666         attribute SVGFontElementConstructor SVGFontElement;
667         attribute SVGFontFaceElementConstructor SVGFontFaceElement;
668         attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
669         attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
670         attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
671         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
672         attribute SVGGlyphElementConstructor SVGGlyphElement;
673 //      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
674 //      attribute SVGHKernElementConstructor SVGHKernElement;
675         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
676 //      attribute SVGVKernElementConstructor SVGVKernElement;
677 #endif
678
679 #if defined(ENABLE_SVG_FOREIGN_OBJECT) && ENABLE_SVG_FOREIGN_OBJECT
680         attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
681 #endif
682
683 #if defined(ENABLE_FILTERS) && ENABLE_FILTERS
684         attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
685         attribute SVGFEBlendElementConstructor SVGFEBlendElement;
686         attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
687         attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
688         attribute SVGFECompositeElementConstructor SVGFECompositeElement;
689 //      attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
690         attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
691         attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
692         attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
693         attribute SVGFEFloodElementConstructor SVGFEFloodElement;
694         attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
695         attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
696         attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
697         attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
698         attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
699         attribute SVGFEImageElementConstructor SVGFEImageElement;
700         attribute SVGFEMergeElementConstructor SVGFEMergeElement;
701         attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
702         attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
703         attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
704         attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
705         attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
706         attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
707         attribute SVGFETileElementConstructor SVGFETileElement;
708         attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
709         attribute SVGFilterElementConstructor SVGFilterElement;
710 #endif
711 #endif
712
713         attribute [Conditional=TOUCH_EVENTS] TouchEventConstructor TouchEvent;
714
715         attribute DOMFormDataConstructor FormData;
716
717         attribute [Conditional=FILE_READER|FILE_WRITER] FileErrorConstructor FileError;
718
719 #endif // defined(LANGUAGE_JAVASCRIPT)
720
721 #if defined(V8_BINDING) && V8_BINDING
722         // window.toString() requires special handling in V8
723         [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
724 #endif // defined(V8_BINDING)
725     };
726
727 }
728