6eb74773d0f45a9575e604cfdc0afd1a429c842b
[WebKit-https.git] / Source / WebCore / page / DOMWindow.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 module window {
28
29     interface [
30         CheckDomainSecurity,
31         CustomDefineGetter,
32         CustomDefineSetter,
33         CustomDeleteProperty,
34         CustomGetOwnPropertySlot,
35         CustomGetPropertyNames,
36         CustomMarkFunction,
37         CustomNativeConverter,
38         CustomPutFunction,
39         EventTarget,
40         ExtendsDOMGlobalObject,
41         GenerateNativeConverter,
42         ReplaceableConstructor,
43         LegacyParent=JSDOMWindowBase
44     ] DOMWindow {
45         // DOM Level 0
46         attribute [Replaceable] Screen screen;
47         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, JSCCustomGetter] History history;
48         attribute [Replaceable] BarInfo locationbar;
49         attribute [Replaceable] BarInfo menubar;
50         attribute [Replaceable] BarInfo personalbar;
51         attribute [Replaceable] BarInfo scrollbars;
52         attribute [Replaceable] BarInfo statusbar;
53         attribute [Replaceable] BarInfo toolbar;
54         attribute [Replaceable] Navigator navigator;
55         attribute [Replaceable] Navigator clientInformation;
56         readonly attribute Crypto crypto;
57         attribute [DoNotCheckDomainSecurity, JSCCustom, V8CustomSetter, V8Unforgeable, CPPCustom] Location location;
58
59         attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
60
61
62         DOMSelection getSelection();
63
64         readonly attribute [CheckNodeSecurity] Element frameElement;
65
66         [DoNotCheckDomainSecurity] void focus();
67         [DoNotCheckDomainSecurity] void blur();
68         [DoNotCheckDomainSecurity, CallWith=ScriptExecutionContext] void close();
69
70         void print();
71         void stop();
72
73         [Custom] DOMWindow open(in DOMString url,
74                                 in DOMString name,
75                                 in [Optional] DOMString options);
76
77         [Custom] DOMObject showModalDialog(in DOMString url,
78                                            in [Optional] DOMObject dialogArgs,
79                                            in [Optional] DOMString featureArgs);
80
81         void alert(in [Optional=CallWithDefaultValue] DOMString message);
82         boolean confirm(in [Optional=CallWithDefaultValue] DOMString message);
83         [ConvertNullStringTo=Null] DOMString prompt(in [Optional=CallWithDefaultValue] DOMString message,
84                                                     in [ConvertUndefinedOrNullToNullString,Optional=CallWithDefaultValue] DOMString defaultValue);
85
86         boolean find(in [Optional=CallWithDefaultValue] DOMString string,
87                      in [Optional=CallWithDefaultValue] boolean caseSensitive,
88                      in [Optional=CallWithDefaultValue] boolean backwards,
89                      in [Optional=CallWithDefaultValue] boolean wrap,
90                      in [Optional=CallWithDefaultValue] boolean wholeWord,
91                      in [Optional=CallWithDefaultValue] boolean searchInFrames,
92                      in [Optional=CallWithDefaultValue] boolean showDialog);
93
94         attribute [Replaceable] boolean offscreenBuffering;
95
96         attribute [Replaceable] long outerHeight;
97         attribute [Replaceable] long outerWidth;
98         attribute [Replaceable] long innerHeight;
99         attribute [Replaceable] long innerWidth;
100         attribute [Replaceable] long screenX;
101         attribute [Replaceable] long screenY;
102         attribute [Replaceable] long screenLeft;
103         attribute [Replaceable] long screenTop;
104         attribute [Replaceable] long scrollX;
105         attribute [Replaceable] long scrollY;
106         readonly attribute long pageXOffset;
107         readonly attribute long pageYOffset;
108
109         void scrollBy(in [Optional=CallWithDefaultValue] long x, in [Optional=CallWithDefaultValue] long y);
110         void scrollTo(in [Optional=CallWithDefaultValue] long x, in [Optional=CallWithDefaultValue] long y);
111         void scroll(in [Optional=CallWithDefaultValue] long x, in [Optional=CallWithDefaultValue] long y);
112         void moveBy(in [Optional=CallWithDefaultValue] float x, in [Optional=CallWithDefaultValue] float y); // FIXME: this should take longs not floats.
113         void moveTo(in [Optional=CallWithDefaultValue] float x, in [Optional=CallWithDefaultValue] float y); // FIXME: this should take longs not floats.
114         void resizeBy(in [Optional=CallWithDefaultValue] float x, in [Optional=CallWithDefaultValue] float y); // FIXME: this should take longs not floats.
115         void resizeTo(in [Optional=CallWithDefaultValue] float width, in [Optional=CallWithDefaultValue] float height); // FIXME: this should take longs not floats.
116
117         readonly attribute [DoNotCheckDomainSecurity] boolean closed;
118
119         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] unsigned long length;
120
121         attribute DOMString name;
122
123         attribute DOMString status;
124         attribute DOMString defaultStatus;
125 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
126         // This attribute is an alias of defaultStatus and is necessary for legacy uses.
127         attribute DOMString defaultstatus;
128 #endif
129
130         // Self referential attributes
131         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow self;
132         readonly attribute [DoNotCheckDomainSecurity, V8Unforgeable] DOMWindow window;
133         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow frames;
134
135         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8CustomSetter] DOMWindow opener;
136         attribute [Replaceable, DoNotCheckDomainSecurityOnGet] DOMWindow parent;
137         attribute [Replaceable, DoNotCheckDomainSecurityOnGet, V8Unforgeable, V8ReadOnly] DOMWindow top;
138
139         // DOM Level 2 AbstractView Interface
140         readonly attribute Document document;
141
142         // CSSOM View Module
143         MediaQueryList matchMedia(in DOMString query);
144
145         // styleMedia has been removed from the CSSOM View specification.
146         readonly attribute StyleMedia styleMedia;
147
148         // DOM Level 2 Style Interface
149         CSSStyleDeclaration getComputedStyle(in [Optional=CallWithDefaultValue] Element element,
150                                              in [ConvertUndefinedOrNullToNullString,Optional=CallWithDefaultValue] DOMString pseudoElement);
151
152         // WebKit extensions
153 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
154         CSSRuleList getMatchedCSSRules(in [Optional=CallWithDefaultValue] Element element,
155                                        in [Optional=CallWithDefaultValue] DOMString pseudoElement);
156 #endif
157
158         attribute [Replaceable] double devicePixelRatio;
159         
160         WebKitPoint webkitConvertPointFromPageToNode(in [Optional=CallWithDefaultValue] Node node, 
161                                                      in [Optional=CallWithDefaultValue] WebKitPoint p);
162         WebKitPoint webkitConvertPointFromNodeToPage(in [Optional=CallWithDefaultValue] Node node, 
163                                                      in [Optional=CallWithDefaultValue] WebKitPoint p);
164
165         readonly attribute [EnabledAtRuntime] DOMApplicationCache applicationCache;
166
167         readonly attribute [EnabledAtRuntime] Storage sessionStorage
168             getter raises(DOMException);
169         readonly attribute [EnabledAtRuntime] Storage localStorage
170             getter raises(DOMException);
171
172 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
173         readonly attribute [EnabledAtRuntime] NotificationCenter webkitNotifications;
174 #endif
175 #if defined(ENABLE_FILE_SYSTEM) && ENABLE_FILE_SYSTEM
176         const unsigned short TEMPORARY = 0;
177         const unsigned short PERSISTENT = 1;
178         [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(in unsigned short type, in long long size, in [Callback] FileSystemCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
179         [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(in DOMString url, in [Callback, Optional] EntryCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
180 #endif
181
182 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
183         // This is the interface orientation in degrees. Some examples are:
184         //  0 is straight up; -90 is when the device is rotated 90 clockwise;
185         //  90 is when rotated counter clockwise.
186         readonly attribute long orientation;
187 #endif
188
189                  attribute [Replaceable] Console console;
190
191         // cross-document messaging
192 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
193         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin)
194             raises(DOMException);
195         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array messagePorts)
196             raises(DOMException);
197
198         [DoNotCheckDomainSecurity, Custom] void webkitPostMessage(in SerializedScriptValue message, in DOMString targetOrigin)
199             raises(DOMException);
200         [DoNotCheckDomainSecurity, Custom] void webkitPostMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array transferList)
201             raises(DOMException);
202 #else
203         // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
204         [DoNotCheckDomainSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
205             raises(DOMException);
206 #endif
207
208 #if defined(ENABLE_WEB_TIMING) && ENABLE_WEB_TIMING
209         attribute [Replaceable] Performance performance;
210 #endif
211
212         // Timers
213         [Custom] long setTimeout(in [Optional=CallWithDefaultValue] TimeoutHandler handler, 
214                                  in [Optional=CallWithDefaultValue] long timeout);
215         // [Custom] long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
216         // [Custom] long setTimeout(in DOMString code, in long timeout);
217         void clearTimeout(in [Optional=CallWithDefaultValue] long handle);
218         [Custom] long setInterval(in TimeoutHandler handler, in long timeout);
219         // [Custom] long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
220         // [Custom] long setInterval(in DOMString code, in long timeout);
221         void clearInterval(in [Optional=CallWithDefaultValue] long handle);
222
223 #if defined(ENABLE_REQUEST_ANIMATION_FRAME)
224         // WebKit animation extensions, being standardized in the WebPerf WG
225         long webkitRequestAnimationFrame(in [Callback] RequestAnimationFrameCallback callback, in [Optional=CallWithDefaultValue] Element element);
226         void webkitCancelAnimationFrame(in long id);
227         void webkitCancelRequestAnimationFrame(in long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
228 #endif
229
230         // Base64
231         DOMString atob(in [TreatNullAs=EmptyString,Optional=CallWithDefaultValue] DOMString string)
232             raises(DOMException);
233         DOMString btoa(in [TreatNullAs=EmptyString,Optional=CallWithDefaultValue] DOMString string)
234             raises(DOMException);
235
236         // Events
237         attribute EventListener onabort;
238         attribute EventListener onbeforeunload;
239         attribute EventListener onblur;
240         attribute EventListener oncanplay;
241         attribute EventListener oncanplaythrough;
242         attribute EventListener onchange;
243         attribute EventListener onclick;
244         attribute EventListener oncontextmenu;
245         attribute EventListener ondblclick;
246         attribute EventListener ondrag;
247         attribute EventListener ondragend;
248         attribute EventListener ondragenter;
249         attribute EventListener ondragleave;
250         attribute EventListener ondragover;
251         attribute EventListener ondragstart;
252         attribute EventListener ondrop;
253         attribute EventListener ondurationchange;
254         attribute EventListener onemptied;
255         attribute EventListener onended;
256         attribute EventListener onerror;
257         attribute EventListener onfocus;
258         attribute EventListener onhashchange;
259         attribute EventListener oninput;
260         attribute EventListener oninvalid;
261         attribute EventListener onkeydown;
262         attribute EventListener onkeypress;
263         attribute EventListener onkeyup;
264         attribute EventListener onload;
265         attribute EventListener onloadeddata;
266         attribute EventListener onloadedmetadata;
267         attribute EventListener onloadstart;
268         attribute EventListener onmessage;
269         attribute EventListener onmousedown;
270         attribute EventListener onmousemove;
271         attribute EventListener onmouseout;
272         attribute EventListener onmouseover;
273         attribute EventListener onmouseup;
274         attribute EventListener onmousewheel;
275         attribute EventListener onoffline;
276         attribute EventListener ononline;
277         attribute EventListener onpagehide;
278         attribute EventListener onpageshow;
279         attribute EventListener onpause;
280         attribute EventListener onplay;
281         attribute EventListener onplaying;
282         attribute EventListener onpopstate;
283         attribute EventListener onprogress;
284         attribute EventListener onratechange;
285         attribute EventListener onresize;
286         attribute EventListener onscroll;
287         attribute EventListener onseeked;
288         attribute EventListener onseeking;
289         attribute EventListener onselect;
290         attribute EventListener onstalled;
291         attribute EventListener onstorage;
292         attribute EventListener onsubmit;
293         attribute EventListener onsuspend;
294         attribute EventListener ontimeupdate;
295         attribute EventListener onunload;
296         attribute EventListener onvolumechange;
297         attribute EventListener onwaiting;
298
299         // Not implemented yet.
300         // attribute EventListener onafterprint;
301         // attribute EventListener onbeforeprint;
302         // attribute EventListener onreadystatechange;
303         // attribute EventListener onredo;
304         // attribute EventListener onshow;
305         // attribute EventListener onundo;
306
307         // Webkit extensions
308         attribute EventListener onreset;
309         attribute EventListener onsearch;
310         attribute EventListener onwebkitanimationend;
311         attribute EventListener onwebkitanimationiteration;
312         attribute EventListener onwebkitanimationstart;
313         attribute EventListener onwebkittransitionend;
314 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
315         attribute EventListener onorientationchange;
316 #endif
317         attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchstart;
318         attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchmove;
319         attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchend;
320         attribute [Conditional=TOUCH_EVENTS,EnabledAtRuntime] EventListener ontouchcancel;
321
322         attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] EventListener ondevicemotion;
323         attribute [Conditional=DEVICE_ORIENTATION,EnabledAtRuntime] EventListener ondeviceorientation;
324
325         attribute [Conditional=MEDIA_STREAM,EnabledAtRuntime] PeerConnectionConstructor webkitPeerConnection;
326
327         // EventTarget interface
328         [Custom] void addEventListener(in DOMString type,
329                                       in EventListener listener,
330                                       in [Optional] boolean useCapture);
331         [Custom] void removeEventListener(in DOMString type,
332                                           in EventListener listener,
333                                           in [Optional] boolean useCapture);
334         boolean dispatchEvent(in Event evt)
335             raises(EventException);
336
337         [V8Custom=DOMWindowNOP] void captureEvents(/*in long eventFlags*/);
338         [V8Custom=DOMWindowNOP] void releaseEvents(/*in long eventFlags*/);
339
340 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
341         // Global constructors
342         attribute StyleSheetConstructor StyleSheet;
343         attribute CSSStyleSheetConstructor CSSStyleSheet;
344
345         attribute CSSValueConstructor CSSValue;
346         attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
347         attribute CSSValueListConstructor CSSValueList;
348         attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
349
350 #if defined(ENABLE_CSS_FILTERS) && ENABLE_CSS_FILTERS
351         attribute WebKitCSSFilterValueConstructor WebKitCSSFilterValue;
352 #endif
353
354         attribute CSSRuleConstructor CSSRule;
355         attribute CSSCharsetRuleConstructor CSSCharsetRule;
356         attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
357         attribute CSSImportRuleConstructor CSSImportRule;
358         attribute CSSMediaRuleConstructor CSSMediaRule;
359         attribute CSSPageRuleConstructor CSSPageRule;
360         attribute CSSStyleRuleConstructor CSSStyleRule;
361         
362         attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
363         attribute MediaListConstructor MediaList;
364         attribute CounterConstructor Counter;
365         attribute CSSRuleListConstructor CSSRuleList;
366         attribute RectConstructor Rect;
367         attribute RGBColorConstructor RGBColor;
368         attribute StyleSheetListConstructor StyleSheetList;
369
370         // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
371         attribute DOMCoreExceptionConstructor DOMException;
372         attribute DOMStringListConstructor DOMStringList;
373 //        attribute NameListConstructor NameList;
374 //        attribute DOMImplementationListConstructor DOMImplementationList;
375 //        attribute DOMImplementationSourceConstructor DOMImplementationSource;
376         attribute DOMImplementationConstructor DOMImplementation;
377         attribute DOMSettableTokenListConstructor DOMSettableTokenList;
378         attribute DOMTokenListConstructor DOMTokenList;
379         attribute DocumentFragmentConstructor DocumentFragment;
380         attribute DocumentConstructor Document;
381         attribute NodeConstructor Node;
382         attribute NodeListConstructor NodeList;
383         attribute NamedNodeMapConstructor NamedNodeMap;
384         attribute CharacterDataConstructor CharacterData;
385         attribute AttrConstructor Attr;
386         attribute ElementConstructor Element;
387         attribute TextConstructor Text;
388         attribute CommentConstructor Comment;
389 //        attribute TypeInfoConstructor TypeInfo;
390 //        attribute UserDataHandlerConstructor UserDataHandler;
391 //        attribute DOMErrorConstructor DOMError;
392 //        attribute DOMErrorHandlerConstructor DOMErrorHandler
393 //        attribute DOMLocatorConstructor DOMLocator;
394 //        attribute DOMConfigurationConstructor DOMConfiguration;
395         attribute CDATASectionConstructor CDATASection;
396         attribute DocumentTypeConstructor DocumentType;
397         attribute NotationConstructor Notation;
398         attribute EntityConstructor Entity;
399         attribute EntityReferenceConstructor EntityReference;
400         attribute ProcessingInstructionConstructor ProcessingInstruction;
401         attribute [Conditional=SHADOW_DOM, EnabledAtRuntime=shadowDOM] ShadowRootConstructor WebKitShadowRoot;
402
403         attribute HTMLDocumentConstructor HTMLDocument;
404
405         attribute HTMLElementConstructor HTMLElement;
406         attribute HTMLAnchorElementConstructor HTMLAnchorElement;
407         attribute HTMLAppletElementConstructor HTMLAppletElement;
408         attribute HTMLAreaElementConstructor HTMLAreaElement;
409         attribute HTMLBRElementConstructor HTMLBRElement;
410         attribute HTMLBaseElementConstructor HTMLBaseElement;
411         attribute HTMLBaseFontElementConstructor HTMLBaseFontElement;
412         attribute HTMLBodyElementConstructor HTMLBodyElement;
413         attribute HTMLButtonElementConstructor HTMLButtonElement;
414         attribute HTMLCanvasElementConstructor HTMLCanvasElement;
415         attribute HTMLDListElementConstructor HTMLDListElement;
416         attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
417         attribute HTMLDivElementConstructor HTMLDivElement;
418         attribute HTMLEmbedElementConstructor HTMLEmbedElement;
419         attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
420         attribute HTMLFontElementConstructor HTMLFontElement;
421         attribute HTMLFormElementConstructor HTMLFormElement;
422         attribute HTMLFrameElementConstructor HTMLFrameElement;
423         attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
424         attribute HTMLHRElementConstructor HTMLHRElement;
425         attribute HTMLHeadElementConstructor HTMLHeadElement;
426         attribute HTMLHeadingElementConstructor HTMLHeadingElement;
427         attribute HTMLHtmlElementConstructor HTMLHtmlElement;
428         attribute HTMLIFrameElementConstructor HTMLIFrameElement;
429         attribute HTMLImageElementConstructor HTMLImageElement;
430         attribute HTMLInputElementConstructor HTMLInputElement;
431         attribute HTMLKeygenElementConstructor HTMLKeygenElement;
432         attribute HTMLLIElementConstructor HTMLLIElement;
433         attribute HTMLLabelElementConstructor HTMLLabelElement;
434         attribute HTMLLegendElementConstructor HTMLLegendElement;
435         attribute HTMLLinkElementConstructor HTMLLinkElement;
436         attribute HTMLMapElementConstructor HTMLMapElement;
437         attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
438         attribute HTMLMenuElementConstructor HTMLMenuElement;
439         attribute HTMLMetaElementConstructor HTMLMetaElement;
440 #if defined(ENABLE_METER_TAG) && ENABLE_METER_TAG
441         attribute HTMLMeterElementConstructor HTMLMeterElement;
442 #endif
443         attribute HTMLModElementConstructor HTMLModElement;
444         attribute HTMLOListElementConstructor HTMLOListElement;
445         attribute HTMLObjectElementConstructor HTMLObjectElement;
446         attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
447         attribute HTMLOptionElementConstructor HTMLOptionElement;
448         attribute HTMLOutputElementConstructor HTMLOutputElement;
449         attribute HTMLParagraphElementConstructor HTMLParagraphElement;
450         attribute HTMLParamElementConstructor HTMLParamElement;
451         attribute HTMLPreElementConstructor HTMLPreElement;
452 #if defined(ENABLE_PROGRESS_TAG) && ENABLE_PROGRESS_TAG
453         attribute HTMLProgressElementConstructor HTMLProgressElement;
454 #endif
455         attribute HTMLQuoteElementConstructor HTMLQuoteElement;
456         attribute HTMLScriptElementConstructor HTMLScriptElement;
457         attribute HTMLSelectElementConstructor HTMLSelectElement;
458         attribute HTMLSpanElementConstructor HTMLSpanElement;
459         attribute HTMLStyleElementConstructor HTMLStyleElement;
460         attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
461         attribute HTMLTableCellElementConstructor HTMLTableCellElement;
462         attribute HTMLTableColElementConstructor HTMLTableColElement;
463         attribute HTMLTableElementConstructor HTMLTableElement;
464         attribute HTMLTableRowElementConstructor HTMLTableRowElement;
465         attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
466         attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
467         attribute HTMLTitleElementConstructor HTMLTitleElement;
468         attribute HTMLUListElementConstructor HTMLUListElement;
469
470         attribute HTMLCollectionConstructor HTMLCollection;
471         attribute HTMLAllCollectionConstructor HTMLAllCollection;
472         attribute [Conditional=MICRODATA] HTMLPropertiesCollectionConstructor HTMLPropertiesCollection;
473         attribute HTMLUnknownElementConstructor HTMLUnknownElement;
474
475         attribute [JSCCustomGetter, CustomConstructor] HTMLImageElementConstructorConstructor Image; // Usable with new operator
476         attribute [JSCCustomGetter] HTMLOptionElementConstructorConstructor Option; // Usable with new operator
477
478         attribute CanvasPatternConstructor CanvasPattern;
479         attribute CanvasGradientConstructor CanvasGradient;
480         attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
481         attribute ImageDataConstructor ImageData;
482         attribute [Conditional=WEBGL] WebGLActiveInfoConstructor WebGLActiveInfo;
483         attribute [Conditional=WEBGL] WebGLBufferConstructor WebGLBuffer;
484         attribute [Conditional=WEBGL] WebGLFramebufferConstructor WebGLFramebuffer;
485         attribute [Conditional=WEBGL] WebGLProgramConstructor WebGLProgram;
486         attribute [Conditional=WEBGL] WebGLRenderbufferConstructor WebGLRenderbuffer;
487         attribute [Conditional=WEBGL] WebGLRenderingContextConstructor WebGLRenderingContext;
488         attribute [Conditional=WEBGL] WebGLShaderConstructor WebGLShader;
489         attribute [Conditional=WEBGL] WebGLTextureConstructor WebGLTexture;
490         attribute [Conditional=WEBGL] WebGLUniformLocationConstructor WebGLUniformLocation;
491         attribute TextMetricsConstructor TextMetrics;
492
493         attribute DOMStringMapConstructor DOMStringMap;
494
495         attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
496         attribute Int8ArrayConstructor Int8Array; // Usable with new operator
497         attribute Uint8ArrayConstructor Uint8Array; // Usable with new operator
498         attribute Uint8ClampedArrayConstructor Uint8ClampedArray; // Usable with new operator
499         attribute Int16ArrayConstructor Int16Array; // Usable with new operator
500         attribute Uint16ArrayConstructor Uint16Array; // Usable with new operator
501         attribute Int32ArrayConstructor Int32Array; // Usable with new operator
502         attribute Uint32ArrayConstructor Uint32Array; // Usable with new operator
503         attribute Float32ArrayConstructor Float32Array; // Usable with new operator
504         attribute Float64ArrayConstructor Float64Array; // Usable with new operator
505         attribute DataViewConstructor DataView; // Usable with new operator
506
507         // Event Constructors
508         attribute EventConstructor Event;
509         attribute BeforeLoadEventConstructor BeforeLoadEvent;
510         attribute CompositionEventConstructor CompositionEvent;
511         attribute CustomEventConstructor CustomEvent;
512         attribute ErrorEventConstructor ErrorEvent;
513         attribute HashChangeEventConstructor HashChangeEvent;
514         attribute KeyboardEventConstructor KeyboardEvent;
515         attribute MessageEventConstructor MessageEvent;
516         attribute MouseEventConstructor MouseEvent;
517         attribute MutationEventConstructor MutationEvent;
518         attribute OverflowEventConstructor OverflowEvent;
519         attribute PopStateEventConstructor PopStateEvent;
520         attribute PageTransitionEventConstructor PageTransitionEvent;
521         attribute ProgressEventConstructor ProgressEvent;
522         attribute TextEventConstructor TextEvent;
523         attribute UIEventConstructor UIEvent;
524         attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
525         attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
526         attribute WheelEventConstructor WheelEvent;
527         attribute XMLHttpRequestProgressEventConstructor XMLHttpRequestProgressEvent;
528         attribute [Conditional=SVG] SVGZoomEventConstructor SVGZoomEvent;
529         attribute [Conditional=DEVICE_ORIENTATION, EnabledAtRuntime] DeviceMotionEventConstructor DeviceMotionEvent;
530         attribute [Conditional=DEVICE_ORIENTATION, EnabledAtRuntime] DeviceOrientationEventConstructor DeviceOrientationEvent;
531         attribute [Conditional=TOUCH_EVENTS] TouchEventConstructor TouchEvent;
532         attribute StorageEventConstructor StorageEvent;
533         attribute [Conditional=INPUT_SPEECH] SpeechInputEventConstructor SpeechInputEvent;
534         attribute [Conditional=MEDIA_STREAM] MediaStreamEventConstructor MediaStreamEvent;
535         attribute [Conditional=WEBGL] WebGLContextEventConstructor WebGLContextEvent;
536
537         attribute EventExceptionConstructor EventException;
538
539         attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
540         attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
541         attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
542
543         attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
544
545         attribute 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         attribute EventSourceConstructor EventSource; // Usable with new the operator
558
559         // Mozilla has a separate XMLDocument object for XML documents. 
560         // We just use Document for this.
561         attribute DocumentConstructor XMLDocument;
562
563         attribute DOMParserConstructor DOMParser;
564         attribute XMLSerializerConstructor XMLSerializer;
565
566         attribute XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
567         attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
568         attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
569
570         attribute [Conditional=XSLT] XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
571
572 #if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
573         attribute MessagePortConstructor MessagePort;
574         attribute MessageChannelConstructor MessageChannel; // Usable with the new operator
575 #endif
576
577 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS
578         attribute WorkerConstructor Worker; // Usable with the new operator
579 #endif
580
581 #if defined(ENABLE_SHARED_WORKERS) && ENABLE_SHARED_WORKERS
582         attribute [JSCCustomGetter, EnabledAtRuntime] SharedWorkerConstructor SharedWorker; // Usable with the new operator
583 #endif
584
585 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
586         attribute [EnabledAtRuntime=webkitVideoTrack] HTMLTrackElementConstructor HTMLTrackElement;
587         attribute [EnabledAtRuntime=webkitVideoTrack] TextTrackConstructor TextTrack;
588         attribute [EnabledAtRuntime=webkitVideoTrack] TextTrackCueConstructor TextTrackCue; // Usable with the new operator
589         attribute [EnabledAtRuntime=webkitVideoTrack] TextTrackCueListConstructor TextTrackCueList;
590         attribute [EnabledAtRuntime=webkitVideoTrack] TextTrackListConstructor TextTrackList;
591         attribute [EnabledAtRuntime=webkitVideoTrack] TrackEventConstructor TrackEvent;
592 #endif
593
594         attribute DOMPluginConstructor Plugin;
595         attribute DOMPluginArrayConstructor PluginArray;
596
597         attribute DOMMimeTypeConstructor MimeType;
598         attribute DOMMimeTypeArrayConstructor MimeTypeArray;
599
600         attribute ClientRectConstructor ClientRect;
601         attribute ClientRectListConstructor ClientRectList;
602
603         attribute StorageConstructor Storage;
604
605         attribute [JSCCustomGetter, Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructorConstructor Audio; // Usable with the new operator
606         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
607         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
608         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
609         attribute [Conditional=VIDEO, EnabledAtRuntime] MediaErrorConstructor MediaError;
610         attribute [Conditional=VIDEO, EnabledAtRuntime] TimeRangesConstructor TimeRanges;
611         attribute [Conditional=VIDEO, EnabledAtRuntime] HTMLSourceElementConstructor HTMLSourceElement;
612         attribute [Conditional=VIDEO, EnabledAtRuntime] MediaControllerConstructor MediaController;
613
614 #if defined(ENABLE_ANIMATION_API) && ENABLE_ANIMATION_API
615         attribute WebKitAnimationConstructor WebKitAnimation;
616         attribute WebKitAnimationListConstructor WebKitAnimationList;
617 #endif
618
619         attribute XPathEvaluatorConstructor XPathEvaluator;
620         attribute XPathResultConstructor XPathResult;
621         attribute XPathExceptionConstructor XPathException;
622
623 #if defined(ENABLE_SVG) && ENABLE_SVG
624         // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
625         // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
626         // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
627         // SVGStylable, SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
628         attribute SVGAElementConstructor SVGAElement;
629         attribute SVGAngleConstructor SVGAngle;
630         attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
631         attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
632         attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
633         attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
634         attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
635         attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
636         attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
637         attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
638         attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
639         attribute SVGAnimatedRectConstructor SVGAnimatedRect;
640         attribute SVGAnimatedStringConstructor SVGAnimatedString;
641         attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
642         attribute SVGCircleElementConstructor SVGCircleElement;
643         attribute SVGClipPathElementConstructor SVGClipPathElement;
644         attribute SVGColorConstructor SVGColor;
645         attribute SVGCursorElementConstructor SVGCursorElement;
646 //      attribute SVGCSSRuleConstructor SVGCSSRule;
647         attribute SVGDefsElementConstructor SVGDefsElement;
648         attribute SVGDescElementConstructor SVGDescElement;
649         attribute SVGDocumentConstructor SVGDocument;
650         attribute SVGElementConstructor SVGElement;
651         attribute SVGElementInstanceConstructor SVGElementInstance;
652         attribute SVGElementInstanceListConstructor SVGElementInstanceList;
653         attribute SVGEllipseElementConstructor SVGEllipseElement;
654         attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
655         attribute SVGExceptionConstructor SVGException;
656         attribute SVGGElementConstructor SVGGElement;
657         attribute SVGGradientElementConstructor SVGGradientElement;
658         attribute SVGImageElementConstructor SVGImageElement;
659         attribute SVGLengthConstructor SVGLength;
660         attribute SVGLengthListConstructor SVGLengthList;
661         attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
662         attribute SVGLineElementConstructor SVGLineElement;
663         attribute SVGMarkerElementConstructor SVGMarkerElement;
664         attribute SVGMaskElementConstructor SVGMaskElement;
665         attribute SVGMatrixConstructor SVGMatrix;
666         attribute SVGMetadataElementConstructor SVGMetadataElement;
667         attribute SVGNumberConstructor SVGNumber;
668         attribute SVGNumberListConstructor SVGNumberList;
669         attribute SVGPaintConstructor SVGPaint;
670         attribute SVGPathElementConstructor SVGPathElement;
671         attribute SVGPathSegConstructor SVGPathSeg;
672         attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
673         attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
674         attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
675         attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
676         attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
677         attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
678         attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
679         attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
680         attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
681         attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
682         attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
683         attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
684         attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
685         attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
686         attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
687         attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
688         attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
689         attribute SVGPathSegListConstructor SVGPathSegList;
690         attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
691         attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
692         attribute SVGPatternElementConstructor SVGPatternElement;
693         attribute SVGPointConstructor SVGPoint;
694         attribute SVGPointListConstructor SVGPointList;
695         attribute SVGPolygonElementConstructor SVGPolygonElement;
696         attribute SVGPolylineElementConstructor SVGPolylineElement;
697         attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
698         attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
699         attribute SVGRectConstructor SVGRect;
700         attribute SVGRectElementConstructor SVGRectElement;
701         attribute SVGRenderingIntentConstructor SVGRenderingIntent;
702         attribute SVGScriptElementConstructor SVGScriptElement;
703         attribute SVGStopElementConstructor SVGStopElement;
704         attribute SVGStringListConstructor SVGStringList;
705         attribute SVGStyleElementConstructor SVGStyleElement;
706         attribute SVGSVGElementConstructor SVGSVGElement;
707         attribute SVGSwitchElementConstructor SVGSwitchElement;
708         attribute SVGSymbolElementConstructor SVGSymbolElement;
709         attribute SVGTextContentElementConstructor SVGTextContentElement;
710         attribute SVGTextElementConstructor SVGTextElement;
711         attribute SVGTextPathElementConstructor SVGTextPathElement;
712         attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
713         attribute SVGTitleElementConstructor SVGTitleElement;
714         attribute SVGTransformConstructor SVGTransform;
715         attribute SVGTransformListConstructor SVGTransformList;
716         attribute SVGTRefElementConstructor SVGTRefElement;
717         attribute SVGTSpanElementConstructor SVGTSpanElement;
718         attribute SVGUnitTypesConstructor SVGUnitTypes;
719         attribute SVGUseElementConstructor SVGUseElement;
720         attribute SVGViewElementConstructor SVGViewElement;
721 //      attribute SVGViewSpecConstructor SVGViewSpec;
722
723         attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
724         attribute SVGAnimateElementConstructor SVGAnimateElement;
725         attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
726         attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
727         attribute SVGMPathElementConstructor SVGMPathElement;
728         attribute SVGSetElementConstructor SVGSetElement;
729
730 #if defined(ENABLE_SVG_FONTS) && ENABLE_SVG_FONTS
731         attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
732         attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
733         attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
734 //      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
735         attribute SVGFontElementConstructor SVGFontElement;
736         attribute SVGFontFaceElementConstructor SVGFontFaceElement;
737         attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
738         attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
739         attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
740         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
741         attribute SVGGlyphElementConstructor SVGGlyphElement;
742         attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
743         attribute SVGHKernElementConstructor SVGHKernElement;
744         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
745         attribute SVGVKernElementConstructor SVGVKernElement;
746 #endif
747
748 #if defined(ENABLE_FILTERS) && ENABLE_FILTERS
749         attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
750         attribute SVGFEBlendElementConstructor SVGFEBlendElement;
751         attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
752         attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
753         attribute SVGFECompositeElementConstructor SVGFECompositeElement;
754         attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
755         attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
756         attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
757         attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
758         attribute SVGFEDropShadowElementConstructor SVGFEDropShadowElement;
759         attribute SVGFEFloodElementConstructor SVGFEFloodElement;
760         attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
761         attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
762         attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
763         attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
764         attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
765         attribute SVGFEImageElementConstructor SVGFEImageElement;
766         attribute SVGFEMergeElementConstructor SVGFEMergeElement;
767         attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
768         attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
769         attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
770         attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
771         attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
772         attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
773         attribute SVGFETileElementConstructor SVGFETileElement;
774         attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
775         attribute SVGFilterElementConstructor SVGFilterElement;
776 #endif
777 #endif
778
779         attribute DOMFormDataConstructor FormData;
780
781         attribute [Conditional=BLOB|FILE_SYSTEM] FileErrorConstructor FileError;
782         attribute [Conditional=BLOB] FileReaderConstructor FileReader;
783
784         attribute [Conditional=BLOB] WebKitBlobBuilderConstructor WebKitBlobBuilder;
785
786         readonly attribute [Conditional=BLOB] DOMURL webkitURL;
787
788 #if defined(ENABLE_QUOTA) && ENABLE_QUOTA
789         readonly attribute [EnabledAtRuntime=Quota] StorageInfo webkitStorageInfo;
790 #endif
791
792         attribute [Conditional=MUTATION_OBSERVERS] WebKitMutationObserverConstructor WebKitMutationObserver;
793
794 #endif // defined(LANGUAGE_JAVASCRIPT)
795
796 #if defined(V8_BINDING) && V8_BINDING
797         // window.toString() requires special handling in V8
798         [V8DoNotCheckSignature, DoNotCheckDomainSecurity, Custom, DontEnum] DOMString toString();
799 #endif // defined(V8_BINDING)
800     };
801
802 }
803