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