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