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