dom/tests/mochitest/general/test_interfaces.html

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

mercurial