Bug 1040543 part 3 - Add Animation interface; r=bz
[gecko.git] / dom / tests / mochitest / general / test_interfaces.html
blob56755d1bd29ff3b48781ff34502896ce345a32c2
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=766694
5 -->
6 <head>
7 <meta charset="utf-8">
8 <title>Test for Bug 766694</title>
9 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
11 </head>
12 <body>
13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=766694">Mozilla Bug 766694</a>
14 <p id="display"></p>
15 <div id="content" style="display: none">
17 </div>
18 <pre id="test">
19 <script type="application/javascript">
21 /** Test for Bug 766694 **/
23 // This is a list of all interfaces that are exposed to every webpage.
24 // Please only add things to this list with great care and proper review
25 // from the associated module peers.
27 // This file lists global interfaces we want exposed and verifies they
28 // are what we intend. Each entry in the arrays below can either be a
29 // simple string with the interface name, or an object with a 'name'
30 // property giving the interface name as a string, and additional
31 // properties which qualify the exposure of that interface. For example:
33 // [
34 // "AGlobalInterface",
35 // {name: "ExperimentalThing", release: false},
36 // {name: "OptionalThing", pref: "some.thing.enabled"},
37 // {name: "FancyControl", xbl: true},
38 // ];
40 // See createInterfaceMap() below for a complete list of properties.
42 // IMPORTANT: Do not change this list without review from
43 // a JavaScript Engine peer!
44 var ecmaGlobals =
46 "Array",
47 "ArrayBuffer",
48 "Boolean",
49 "DataView",
50 "Date",
51 "Error",
52 "EvalError",
53 "Float32Array",
54 "Float64Array",
55 "Function",
56 // NB: We haven't bothered to resolve constants like Infinity and NaN on
57 // Xrayed windows (which are seen from the XBL scope). We could support
58 // this if needed with some refactoring.
59 {name: "Infinity", xbl: false},
60 "Int16Array",
61 "Int32Array",
62 "Int8Array",
63 "InternalError",
64 {name: "Intl", desktop: true},
65 "Iterator",
66 "JSON",
67 "Map",
68 "Math",
69 {name: "NaN", xbl: false},
70 "Number",
71 "Object",
72 "Proxy",
73 "RangeError",
74 "ReferenceError",
75 "RegExp",
76 "Set",
77 {name: "SharedArrayBuffer", nightly: true},
78 {name: "SIMD", nightly: true},
79 "StopIteration",
80 "String",
81 "Symbol",
82 "SyntaxError",
83 {name: "TypedObject", nightly: true},
84 "TypeError",
85 "Uint16Array",
86 "Uint32Array",
87 "Uint8Array",
88 "Uint8ClampedArray",
89 "URIError",
90 "WeakMap",
92 // IMPORTANT: Do not change the list above without review from
93 // a JavaScript Engine peer!
95 // IMPORTANT: Do not change the list below without review from a DOM peer,
96 // except to remove items from it!
98 // This is a list of interfaces that were prefixed with 'moz' instead of 'Moz'.
99 // We should never to that again, interfaces in the DOM start with an uppercase
100 // letter. If you think you need to add an interface here, DON'T. Rename your
101 // interface.
102 var legacyMozPrefixedInterfaces =
104 "mozContact",
105 "mozRTCIceCandidate",
106 "mozRTCPeerConnection",
107 "mozRTCSessionDescription",
109 // IMPORTANT: Do not change the list above without review from a DOM peer,
110 // except to remove items from it!
112 // IMPORTANT: Do not change the list below without review from a DOM peer!
113 var interfaceNamesInGlobalScope =
115 // IMPORTANT: Do not change this list without review from a DOM peer!
116 {name: "AlarmsManager", pref: "dom.mozAlarms.enabled"},
117 // IMPORTANT: Do not change this list without review from a DOM peer!
118 "AnalyserNode",
119 // IMPORTANT: Do not change this list without review from a DOM peer!
120 "AnimationEvent",
121 // IMPORTANT: Do not change this list without review from a DOM peer!
122 {name: "Animation", pref: "dom.animations-api.core.enabled"},
123 // IMPORTANT: Do not change this list without review from a DOM peer!
124 {name: "AnimationPlayer", pref: "dom.animations-api.core.enabled"},
125 // IMPORTANT: Do not change this list without review from a DOM peer!
126 {name: "AnimationTimeline", pref: "dom.animations-api.core.enabled"},
127 // IMPORTANT: Do not change this list without review from a DOM peer!
128 "Attr",
129 // IMPORTANT: Do not change this list without review from a DOM peer!
130 "Audio",
131 // IMPORTANT: Do not change this list without review from a DOM peer!
132 "AudioBuffer",
133 // IMPORTANT: Do not change this list without review from a DOM peer!
134 {name: "AudioChannelManager", b2g: true},
135 // IMPORTANT: Do not change this list without review from a DOM peer!
136 "AudioContext",
137 // IMPORTANT: Do not change this list without review from a DOM peer!
138 "AudioBufferSourceNode",
139 // IMPORTANT: Do not change this list without review from a DOM peer!
140 "AudioDestinationNode",
141 // IMPORTANT: Do not change this list without review from a DOM peer!
142 "AudioListener",
143 // IMPORTANT: Do not change this list without review from a DOM peer!
144 "AudioNode",
145 // IMPORTANT: Do not change this list without review from a DOM peer!
146 "AudioParam",
147 // IMPORTANT: Do not change this list without review from a DOM peer!
148 "AudioProcessingEvent",
149 // IMPORTANT: Do not change this list without review from a DOM peer!
150 "AudioStreamTrack",
151 // IMPORTANT: Do not change this list without review from a DOM peer!
152 "BarProp",
153 // IMPORTANT: Do not change this list without review from a DOM peer!
154 "BatteryManager",
155 // IMPORTANT: Do not change this list without review from a DOM peer!
156 "BeforeUnloadEvent",
157 // IMPORTANT: Do not change this list without review from a DOM peer!
158 "BiquadFilterNode",
159 // IMPORTANT: Do not change this list without review from a DOM peer!
160 "Blob",
161 // IMPORTANT: Do not change this list without review from a DOM peer!
162 "BlobEvent",
163 // IMPORTANT: Do not change this list without review from a DOM peer!
164 {name: "BluetoothAdapter", b2g: true, permission: "bluetooth"},
165 // IMPORTANT: Do not change this list without review from a DOM peer!
166 {name: "BluetoothDevice", b2g: true, permission: "bluetooth"},
167 // IMPORTANT: Do not change this list without review from a DOM peer!
168 {name: "BluetoothDeviceEvent", b2g: true, permission: "bluetooth"},
169 // IMPORTANT: Do not change this list without review from a DOM peer!
170 {name: "BluetoothDiscoveryStateChangedEvent", b2g: true,
171 permission: "bluetooth"},
172 // IMPORTANT: Do not change this list without review from a DOM peer!
173 {name: "BluetoothManager", b2g: true, permission: "bluetooth"},
174 // IMPORTANT: Do not change this list without review from a DOM peer!
175 {name: "BluetoothStatusChangedEvent", b2g: true, permission: "bluetooth"},
176 // IMPORTANT: Do not change this list without review from a DOM peer!
177 {name: "BoxObject", xbl: true},
178 // IMPORTANT: Do not change this list without review from a DOM peer!
179 {name: "CallEvent", b2g: true, pref: "dom.telephony.enabled"},
180 // IMPORTANT: Do not change this list without review from a DOM peer!
181 {name: "CallGroupErrorEvent", b2g: true, pref: "dom.telephony.enabled"},
182 // IMPORTANT: Do not change this list without review from a DOM peer!
183 {name: "CameraCapabilities", b2g: true},
184 // IMPORTANT: Do not change this list without review from a DOM peer!
185 {name: "CameraControl", b2g: true},
186 // IMPORTANT: Do not change this list without review from a DOM peer!
187 {name: "CameraDetectedFace", b2g: true, pref: "camera.control.face_detection.enabled"},
188 // IMPORTANT: Do not change this list without review from a DOM peer!
189 {name: "CameraManager", b2g: true},
190 // IMPORTANT: Do not change this list without review from a DOM peer!
191 "CanvasGradient",
192 // IMPORTANT: Do not change this list without review from a DOM peer!
193 "CanvasPattern",
194 // IMPORTANT: Do not change this list without review from a DOM peer!
195 "CanvasRenderingContext2D",
196 // IMPORTANT: Do not change this list without review from a DOM peer!
197 "CaretPosition",
198 // IMPORTANT: Do not change this list without review from a DOM peer!
199 "CDATASection",
200 // IMPORTANT: Do not change this list without review from a DOM peer!
201 {name: "CFStateChangeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
202 // IMPORTANT: Do not change this list without review from a DOM peer!
203 "ChannelMergerNode",
204 // IMPORTANT: Do not change this list without review from a DOM peer!
205 "ChannelSplitterNode",
206 // IMPORTANT: Do not change this list without review from a DOM peer!
207 "CharacterData",
208 // IMPORTANT: Do not change this list without review from a DOM peer!
209 {name: "ChromeWindow", xbl: true},
210 // IMPORTANT: Do not change this list without review from a DOM peer!
211 "ClipboardEvent",
212 // IMPORTANT: Do not change this list without review from a DOM peer!
213 "CloseEvent",
214 // IMPORTANT: Do not change this list without review from a DOM peer!
215 "CommandEvent",
216 // IMPORTANT: Do not change this list without review from a DOM peer!
217 "Comment",
218 // IMPORTANT: Do not change this list without review from a DOM peer!
219 "CompositionEvent",
220 // IMPORTANT: Do not change this list without review from a DOM peer!
221 "Controllers",
222 // IMPORTANT: Do not change this list without review from a DOM peer!
223 "ConvolverNode",
224 // IMPORTANT: Do not change this list without review from a DOM peer!
225 "Crypto",
226 // IMPORTANT: Do not change this list without review from a DOM peer!
227 {name: "CryptoKey", pref: "dom.webcrypto.enabled"},
228 // IMPORTANT: Do not change this list without review from a DOM peer!
229 {name: "CryptoKeyPair", pref: "dom.webcrypto.enabled"},
230 // IMPORTANT: Do not change this list without review from a DOM peer!
231 "CSS",
232 // IMPORTANT: Do not change this list without review from a DOM peer!
233 "CSS2Properties",
234 // IMPORTANT: Do not change this list without review from a DOM peer!
235 "CSSCharsetRule",
236 // IMPORTANT: Do not change this list without review from a DOM peer!
237 "CSSConditionRule",
238 // IMPORTANT: Do not change this list without review from a DOM peer!
239 "CSSCounterStyleRule",
240 // IMPORTANT: Do not change this list without review from a DOM peer!
241 "CSSFontFaceRule",
242 // IMPORTANT: Do not change this list without review from a DOM peer!
243 {name: "CSSFontFeatureValuesRule", release: false},
244 // IMPORTANT: Do not change this list without review from a DOM peer!
245 "CSSGroupingRule",
246 // IMPORTANT: Do not change this list without review from a DOM peer!
247 "CSSImportRule",
248 // IMPORTANT: Do not change this list without review from a DOM peer!
249 "CSSMediaRule",
250 // IMPORTANT: Do not change this list without review from a DOM peer!
251 "CSSMozDocumentRule",
252 // IMPORTANT: Do not change this list without review from a DOM peer!
253 "CSSNameSpaceRule",
254 // IMPORTANT: Do not change this list without review from a DOM peer!
255 "CSSPageRule",
256 // IMPORTANT: Do not change this list without review from a DOM peer!
257 "CSSPrimitiveValue",
258 // IMPORTANT: Do not change this list without review from a DOM peer!
259 "CSSRule",
260 // IMPORTANT: Do not change this list without review from a DOM peer!
261 "CSSRuleList",
262 // IMPORTANT: Do not change this list without review from a DOM peer!
263 "CSSStyleDeclaration",
264 // IMPORTANT: Do not change this list without review from a DOM peer!
265 "CSSStyleRule",
266 // IMPORTANT: Do not change this list without review from a DOM peer!
267 "CSSStyleSheet",
268 // IMPORTANT: Do not change this list without review from a DOM peer!
269 "CSSSupportsRule",
270 // IMPORTANT: Do not change this list without review from a DOM peer!
271 "CSSValue",
272 // IMPORTANT: Do not change this list without review from a DOM peer!
273 "CSSValueList",
274 // IMPORTANT: Do not change this list without review from a DOM peer!
275 "CustomEvent",
276 // IMPORTANT: Do not change this list without review from a DOM peer!
277 "DataChannel",
278 // IMPORTANT: Do not change this list without review from a DOM peer!
279 {name: "DataErrorEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
280 // IMPORTANT: Do not change this list without review from a DOM peer!
281 {name: "DataStore", b2g: true},
282 // IMPORTANT: Do not change this list without review from a DOM peer!
283 {name: "DataStoreChangeEvent", b2g: true},
284 // IMPORTANT: Do not change this list without review from a DOM peer!
285 {name: "DataStoreCursor", b2g: true},
286 // IMPORTANT: Do not change this list without review from a DOM peer!
287 "DataTransfer",
288 // IMPORTANT: Do not change this list without review from a DOM peer!
289 "DelayNode",
290 // IMPORTANT: Do not change this list without review from a DOM peer!
291 "DesktopNotification",
292 // IMPORTANT: Do not change this list without review from a DOM peer!
293 "DesktopNotificationCenter",
294 // IMPORTANT: Do not change this list without review from a DOM peer!
295 "DeviceLightEvent",
296 // IMPORTANT: Do not change this list without review from a DOM peer!
297 "DeviceMotionEvent",
298 // IMPORTANT: Do not change this list without review from a DOM peer!
299 "DeviceOrientationEvent",
300 // IMPORTANT: Do not change this list without review from a DOM peer!
301 "DeviceProximityEvent",
302 // IMPORTANT: Do not change this list without review from a DOM peer!
303 "DeviceStorage",
304 // IMPORTANT: Do not change this list without review from a DOM peer!
305 "DeviceStorageChangeEvent",
306 // IMPORTANT: Do not change this list without review from a DOM peer!
307 "Document",
308 // IMPORTANT: Do not change this list without review from a DOM peer!
309 "DocumentFragment",
310 // IMPORTANT: Do not change this list without review from a DOM peer!
311 "DocumentType",
312 // IMPORTANT: Do not change this list without review from a DOM peer!
313 {name: "DOMConstructor", xbl: true},
314 // IMPORTANT: Do not change this list without review from a DOM peer!
315 "DOMCursor",
316 // IMPORTANT: Do not change this list without review from a DOM peer!
317 "DOMError",
318 // IMPORTANT: Do not change this list without review from a DOM peer!
319 "DOMException",
320 // IMPORTANT: Do not change this list without review from a DOM peer!
321 "DOMImplementation",
322 // IMPORTANT: Do not change this list without review from a DOM peer!
323 "DOMMatrix",
324 // IMPORTANT: Do not change this list without review from a DOM peer!
325 "DOMMatrixReadOnly",
326 // IMPORTANT: Do not change this list without review from a DOM peer!
327 {name: "DOMMMIError", b2g: true, pref: "dom.mobileconnection.enabled"},
328 // IMPORTANT: Do not change this list without review from a DOM peer!
329 {name: "DOMMobileMessageError", b2g: true, pref: "dom.sms.enabled"},
330 // IMPORTANT: Do not change this list without review from a DOM peer!
331 "DOMParser",
332 // IMPORTANT: Do not change this list without review from a DOM peer!
333 "DOMPoint",
334 // IMPORTANT: Do not change this list without review from a DOM peer!
335 "DOMPointReadOnly",
336 // IMPORTANT: Do not change this list without review from a DOM peer!
337 "DOMQuad",
338 // IMPORTANT: Do not change this list without review from a DOM peer!
339 "DOMRect",
340 // IMPORTANT: Do not change this list without review from a DOM peer!
341 "DOMRectList",
342 // IMPORTANT: Do not change this list without review from a DOM peer!
343 "DOMRectReadOnly",
344 // IMPORTANT: Do not change this list without review from a DOM peer!
345 "DOMRequest",
346 // IMPORTANT: Do not change this list without review from a DOM peer!
347 "DOMSettableTokenList",
348 // IMPORTANT: Do not change this list without review from a DOM peer!
349 "DOMStringList",
350 // IMPORTANT: Do not change this list without review from a DOM peer!
351 "DOMStringMap",
352 // IMPORTANT: Do not change this list without review from a DOM peer!
353 "DOMTokenList",
354 // IMPORTANT: Do not change this list without review from a DOM peer!
355 "DOMTransactionEvent",
356 // IMPORTANT: Do not change this list without review from a DOM peer!
357 "DragEvent",
358 // IMPORTANT: Do not change this list without review from a DOM peer!
359 "DynamicsCompressorNode",
360 // IMPORTANT: Do not change this list without review from a DOM peer!
361 "Element",
362 // IMPORTANT: Do not change this list without review from a DOM peer!
363 "ErrorEvent",
364 // IMPORTANT: Do not change this list without review from a DOM peer!
365 "Event",
366 // IMPORTANT: Do not change this list without review from a DOM peer!
367 "EventSource",
368 // IMPORTANT: Do not change this list without review from a DOM peer!
369 "EventTarget",
370 // IMPORTANT: Do not change this list without review from a DOM peer!
371 {name: "External", b2g: false},
372 // IMPORTANT: Do not change this list without review from a DOM peer!
373 "File",
374 // IMPORTANT: Do not change this list without review from a DOM peer!
375 "FileList",
376 // IMPORTANT: Do not change this list without review from a DOM peer!
377 "FileReader",
378 // IMPORTANT: Do not change this list without review from a DOM peer!
379 {name: "FMRadio", b2g: true},
380 // IMPORTANT: Do not change this list without review from a DOM peer!
381 "FocusEvent",
382 // IMPORTANT: Do not change this list without review from a DOM peer!
383 "FormData",
384 // IMPORTANT: Do not change this list without review from a DOM peer!
385 "GainNode",
386 // IMPORTANT: Do not change this list without review from a DOM peer!
387 {name: "Gamepad", b2g: false},
388 // IMPORTANT: Do not change this list without review from a DOM peer!
389 {name: "GamepadAxisMoveEvent", b2g: false},
390 // IMPORTANT: Do not change this list without review from a DOM peer!
391 {name: "GamepadButtonEvent", b2g: false},
392 // IMPORTANT: Do not change this list without review from a DOM peer!
393 {name: "GamepadButton", b2g: false},
394 // IMPORTANT: Do not change this list without review from a DOM peer!
395 {name: "GamepadEvent", b2g: false},
396 // IMPORTANT: Do not change this list without review from a DOM peer!
397 "HashChangeEvent",
398 // IMPORTANT: Do not change this list without review from a DOM peer!
399 {name: "Headers", pref: "dom.fetch.enabled"},
400 // IMPORTANT: Do not change this list without review from a DOM peer!
401 "History",
402 // IMPORTANT: Do not change this list without review from a DOM peer!
403 "HTMLAllCollection",
404 // IMPORTANT: Do not change this list without review from a DOM peer!
405 "HTMLAnchorElement",
406 // IMPORTANT: Do not change this list without review from a DOM peer!
407 "HTMLAppletElement",
408 // IMPORTANT: Do not change this list without review from a DOM peer!
409 "HTMLAreaElement",
410 // IMPORTANT: Do not change this list without review from a DOM peer!
411 "HTMLAudioElement",
412 // IMPORTANT: Do not change this list without review from a DOM peer!
413 "HTMLBaseElement",
414 // IMPORTANT: Do not change this list without review from a DOM peer!
415 "HTMLBodyElement",
416 // IMPORTANT: Do not change this list without review from a DOM peer!
417 "HTMLBRElement",
418 // IMPORTANT: Do not change this list without review from a DOM peer!
419 "HTMLButtonElement",
420 // IMPORTANT: Do not change this list without review from a DOM peer!
421 "HTMLCanvasElement",
422 // IMPORTANT: Do not change this list without review from a DOM peer!
423 "HTMLCollection",
424 // IMPORTANT: Do not change this list without review from a DOM peer!
425 "HTMLContentElement",
426 // IMPORTANT: Do not change this list without review from a DOM peer!
427 "HTMLDataElement",
428 // IMPORTANT: Do not change this list without review from a DOM peer!
429 "HTMLDataListElement",
430 // IMPORTANT: Do not change this list without review from a DOM peer!
431 "HTMLDirectoryElement",
432 // IMPORTANT: Do not change this list without review from a DOM peer!
433 "HTMLDivElement",
434 // IMPORTANT: Do not change this list without review from a DOM peer!
435 "HTMLDListElement",
436 // IMPORTANT: Do not change this list without review from a DOM peer!
437 "HTMLDocument",
438 // IMPORTANT: Do not change this list without review from a DOM peer!
439 "HTMLElement",
440 // IMPORTANT: Do not change this list without review from a DOM peer!
441 "HTMLEmbedElement",
442 // IMPORTANT: Do not change this list without review from a DOM peer!
443 "HTMLFieldSetElement",
444 // IMPORTANT: Do not change this list without review from a DOM peer!
445 "HTMLFontElement",
446 // IMPORTANT: Do not change this list without review from a DOM peer!
447 "HTMLFormControlsCollection",
448 // IMPORTANT: Do not change this list without review from a DOM peer!
449 "HTMLFormElement",
450 // IMPORTANT: Do not change this list without review from a DOM peer!
451 "HTMLFrameElement",
452 // IMPORTANT: Do not change this list without review from a DOM peer!
453 "HTMLFrameSetElement",
454 // IMPORTANT: Do not change this list without review from a DOM peer!
455 "HTMLHeadElement",
456 // IMPORTANT: Do not change this list without review from a DOM peer!
457 "HTMLHeadingElement",
458 // IMPORTANT: Do not change this list without review from a DOM peer!
459 "HTMLHRElement",
460 // IMPORTANT: Do not change this list without review from a DOM peer!
461 "HTMLHtmlElement",
462 // IMPORTANT: Do not change this list without review from a DOM peer!
463 "HTMLIFrameElement",
464 // IMPORTANT: Do not change this list without review from a DOM peer!
465 "HTMLImageElement",
466 // IMPORTANT: Do not change this list without review from a DOM peer!
467 "HTMLInputElement",
468 // IMPORTANT: Do not change this list without review from a DOM peer!
469 "HTMLLabelElement",
470 // IMPORTANT: Do not change this list without review from a DOM peer!
471 "HTMLLegendElement",
472 // IMPORTANT: Do not change this list without review from a DOM peer!
473 "HTMLLIElement",
474 // IMPORTANT: Do not change this list without review from a DOM peer!
475 "HTMLLinkElement",
476 // IMPORTANT: Do not change this list without review from a DOM peer!
477 "HTMLMapElement",
478 // IMPORTANT: Do not change this list without review from a DOM peer!
479 "HTMLMediaElement",
480 // IMPORTANT: Do not change this list without review from a DOM peer!
481 "HTMLMenuElement",
482 // IMPORTANT: Do not change this list without review from a DOM peer!
483 "HTMLMenuItemElement",
484 // IMPORTANT: Do not change this list without review from a DOM peer!
485 "HTMLMetaElement",
486 // IMPORTANT: Do not change this list without review from a DOM peer!
487 "HTMLMeterElement",
488 // IMPORTANT: Do not change this list without review from a DOM peer!
489 "HTMLModElement",
490 // IMPORTANT: Do not change this list without review from a DOM peer!
491 "HTMLObjectElement",
492 // IMPORTANT: Do not change this list without review from a DOM peer!
493 "HTMLOListElement",
494 // IMPORTANT: Do not change this list without review from a DOM peer!
495 "HTMLOptGroupElement",
496 // IMPORTANT: Do not change this list without review from a DOM peer!
497 "HTMLOptionElement",
498 // IMPORTANT: Do not change this list without review from a DOM peer!
499 "HTMLOptionsCollection",
500 // IMPORTANT: Do not change this list without review from a DOM peer!
501 "HTMLOutputElement",
502 // IMPORTANT: Do not change this list without review from a DOM peer!
503 "HTMLParagraphElement",
504 // IMPORTANT: Do not change this list without review from a DOM peer!
505 "HTMLParamElement",
506 // IMPORTANT: Do not change this list without review from a DOM peer!
507 "HTMLPreElement",
508 // IMPORTANT: Do not change this list without review from a DOM peer!
509 {name: "HTMLPictureElement", pref: "dom.image.picture.enabled"},
510 // IMPORTANT: Do not change this list without review from a DOM peer!
511 "HTMLProgressElement",
512 // IMPORTANT: Do not change this list without review from a DOM peer!
513 "HTMLPropertiesCollection",
514 // IMPORTANT: Do not change this list without review from a DOM peer!
515 "HTMLQuoteElement",
516 // IMPORTANT: Do not change this list without review from a DOM peer!
517 "HTMLScriptElement",
518 // IMPORTANT: Do not change this list without review from a DOM peer!
519 "HTMLSelectElement",
520 // IMPORTANT: Do not change this list without review from a DOM peer!
521 "HTMLShadowElement",
522 // IMPORTANT: Do not change this list without review from a DOM peer!
523 "HTMLSourceElement",
524 // IMPORTANT: Do not change this list without review from a DOM peer!
525 "HTMLSpanElement",
526 // IMPORTANT: Do not change this list without review from a DOM peer!
527 "HTMLStyleElement",
528 // IMPORTANT: Do not change this list without review from a DOM peer!
529 "HTMLTableCaptionElement",
530 // IMPORTANT: Do not change this list without review from a DOM peer!
531 "HTMLTableCellElement",
532 // IMPORTANT: Do not change this list without review from a DOM peer!
533 "HTMLTableColElement",
534 // IMPORTANT: Do not change this list without review from a DOM peer!
535 "HTMLTableElement",
536 // IMPORTANT: Do not change this list without review from a DOM peer!
537 "HTMLTableRowElement",
538 // IMPORTANT: Do not change this list without review from a DOM peer!
539 "HTMLTableSectionElement",
540 // IMPORTANT: Do not change this list without review from a DOM peer!
541 "HTMLTemplateElement",
542 // IMPORTANT: Do not change this list without review from a DOM peer!
543 "HTMLTextAreaElement",
544 // IMPORTANT: Do not change this list without review from a DOM peer!
545 "HTMLTimeElement",
546 // IMPORTANT: Do not change this list without review from a DOM peer!
547 "HTMLTitleElement",
548 // IMPORTANT: Do not change this list without review from a DOM peer!
549 "HTMLTrackElement",
550 // IMPORTANT: Do not change this list without review from a DOM peer!
551 "HTMLUListElement",
552 // IMPORTANT: Do not change this list without review from a DOM peer!
553 "HTMLUnknownElement",
554 // IMPORTANT: Do not change this list without review from a DOM peer!
555 "HTMLVideoElement",
556 // IMPORTANT: Do not change this list without review from a DOM peer!
557 {name: "IccChangeEvent", b2g: true, pref: "dom.icc.enabled"},
558 // IMPORTANT: Do not change this list without review from a DOM peer!
559 {name: "IccCardLockError", b2g: true, pref: "dom.icc.enabled"},
560 // IMPORTANT: Do not change this list without review from a DOM peer!
561 "IDBCursor",
562 // IMPORTANT: Do not change this list without review from a DOM peer!
563 "IDBCursorWithValue",
564 // IMPORTANT: Do not change this list without review from a DOM peer!
565 "IDBDatabase",
566 // IMPORTANT: Do not change this list without review from a DOM peer!
567 "IDBFactory",
568 // IMPORTANT: Do not change this list without review from a DOM peer!
569 "IDBFileHandle",
570 // IMPORTANT: Do not change this list without review from a DOM peer!
571 "IDBFileRequest",
572 // IMPORTANT: Do not change this list without review from a DOM peer!
573 "IDBIndex",
574 // IMPORTANT: Do not change this list without review from a DOM peer!
575 "IDBKeyRange",
576 // IMPORTANT: Do not change this list without review from a DOM peer!
577 "IDBMutableFile",
578 // IMPORTANT: Do not change this list without review from a DOM peer!
579 "IDBObjectStore",
580 // IMPORTANT: Do not change this list without review from a DOM peer!
581 "IDBOpenDBRequest",
582 // IMPORTANT: Do not change this list without review from a DOM peer!
583 "IDBRequest",
584 // IMPORTANT: Do not change this list without review from a DOM peer!
585 "IDBTransaction",
586 // IMPORTANT: Do not change this list without review from a DOM peer!
587 "IDBVersionChangeEvent",
588 // IMPORTANT: Do not change this list without review from a DOM peer!
589 "Image",
590 // IMPORTANT: Do not change this list without review from a DOM peer!
591 "ImageData",
592 // IMPORTANT: Do not change this list without review from a DOM peer!
593 "InputEvent",
594 // IMPORTANT: Do not change this list without review from a DOM peer!
595 {name: "InstallTrigger", b2g: false},
596 // IMPORTANT: Do not change this list without review from a DOM peer!
597 "KeyEvent",
598 // IMPORTANT: Do not change this list without review from a DOM peer!
599 "KeyboardEvent",
600 // IMPORTANT: Do not change this list without review from a DOM peer!
601 "LocalMediaStream",
602 // IMPORTANT: Do not change this list without review from a DOM peer!
603 "Location",
604 // IMPORTANT: Do not change this list without review from a DOM peer!
605 "MediaElementAudioSourceNode",
606 // IMPORTANT: Do not change this list without review from a DOM peer!
607 "MediaError",
608 // IMPORTANT: Do not change this list without review from a DOM peer!
609 "MediaList",
610 // IMPORTANT: Do not change this list without review from a DOM peer!
611 "MediaQueryList",
612 // IMPORTANT: Do not change this list without review from a DOM peer!
613 "MediaRecorder",
614 // IMPORTANT: Do not change this list without review from a DOM peer!
615 "MediaStream",
616 // IMPORTANT: Do not change this list without review from a DOM peer!
617 "MediaStreamAudioDestinationNode",
618 // IMPORTANT: Do not change this list without review from a DOM peer!
619 "MediaStreamAudioSourceNode",
620 // IMPORTANT: Do not change this list without review from a DOM peer!
621 {name: "MediaStreamEvent", pref: "media.peerconnection.enabled"},
622 // IMPORTANT: Do not change this list without review from a DOM peer!
623 "MediaStreamTrack",
624 // IMPORTANT: Do not change this list without review from a DOM peer!
625 "MessageEvent",
626 // IMPORTANT: Do not change this list without review from a DOM peer!
627 "MessagePort",
628 // IMPORTANT: Do not change this list without review from a DOM peer!
629 "MimeType",
630 // IMPORTANT: Do not change this list without review from a DOM peer!
631 "MimeTypeArray",
632 // IMPORTANT: Do not change this list without review from a DOM peer!
633 "ModalContentWindow",
634 // IMPORTANT: Do not change this list without review from a DOM peer!
635 "MouseEvent",
636 // IMPORTANT: Do not change this list without review from a DOM peer!
637 "MouseScrollEvent",
638 // IMPORTANT: Do not change this list without review from a DOM peer!
639 {name: "MozActivity", b2g: true},
640 // IMPORTANT: Do not change this list without review from a DOM peer!
641 "MozApplicationEvent",
642 // IMPORTANT: Do not change this list without review from a DOM peer!
643 {name: "MozCellBroadcast", b2g: true, pref: "dom.cellbroadcast.enabled"},
644 // IMPORTANT: Do not change this list without review from a DOM peer!
645 {name: "MozCellBroadcastEvent", b2g: true, pref: "dom.cellbroadcast.enabled"},
646 // IMPORTANT: Do not change this list without review from a DOM peer!
647 {name: "MozClirModeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
648 // IMPORTANT: Do not change this list without review from a DOM peer!
649 "mozContact",
650 // IMPORTANT: Do not change this list without review from a DOM peer!
651 "MozContactChangeEvent",
652 // IMPORTANT: Do not change this list without review from a DOM peer!
653 "MozCSSKeyframeRule",
654 // IMPORTANT: Do not change this list without review from a DOM peer!
655 "MozCSSKeyframesRule",
656 // IMPORTANT: Do not change this list without review from a DOM peer!
657 {name: "MozEmergencyCbModeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
658 // IMPORTANT: Do not change this list without review from a DOM peer!
659 {name: "MozIcc", b2g: true, pref: "dom.icc.enabled"},
660 // IMPORTANT: Do not change this list without review from a DOM peer!
661 {name: "MozIccManager", b2g: true, pref: "dom.icc.enabled"},
662 // IMPORTANT: Do not change this list without review from a DOM peer!
663 {name: "MozInputContext", b2g: true},
664 // IMPORTANT: Do not change this list without review from a DOM peer!
665 {name: "MozInputMethodManager", b2g: true},
666 // IMPORTANT: Do not change this list without review from a DOM peer!
667 {name: "MozMessageDeletedEvent", b2g: true, pref: "dom.sms.enabled"},
668 // IMPORTANT: Do not change this list without review from a DOM peer!
669 "MozMmsEvent",
670 // IMPORTANT: Do not change this list without review from a DOM peer!
671 "MozMmsMessage",
672 // IMPORTANT: Do not change this list without review from a DOM peer!
673 {name: "MozMobileCellInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
674 // IMPORTANT: Do not change this list without review from a DOM peer!
675 {name: "MozMobileConnection", b2g: true, pref: "dom.mobileconnection.enabled"},
676 // IMPORTANT: Do not change this list without review from a DOM peer!
677 {name: "MozMobileConnectionArray", b2g: true, pref: "dom.mobileconnection.enabled"},
678 // IMPORTANT: Do not change this list without review from a DOM peer!
679 {name: "MozMobileConnectionInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
680 // IMPORTANT: Do not change this list without review from a DOM peer!
681 {name: "MozMobileNetworkInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
682 // IMPORTANT: Do not change this list without review from a DOM peer!
683 {name: "MozMobileMessageManager", b2g: true, pref: "dom.sms.enabled"},
684 // IMPORTANT: Do not change this list without review from a DOM peer!
685 "MozMobileMessageThread",
686 // IMPORTANT: Do not change this list without review from a DOM peer!
687 "MozNamedAttrMap",
688 // IMPORTANT: Do not change this list without review from a DOM peer!
689 {name: "MozNDEFRecord", b2g: true},
690 // IMPORTANT: Do not change this list without review from a DOM peer!
691 {name: "MozNFCPeer", b2g: true},
692 // IMPORTANT: Do not change this list without review from a DOM peer!
693 {name: "MozNFCTag", b2g: true},
694 // IMPORTANT: Do not change this list without review from a DOM peer!
695 {name: "MozOtaStatusEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
696 // IMPORTANT: Do not change this list without review from a DOM peer!
697 "MozPowerManager",
698 // IMPORTANT: Do not change this list without review from a DOM peer!
699 {name: "mozRTCIceCandidate", pref: "media.peerconnection.enabled"},
700 // IMPORTANT: Do not change this list without review from a DOM peer!
701 {name: "mozRTCPeerConnection", pref: "media.peerconnection.enabled"},
702 // IMPORTANT: Do not change this list without review from a DOM peer!
703 {name: "mozRTCSessionDescription", pref: "media.peerconnection.enabled"},
704 // IMPORTANT: Do not change this list without review from a DOM peer!
705 "MozSettingsEvent",
706 // IMPORTANT: Do not change this list without review from a DOM peer!
707 "MozSmsEvent",
708 // IMPORTANT: Do not change this list without review from a DOM peer!
709 "MozSmsFilter",
710 // IMPORTANT: Do not change this list without review from a DOM peer!
711 "MozSmsMessage",
712 // IMPORTANT: Do not change this list without review from a DOM peer!
713 {name: "MozSpeakerManager", b2g: true},
714 // IMPORTANT: Do not change this list without review from a DOM peer!
715 {name: "MozStkCommandEvent", b2g: true, pref: "dom.icc.enabled"},
716 // IMPORTANT: Do not change this list without review from a DOM peer!
717 {name: "MozTimeManager", b2g: true},
718 // IMPORTANT: Do not change this list without review from a DOM peer!
719 {name: "MozVoicemail", b2g: true, pref: "dom.voicemail.enabled"},
720 // IMPORTANT: Do not change this list without review from a DOM peer!
721 {name: "MozVoicemailEvent", b2g: true, pref: "dom.voicemail.enabled"},
722 // IMPORTANT: Do not change this list without review from a DOM peer!
723 {name: "MozVoicemailStatus", b2g: true, pref: "dom.voicemail.enabled"},
724 // IMPORTANT: Do not change this list without review from a DOM peer!
725 {name: "MozWakeLock", b2g: true, pref: "dom.wakelock.enabled"},
726 // IMPORTANT: Do not change this list without review from a DOM peer!
727 {name: "MozWifiCapabilities", b2g: true, permission: "wifi-manage"},
728 // IMPORTANT: Do not change this list without review from a DOM peer!
729 {name: "MozWifiConnectionInfoEvent", b2g: true},
730 // IMPORTANT: Do not change this list without review from a DOM peer!
731 {name: "MozWifiStationInfoEvent", b2g: true},
732 // IMPORTANT: Do not change this list without review from a DOM peer!
733 {name: "MozWifiManager", b2g: true, permission: "wifi-manage"},
734 // IMPORTANT: Do not change this list without review from a DOM peer!
735 {name: "MozWifiNetwork", b2g: true, permission: "wifi-manage"},
736 // IMPORTANT: Do not change this list without review from a DOM peer!
737 {name: "MozWifiStatusChangeEvent", b2g: true},
738 // IMPORTANT: Do not change this list without review from a DOM peer!
739 {name: "MozWifiP2pGroupOwner", b2g: true, permission: "wifi-manage"},
740 // IMPORTANT: Do not change this list without review from a DOM peer!
741 {name: "MozWifiP2pManager", b2g: true, permission: "wifi-manage"},
742 // IMPORTANT: Do not change this list without review from a DOM peer!
743 {name: "MozWifiP2pStatusChangeEvent", b2g: true, permission: "wifi-manage"},
744 // IMPORTANT: Do not change this list without review from a DOM peer!
745 "MutationEvent",
746 // IMPORTANT: Do not change this list without review from a DOM peer!
747 "MutationObserver",
748 // IMPORTANT: Do not change this list without review from a DOM peer!
749 "MutationRecord",
750 // IMPORTANT: Do not change this list without review from a DOM peer!
751 "Navigator",
752 // IMPORTANT: Do not change this list without review from a DOM peer!
753 {name: "NetworkInformation", pref: "dom.netinfo.enabled"},
754 // IMPORTANT: Do not change this list without review from a DOM peer!
755 "Node",
756 // IMPORTANT: Do not change this list without review from a DOM peer!
757 "NodeFilter",
758 // IMPORTANT: Do not change this list without review from a DOM peer!
759 "NodeIterator",
760 // IMPORTANT: Do not change this list without review from a DOM peer!
761 "NodeList",
762 // IMPORTANT: Do not change this list without review from a DOM peer!
763 "Notification",
764 // IMPORTANT: Do not change this list without review from a DOM peer!
765 "NotifyPaintEvent",
766 // IMPORTANT: Do not change this list without review from a DOM peer!
767 "OfflineAudioCompletionEvent",
768 // IMPORTANT: Do not change this list without review from a DOM peer!
769 "OfflineAudioContext",
770 // IMPORTANT: Do not change this list without review from a DOM peer!
771 "OfflineResourceList",
772 // IMPORTANT: Do not change this list without review from a DOM peer!
773 "Option",
774 // IMPORTANT: Do not change this list without review from a DOM peer!
775 "OscillatorNode",
776 // IMPORTANT: Do not change this list without review from a DOM peer!
777 "PageTransitionEvent",
778 // IMPORTANT: Do not change this list without review from a DOM peer!
779 "PaintRequest",
780 // IMPORTANT: Do not change this list without review from a DOM peer!
781 "PaintRequestList",
782 // IMPORTANT: Do not change this list without review from a DOM peer!
783 "PannerNode",
784 // IMPORTANT: Do not change this list without review from a DOM peer!
785 { name: "Path2D", pref: "canvas.path.enabled" },
786 // IMPORTANT: Do not change this list without review from a DOM peer!
787 "Performance",
788 // IMPORTANT: Do not change this list without review from a DOM peer!
789 "PerformanceEntry",
790 // IMPORTANT: Do not change this list without review from a DOM peer!
791 "PerformanceNavigation",
792 // IMPORTANT: Do not change this list without review from a DOM peer!
793 "PerformanceResourceTiming",
794 // IMPORTANT: Do not change this list without review from a DOM peer!
795 "PerformanceTiming",
796 // IMPORTANT: Do not change this list without review from a DOM peer!
797 "PeriodicWave",
798 // IMPORTANT: Do not change this list without review from a DOM peer!
799 {name: "PermissionSettings", b2g: true, permission: "permissions"},
800 // IMPORTANT: Do not change this list without review from a DOM peer!
801 {name: "PhoneNumberService", permission: "phonenumberservice"},
802 // IMPORTANT: Do not change this list without review from a DOM peer!
803 "Plugin",
804 // IMPORTANT: Do not change this list without review from a DOM peer!
805 "PluginArray",
806 // IMPORTANT: Do not change this list without review from a DOM peer!
807 {name: "PointerEvent", pref: "dom.w3c_pointer_events.enabled"},
808 // IMPORTANT: Do not change this list without review from a DOM peer!
809 "PopStateEvent",
810 // IMPORTANT: Do not change this list without review from a DOM peer!
811 "PopupBlockedEvent",
812 // IMPORTANT: Do not change this list without review from a DOM peer!
813 "ProcessingInstruction",
814 // IMPORTANT: Do not change this list without review from a DOM peer!
815 "ProgressEvent",
816 // IMPORTANT: Do not change this list without review from a DOM peer!
817 "Promise",
818 // IMPORTANT: Do not change this list without review from a DOM peer!
819 "PropertyNodeList",
820 // IMPORTANT: Do not change this list without review from a DOM peer!
821 "RadioNodeList",
822 // IMPORTANT: Do not change this list without review from a DOM peer!
823 "Range",
824 // IMPORTANT: Do not change this list without review from a DOM peer!
825 "RecordErrorEvent",
826 // IMPORTANT: Do not change this list without review from a DOM peer!
827 "Rect",
828 // IMPORTANT: Do not change this list without review from a DOM peer!
829 "RGBColor",
830 // IMPORTANT: Do not change this list without review from a DOM peer!
831 {name: "RTCDataChannelEvent", pref: "media.peerconnection.enabled"},
832 // IMPORTANT: Do not change this list without review from a DOM peer!
833 {name: "RTCPeerConnectionIceEvent", pref: "media.peerconnection.enabled"},
834 // IMPORTANT: Do not change this list without review from a DOM peer!
835 {name: "RTCStatsReport", pref: "media.peerconnection.enabled"},
836 // IMPORTANT: Do not change this list without review from a DOM peer!
837 "Screen",
838 // IMPORTANT: Do not change this list without review from a DOM peer!
839 "ScriptProcessorNode",
840 // IMPORTANT: Do not change this list without review from a DOM peer!
841 "ScrollAreaEvent",
842 // IMPORTANT: Do not change this list without review from a DOM peer!
843 "Selection",
844 // IMPORTANT: Do not change this list without review from a DOM peer!
845 {name: "ServiceWorker", pref: "dom.serviceWorkers.enabled"},
846 // IMPORTANT: Do not change this list without review from a DOM peer!
847 {name: "ServiceWorkerContainer", pref: "dom.serviceWorkers.enabled"},
848 // IMPORTANT: Do not change this list without review from a DOM peer!
849 "SettingsLock",
850 // IMPORTANT: Do not change this list without review from a DOM peer!
851 "SettingsManager",
852 // IMPORTANT: Do not change this list without review from a DOM peer!
853 {name: "ShadowRoot", pref: "dom.webcomponents.enabled"},
854 // IMPORTANT: Do not change this list without review from a DOM peer!
855 {name: "SharedWorker", pref: "dom.workers.sharedWorkers.enabled"},
856 // IMPORTANT: Do not change this list without review from a DOM peer!
857 "SimpleGestureEvent",
858 // IMPORTANT: Do not change this list without review from a DOM peer!
859 {name: "SimpleTest", xbl: false},
860 // IMPORTANT: Do not change this list without review from a DOM peer!
861 "SmartCardEvent",
862 // IMPORTANT: Do not change this list without review from a DOM peer!
863 {name: "SpeechSynthesisEvent", b2g: true},
864 // IMPORTANT: Do not change this list without review from a DOM peer!
865 {name: "SpeechSynthesis", b2g: true},
866 // IMPORTANT: Do not change this list without review from a DOM peer!
867 {name: "SpeechSynthesisUtterance", b2g: true},
868 // IMPORTANT: Do not change this list without review from a DOM peer!
869 {name: "SpeechSynthesisVoice", b2g: true},
870 // IMPORTANT: Do not change this list without review from a DOM peer!
871 {name: "SpecialPowers", xbl: false},
872 // IMPORTANT: Do not change this list without review from a DOM peer!
873 "Storage",
874 // IMPORTANT: Do not change this list without review from a DOM peer!
875 "StorageEvent",
876 // IMPORTANT: Do not change this list without review from a DOM peer!
877 "StyleSheet",
878 // IMPORTANT: Do not change this list without review from a DOM peer!
879 "StyleSheetList",
880 // IMPORTANT: Do not change this list without review from a DOM peer!
881 {name: "SubtleCrypto", pref: "dom.webcrypto.enabled"},
882 // IMPORTANT: Do not change this list without review from a DOM peer!
883 "SVGAElement",
884 // IMPORTANT: Do not change this list without review from a DOM peer!
885 "SVGAltGlyphElement",
886 // IMPORTANT: Do not change this list without review from a DOM peer!
887 "SVGAngle",
888 // IMPORTANT: Do not change this list without review from a DOM peer!
889 "SVGAnimatedAngle",
890 // IMPORTANT: Do not change this list without review from a DOM peer!
891 "SVGAnimatedBoolean",
892 // IMPORTANT: Do not change this list without review from a DOM peer!
893 "SVGAnimatedEnumeration",
894 // IMPORTANT: Do not change this list without review from a DOM peer!
895 "SVGAnimatedInteger",
896 // IMPORTANT: Do not change this list without review from a DOM peer!
897 "SVGAnimatedLength",
898 // IMPORTANT: Do not change this list without review from a DOM peer!
899 "SVGAnimatedLengthList",
900 // IMPORTANT: Do not change this list without review from a DOM peer!
901 "SVGAnimatedNumber",
902 // IMPORTANT: Do not change this list without review from a DOM peer!
903 "SVGAnimatedNumberList",
904 // IMPORTANT: Do not change this list without review from a DOM peer!
905 "SVGAnimatedPreserveAspectRatio",
906 // IMPORTANT: Do not change this list without review from a DOM peer!
907 "SVGAnimatedRect",
908 // IMPORTANT: Do not change this list without review from a DOM peer!
909 "SVGAnimatedString",
910 // IMPORTANT: Do not change this list without review from a DOM peer!
911 "SVGAnimatedTransformList",
912 // IMPORTANT: Do not change this list without review from a DOM peer!
913 "SVGAnimateElement",
914 // IMPORTANT: Do not change this list without review from a DOM peer!
915 "SVGAnimateMotionElement",
916 // IMPORTANT: Do not change this list without review from a DOM peer!
917 "SVGAnimateTransformElement",
918 // IMPORTANT: Do not change this list without review from a DOM peer!
919 "SVGAnimationElement",
920 // IMPORTANT: Do not change this list without review from a DOM peer!
921 "SVGCircleElement",
922 // IMPORTANT: Do not change this list without review from a DOM peer!
923 "SVGClipPathElement",
924 // IMPORTANT: Do not change this list without review from a DOM peer!
925 "SVGComponentTransferFunctionElement",
926 // IMPORTANT: Do not change this list without review from a DOM peer!
927 "SVGDefsElement",
928 // IMPORTANT: Do not change this list without review from a DOM peer!
929 "SVGDescElement",
930 // IMPORTANT: Do not change this list without review from a DOM peer!
931 "SVGDocument",
932 // IMPORTANT: Do not change this list without review from a DOM peer!
933 "SVGElement",
934 // IMPORTANT: Do not change this list without review from a DOM peer!
935 "SVGEllipseElement",
936 // IMPORTANT: Do not change this list without review from a DOM peer!
937 "SVGFEBlendElement",
938 // IMPORTANT: Do not change this list without review from a DOM peer!
939 "SVGFEColorMatrixElement",
940 // IMPORTANT: Do not change this list without review from a DOM peer!
941 "SVGFEComponentTransferElement",
942 // IMPORTANT: Do not change this list without review from a DOM peer!
943 "SVGFECompositeElement",
944 // IMPORTANT: Do not change this list without review from a DOM peer!
945 "SVGFEConvolveMatrixElement",
946 // IMPORTANT: Do not change this list without review from a DOM peer!
947 "SVGFEDiffuseLightingElement",
948 // IMPORTANT: Do not change this list without review from a DOM peer!
949 "SVGFEDisplacementMapElement",
950 // IMPORTANT: Do not change this list without review from a DOM peer!
951 "SVGFEDistantLightElement",
952 // IMPORTANT: Do not change this list without review from a DOM peer!
953 "SVGFEDropShadowElement",
954 // IMPORTANT: Do not change this list without review from a DOM peer!
955 "SVGFEFloodElement",
956 // IMPORTANT: Do not change this list without review from a DOM peer!
957 "SVGFEFuncAElement",
958 // IMPORTANT: Do not change this list without review from a DOM peer!
959 "SVGFEFuncBElement",
960 // IMPORTANT: Do not change this list without review from a DOM peer!
961 "SVGFEFuncGElement",
962 // IMPORTANT: Do not change this list without review from a DOM peer!
963 "SVGFEFuncRElement",
964 // IMPORTANT: Do not change this list without review from a DOM peer!
965 "SVGFEGaussianBlurElement",
966 // IMPORTANT: Do not change this list without review from a DOM peer!
967 "SVGFEImageElement",
968 // IMPORTANT: Do not change this list without review from a DOM peer!
969 "SVGFEMergeElement",
970 // IMPORTANT: Do not change this list without review from a DOM peer!
971 "SVGFEMergeNodeElement",
972 // IMPORTANT: Do not change this list without review from a DOM peer!
973 "SVGFEMorphologyElement",
974 // IMPORTANT: Do not change this list without review from a DOM peer!
975 "SVGFEOffsetElement",
976 // IMPORTANT: Do not change this list without review from a DOM peer!
977 "SVGFEPointLightElement",
978 // IMPORTANT: Do not change this list without review from a DOM peer!
979 "SVGFESpecularLightingElement",
980 // IMPORTANT: Do not change this list without review from a DOM peer!
981 "SVGFESpotLightElement",
982 // IMPORTANT: Do not change this list without review from a DOM peer!
983 "SVGFETileElement",
984 // IMPORTANT: Do not change this list without review from a DOM peer!
985 "SVGFETurbulenceElement",
986 // IMPORTANT: Do not change this list without review from a DOM peer!
987 "SVGFilterElement",
988 // IMPORTANT: Do not change this list without review from a DOM peer!
989 "SVGForeignObjectElement",
990 // IMPORTANT: Do not change this list without review from a DOM peer!
991 "SVGGElement",
992 // IMPORTANT: Do not change this list without review from a DOM peer!
993 "SVGGradientElement",
994 // IMPORTANT: Do not change this list without review from a DOM peer!
995 "SVGGraphicsElement",
996 // IMPORTANT: Do not change this list without review from a DOM peer!
997 "SVGImageElement",
998 // IMPORTANT: Do not change this list without review from a DOM peer!
999 "SVGLength",
1000 // IMPORTANT: Do not change this list without review from a DOM peer!
1001 "SVGLengthList",
1002 // IMPORTANT: Do not change this list without review from a DOM peer!
1003 "SVGLinearGradientElement",
1004 // IMPORTANT: Do not change this list without review from a DOM peer!
1005 "SVGLineElement",
1006 // IMPORTANT: Do not change this list without review from a DOM peer!
1007 "SVGMarkerElement",
1008 // IMPORTANT: Do not change this list without review from a DOM peer!
1009 "SVGMaskElement",
1010 // IMPORTANT: Do not change this list without review from a DOM peer!
1011 "SVGMatrix",
1012 // IMPORTANT: Do not change this list without review from a DOM peer!
1013 "SVGMetadataElement",
1014 // IMPORTANT: Do not change this list without review from a DOM peer!
1015 "SVGMPathElement",
1016 // IMPORTANT: Do not change this list without review from a DOM peer!
1017 "SVGNumber",
1018 // IMPORTANT: Do not change this list without review from a DOM peer!
1019 "SVGNumberList",
1020 // IMPORTANT: Do not change this list without review from a DOM peer!
1021 "SVGPathElement",
1022 // IMPORTANT: Do not change this list without review from a DOM peer!
1023 "SVGPathSeg",
1024 // IMPORTANT: Do not change this list without review from a DOM peer!
1025 "SVGPathSegArcAbs",
1026 // IMPORTANT: Do not change this list without review from a DOM peer!
1027 "SVGPathSegArcRel",
1028 // IMPORTANT: Do not change this list without review from a DOM peer!
1029 "SVGPathSegClosePath",
1030 // IMPORTANT: Do not change this list without review from a DOM peer!
1031 "SVGPathSegCurvetoCubicAbs",
1032 // IMPORTANT: Do not change this list without review from a DOM peer!
1033 "SVGPathSegCurvetoCubicRel",
1034 // IMPORTANT: Do not change this list without review from a DOM peer!
1035 "SVGPathSegCurvetoCubicSmoothAbs",
1036 // IMPORTANT: Do not change this list without review from a DOM peer!
1037 "SVGPathSegCurvetoCubicSmoothRel",
1038 // IMPORTANT: Do not change this list without review from a DOM peer!
1039 "SVGPathSegCurvetoQuadraticAbs",
1040 // IMPORTANT: Do not change this list without review from a DOM peer!
1041 "SVGPathSegCurvetoQuadraticRel",
1042 // IMPORTANT: Do not change this list without review from a DOM peer!
1043 "SVGPathSegCurvetoQuadraticSmoothAbs",
1044 // IMPORTANT: Do not change this list without review from a DOM peer!
1045 "SVGPathSegCurvetoQuadraticSmoothRel",
1046 // IMPORTANT: Do not change this list without review from a DOM peer!
1047 "SVGPathSegLinetoAbs",
1048 // IMPORTANT: Do not change this list without review from a DOM peer!
1049 "SVGPathSegLinetoHorizontalAbs",
1050 // IMPORTANT: Do not change this list without review from a DOM peer!
1051 "SVGPathSegLinetoHorizontalRel",
1052 // IMPORTANT: Do not change this list without review from a DOM peer!
1053 "SVGPathSegLinetoRel",
1054 // IMPORTANT: Do not change this list without review from a DOM peer!
1055 "SVGPathSegLinetoVerticalAbs",
1056 // IMPORTANT: Do not change this list without review from a DOM peer!
1057 "SVGPathSegLinetoVerticalRel",
1058 // IMPORTANT: Do not change this list without review from a DOM peer!
1059 "SVGPathSegList",
1060 // IMPORTANT: Do not change this list without review from a DOM peer!
1061 "SVGPathSegMovetoAbs",
1062 // IMPORTANT: Do not change this list without review from a DOM peer!
1063 "SVGPathSegMovetoRel",
1064 // IMPORTANT: Do not change this list without review from a DOM peer!
1065 "SVGPatternElement",
1066 // IMPORTANT: Do not change this list without review from a DOM peer!
1067 "SVGPoint",
1068 // IMPORTANT: Do not change this list without review from a DOM peer!
1069 "SVGPointList",
1070 // IMPORTANT: Do not change this list without review from a DOM peer!
1071 "SVGPolygonElement",
1072 // IMPORTANT: Do not change this list without review from a DOM peer!
1073 "SVGPolylineElement",
1074 // IMPORTANT: Do not change this list without review from a DOM peer!
1075 "SVGPreserveAspectRatio",
1076 // IMPORTANT: Do not change this list without review from a DOM peer!
1077 "SVGRadialGradientElement",
1078 // IMPORTANT: Do not change this list without review from a DOM peer!
1079 "SVGRect",
1080 // IMPORTANT: Do not change this list without review from a DOM peer!
1081 "SVGRectElement",
1082 // IMPORTANT: Do not change this list without review from a DOM peer!
1083 "SVGScriptElement",
1084 // IMPORTANT: Do not change this list without review from a DOM peer!
1085 "SVGSetElement",
1086 // IMPORTANT: Do not change this list without review from a DOM peer!
1087 "SVGStopElement",
1088 // IMPORTANT: Do not change this list without review from a DOM peer!
1089 "SVGStringList",
1090 // IMPORTANT: Do not change this list without review from a DOM peer!
1091 "SVGStyleElement",
1092 // IMPORTANT: Do not change this list without review from a DOM peer!
1093 "SVGSVGElement",
1094 // IMPORTANT: Do not change this list without review from a DOM peer!
1095 "SVGSwitchElement",
1096 // IMPORTANT: Do not change this list without review from a DOM peer!
1097 "SVGSymbolElement",
1098 // IMPORTANT: Do not change this list without review from a DOM peer!
1099 "SVGTextContentElement",
1100 // IMPORTANT: Do not change this list without review from a DOM peer!
1101 "SVGTextElement",
1102 // IMPORTANT: Do not change this list without review from a DOM peer!
1103 "SVGTextPathElement",
1104 // IMPORTANT: Do not change this list without review from a DOM peer!
1105 "SVGTextPositioningElement",
1106 // IMPORTANT: Do not change this list without review from a DOM peer!
1107 "SVGTitleElement",
1108 // IMPORTANT: Do not change this list without review from a DOM peer!
1109 "SVGTransform",
1110 // IMPORTANT: Do not change this list without review from a DOM peer!
1111 "SVGTransformList",
1112 // IMPORTANT: Do not change this list without review from a DOM peer!
1113 "SVGTSpanElement",
1114 // IMPORTANT: Do not change this list without review from a DOM peer!
1115 "SVGUnitTypes",
1116 // IMPORTANT: Do not change this list without review from a DOM peer!
1117 "SVGUseElement",
1118 // IMPORTANT: Do not change this list without review from a DOM peer!
1119 "SVGViewElement",
1120 // IMPORTANT: Do not change this list without review from a DOM peer!
1121 "SVGZoomAndPan",
1122 // IMPORTANT: Do not change this list without review from a DOM peer!
1123 "SVGZoomEvent",
1124 // IMPORTANT: Do not change this list without review from a DOM peer!
1125 {name: "Telephony", b2g: true, pref: "dom.telephony.enabled"},
1126 // IMPORTANT: Do not change this list without review from a DOM peer!
1127 {name: "TelephonyCall", b2g: true, pref: "dom.telephony.enabled"},
1128 // IMPORTANT: Do not change this list without review from a DOM peer!
1129 {name: "TelephonyCallGroup", b2g: true, pref: "dom.telephony.enabled"},
1130 // IMPORTANT: Do not change this list without review from a DOM peer!
1131 {name: "TelephonyCallId", b2g: true, pref: "dom.telephony.enabled"},
1132 // IMPORTANT: Do not change this list without review from a DOM peer!
1133 "Text",
1134 // IMPORTANT: Do not change this list without review from a DOM peer!
1135 "TextDecoder",
1136 // IMPORTANT: Do not change this list without review from a DOM peer!
1137 "TextEncoder",
1138 // IMPORTANT: Do not change this list without review from a DOM peer!
1139 "TextMetrics",
1140 // IMPORTANT: Do not change this list without review from a DOM peer!
1141 "TextTrack",
1142 // IMPORTANT: Do not change this list without review from a DOM peer!
1143 "TextTrackCueList",
1144 // IMPORTANT: Do not change this list without review from a DOM peer!
1145 "TextTrackList",
1146 // IMPORTANT: Do not change this list without review from a DOM peer!
1147 "TimeEvent",
1148 // IMPORTANT: Do not change this list without review from a DOM peer!
1149 "TimeRanges",
1150 // IMPORTANT: Do not change this list without review from a DOM peer!
1151 "Touch",
1152 // IMPORTANT: Do not change this list without review from a DOM peer!
1153 "TouchEvent",
1154 // IMPORTANT: Do not change this list without review from a DOM peer!
1155 "TouchList",
1156 // IMPORTANT: Do not change this list without review from a DOM peer!
1157 "TrackEvent",
1158 // IMPORTANT: Do not change this list without review from a DOM peer!
1159 "TransitionEvent",
1160 // IMPORTANT: Do not change this list without review from a DOM peer!
1161 {name: "TreeColumn", xbl: true},
1162 // IMPORTANT: Do not change this list without review from a DOM peer!
1163 {name: "TreeColumns", xbl: true},
1164 // IMPORTANT: Do not change this list without review from a DOM peer!
1165 {name: "TreeContentView", xbl: true},
1166 // IMPORTANT: Do not change this list without review from a DOM peer!
1167 {name: "TreeSelection", xbl: true},
1168 // IMPORTANT: Do not change this list without review from a DOM peer!
1169 "TreeWalker",
1170 // IMPORTANT: Do not change this list without review from a DOM peer!
1171 "UIEvent",
1172 // IMPORTANT: Do not change this list without review from a DOM peer!
1173 "UndoManager",
1174 // IMPORTANT: Do not change this list without review from a DOM peer!
1175 "URL",
1176 // IMPORTANT: Do not change this list without review from a DOM peer!
1177 "URLSearchParams",
1178 // IMPORTANT: Do not change this list without review from a DOM peer!
1179 {name: "UserDataHandler", xbl: true},
1180 // IMPORTANT: Do not change this list without review from a DOM peer!
1181 "UserProximityEvent",
1182 // IMPORTANT: Do not change this list without review from a DOM peer!
1183 {name: "USSDReceivedEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
1184 // IMPORTANT: Do not change this list without review from a DOM peer!
1185 "ValidityState",
1186 // IMPORTANT: Do not change this list without review from a DOM peer!
1187 "VideoStreamTrack",
1188 // IMPORTANT: Do not change this list without review from a DOM peer!
1189 "VTTCue",
1190 // IMPORTANT: Do not change this list without review from a DOM peer!
1191 {name: "VTTRegion", pref: "media.webvtt.regions.enabled"},
1192 // IMPORTANT: Do not change this list without review from a DOM peer!
1193 "WaveShaperNode",
1194 // IMPORTANT: Do not change this list without review from a DOM peer!
1195 "WebGLActiveInfo",
1196 // IMPORTANT: Do not change this list without review from a DOM peer!
1197 "WebGLBuffer",
1198 // IMPORTANT: Do not change this list without review from a DOM peer!
1199 "WebGLFramebuffer",
1200 // IMPORTANT: Do not change this list without review from a DOM peer!
1201 "WebGLProgram",
1202 // IMPORTANT: Do not change this list without review from a DOM peer!
1203 "WebGLRenderbuffer",
1204 // IMPORTANT: Do not change this list without review from a DOM peer!
1205 "WebGLRenderingContext",
1206 // IMPORTANT: Do not change this list without review from a DOM peer!
1207 "WebGLShader",
1208 // IMPORTANT: Do not change this list without review from a DOM peer!
1209 "WebGLShaderPrecisionFormat",
1210 // IMPORTANT: Do not change this list without review from a DOM peer!
1211 "WebGLTexture",
1212 // IMPORTANT: Do not change this list without review from a DOM peer!
1213 "WebGLUniformLocation",
1214 // IMPORTANT: Do not change this list without review from a DOM peer!
1215 "WebGLVertexArray",
1216 // IMPORTANT: Do not change this list without review from a DOM peer!
1217 "WebSocket",
1218 // IMPORTANT: Do not change this list without review from a DOM peer!
1219 "WheelEvent",
1220 // IMPORTANT: Do not change this list without review from a DOM peer!
1221 "Window",
1222 // IMPORTANT: Do not change this list without review from a DOM peer!
1223 "Worker",
1224 // IMPORTANT: Do not change this list without review from a DOM peer!
1225 "XMLDocument",
1226 // IMPORTANT: Do not change this list without review from a DOM peer!
1227 "XMLHttpRequest",
1228 // IMPORTANT: Do not change this list without review from a DOM peer!
1229 "XMLHttpRequestUpload",
1230 // IMPORTANT: Do not change this list without review from a DOM peer!
1231 "XMLSerializer",
1232 // IMPORTANT: Do not change this list without review from a DOM peer!
1233 "XMLStylesheetProcessingInstruction",
1234 // IMPORTANT: Do not change this list without review from a DOM peer!
1235 "XPathEvaluator",
1236 // IMPORTANT: Do not change this list without review from a DOM peer!
1237 "XPathExpression",
1238 // IMPORTANT: Do not change this list without review from a DOM peer!
1239 "XPathNSResolver",
1240 // IMPORTANT: Do not change this list without review from a DOM peer!
1241 "XPathResult",
1242 // IMPORTANT: Do not change this list without review from a DOM peer!
1243 "XSLTProcessor",
1244 // IMPORTANT: Do not change this list without review from a DOM peer!
1245 {name: "XULButtonElement", xbl: true},
1246 // IMPORTANT: Do not change this list without review from a DOM peer!
1247 {name: "XULCheckboxElement", xbl: true},
1248 // IMPORTANT: Do not change this list without review from a DOM peer!
1249 {name: "XULCommandDispatcher", xbl: true},
1250 // IMPORTANT: Do not change this list without review from a DOM peer!
1251 {name: "XULCommandEvent", xbl: true},
1252 // IMPORTANT: Do not change this list without review from a DOM peer!
1253 {name: "XULControlElement", xbl: true},
1254 // IMPORTANT: Do not change this list without review from a DOM peer!
1255 {name: "XULControllers", xbl: true},
1256 // IMPORTANT: Do not change this list without review from a DOM peer!
1257 {name: "XULDocument", xbl: true},
1258 // IMPORTANT: Do not change this list without review from a DOM peer!
1259 {name: "XULElement", xbl: true},
1260 // IMPORTANT: Do not change this list without review from a DOM peer!
1261 {name: "XULLabeledControlElement", xbl: true},
1262 // IMPORTANT: Do not change this list without review from a DOM peer!
1263 {name: "XULPopupElement", xbl: true},
1264 // IMPORTANT: Do not change this list without review from a DOM peer!
1265 {name: "XULTemplateBuilder", xbl: true},
1266 // IMPORTANT: Do not change this list without review from a DOM peer!
1267 {name: "XULTreeBuilder", xbl: true},
1268 // IMPORTANT: Do not change this list without review from a DOM peer!
1270 // IMPORTANT: Do not change the list above without review from a DOM peer!
1272 function createInterfaceMap(isXBLScope) {
1273 var prefs = SpecialPowers.Services.prefs;
1274 var version = SpecialPowers.Cc["@mozilla.org/xre/app-info;1"].getService(SpecialPowers.Ci.nsIXULAppInfo).version;
1275 var isNightly = version.endsWith("a1");
1276 var isRelease = !version.contains("a");
1277 var isDesktop = !/Mobile|Tablet/.test(navigator.userAgent);
1278 var isB2G = !isDesktop && !navigator.userAgent.contains("Android");
1279 var hasPermission = function (aPermission) {
1280 return SpecialPowers.hasPermission(aPermission, window.document);
1283 var interfaceMap = {};
1285 function addInterfaces(interfaces)
1287 for (var entry of interfaces) {
1288 if (typeof(entry) === "string") {
1289 interfaceMap[entry] = true;
1290 } else if ((entry.nightly === !isNightly) ||
1291 (entry.xbl === !isXBLScope) ||
1292 (entry.desktop === !isDesktop) ||
1293 (entry.b2g === !isB2G) ||
1294 (entry.release === !isRelease) ||
1295 (entry.pref && !prefs.getBoolPref(entry.pref)) ||
1296 (entry.permission && !hasPermission(entry.permission))) {
1297 interfaceMap[entry.name] = false;
1298 } else {
1299 interfaceMap[entry.name] = true;
1304 addInterfaces(ecmaGlobals);
1305 addInterfaces(interfaceNamesInGlobalScope);
1306 if (isXBLScope) {
1307 // We expose QueryInterface to XBL scopes. It's not an interface but we
1308 // need to handle it because it's an own property of the global and the
1309 // property name starts with an uppercase letter.
1310 interfaceMap["QueryInterface"] = true;
1313 return interfaceMap;
1316 function runTest(isXBLScope) {
1317 var interfaceMap = createInterfaceMap(isXBLScope);
1318 for (var name of Object.getOwnPropertyNames(window)) {
1319 // An interface name should start with an upper case character.
1320 // However, we have a couple of legacy interfaces that start with 'moz', so
1321 // we want to allow those until we can remove them.
1322 if (!/^[A-Z]/.test(name) && legacyMozPrefixedInterfaces.indexOf(name) < 0) {
1323 continue;
1325 ok(interfaceMap[name],
1326 "If this is failing: DANGER, are you sure you want to expose the new interface " + name +
1327 " to all webpages as a property on the window (XBL: " + isXBLScope + ")? Do not make a change to this file without a " +
1328 " review from a DOM peer for that specific change!!! (or a JS peer for changes to ecmaGlobals)");
1329 delete interfaceMap[name];
1331 for (var name of Object.keys(interfaceMap)) {
1332 ok(name in window === interfaceMap[name],
1333 name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the " + (isXBLScope ? "XBL" : "global") +" scope");
1334 if (!interfaceMap[name]) {
1335 delete interfaceMap[name];
1338 if (isXBLScope) {
1339 todo_is(Object.keys(interfaceMap).length, 0,
1340 "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
1341 } else {
1342 is(Object.keys(interfaceMap).length, 0,
1343 "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
1347 runTest(false);
1348 SimpleTest.waitForExplicitFinish();
1350 </script>
1351 <span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
1352 </pre>
1353 </body>
1354 </html>