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