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