Reviewed by Alexey Proskuryakov.
[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         CustomGetPropertyAttributes,
35         CustomGetPropertyNames,
36         CustomLookupGetter,
37         CustomLookupSetter,
38         CustomMarkFunction,
39         CustomNativeConverter,
40         CustomPutFunction,
41         ExtendsDOMGlobalObject,
42         GenerateNativeConverter,
43         LegacyParent=JSDOMWindowBase
44     ] DOMWindow {
45         // DOM Level 0
46         readonly attribute Screen screen;
47         readonly attribute [DoNotCheckDomainSecurity, JSCCustomGetter] History history;
48         attribute [Replaceable] BarInfo locationbar;
49         attribute [Replaceable] BarInfo menubar;
50         attribute [Replaceable] BarInfo personalbar;
51         attribute [Replaceable] BarInfo scrollbars;
52         attribute [Replaceable] BarInfo statusbar;
53         attribute [Replaceable] BarInfo toolbar;
54         attribute [Replaceable] Navigator navigator;
55         attribute [Replaceable] Navigator clientInformation;
56         attribute [DoNotCheckDomainSecurity, JSCCustom, V8CustomSetter, V8DisallowShadowing] Location location;
57
58         attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
59
60         readonly attribute [Custom] Crypto crypto;
61
62         DOMSelection getSelection();
63
64         readonly attribute [CheckNodeSecurity] Element frameElement;
65
66         [DoNotCheckDomainSecurity] void focus();
67         [DoNotCheckDomainSecurity] void blur();
68         [DoNotCheckDomainSecurity] void close();
69
70         void print();
71         void stop();
72
73         [Custom] DOMWindow open(in DOMString url,
74                                 in DOMString name,
75                                 in [Optional] DOMString options);
76
77         [Custom] DOMObject showModalDialog(in DOMString url,
78                                            in [Optional] DOMObject dialogArgs,
79                                            in [Optional] DOMString featureArgs);
80
81         void alert(in DOMString message);
82         boolean confirm(in DOMString message);
83         [ConvertNullStringTo=Null] DOMString prompt(in DOMString message,
84                                                     in [ConvertUndefinedOrNullToNullString] DOMString defaultValue);
85
86         boolean find(in DOMString string,
87                      in boolean caseSensitive,
88                      in boolean backwards,
89                      in boolean wrap,
90                      in boolean wholeWord,
91                      in boolean searchInFrames,
92                      in boolean showDialog);
93
94         attribute [Replaceable] boolean offscreenBuffering;
95
96         attribute [Replaceable] long outerHeight;
97         attribute [Replaceable] long outerWidth;
98         attribute [Replaceable] long innerHeight;
99         attribute [Replaceable] long innerWidth;
100         attribute [Replaceable] long screenX;
101         attribute [Replaceable] long screenY;
102         attribute [Replaceable] long screenLeft;
103         attribute [Replaceable] long screenTop;
104         attribute [Replaceable] long scrollX;
105         attribute [Replaceable] long scrollY;
106         readonly attribute long pageXOffset;
107         readonly attribute long pageYOffset;
108
109         [RequiresAllArguments] void scrollBy(in long x, in long y);
110         [RequiresAllArguments] void scrollTo(in long x, in long y);
111         [RequiresAllArguments] void scroll(in long x, in long y);
112         [RequiresAllArguments] void moveBy(in float x, in float y); // FIXME: this should take longs not floats.
113         [RequiresAllArguments] void moveTo(in float x, in float y); // FIXME: this should take longs not floats.
114         [RequiresAllArguments] void resizeBy(in float x, in float y); // FIXME: this should take longs not floats.
115         [RequiresAllArguments] void resizeTo(in float width, in float height); // FIXME: this should take longs not floats.
116
117         readonly attribute [DoNotCheckDomainSecurity] boolean closed;
118
119         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] unsigned long length;
120
121         attribute DOMString name;
122
123         attribute DOMString status;
124         attribute DOMString defaultStatus;
125 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
126         // This attribute is an alias of defaultStatus and is necessary for legacy uses.
127         attribute DOMString defaultstatus;
128 #endif
129
130         // Self referential attributes
131         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow self;
132         readonly attribute [DoNotCheckDomainSecurity, V8DisallowShadowing] DOMWindow window;
133         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow frames;
134
135         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8CustomSetter] DOMWindow opener;
136         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow parent;
137         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8DisallowShadowing, V8ReadOnly] DOMWindow top;
138
139         // DOM Level 2 AbstractView Interface
140         readonly attribute Document document;
141
142         // CSSOM View Module
143         readonly attribute Media media;
144
145         // DOM Level 2 Style Interface
146         CSSStyleDeclaration getComputedStyle(in Element element,
147                                              in DOMString pseudoElement);
148
149         // WebKit extensions
150         CSSRuleList getMatchedCSSRules(in Element element,
151                                        in DOMString pseudoElement,
152                                        in [Optional] boolean authorOnly);
153         attribute [Replaceable] double devicePixelRatio;
154         
155         WebKitPoint webkitConvertPointFromPageToNode(in Node node, in WebKitPoint p);
156         WebKitPoint webkitConvertPointFromNodeToPage(in Node node, in WebKitPoint p);
157
158 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
159         readonly attribute DOMApplicationCache applicationCache;
160 #endif    
161 #if defined(ENABLE_DATABASE) && ENABLE_DATABASE
162         Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize)
163             raises(DOMException);
164 #endif
165 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
166         readonly attribute Storage sessionStorage;
167         readonly attribute Storage localStorage;
168 #endif
169 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
170         readonly attribute NotificationCenter webkitNotifications;
171 #endif
172
173                  attribute [Replaceable] Console console;
174
175         // cross-document messaging
176 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
177         [DoNotCheckDomainSecurity, Custom] void postMessage(in DOMString message, in [Optional] Array messagePorts, in DOMString targetOrigin)
178             raises(DOMException);
179 #else
180         // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
181         [DoNotCheckDomainSecurity, Custom] void postMessage(in DOMString message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
182             raises(DOMException);
183 #endif
184
185         // Timers
186         [Custom] long setTimeout(in TimeoutHandler handler, in long timeout);
187         // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
188         // [Custom] long setTimeout(in DOMString code, in long timeout);
189         void clearTimeout(in long handle);
190         [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
191         // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
192         // [Custom] long setInterval(in DOMString code, in long timeout);
193         void clearInterval(in long handle);
194
195         // Base64
196         [Custom] DOMString atob(in DOMString string)
197             raises(DOMException);
198         [Custom] DOMString btoa(in DOMString string)
199             raises(DOMException);
200
201         // Events
202         attribute EventListener onabort;
203         attribute EventListener onbeforeunload;
204         attribute EventListener onblur;
205         attribute EventListener oncanplay;
206         attribute EventListener oncanplaythrough;
207         attribute EventListener onchange;
208         attribute EventListener onclick;
209         attribute EventListener oncontextmenu;
210         attribute EventListener ondblclick;
211         attribute EventListener ondrag;
212         attribute EventListener ondragend;
213         attribute EventListener ondragenter;
214         attribute EventListener ondragleave;
215         attribute EventListener ondragover;
216         attribute EventListener ondragstart;
217         attribute EventListener ondrop;
218         attribute EventListener ondurationchange;
219         attribute EventListener onemptied;
220         attribute EventListener onended;
221         attribute EventListener onerror;
222         attribute EventListener onfocus;
223         attribute EventListener onhashchange;
224         attribute EventListener oninput;
225         attribute EventListener oninvalid;
226         attribute EventListener onkeydown;
227         attribute EventListener onkeypress;
228         attribute EventListener onkeyup;
229         attribute EventListener onload;
230         attribute EventListener onloadeddata;
231         attribute EventListener onloadedmetadata;
232         attribute EventListener onloadstart;
233         attribute EventListener onmessage;
234         attribute EventListener onmousedown;
235         attribute EventListener onmousemove;
236         attribute EventListener onmouseout;
237         attribute EventListener onmouseover;
238         attribute EventListener onmouseup;
239         attribute EventListener onmousewheel;
240         attribute EventListener onoffline;
241         attribute EventListener ononline;
242         attribute EventListener onpagehide;
243         attribute EventListener onpageshow;
244         attribute EventListener onpause;
245         attribute EventListener onplay;
246         attribute EventListener onplaying;
247         attribute EventListener onprogress;
248         attribute EventListener onratechange;
249         attribute EventListener onresize;
250         attribute EventListener onscroll;
251         attribute EventListener onseeked;
252         attribute EventListener onseeking;
253         attribute EventListener onselect;
254         attribute EventListener onstalled;
255         attribute EventListener onstorage;
256         attribute EventListener onsubmit;
257         attribute EventListener onsuspend;
258         attribute EventListener ontimeupdate;
259         attribute EventListener onunload;
260         attribute EventListener onvolumechange;
261         attribute EventListener onwaiting;
262
263         // Not implemented yet.
264         // attribute EventListener onafterprint;
265         // attribute EventListener onbeforeprint;
266         // attribute EventListener onformchange;
267         // attribute EventListener onforminput;
268         // attribute EventListener onhashchange;
269         // attribute EventListener onpopstate;
270         // attribute EventListener onreadystatechange;
271         // attribute EventListener onredo;
272         // attribute EventListener onshow;
273         // attribute EventListener onundo;
274
275         // Webkit extensions
276         attribute EventListener onreset;
277         attribute EventListener onsearch;
278         attribute EventListener onwebkitanimationend;
279         attribute EventListener onwebkitanimationiteration;
280         attribute EventListener onwebkitanimationstart;
281         attribute EventListener onwebkittransitionend;
282
283         // EventTarget interface
284         [Custom] void addEventListener(in DOMString type,
285                                       in EventListener listener,
286                                       in boolean useCapture);
287         [Custom] void removeEventListener(in DOMString type,
288                                           in EventListener listener,
289                                           in boolean useCapture);
290         boolean dispatchEvent(in Event evt)
291             raises(EventException);
292
293         [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
294         [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
295
296 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
297         // Global constructors
298         attribute StyleSheetConstructor StyleSheet;
299         attribute CSSStyleSheetConstructor CSSStyleSheet;
300
301         attribute CSSValueConstructor CSSValue;
302         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
303         attribute CSSValueListConstructor CSSValueList;
304         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
305
306         attribute CSSRuleConstructor CSSRule;
307         attribute CSSCharsetRuleConstructor CSSCharsetRule;
308         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
309         attribute CSSImportRuleConstructor CSSImportRule;
310         attribute CSSMediaRuleConstructor CSSMediaRule;
311         attribute CSSPageRuleConstructor CSSPageRule;
312         attribute CSSStyleRuleConstructor CSSStyleRule;
313         
314         attribute CSSVariablesRuleConstructor CSSVariablesRule;
315         attribute CSSVariablesDeclarationConstructor CSSVariablesDeclaration;
316
317         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
318         attribute MediaListConstructor MediaList;
319         attribute CounterConstructor Counter;
320         attribute CSSRuleListConstructor CSSRuleList;
321         attribute RectConstructor Rect;
322         attribute RGBColorConstructor RGBColor;
323         attribute StyleSheetListConstructor StyleSheetList;
324
325         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
326         attribute DOMCoreExceptionConstructor DOMException;
327 //        attribute DOMStringListConstructor DOMStringList;
328 //        attribute NameListConstructor NameList;
329 //        attribute DOMImplementationListConstructor DOMImplementationList;
330 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
331         attribute DOMImplementationConstructor DOMImplementation;
332         attribute DocumentFragmentConstructor DocumentFragment;
333         attribute DocumentConstructor Document;
334         attribute NodeConstructor Node;
335         attribute NodeListConstructor NodeList;
336         attribute NamedNodeMapConstructor NamedNodeMap;
337         attribute CharacterDataConstructor CharacterData;
338         attribute AttrConstructor Attr;
339         attribute ElementConstructor Element;
340         attribute TextConstructor Text;
341         attribute CommentConstructor Comment;
342 //        attribute TypeInfoConstructor TypeInfo;
343 //        attribute UserDataHandlerConstructor UserDataHandler;
344 //        attribute DOMErrorConstructor DOMError;
345 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
346 //        attribute DOMLocatorConstructor DOMLocator;
347 //        attribute DOMConfigurationConstructor DOMConfiguration;
348         attribute CDATASectionConstructor CDATASection;
349         attribute DocumentTypeConstructor DocumentType;
350         attribute NotationConstructor Notation;
351         attribute EntityConstructor Entity;
352         attribute EntityReferenceConstructor EntityReference;
353         attribute ProcessingInstructionConstructor ProcessingInstruction;
354
355         attribute HTMLDocumentConstructor HTMLDocument;
356
357         attribute HTMLElementConstructor HTMLElement;
358         attribute HTMLAnchorElementConstructor HTMLAnchorElement;
359         attribute HTMLAppletElementConstructor HTMLAppletElement;
360         attribute HTMLAreaElementConstructor HTMLAreaElement;
361         attribute HTMLBRElementConstructor HTMLBRElement;
362         attribute HTMLBaseElementConstructor HTMLBaseElement;
363         attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
364         attribute HTMLBlockquoteElementConstructor HTMLBlockquoteElement;
365         attribute HTMLBodyElementConstructor HTMLBodyElement;
366         attribute HTMLButtonElementConstructor HTMLButtonElement;
367         attribute HTMLCanvasElementConstructor HTMLCanvasElement;
368         attribute [Conditional=DATAGRID] HTMLDataGridElementConstructor HTMLDataGridElement;
369         attribute [Conditional=DATAGRID] HTMLDataGridCellElementConstructor HTMLDataGridCellElement;
370         attribute [Conditional=DATAGRID] HTMLDataGridColElementConstructor HTMLDataGridColElement;
371         attribute HTMLDListElementConstructor HTMLDListElement;
372         attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
373         attribute HTMLDivElementConstructor HTMLDivElement;
374         attribute HTMLEmbedElementConstructor HTMLEmbedElement;
375         attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
376         attribute HTMLFontElementConstructor HTMLFontElement;
377         attribute HTMLFormElementConstructor HTMLFormElement;
378         attribute HTMLFrameElementConstructor HTMLFrameElement;
379         attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
380         attribute HTMLHRElementConstructor HTMLHRElement;
381         attribute HTMLHeadElementConstructor HTMLHeadElement;
382         attribute HTMLHeadingElementConstructor HTMLHeadingElement;
383         attribute HTMLHtmlElementConstructor HTMLHtmlElement;
384         attribute HTMLIFrameElementConstructor HTMLIFrameElement;
385         attribute HTMLImageElementConstructor HTMLImageElement;
386         attribute HTMLInputElementConstructor HTMLInputElement;
387         attribute HTMLIsIndexElementConstructor HTMLIsIndexElement;
388         attribute HTMLLIElementConstructor HTMLLIElement;
389         attribute HTMLLabelElementConstructor HTMLLabelElement;
390         attribute HTMLLegendElementConstructor HTMLLegendElement;
391         attribute HTMLLinkElementConstructor HTMLLinkElement;
392         attribute HTMLMapElementConstructor HTMLMapElement;
393         attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
394         attribute HTMLMenuElementConstructor HTMLMenuElement;
395         attribute HTMLMetaElementConstructor HTMLMetaElement;
396         attribute HTMLModElementConstructor HTMLModElement;
397         attribute HTMLOListElementConstructor HTMLOListElement;
398         attribute HTMLObjectElementConstructor HTMLObjectElement;
399         attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
400         attribute HTMLOptionElementConstructor HTMLOptionElement;
401         attribute HTMLParagraphElementConstructor HTMLParagraphElement;
402         attribute HTMLParamElementConstructor HTMLParamElement;
403         attribute HTMLPreElementConstructor HTMLPreElement;
404         attribute HTMLQuoteElementConstructor HTMLQuoteElement;
405         attribute HTMLScriptElementConstructor HTMLScriptElement;
406         attribute HTMLSelectElementConstructor HTMLSelectElement;
407         attribute HTMLStyleElementConstructor HTMLStyleElement;
408         attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
409         attribute HTMLTableCellElementConstructor HTMLTableCellElement;
410         attribute HTMLTableColElementConstructor HTMLTableColElement;
411         attribute HTMLTableElementConstructor HTMLTableElement;
412         attribute HTMLTableRowElementConstructor HTMLTableRowElement;
413         attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
414         attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
415         attribute HTMLTitleElementConstructor HTMLTitleElement;
416         attribute HTMLUListElementConstructor HTMLUListElement;
417
418         attribute HTMLCollectionConstructor HTMLCollection;
419
420         attribute [CustomGetter] HTMLImageElementConstructor Image; // Usable with new operator
421         attribute [CustomGetter] HTMLOptionElementConstructor Option; // Usable with new operator
422
423         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
424         attribute [Conditional=3D_CANVAS] CanvasRenderingContext3DConstructor CanvasRenderingContext3D;
425         attribute TextMetricsConstructor TextMetrics;
426
427         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasArrayBufferConstructor CanvasArrayBuffer; // Usable with new operator
428         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasByteArrayConstructor CanvasByteArray; // Usable with new operator
429         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasUnsignedByteArrayConstructor CanvasUnsignedByteArray; // Usable with new operator
430         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasShortArrayConstructor CanvasShortArray; // Usable with new operator
431         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasUnsignedShortArrayConstructor CanvasUnsignedShortArray; // Usable with new operator
432         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasIntArrayConstructor CanvasIntArray; // Usable with new operator
433         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasUnsignedIntArrayConstructor CanvasUnsignedIntArray; // Usable with new operator
434         attribute [CustomGetter,Conditional=3D_CANVAS] CanvasFloatArrayConstructor CanvasFloatArray; // Usable with new operator
435
436         attribute EventConstructor Event;
437         attribute KeyboardEventConstructor KeyboardEvent;
438         attribute MouseEventConstructor MouseEvent;
439         attribute MutationEventConstructor MutationEvent;
440         attribute OverflowEventConstructor OverflowEvent;
441         attribute PageTransitionEventConstructor PageTransitionEvent;
442         attribute ProgressEventConstructor ProgressEvent;
443         attribute TextEventConstructor TextEvent;
444         attribute UIEventConstructor UIEvent;
445         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
446         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
447         attribute WheelEventConstructor WheelEvent;
448         attribute MessageEventConstructor MessageEvent;
449         attribute EventExceptionConstructor EventException;
450
451         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
452         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
453
454         attribute [JSCCustomGetter] WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
455
456         attribute [JSCCustomGetter] WebKitPointConstructor WebKitPoint; // Usable with new the operator
457
458         attribute ClipboardConstructor Clipboard;
459
460         attribute FileConstructor File;
461         attribute FileListConstructor FileList;
462
463         attribute NodeFilterConstructor NodeFilter;
464         attribute RangeConstructor Range;
465         attribute RangeExceptionConstructor RangeException;
466
467 #if ENABLE_EVENTSOURCE
468         attribute [JSCCustomGetter] EventSourceConstructor EventSource; // Usable with new the operator
469 #endif
470
471         // Mozilla has a separate XMLDocument object for XML documents. 
472         // We just use Document for this.
473         attribute DocumentConstructor XMLDocument;
474
475         attribute DOMParserConstructor DOMParser;
476         attribute XMLSerializerConstructor XMLSerializer;
477
478         attribute [JSCCustomGetter] XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
479         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
480         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
481
482 #if defined(ENABLE_XSLT) && ENABLE_XSLT
483         attribute [JSCCustomGetter] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
484 #endif
485
486 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
487         attribute MessagePortConstructor MessagePort;
488         attribute [JSCCustomGetter] MessageChannelConstructor MessageChannel; // Usable with the new operator
489 #endif
490
491 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
492         attribute [JSCCustomGetter] WorkerConstructor Worker; // Usable with the new operator
493 #endif
494
495 #if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
496         attribute [JSCCustomGetter] SharedWorkerConstructor SharedWorker; // Usable with the new operator
497 #endif
498
499 #if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
500         attribute [JSCCustomGetter] WebSocketConstructor WebSocket; // Usable with the new operator
501 #endif
502
503         attribute PluginConstructor Plugin;
504         attribute PluginArrayConstructor PluginArray;
505
506         attribute MimeTypeConstructor MimeType;
507         attribute MimeTypeArrayConstructor MimeTypeArray;
508
509         attribute ClientRectConstructor ClientRect;
510         attribute ClientRectListConstructor ClientRectList;
511
512 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
513         attribute StorageConstructor Storage;
514         attribute StorageEventConstructor StorageEvent;
515 #endif
516
517         attribute [CustomGetter,Conditional=VIDEO] HTMLAudioElementConstructor Audio; // Usable with the new operator
518         attribute [Conditional=VIDEO] HTMLAudioElementConstructor HTMLAudioElement;
519         attribute [Conditional=VIDEO] HTMLMediaElementConstructor HTMLMediaElement;
520         attribute [Conditional=VIDEO] HTMLVideoElementConstructor HTMLVideoElement;
521         attribute [Conditional=VIDEO] MediaErrorConstructor MediaError;
522
523 #if defined(ENABLE_XPATH) && ENABLE_XPATH
524         attribute XPathEvaluatorConstructor XPathEvaluator;
525         attribute XPathResultConstructor XPathResult;
526         attribute XPathExceptionConstructor XPathException;
527 #endif
528
529 #if defined(ENABLE_SVG) && ENABLE_SVG
530         attribute SVGAngleConstructor SVGAngle;
531         attribute SVGColorConstructor SVGColor;
532 //      attribute SVGCSSRuleConstructor SVGCSSRule;
533         attribute SVGExceptionConstructor SVGException;
534         attribute SVGGradientElementConstructor SVGGradientElement;
535         attribute SVGLengthConstructor SVGLength;
536         attribute SVGMarkerElementConstructor SVGMarkerElement;
537         attribute SVGPaintConstructor SVGPaint;
538         attribute SVGPathSegConstructor SVGPathSeg;
539         attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
540         attribute SVGRenderingIntentConstructor SVGRenderingIntent;
541         attribute SVGTextContentElementConstructor SVGTextContentElement;
542         attribute SVGTextPathElementConstructor SVGTextPathElement;
543         attribute SVGTransformConstructor SVGTransform;
544         attribute SVGUnitTypesConstructor SVGUnitTypes;
545 //      attribute SVGZoomAndPanConstructor SVGZoomAndPan;
546
547 #if defined(ENABLE_FILTERS) && ENABLE_FILTERS
548         attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
549         attribute SVGFEBlendElementConstructor SVGFEBlendElement;
550         attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
551         attribute SVGFECompositeElementConstructor SVGFECompositeElement;
552 //      attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
553         attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
554 //      attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
555         attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
556 #endif
557 #endif
558
559 #endif // defined(LANGUAGE_JAVASCRIPT)
560
561 #if defined(V8_BINDING) && V8_BINDING
562         // window.toString() requires special handling in V8
563         [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
564 #endif // defined(V8_BINDING)
565     };
566
567 }