Revert XML-related APIs from DOMWindowXML.idl back to DOMWindow.idl
[WebKit-https.git] / Source / WebCore / page / DOMWindow.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 module window {
28
29     interface [
30         CheckSecurity,
31         JSCustomDefineOwnProperty,
32         CustomDeleteProperty,
33         CustomGetOwnPropertySlot,
34         CustomEnumerateProperty,
35         JSCustomMarkFunction,
36         JSCustomToNativeObject,
37         CustomPutFunction,
38         EventTarget,
39         ExtendsDOMGlobalObject,
40         JSGenerateToNativeObject,
41         ReplaceableConstructor,
42         JSLegacyParent=JSDOMWindowBase,
43         V8CustomToJSObject,
44         InterfaceName=Window
45     ] DOMWindow {
46         // DOM Level 0
47         attribute [Replaceable] Screen screen;
48         attribute [Replaceable, DoNotCheckSecurityOnGetter] History history;
49         attribute [Replaceable] BarInfo locationbar;
50         attribute [Replaceable] BarInfo menubar;
51         attribute [Replaceable] BarInfo personalbar;
52         attribute [Replaceable] BarInfo scrollbars;
53         attribute [Replaceable] BarInfo statusbar;
54         attribute [Replaceable] BarInfo toolbar;
55         attribute [Replaceable] Navigator navigator;
56         attribute [Replaceable] Navigator clientInformation;
57         readonly attribute Crypto crypto;
58 #if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
59         attribute [DoNotCheckSecurity, CustomSetter, V8Unforgeable] Location location;
60 #endif
61         attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
62
63         DOMSelection getSelection();
64
65         readonly attribute [CheckSecurityForNode] Element frameElement;
66
67         [DoNotCheckSecurity] void focus();
68         [DoNotCheckSecurity] void blur();
69         [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void close();
70
71         void print();
72         void stop();
73
74         [Custom] DOMWindow open(in DOMString url,
75                                 in DOMString name,
76                                 in [Optional] DOMString options);
77
78         [Custom] DOMObject showModalDialog(in DOMString url,
79                                            in [Optional] DOMObject dialogArgs,
80                                            in [Optional] DOMString featureArgs);
81
82         void alert(in [Optional=DefaultIsUndefined] DOMString message);
83         boolean confirm(in [Optional=DefaultIsUndefined] DOMString message);
84         [TreatReturnedNullStringAs=Null] DOMString prompt(in [Optional=DefaultIsUndefined] DOMString message,
85                                                     in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString defaultValue);
86
87         boolean find(in [Optional=DefaultIsUndefined] DOMString string,
88                      in [Optional=DefaultIsUndefined] boolean caseSensitive,
89                      in [Optional=DefaultIsUndefined] boolean backwards,
90                      in [Optional=DefaultIsUndefined] boolean wrap,
91                      in [Optional=DefaultIsUndefined] boolean wholeWord,
92                      in [Optional=DefaultIsUndefined] boolean searchInFrames,
93                      in [Optional=DefaultIsUndefined] 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         void scrollBy(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
111         void scrollTo(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
112         void scroll(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
113         void moveBy(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
114         void moveTo(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
115         void resizeBy(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
116         void resizeTo(in [Optional=DefaultIsUndefined] float width, in [Optional=DefaultIsUndefined] float height); // FIXME: this should take longs not floats.
117
118         readonly attribute [DoNotCheckSecurity] boolean closed;
119
120         attribute [Replaceable, DoNotCheckSecurityOnGetter] 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, DoNotCheckSecurityOnGetter] DOMWindow self;
133         readonly attribute [DoNotCheckSecurity, V8Unforgeable] DOMWindow window;
134         attribute [Replaceable, DoNotCheckSecurityOnGetter] DOMWindow frames;
135
136         attribute [Replaceable, DoNotCheckSecurityOnGetter, V8CustomSetter] DOMWindow opener;
137         attribute [Replaceable, DoNotCheckSecurityOnGetter] DOMWindow parent;
138         attribute [Replaceable, DoNotCheckSecurityOnGetter, V8Unforgeable, V8ReadOnly] DOMWindow top;
139
140         // DOM Level 2 AbstractView Interface
141         readonly attribute Document document;
142
143         // CSSOM View Module
144         MediaQueryList matchMedia(in DOMString query);
145
146         // styleMedia has been removed from the CSSOM View specification.
147         readonly attribute StyleMedia styleMedia;
148
149         // DOM Level 2 Style Interface
150         CSSStyleDeclaration getComputedStyle(in [Optional=DefaultIsUndefined] Element element,
151                                              in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString pseudoElement);
152
153         // WebKit extensions
154 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
155         CSSRuleList getMatchedCSSRules(in [Optional=DefaultIsUndefined] Element element,
156                                        in [Optional=DefaultIsUndefined] DOMString pseudoElement);
157 #endif
158
159         attribute [Replaceable] double devicePixelRatio;
160         
161         WebKitPoint webkitConvertPointFromPageToNode(in [Optional=DefaultIsUndefined] Node node, 
162                                                      in [Optional=DefaultIsUndefined] WebKitPoint p);
163         WebKitPoint webkitConvertPointFromNodeToPage(in [Optional=DefaultIsUndefined] Node node, 
164                                                      in [Optional=DefaultIsUndefined] WebKitPoint p);
165
166         readonly attribute [V8EnabledAtRuntime] DOMApplicationCache applicationCache;
167
168         readonly attribute [V8EnabledAtRuntime] Storage sessionStorage
169             getter raises(DOMException);
170         readonly attribute [V8EnabledAtRuntime] Storage localStorage
171             getter raises(DOMException);
172
173 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
174         readonly attribute [V8EnabledAtRuntime] NotificationCenter webkitNotifications;
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         [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin)
189             raises(DOMException);
190         [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array messagePorts)
191             raises(DOMException);
192
193         [DoNotCheckSecurity, Custom] void webkitPostMessage(in SerializedScriptValue message, in DOMString targetOrigin)
194             raises(DOMException);
195         [DoNotCheckSecurity, Custom] void webkitPostMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array transferList)
196             raises(DOMException);
197 #else
198         // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
199         [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
200             raises(DOMException);
201 #endif
202
203 #if defined(ENABLE_WEB_TIMING) && ENABLE_WEB_TIMING
204         attribute [Replaceable] Performance performance;
205 #endif
206
207         // Timers
208         [Custom] long setTimeout(in [Optional=DefaultIsUndefined] TimeoutHandler handler, 
209                                  in [Optional=DefaultIsUndefined] long timeout);
210         // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
211         // [Custom] long setTimeout(in DOMString code, in long timeout);
212         void clearTimeout(in [Optional=DefaultIsUndefined] long handle);
213         [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
214         // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
215         // [Custom] long setInterval(in DOMString code, in long timeout);
216         void clearInterval(in [Optional=DefaultIsUndefined] long handle);
217
218 #if defined(ENABLE_REQUEST_ANIMATION_FRAME)
219         // WebKit animation extensions, being standardized in the WebPerf WG
220         long webkitRequestAnimationFrame(in [Callback] RequestAnimationFrameCallback callback, in [Optional=DefaultIsUndefined] Element element);
221         void webkitCancelAnimationFrame(in long id);
222         void webkitCancelRequestAnimationFrame(in long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
223 #endif
224
225         // Base64
226         DOMString atob(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string)
227             raises(DOMException);
228         DOMString btoa(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string)
229             raises(DOMException);
230
231         // Events
232         attribute EventListener onabort;
233         attribute EventListener onbeforeunload;
234         attribute EventListener onblur;
235         attribute EventListener oncanplay;
236         attribute EventListener oncanplaythrough;
237         attribute EventListener onchange;
238         attribute EventListener onclick;
239         attribute EventListener oncontextmenu;
240         attribute EventListener ondblclick;
241         attribute EventListener ondrag;
242         attribute EventListener ondragend;
243         attribute EventListener ondragenter;
244         attribute EventListener ondragleave;
245         attribute EventListener ondragover;
246         attribute EventListener ondragstart;
247         attribute EventListener ondrop;
248         attribute EventListener ondurationchange;
249         attribute EventListener onemptied;
250         attribute EventListener onended;
251         attribute EventListener onerror;
252         attribute EventListener onfocus;
253         attribute EventListener onhashchange;
254         attribute EventListener oninput;
255         attribute EventListener oninvalid;
256         attribute EventListener onkeydown;
257         attribute EventListener onkeypress;
258         attribute EventListener onkeyup;
259         attribute EventListener onload;
260         attribute EventListener onloadeddata;
261         attribute EventListener onloadedmetadata;
262         attribute EventListener onloadstart;
263         attribute EventListener onmessage;
264         attribute EventListener onmousedown;
265         attribute EventListener onmousemove;
266         attribute EventListener onmouseout;
267         attribute EventListener onmouseover;
268         attribute EventListener onmouseup;
269         attribute EventListener onmousewheel;
270         attribute EventListener onoffline;
271         attribute EventListener ononline;
272         attribute EventListener onpagehide;
273         attribute EventListener onpageshow;
274         attribute EventListener onpause;
275         attribute EventListener onplay;
276         attribute EventListener onplaying;
277         attribute EventListener onpopstate;
278         attribute EventListener onprogress;
279         attribute EventListener onratechange;
280         attribute EventListener onresize;
281         attribute EventListener onscroll;
282         attribute EventListener onseeked;
283         attribute EventListener onseeking;
284         attribute EventListener onselect;
285         attribute EventListener onstalled;
286         attribute EventListener onstorage;
287         attribute EventListener onsubmit;
288         attribute EventListener onsuspend;
289         attribute EventListener ontimeupdate;
290         attribute EventListener onunload;
291         attribute EventListener onvolumechange;
292         attribute EventListener onwaiting;
293
294         // Not implemented yet.
295         // attribute EventListener onafterprint;
296         // attribute EventListener onbeforeprint;
297         // attribute EventListener onreadystatechange;
298         // attribute EventListener onredo;
299         // attribute EventListener onshow;
300         // attribute EventListener onundo;
301
302         // Webkit extensions
303         attribute EventListener onreset;
304         attribute EventListener onsearch;
305         attribute EventListener onwebkitanimationend;
306         attribute EventListener onwebkitanimationiteration;
307         attribute EventListener onwebkitanimationstart;
308         attribute EventListener onwebkittransitionend;
309 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
310         attribute EventListener onorientationchange;
311 #endif
312         attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime] EventListener ontouchstart;
313         attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime] EventListener ontouchmove;
314         attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime] EventListener ontouchend;
315         attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime] EventListener ontouchcancel;
316
317         attribute [Conditional=DEVICE_ORIENTATION,V8EnabledAtRuntime] EventListener ondevicemotion;
318         attribute [Conditional=DEVICE_ORIENTATION,V8EnabledAtRuntime] EventListener ondeviceorientation;
319
320         // EventTarget interface
321         [Custom] void addEventListener(in DOMString type,
322                                       in EventListener listener,
323                                       in [Optional] boolean useCapture);
324         [Custom] void removeEventListener(in DOMString type,
325                                           in EventListener listener,
326                                           in [Optional] boolean useCapture);
327         boolean dispatchEvent(in Event evt)
328             raises(EventException);
329
330         [V8Custom] void captureEvents(/*in long eventFlags*/);
331         [V8Custom] void releaseEvents(/*in long eventFlags*/);
332
333 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
334         // Global constructors
335         attribute StyleSheetConstructor StyleSheet;
336         attribute CSSStyleSheetConstructor CSSStyleSheet;
337
338         attribute CSSValueConstructor CSSValue;
339         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
340         attribute CSSValueListConstructor CSSValueList;
341         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
342
343 #if defined(ENABLE_CSS_FILTERS) && ENABLE_CSS_FILTERS
344         attribute WebKitCSSFilterValueConstructor WebKitCSSFilterValue;
345 #endif
346
347         attribute CSSRuleConstructor CSSRule;
348         attribute CSSCharsetRuleConstructor CSSCharsetRule;
349         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
350         attribute CSSImportRuleConstructor CSSImportRule;
351         attribute CSSMediaRuleConstructor CSSMediaRule;
352         attribute CSSPageRuleConstructor CSSPageRule;
353         attribute CSSStyleRuleConstructor CSSStyleRule;
354         
355         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
356         attribute MediaListConstructor MediaList;
357         attribute CounterConstructor Counter;
358         attribute CSSRuleListConstructor CSSRuleList;
359         attribute RectConstructor Rect;
360         attribute RGBColorConstructor RGBColor;
361         attribute StyleSheetListConstructor StyleSheetList;
362
363         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
364         attribute DOMCoreExceptionConstructor DOMException;
365         attribute DOMStringListConstructor DOMStringList;
366 //        attribute NameListConstructor NameList;
367 //        attribute DOMImplementationListConstructor DOMImplementationList;
368 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
369         attribute DOMImplementationConstructor DOMImplementation;
370         attribute DOMSettableTokenListConstructor DOMSettableTokenList;
371         attribute DOMTokenListConstructor DOMTokenList;
372         attribute DocumentFragmentConstructor DocumentFragment;
373         attribute DocumentConstructor Document;
374         attribute NodeConstructor Node;
375         attribute NodeListConstructor NodeList;
376         attribute NamedNodeMapConstructor NamedNodeMap;
377         attribute CharacterDataConstructor CharacterData;
378         attribute AttrConstructor Attr;
379         attribute ElementConstructor Element;
380         attribute TextConstructor Text;
381         attribute CommentConstructor Comment;
382 //        attribute TypeInfoConstructor TypeInfo;
383 //        attribute UserDataHandlerConstructor UserDataHandler;
384 //        attribute DOMErrorConstructor DOMError;
385 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
386 //        attribute DOMLocatorConstructor DOMLocator;
387 //        attribute DOMConfigurationConstructor DOMConfiguration;
388         attribute CDATASectionConstructor CDATASection;
389         attribute DocumentTypeConstructor DocumentType;
390         attribute NotationConstructor Notation;
391         attribute EntityConstructor Entity;
392         attribute EntityReferenceConstructor EntityReference;
393         attribute ProcessingInstructionConstructor ProcessingInstruction;
394         attribute [Conditional=SHADOW_DOM, V8EnabledAtRuntime=shadowDOM] ShadowRootConstructor WebKitShadowRoot;
395
396         attribute DOMSelectionConstructor Selection;
397         attribute DOMWindowConstructor Window;
398
399         // FIXME: Should these Canvas constructors move to html/DOMWindowHTML with the rest of canvas?
400         attribute CanvasPatternConstructor CanvasPattern;
401         attribute CanvasGradientConstructor CanvasGradient;
402         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
403
404         attribute ImageDataConstructor ImageData;
405         attribute TextMetricsConstructor TextMetrics;
406
407         attribute DOMStringMapConstructor DOMStringMap;
408
409         attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
410         attribute Int8ArrayConstructor Int8Array; // Usable with new operator
411         attribute Uint8ArrayConstructor Uint8Array; // Usable with new operator
412         attribute Uint8ClampedArrayConstructor Uint8ClampedArray; // Usable with new operator
413         attribute Int16ArrayConstructor Int16Array; // Usable with new operator
414         attribute Uint16ArrayConstructor Uint16Array; // Usable with new operator
415         attribute Int32ArrayConstructor Int32Array; // Usable with new operator
416         attribute Uint32ArrayConstructor Uint32Array; // Usable with new operator
417         attribute Float32ArrayConstructor Float32Array; // Usable with new operator
418         attribute Float64ArrayConstructor Float64Array; // Usable with new operator
419         attribute DataViewConstructor DataView; // Usable with new operator
420
421         // Event Constructors
422         attribute EventConstructor Event;
423         attribute BeforeLoadEventConstructor BeforeLoadEvent;
424         attribute CompositionEventConstructor CompositionEvent;
425         attribute CustomEventConstructor CustomEvent;
426         attribute ErrorEventConstructor ErrorEvent;
427         attribute HashChangeEventConstructor HashChangeEvent;
428         attribute KeyboardEventConstructor KeyboardEvent;
429         attribute MessageEventConstructor MessageEvent;
430         attribute MouseEventConstructor MouseEvent;
431         attribute MutationEventConstructor MutationEvent;
432         attribute OverflowEventConstructor OverflowEvent;
433         attribute PopStateEventConstructor PopStateEvent;
434         attribute PageTransitionEventConstructor PageTransitionEvent;
435         attribute ProgressEventConstructor ProgressEvent;
436         attribute TextEventConstructor TextEvent;
437         attribute UIEventConstructor UIEvent;
438         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
439         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
440         attribute WheelEventConstructor WheelEvent;
441         attribute XMLHttpRequestProgressEventConstructor XMLHttpRequestProgressEvent;
442         attribute [Conditional=DEVICE_ORIENTATION, V8EnabledAtRuntime] DeviceMotionEventConstructor DeviceMotionEvent;
443         attribute [Conditional=DEVICE_ORIENTATION, V8EnabledAtRuntime] DeviceOrientationEventConstructor DeviceOrientationEvent;
444         attribute [Conditional=TOUCH_EVENTS] TouchEventConstructor TouchEvent;
445         attribute StorageEventConstructor StorageEvent;
446         attribute [Conditional=INPUT_SPEECH] SpeechInputEventConstructor SpeechInputEvent;
447         attribute [Conditional=WEBGL] WebGLContextEventConstructor WebGLContextEvent;
448
449         attribute EventExceptionConstructor EventException;
450
451         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
452         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
453         attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
454
455         attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
456
457         attribute WebKitPointConstructor WebKitPoint; // Usable with new the operator
458
459         attribute ClipboardConstructor Clipboard;
460
461         attribute FileConstructor File;
462         attribute FileListConstructor FileList;
463         attribute BlobConstructor Blob;
464
465         attribute NodeFilterConstructor NodeFilter;
466         attribute RangeConstructor Range;
467         attribute RangeExceptionConstructor RangeException;
468
469         attribute EventSourceConstructor EventSource; // Usable with new the operator
470
471         // Mozilla has a separate XMLDocument object for XML documents. 
472         // We just use Document for this.
473         attribute DocumentConstructor XMLDocument;
474         attribute DOMParserConstructor DOMParser;
475         attribute XMLSerializerConstructor XMLSerializer;
476         attribute XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
477         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
478         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
479         attribute [Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
480
481 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
482         attribute MessagePortConstructor MessagePort;
483         attribute MessageChannelConstructor MessageChannel; // Usable with the new operator
484 #endif
485
486         attribute DOMPluginConstructor Plugin;
487         attribute DOMPluginArrayConstructor PluginArray;
488
489         attribute DOMMimeTypeConstructor MimeType;
490         attribute DOMMimeTypeArrayConstructor MimeTypeArray;
491
492         attribute ClientRectConstructor ClientRect;
493         attribute ClientRectListConstructor ClientRectList;
494
495         attribute StorageConstructor Storage;
496
497 #if defined(ENABLE_ANIMATION_API) && ENABLE_ANIMATION_API
498         attribute WebKitAnimationConstructor WebKitAnimation;
499         attribute WebKitAnimationListConstructor WebKitAnimationList;
500 #endif
501
502         attribute XPathEvaluatorConstructor XPathEvaluator;
503         attribute XPathResultConstructor XPathResult;
504         attribute XPathExceptionConstructor XPathException;
505
506         attribute DOMFormDataConstructor FormData;
507
508         attribute [Conditional=BLOB|FILE_SYSTEM] FileErrorConstructor FileError;
509         attribute [Conditional=BLOB] FileReaderConstructor FileReader;
510
511         attribute [Conditional=BLOB] WebKitBlobBuilderConstructor WebKitBlobBuilder;
512
513         attribute [Conditional=BLOB] DOMURLConstructor webkitURL;
514
515 #if defined(ENABLE_QUOTA) && ENABLE_QUOTA
516         readonly attribute [V8EnabledAtRuntime=Quota] StorageInfo webkitStorageInfo;
517 #endif
518
519         attribute [Conditional=MUTATION_OBSERVERS] WebKitMutationObserverConstructor WebKitMutationObserver;
520
521 #endif // defined(LANGUAGE_JAVASCRIPT)
522
523 #if defined(V8_BINDING) && V8_BINDING
524         // window.toString() requires special handling in V8
525         [V8DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString toString();
526 #endif // defined(V8_BINDING)
527     };
528
529 }
530