dom/tests/mochitest/general/test_interfaces.html

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

     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:
    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.
    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!
    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!
   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!
  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   };
  1237   var interfaceMap = {};
  1239   function addInterfaces(interfaces)
  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;
  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;
  1267   return interfaceMap;
  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;
  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];
  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];
  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(", "));
  1301 runTest(false);
  1302 SimpleTest.waitForExplicitFinish();
  1304 </script>
  1305 <span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
  1306 </pre>
  1307 </body>
  1308 </html>

mercurial