dom/tests/mochitest/general/test_interfaces.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/tests/mochitest/general/test_interfaces.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,1308 @@
     1.4 +<!DOCTYPE HTML>
     1.5 +<html>
     1.6 +<!--
     1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=766694
     1.8 +-->
     1.9 +<head>
    1.10 +  <meta charset="utf-8">
    1.11 +  <title>Test for Bug 766694</title>
    1.12 +  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
    1.13 +  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
    1.14 +</head>
    1.15 +<body>
    1.16 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=766694">Mozilla Bug 766694</a>
    1.17 +<p id="display"></p>
    1.18 +<div id="content" style="display: none">
    1.19 +
    1.20 +</div>
    1.21 +<pre id="test">
    1.22 +<script type="application/javascript">
    1.23 +
    1.24 +/** Test for Bug 766694 **/
    1.25 +
    1.26 +// This is a list of all interfaces that are exposed to every webpage.
    1.27 +// Please only add things to this list with great care and proper review
    1.28 +// from the associated module peers.
    1.29 +
    1.30 +// This file lists global interfaces we want exposed and verifies they
    1.31 +// are what we intend. Each entry in the arrays below can either be a
    1.32 +// simple string with the interface name, or an object with a 'name'
    1.33 +// property giving the interface name as a string, and additional
    1.34 +// properties which qualify the exposure of that interface. For example:
    1.35 +//
    1.36 +// [
    1.37 +//   "AGlobalInterface",
    1.38 +//   {name: "ExperimentalThing", release: false},
    1.39 +//   {name: "OptionalThing", pref: "some.thing.enabled"},
    1.40 +//   {name: "FancyControl", xbl: true},
    1.41 +// ];
    1.42 +//
    1.43 +// See createInterfaceMap() below for a complete list of properties.
    1.44 +
    1.45 +// IMPORTANT: Do not change this list without review from
    1.46 +//            a JavaScript Engine peer!
    1.47 +var ecmaGlobals =
    1.48 +  [
    1.49 +    "Array",
    1.50 +    "ArrayBuffer",
    1.51 +    "Boolean",
    1.52 +    "DataView",
    1.53 +    "Date",
    1.54 +    "Error",
    1.55 +    "EvalError",
    1.56 +    "Float32Array",
    1.57 +    "Float64Array",
    1.58 +    "Function",
    1.59 +    // NB: We haven't bothered to resolve constants like Infinity and NaN on
    1.60 +    // Xrayed windows (which are seen from the XBL scope). We could support
    1.61 +    // this if needed with some refactoring.
    1.62 +    {name: "Infinity", xbl: false},
    1.63 +    "Int16Array",
    1.64 +    "Int32Array",
    1.65 +    "Int8Array",
    1.66 +    "InternalError",
    1.67 +    {name: "Intl", desktop: true},
    1.68 +    "Iterator",
    1.69 +    "JSON",
    1.70 +    "Map",
    1.71 +    "Math",
    1.72 +    {name: "NaN", xbl: false},
    1.73 +    "Number",
    1.74 +    "Object",
    1.75 +    "Proxy",
    1.76 +    "RangeError",
    1.77 +    "ReferenceError",
    1.78 +    "RegExp",
    1.79 +    "Set",
    1.80 +    {name: "SharedArrayBuffer", nightly: true},
    1.81 +    {name: "SIMD", nightly: true},
    1.82 +    "StopIteration",
    1.83 +    "String",
    1.84 +    "SyntaxError",
    1.85 +    {name: "TypedObject", nightly: true},
    1.86 +    "TypeError",
    1.87 +    "Uint16Array",
    1.88 +    "Uint32Array",
    1.89 +    "Uint8Array",
    1.90 +    "Uint8ClampedArray",
    1.91 +    "URIError",
    1.92 +    "WeakMap",
    1.93 +  ];
    1.94 +// IMPORTANT: Do not change the list above without review from
    1.95 +//            a JavaScript Engine peer!
    1.96 +
    1.97 +// IMPORTANT: Do not change the list below without review from a DOM peer,
    1.98 +//            except to remove items from it!
    1.99 +//
   1.100 +// This is a list of interfaces that were prefixed with 'moz' instead of 'Moz'.
   1.101 +// We should never to that again, interfaces in the DOM start with an uppercase
   1.102 +// letter. If you think you need to add an interface here, DON'T. Rename your
   1.103 +// interface.
   1.104 +var legacyMozPrefixedInterfaces =
   1.105 +  [
   1.106 +    "mozContact",
   1.107 +    "mozRTCIceCandidate",
   1.108 +    "mozRTCPeerConnection",
   1.109 +    "mozRTCSessionDescription",
   1.110 +  ];
   1.111 +// IMPORTANT: Do not change the list above without review from a DOM peer,
   1.112 +//            except to remove items from it!
   1.113 +
   1.114 +// IMPORTANT: Do not change the list below without review from a DOM peer!
   1.115 +var interfaceNamesInGlobalScope =
   1.116 +  [
   1.117 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.118 +    "AnalyserNode",
   1.119 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.120 +    "AnimationEvent",
   1.121 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.122 +    "Attr",
   1.123 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.124 +    "Audio",
   1.125 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.126 +    "AudioBuffer",
   1.127 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.128 +    {name: "AudioChannelManager", b2g: true},
   1.129 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.130 +    "AudioContext",
   1.131 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.132 +    "AudioBufferSourceNode",
   1.133 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.134 +    "AudioDestinationNode",
   1.135 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.136 +    "AudioListener",
   1.137 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.138 +    "AudioNode",
   1.139 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.140 +    "AudioParam",
   1.141 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.142 +    "AudioProcessingEvent",
   1.143 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.144 +    "AudioStreamTrack",
   1.145 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.146 +    "BarProp",
   1.147 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.148 +    "BatteryManager",
   1.149 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.150 +    "BeforeUnloadEvent",
   1.151 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.152 +    "BiquadFilterNode",
   1.153 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.154 +    "Blob",
   1.155 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.156 +    "BlobEvent",
   1.157 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.158 +    {name: "BluetoothAdapter", b2g: true},
   1.159 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.160 +    {name: "BluetoothDevice", b2g: true},
   1.161 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.162 +    {name: "BluetoothDeviceEvent", b2g: true},
   1.163 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.164 +    {name: "BluetoothManager", b2g: true},
   1.165 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.166 +    {name: "BluetoothStatusChangedEvent", b2g: true},
   1.167 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.168 +    {name: "BoxObject", xbl: true},
   1.169 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.170 +    {name: "CallEvent", b2g: true, pref: "dom.telephony.enabled"},
   1.171 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.172 +    {name: "CallGroupErrorEvent", b2g: true, pref: "dom.telephony.enabled"},
   1.173 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.174 +    {name: "CameraCapabilities", b2g: true},
   1.175 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.176 +    {name: "CameraControl", b2g: true},
   1.177 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.178 +    {name: "CameraDetectedFace", b2g: true, pref: "camera.control.face_detection.enabled"},
   1.179 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.180 +    {name: "CameraManager", b2g: true},
   1.181 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.182 +    {name: "CameraPoint", b2g: true, pref: "camera.control.face_detection.enabled"},
   1.183 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.184 +    "CanvasGradient",
   1.185 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.186 +    "CanvasPattern",
   1.187 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.188 +    "CanvasRenderingContext2D",
   1.189 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.190 +    "CaretPosition",
   1.191 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.192 +    "CDATASection",
   1.193 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.194 +    {name: "CFStateChangeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.195 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.196 +    "ChannelMergerNode",
   1.197 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.198 +    "ChannelSplitterNode",
   1.199 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.200 +    "CharacterData",
   1.201 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.202 +    {name: "ChromeWindow", xbl: true},
   1.203 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.204 +    "ClipboardEvent",
   1.205 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.206 +    "CloseEvent",
   1.207 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.208 +    "CommandEvent",
   1.209 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.210 +    "Comment",
   1.211 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.212 +    "CompositionEvent",
   1.213 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.214 +    "Controllers",
   1.215 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.216 +    "ConvolverNode",
   1.217 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.218 +    "Crypto",
   1.219 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.220 +    "CSS",
   1.221 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.222 +    "CSS2Properties",
   1.223 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.224 +    "CSSCharsetRule",
   1.225 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.226 +    "CSSConditionRule",
   1.227 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.228 +    "CSSFontFaceRule",
   1.229 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.230 +    {name: "CSSFontFeatureValuesRule", release: false},
   1.231 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.232 +    "CSSGroupingRule",
   1.233 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.234 +    "CSSImportRule",
   1.235 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.236 +    "CSSMediaRule",
   1.237 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.238 +    "CSSMozDocumentRule",
   1.239 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.240 +    "CSSNameSpaceRule",
   1.241 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.242 +    "CSSPageRule",
   1.243 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.244 +    "CSSPrimitiveValue",
   1.245 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.246 +    "CSSRule",
   1.247 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.248 +    "CSSRuleList",
   1.249 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.250 +    "CSSStyleDeclaration",
   1.251 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.252 +    "CSSStyleRule",
   1.253 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.254 +    "CSSStyleSheet",
   1.255 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.256 +    "CSSSupportsRule",
   1.257 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.258 +    "CSSValue",
   1.259 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.260 +    "CSSValueList",
   1.261 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.262 +    "CustomEvent",
   1.263 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.264 +    "DataChannel",
   1.265 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.266 +    {name: "DataErrorEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.267 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.268 +    {name: "DataStore", b2g: true},
   1.269 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.270 +    {name: "DataStoreChangeEvent", b2g: true},
   1.271 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.272 +    {name: "DataStoreCursor", b2g: true},
   1.273 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.274 +    "DataTransfer",
   1.275 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.276 +    "DelayNode",
   1.277 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.278 +    "DesktopNotification",
   1.279 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.280 +    "DesktopNotificationCenter",
   1.281 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.282 +    "DeviceLightEvent",
   1.283 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.284 +    "DeviceMotionEvent",
   1.285 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.286 +    "DeviceOrientationEvent",
   1.287 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.288 +    "DeviceProximityEvent",
   1.289 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.290 +    "DeviceStorage",
   1.291 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.292 +    "DeviceStorageChangeEvent",
   1.293 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.294 +    "Document",
   1.295 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.296 +    "DocumentFragment",
   1.297 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.298 +    "DocumentType",
   1.299 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.300 +    {name: "DOMConstructor", xbl: true},
   1.301 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.302 +    "DOMCursor",
   1.303 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.304 +    "DOMError",
   1.305 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.306 +    "DOMException",
   1.307 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.308 +    "DOMImplementation",
   1.309 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.310 +    "DOMMMIError",
   1.311 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.312 +    "DOMParser",
   1.313 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.314 +    "DOMPoint",
   1.315 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.316 +    "DOMPointReadOnly",
   1.317 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.318 +    "DOMQuad",
   1.319 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.320 +    "DOMRect",
   1.321 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.322 +    "DOMRectList",
   1.323 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.324 +    "DOMRectReadOnly",
   1.325 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.326 +    "DOMRequest",
   1.327 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.328 +    "DOMSettableTokenList",
   1.329 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.330 +    "DOMStringList",
   1.331 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.332 +    "DOMStringMap",
   1.333 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.334 +    "DOMTokenList",
   1.335 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.336 +    "DOMTransactionEvent",
   1.337 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.338 +    "DragEvent",
   1.339 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.340 +    "DynamicsCompressorNode",
   1.341 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.342 +    "Element",
   1.343 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.344 +    "ElementReplaceEvent",
   1.345 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.346 +    "ErrorEvent",
   1.347 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.348 +    "Event",
   1.349 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.350 +    "EventSource",
   1.351 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.352 +    "EventTarget",
   1.353 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.354 +    {name: "External", b2g: false},
   1.355 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.356 +    "File",
   1.357 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.358 +    "FileHandle",
   1.359 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.360 +    "FileList",
   1.361 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.362 +    "FileReader",
   1.363 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.364 +    "FileRequest",
   1.365 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.366 +    {name: "FMRadio", b2g: true},
   1.367 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.368 +    "FocusEvent",
   1.369 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.370 +    "FormData",
   1.371 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.372 +    "GainNode",
   1.373 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.374 +    {name: "Gamepad", desktop: true},
   1.375 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.376 +    {name: "GamepadAxisMoveEvent", desktop: true},
   1.377 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.378 +    {name: "GamepadButtonEvent", desktop: true},
   1.379 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.380 +    {name: "GamepadButton", desktop: true},
   1.381 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.382 +    {name: "GamepadEvent", desktop: true},
   1.383 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.384 +    "HashChangeEvent",
   1.385 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.386 +    "History",
   1.387 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.388 +    "HTMLAnchorElement",
   1.389 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.390 +    "HTMLAppletElement",
   1.391 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.392 +    "HTMLAreaElement",
   1.393 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.394 +    "HTMLAudioElement",
   1.395 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.396 +    "HTMLBaseElement",
   1.397 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.398 +    "HTMLBodyElement",
   1.399 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.400 +    "HTMLBRElement",
   1.401 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.402 +    "HTMLButtonElement",
   1.403 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.404 +    "HTMLCanvasElement",
   1.405 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.406 +    "HTMLCollection",
   1.407 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.408 +    "HTMLContentElement",
   1.409 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.410 +    "HTMLDataElement",
   1.411 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.412 +    "HTMLDataListElement",
   1.413 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.414 +    "HTMLDirectoryElement",
   1.415 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.416 +    "HTMLDivElement",
   1.417 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.418 +    "HTMLDListElement",
   1.419 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.420 +    "HTMLDocument",
   1.421 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.422 +    "HTMLElement",
   1.423 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.424 +    "HTMLEmbedElement",
   1.425 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.426 +    "HTMLFieldSetElement",
   1.427 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.428 +    "HTMLFontElement",
   1.429 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.430 +    "HTMLFormControlsCollection",
   1.431 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.432 +    "HTMLFormElement",
   1.433 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.434 +    "HTMLFrameElement",
   1.435 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.436 +    "HTMLFrameSetElement",
   1.437 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.438 +    "HTMLHeadElement",
   1.439 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.440 +    "HTMLHeadingElement",
   1.441 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.442 +    "HTMLHRElement",
   1.443 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.444 +    "HTMLHtmlElement",
   1.445 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.446 +    "HTMLIFrameElement",
   1.447 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.448 +    "HTMLImageElement",
   1.449 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.450 +    "HTMLInputElement",
   1.451 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.452 +    "HTMLLabelElement",
   1.453 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.454 +    "HTMLLegendElement",
   1.455 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.456 +    "HTMLLIElement",
   1.457 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.458 +    "HTMLLinkElement",
   1.459 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.460 +    "HTMLMapElement",
   1.461 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.462 +    "HTMLMediaElement",
   1.463 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.464 +    "HTMLMenuElement",
   1.465 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.466 +    "HTMLMenuItemElement",
   1.467 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.468 +    "HTMLMetaElement",
   1.469 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.470 +    "HTMLMeterElement",
   1.471 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.472 +    "HTMLModElement",
   1.473 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.474 +    "HTMLObjectElement",
   1.475 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.476 +    "HTMLOListElement",
   1.477 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.478 +    "HTMLOptGroupElement",
   1.479 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.480 +    "HTMLOptionElement",
   1.481 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.482 +    "HTMLOptionsCollection",
   1.483 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.484 +    "HTMLOutputElement",
   1.485 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.486 +    "HTMLParagraphElement",
   1.487 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.488 +    "HTMLParamElement",
   1.489 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.490 +    "HTMLPreElement",
   1.491 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.492 +    "HTMLProgressElement",
   1.493 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.494 +    "HTMLPropertiesCollection",
   1.495 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.496 +    "HTMLQuoteElement",
   1.497 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.498 +    "HTMLScriptElement",
   1.499 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.500 +    "HTMLSelectElement",
   1.501 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.502 +    "HTMLShadowElement",
   1.503 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.504 +    "HTMLSourceElement",
   1.505 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.506 +    "HTMLSpanElement",
   1.507 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.508 +    "HTMLStyleElement",
   1.509 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.510 +    "HTMLTableCaptionElement",
   1.511 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.512 +    "HTMLTableCellElement",
   1.513 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.514 +    "HTMLTableColElement",
   1.515 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.516 +    "HTMLTableElement",
   1.517 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.518 +    "HTMLTableRowElement",
   1.519 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.520 +    "HTMLTableSectionElement",
   1.521 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.522 +    "HTMLTemplateElement",
   1.523 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.524 +    "HTMLTextAreaElement",
   1.525 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.526 +    "HTMLTimeElement",
   1.527 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.528 +    "HTMLTitleElement",
   1.529 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.530 +    "HTMLTrackElement",
   1.531 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.532 +    "HTMLUListElement",
   1.533 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.534 +    "HTMLUnknownElement",
   1.535 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.536 +    "HTMLVideoElement",
   1.537 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.538 +    {name: "IccChangeEvent", b2g: true, pref: "dom.icc.enabled"},
   1.539 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.540 +    {name: "IccCardLockError", b2g: true, pref: "dom.icc.enabled"},
   1.541 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.542 +    "IDBCursor",
   1.543 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.544 +    "IDBCursorWithValue",
   1.545 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.546 +    "IDBDatabase",
   1.547 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.548 +    "IDBFactory",
   1.549 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.550 +    "IDBFileHandle",
   1.551 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.552 +    "IDBIndex",
   1.553 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.554 +    "IDBKeyRange",
   1.555 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.556 +    "IDBObjectStore",
   1.557 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.558 +    "IDBOpenDBRequest",
   1.559 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.560 +    "IDBRequest",
   1.561 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.562 +    "IDBTransaction",
   1.563 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.564 +    "IDBVersionChangeEvent",
   1.565 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.566 +    "Image",
   1.567 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.568 +    "ImageData",
   1.569 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.570 +    "InputEvent",
   1.571 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.572 +    {name: "InstallTrigger", b2g: false},
   1.573 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.574 +    "KeyEvent",
   1.575 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.576 +    "KeyboardEvent",
   1.577 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.578 +    "LocalMediaStream",
   1.579 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.580 +    "Location",
   1.581 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.582 +    "LockedFile",
   1.583 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.584 +    "MediaElementAudioSourceNode",
   1.585 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.586 +    "MediaError",
   1.587 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.588 +    "MediaList",
   1.589 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.590 +    "MediaQueryList",
   1.591 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.592 +    "MediaRecorder",
   1.593 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.594 +    "MediaStream",
   1.595 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.596 +    "MediaStreamAudioDestinationNode",
   1.597 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.598 +    "MediaStreamAudioSourceNode",
   1.599 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.600 +    {name: "MediaStreamEvent", pref: "media.peerconnection.enabled"},
   1.601 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.602 +    "MediaStreamTrack",
   1.603 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.604 +    "MessageEvent",
   1.605 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.606 +    "MessagePort",
   1.607 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.608 +    "MimeType",
   1.609 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.610 +    "MimeTypeArray",
   1.611 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.612 +    "ModalContentWindow",
   1.613 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.614 +    "MouseEvent",
   1.615 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.616 +    "MouseScrollEvent",
   1.617 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.618 +    {name: "MozActivity", b2g: true},
   1.619 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.620 +    "MozApplicationEvent",
   1.621 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.622 +    {name: "MozCellBroadcast", b2g: true, pref: "dom.cellbroadcast.enabled"},
   1.623 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.624 +    {name: "MozCellBroadcastEvent", b2g: true, pref: "dom.cellbroadcast.enabled"},
   1.625 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.626 +    "mozContact",
   1.627 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.628 +    "MozContactChangeEvent",
   1.629 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.630 +    "MozCSSKeyframeRule",
   1.631 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.632 +    "MozCSSKeyframesRule",
   1.633 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.634 +    {name: "MozEmergencyCbModeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.635 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.636 +    {name: "MozIcc", b2g: true, pref: "dom.icc.enabled"},
   1.637 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.638 +    {name: "MozIccManager", b2g: true, pref: "dom.icc.enabled"},
   1.639 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.640 +    {name: "MozInputContext", b2g: true},
   1.641 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.642 +    {name: "MozInputMethodManager", b2g: true},
   1.643 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.644 +    "MozMmsEvent",
   1.645 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.646 +    "MozMmsMessage",
   1.647 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.648 +    {name: "MozMobileConnection", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.649 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.650 +    {name: "MozMobileConnectionArray", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.651 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.652 +    "MozMobileMessageManager",
   1.653 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.654 +    "MozMobileMessageThread",
   1.655 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.656 +    "MozNamedAttrMap",
   1.657 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.658 +    {name: "MozNDEFRecord", b2g: true},
   1.659 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.660 +    {name: "MozNFCPeer", b2g: true},
   1.661 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.662 +    {name: "MozNFCTag", b2g: true},
   1.663 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.664 +    {name: "MozOtaStatusEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
   1.665 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.666 +    "MozPowerManager",
   1.667 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.668 +    {name: "mozRTCIceCandidate", pref: "media.peerconnection.enabled"},
   1.669 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.670 +    {name: "mozRTCPeerConnection", pref: "media.peerconnection.enabled"},
   1.671 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.672 +    {name: "mozRTCSessionDescription", pref: "media.peerconnection.enabled"},
   1.673 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.674 +    "MozSettingsEvent",
   1.675 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.676 +    "MozSmsEvent",
   1.677 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.678 +    "MozSmsFilter",
   1.679 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.680 +    "MozSmsMessage",
   1.681 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.682 +    "MozSmsSegmentInfo",
   1.683 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.684 +    {name: "MozSpeakerManager", b2g: true},
   1.685 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.686 +    {name: "MozStkCommandEvent", b2g: true, pref: "dom.icc.enabled"},
   1.687 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.688 +    {name: "MozTimeManager", b2g: true},
   1.689 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.690 +    {name: "MozVoicemail", b2g: true, pref: "dom.voicemail.enabled"},
   1.691 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.692 +    {name: "MozVoicemailEvent", b2g: true, pref: "dom.voicemail.enabled"},
   1.693 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.694 +    {name: "MozWakeLock", b2g: true, pref: "dom.wakelock.enabled"},
   1.695 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.696 +    {name: "MozWifiConnectionInfoEvent", b2g: true},
   1.697 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.698 +    {name: "MozWifiManager", b2g: true, permission: "wifi-manage"},
   1.699 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.700 +    {name: "MozWifiNetwork", b2g: true, permission: "wifi-manage"},
   1.701 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.702 +    {name: "MozWifiStatusChangeEvent", b2g: true},
   1.703 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.704 +    {name: "MozWifiP2pGroupOwner", b2g: true, permission: "wifi-manage"},
   1.705 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.706 +    {name: "MozWifiP2pManager", b2g: true, permission: "wifi-manage"},
   1.707 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.708 +    {name: "MozWifiP2pStatusChangeEvent", b2g: true, permission: "wifi-manage"},
   1.709 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.710 +    "MutationEvent",
   1.711 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.712 +    "MutationObserver",
   1.713 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.714 +    "MutationRecord",
   1.715 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.716 +    "Navigator",
   1.717 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.718 +    {name: "NetworkInformation", pref: "dom.netinfo.enabled"},
   1.719 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.720 +    "Node",
   1.721 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.722 +    "NodeFilter",
   1.723 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.724 +    "NodeIterator",
   1.725 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.726 +    "NodeList",
   1.727 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.728 +    "Notification",
   1.729 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.730 +    "NotifyPaintEvent",
   1.731 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.732 +    "OfflineAudioCompletionEvent",
   1.733 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.734 +    "OfflineAudioContext",
   1.735 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.736 +    "OfflineResourceList",
   1.737 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.738 +    "Option",
   1.739 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.740 +    "OscillatorNode",
   1.741 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.742 +    "PageTransitionEvent",
   1.743 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.744 +    "PaintRequest",
   1.745 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.746 +    "PaintRequestList",
   1.747 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.748 +    "PannerNode",
   1.749 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.750 +    { name: "Path2D", pref: "canvas.path.enabled" },
   1.751 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.752 +    "Performance",
   1.753 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.754 +    "PerformanceEntry",
   1.755 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.756 +    "PerformanceNavigation",
   1.757 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.758 +    "PerformanceResourceTiming",
   1.759 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.760 +    "PerformanceTiming",
   1.761 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.762 +    "PeriodicWave",
   1.763 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.764 +    {name: "PermissionSettings", b2g: true, permission: "permissions"},
   1.765 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.766 +    "PhoneNumberService",
   1.767 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.768 +    "Plugin",
   1.769 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.770 +    "PluginArray",
   1.771 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.772 +    {name: "PointerEvent", pref: "dom.w3c_pointer_events.enabled"},
   1.773 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.774 +    "PopStateEvent",
   1.775 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.776 +    "PopupBlockedEvent",
   1.777 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.778 +    "ProcessingInstruction",
   1.779 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.780 +    "ProgressEvent",
   1.781 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.782 +    "Promise",
   1.783 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.784 +    "PropertyNodeList",
   1.785 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.786 +    "Range",
   1.787 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.788 +    "RecordErrorEvent",
   1.789 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.790 +    "Rect",
   1.791 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.792 +    "RGBColor",
   1.793 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.794 +    {name: "RTCDataChannelEvent", pref: "media.peerconnection.enabled"},
   1.795 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.796 +    {name: "RTCPeerConnectionIceEvent", pref: "media.peerconnection.enabled"},
   1.797 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.798 +    {name: "RTCStatsReport", pref: "media.peerconnection.enabled"},
   1.799 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.800 +    "Screen",
   1.801 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.802 +    "ScriptProcessorNode",
   1.803 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.804 +    "ScrollAreaEvent",
   1.805 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.806 +    "Selection",
   1.807 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.808 +    "SettingsLock",
   1.809 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.810 +    "SettingsManager",
   1.811 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.812 +    {name: "ShadowRoot", pref: "dom.webcomponents.enabled"},
   1.813 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.814 +    {name: "SharedWorker", pref: "dom.workers.sharedWorkers.enabled"},
   1.815 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.816 +    "SimpleGestureEvent",
   1.817 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.818 +    {name: "SimpleTest", xbl: false},
   1.819 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.820 +    "SmartCardEvent",
   1.821 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.822 +    {name: "SpeechSynthesisEvent", b2g: true},
   1.823 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.824 +    {name: "SpeechSynthesis", b2g: true},
   1.825 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.826 +    {name: "SpeechSynthesisUtterance", b2g: true},
   1.827 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.828 +    {name: "SpeechSynthesisVoice", b2g: true},
   1.829 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.830 +    {name: "SpecialPowers", xbl: false},
   1.831 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.832 +    "Storage",
   1.833 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.834 +    "StorageEvent",
   1.835 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.836 +    "StyleSheet",
   1.837 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.838 +    "StyleSheetList",
   1.839 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.840 +    "SVGAElement",
   1.841 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.842 +    "SVGAltGlyphElement",
   1.843 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.844 +    "SVGAngle",
   1.845 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.846 +    "SVGAnimatedAngle",
   1.847 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.848 +    "SVGAnimatedBoolean",
   1.849 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.850 +    "SVGAnimatedEnumeration",
   1.851 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.852 +    "SVGAnimatedInteger",
   1.853 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.854 +    "SVGAnimatedLength",
   1.855 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.856 +    "SVGAnimatedLengthList",
   1.857 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.858 +    "SVGAnimatedNumber",
   1.859 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.860 +    "SVGAnimatedNumberList",
   1.861 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.862 +    "SVGAnimatedPreserveAspectRatio",
   1.863 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.864 +    "SVGAnimatedRect",
   1.865 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.866 +    "SVGAnimatedString",
   1.867 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.868 +    "SVGAnimatedTransformList",
   1.869 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.870 +    "SVGAnimateElement",
   1.871 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.872 +    "SVGAnimateMotionElement",
   1.873 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.874 +    "SVGAnimateTransformElement",
   1.875 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.876 +    "SVGAnimationElement",
   1.877 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.878 +    "SVGCircleElement",
   1.879 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.880 +    "SVGClipPathElement",
   1.881 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.882 +    "SVGComponentTransferFunctionElement",
   1.883 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.884 +    "SVGDefsElement",
   1.885 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.886 +    "SVGDescElement",
   1.887 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.888 +    "SVGDocument",
   1.889 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.890 +    "SVGElement",
   1.891 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.892 +    "SVGEllipseElement",
   1.893 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.894 +    "SVGFEBlendElement",
   1.895 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.896 +    "SVGFEColorMatrixElement",
   1.897 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.898 +    "SVGFEComponentTransferElement",
   1.899 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.900 +    "SVGFECompositeElement",
   1.901 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.902 +    "SVGFEConvolveMatrixElement",
   1.903 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.904 +    "SVGFEDiffuseLightingElement",
   1.905 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.906 +    "SVGFEDisplacementMapElement",
   1.907 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.908 +    "SVGFEDistantLightElement",
   1.909 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.910 +    "SVGFEDropShadowElement",
   1.911 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.912 +    "SVGFEFloodElement",
   1.913 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.914 +    "SVGFEFuncAElement",
   1.915 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.916 +    "SVGFEFuncBElement",
   1.917 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.918 +    "SVGFEFuncGElement",
   1.919 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.920 +    "SVGFEFuncRElement",
   1.921 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.922 +    "SVGFEGaussianBlurElement",
   1.923 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.924 +    "SVGFEImageElement",
   1.925 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.926 +    "SVGFEMergeElement",
   1.927 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.928 +    "SVGFEMergeNodeElement",
   1.929 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.930 +    "SVGFEMorphologyElement",
   1.931 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.932 +    "SVGFEOffsetElement",
   1.933 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.934 +    "SVGFEPointLightElement",
   1.935 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.936 +    "SVGFESpecularLightingElement",
   1.937 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.938 +    "SVGFESpotLightElement",
   1.939 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.940 +    "SVGFETileElement",
   1.941 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.942 +    "SVGFETurbulenceElement",
   1.943 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.944 +    "SVGFilterElement",
   1.945 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.946 +    "SVGForeignObjectElement",
   1.947 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.948 +    "SVGGElement",
   1.949 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.950 +    "SVGGradientElement",
   1.951 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.952 +    "SVGGraphicsElement",
   1.953 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.954 +    "SVGImageElement",
   1.955 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.956 +    "SVGLength",
   1.957 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.958 +    "SVGLengthList",
   1.959 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.960 +    "SVGLinearGradientElement",
   1.961 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.962 +    "SVGLineElement",
   1.963 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.964 +    "SVGMarkerElement",
   1.965 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.966 +    "SVGMaskElement",
   1.967 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.968 +    "SVGMatrix",
   1.969 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.970 +    "SVGMetadataElement",
   1.971 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.972 +    "SVGMPathElement",
   1.973 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.974 +    "SVGNumber",
   1.975 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.976 +    "SVGNumberList",
   1.977 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.978 +    "SVGPathElement",
   1.979 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.980 +    "SVGPathSeg",
   1.981 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.982 +    "SVGPathSegArcAbs",
   1.983 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.984 +    "SVGPathSegArcRel",
   1.985 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.986 +    "SVGPathSegClosePath",
   1.987 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.988 +    "SVGPathSegCurvetoCubicAbs",
   1.989 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.990 +    "SVGPathSegCurvetoCubicRel",
   1.991 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.992 +    "SVGPathSegCurvetoCubicSmoothAbs",
   1.993 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.994 +    "SVGPathSegCurvetoCubicSmoothRel",
   1.995 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.996 +    "SVGPathSegCurvetoQuadraticAbs",
   1.997 +// IMPORTANT: Do not change this list without review from a DOM peer!
   1.998 +    "SVGPathSegCurvetoQuadraticRel",
   1.999 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1000 +    "SVGPathSegCurvetoQuadraticSmoothAbs",
  1.1001 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1002 +    "SVGPathSegCurvetoQuadraticSmoothRel",
  1.1003 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1004 +    "SVGPathSegLinetoAbs",
  1.1005 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1006 +    "SVGPathSegLinetoHorizontalAbs",
  1.1007 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1008 +    "SVGPathSegLinetoHorizontalRel",
  1.1009 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1010 +    "SVGPathSegLinetoRel",
  1.1011 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1012 +    "SVGPathSegLinetoVerticalAbs",
  1.1013 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1014 +    "SVGPathSegLinetoVerticalRel",
  1.1015 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1016 +    "SVGPathSegList",
  1.1017 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1018 +    "SVGPathSegMovetoAbs",
  1.1019 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1020 +    "SVGPathSegMovetoRel",
  1.1021 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1022 +    "SVGPatternElement",
  1.1023 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1024 +    "SVGPoint",
  1.1025 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1026 +    "SVGPointList",
  1.1027 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1028 +    "SVGPolygonElement",
  1.1029 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1030 +    "SVGPolylineElement",
  1.1031 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1032 +    "SVGPreserveAspectRatio",
  1.1033 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1034 +    "SVGRadialGradientElement",
  1.1035 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1036 +    "SVGRect",
  1.1037 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1038 +    "SVGRectElement",
  1.1039 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1040 +    "SVGScriptElement",
  1.1041 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1042 +    "SVGSetElement",
  1.1043 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1044 +    "SVGStopElement",
  1.1045 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1046 +    "SVGStringList",
  1.1047 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1048 +    "SVGStyleElement",
  1.1049 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1050 +    "SVGSVGElement",
  1.1051 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1052 +    "SVGSwitchElement",
  1.1053 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1054 +    "SVGSymbolElement",
  1.1055 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1056 +    "SVGTextContentElement",
  1.1057 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1058 +    "SVGTextElement",
  1.1059 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1060 +    "SVGTextPathElement",
  1.1061 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1062 +    "SVGTextPositioningElement",
  1.1063 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1064 +    "SVGTitleElement",
  1.1065 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1066 +    "SVGTransform",
  1.1067 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1068 +    "SVGTransformList",
  1.1069 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1070 +    "SVGTSpanElement",
  1.1071 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1072 +    "SVGUnitTypes",
  1.1073 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1074 +    "SVGUseElement",
  1.1075 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1076 +    "SVGViewElement",
  1.1077 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1078 +    "SVGZoomAndPan",
  1.1079 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1080 +    "SVGZoomEvent",
  1.1081 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1082 +    {name: "Telephony", b2g: true, pref: "dom.telephony.enabled"},
  1.1083 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1084 +    {name: "TelephonyCall", b2g: true, pref: "dom.telephony.enabled"},
  1.1085 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1086 +    {name: "TelephonyCallGroup", b2g: true, pref: "dom.telephony.enabled"},
  1.1087 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1088 +    "Text",
  1.1089 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1090 +    "TextDecoder",
  1.1091 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1092 +    "TextEncoder",
  1.1093 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1094 +    "TextMetrics",
  1.1095 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1096 +    "TextTrack",
  1.1097 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1098 +    "TextTrackCueList",
  1.1099 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1100 +    "TextTrackList",
  1.1101 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1102 +    "TimeEvent",
  1.1103 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1104 +    "TimeRanges",
  1.1105 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1106 +    "Touch",
  1.1107 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1108 +    "TouchEvent",
  1.1109 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1110 +    "TouchList",
  1.1111 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1112 +    "TrackEvent",
  1.1113 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1114 +    "TransitionEvent",
  1.1115 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1116 +    {name: "TreeColumn", xbl: true},
  1.1117 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1118 +    {name: "TreeColumns", xbl: true},
  1.1119 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1120 +    {name: "TreeContentView", xbl: true},
  1.1121 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1122 +    {name: "TreeSelection", xbl: true},
  1.1123 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1124 +    "TreeWalker",
  1.1125 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1126 +    "UIEvent",
  1.1127 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1128 +    "UndoManager",
  1.1129 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1130 +    "URL",
  1.1131 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1132 +    "URLSearchParams",
  1.1133 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1134 +    {name: "UserDataHandler", xbl: true},
  1.1135 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1136 +    "UserProximityEvent",
  1.1137 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1138 +    {name: "USSDReceivedEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
  1.1139 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1140 +    "ValidityState",
  1.1141 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1142 +    "VideoStreamTrack",
  1.1143 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1144 +    "VTTCue",
  1.1145 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1146 +    {name: "VTTRegion", pref: "media.webvtt.regions.enabled"},
  1.1147 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1148 +    "WaveShaperNode",
  1.1149 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1150 +    "WebGLActiveInfo",
  1.1151 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1152 +    "WebGLBuffer",
  1.1153 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1154 +    "WebGLFramebuffer",
  1.1155 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1156 +    "WebGLProgram",
  1.1157 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1158 +    "WebGLRenderbuffer",
  1.1159 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1160 +    "WebGLRenderingContext",
  1.1161 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1162 +    "WebGLShader",
  1.1163 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1164 +    "WebGLShaderPrecisionFormat",
  1.1165 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1166 +    "WebGLTexture",
  1.1167 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1168 +    "WebGLUniformLocation",
  1.1169 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1170 +    "WebGLVertexArray",
  1.1171 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1172 +    "WebSocket",
  1.1173 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1174 +    "WheelEvent",
  1.1175 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1176 +    "Window",
  1.1177 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1178 +    "WindowUtils",
  1.1179 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1180 +    "Worker",
  1.1181 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1182 +    "XMLDocument",
  1.1183 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1184 +    "XMLHttpRequest",
  1.1185 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1186 +    "XMLHttpRequestUpload",
  1.1187 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1188 +    "XMLSerializer",
  1.1189 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1190 +    "XMLStylesheetProcessingInstruction",
  1.1191 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1192 +    "XPathEvaluator",
  1.1193 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1194 +    "XPathExpression",
  1.1195 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1196 +    "XPathNSResolver",
  1.1197 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1198 +    "XPathResult",
  1.1199 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1200 +    "XSLTProcessor",
  1.1201 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1202 +    {name: "XULButtonElement", xbl: true},
  1.1203 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1204 +    {name: "XULCheckboxElement", xbl: true},
  1.1205 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1206 +    {name: "XULCommandDispatcher", xbl: true},
  1.1207 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1208 +    {name: "XULCommandEvent", xbl: true},
  1.1209 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1210 +    {name: "XULControlElement", xbl: true},
  1.1211 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1212 +    {name: "XULControllers", xbl: true},
  1.1213 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1214 +    {name: "XULDocument", xbl: true},
  1.1215 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1216 +    {name: "XULElement", xbl: true},
  1.1217 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1218 +    {name: "XULLabeledControlElement", xbl: true},
  1.1219 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1220 +    {name: "XULPopupElement", xbl: true},
  1.1221 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1222 +    {name: "XULTemplateBuilder", xbl: true},
  1.1223 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1224 +    {name: "XULTreeBuilder", xbl: true},
  1.1225 +// IMPORTANT: Do not change this list without review from a DOM peer!
  1.1226 +  ];
  1.1227 +// IMPORTANT: Do not change the list above without review from a DOM peer!
  1.1228 +
  1.1229 +function createInterfaceMap(isXBLScope) {
  1.1230 +  var prefs = SpecialPowers.Services.prefs;
  1.1231 +  var version = SpecialPowers.Cc["@mozilla.org/xre/app-info;1"].getService(SpecialPowers.Ci.nsIXULAppInfo).version;
  1.1232 +  var isNightly = version.endsWith("a1");
  1.1233 +  var isRelease = !version.contains("a");
  1.1234 +  var isDesktop = !/Mobile|Tablet/.test(navigator.userAgent);
  1.1235 +  var isB2G = !isDesktop && !navigator.userAgent.contains("Android");
  1.1236 +  var hasPermission = function (aPermission) {
  1.1237 +    return SpecialPowers.hasPermission(aPermission, window.document);
  1.1238 +  };
  1.1239 +
  1.1240 +  var interfaceMap = {};
  1.1241 +
  1.1242 +  function addInterfaces(interfaces)
  1.1243 +  {
  1.1244 +    for (var entry of interfaces) {
  1.1245 +      if (typeof(entry) === "string") {
  1.1246 +        interfaceMap[entry] = true;
  1.1247 +      } else if ((entry.nightly === !isNightly) ||
  1.1248 +                 (entry.xbl === !isXBLScope) ||
  1.1249 +                 (entry.desktop === !isDesktop) ||
  1.1250 +                 (entry.b2g === !isB2G) ||
  1.1251 +                 (entry.release === !isRelease) ||
  1.1252 +                 (entry.pref && !prefs.getBoolPref(entry.pref))  ||
  1.1253 +                 (entry.permission && !hasPermission(entry.permission))) {
  1.1254 +        interfaceMap[entry.name] = false;
  1.1255 +      } else {
  1.1256 +        interfaceMap[entry.name] = true;
  1.1257 +      }
  1.1258 +    }
  1.1259 +  }
  1.1260 +
  1.1261 +  addInterfaces(ecmaGlobals);
  1.1262 +  addInterfaces(interfaceNamesInGlobalScope);
  1.1263 +  if (isXBLScope) {
  1.1264 +    // We expose QueryInterface to XBL scopes. It's not an interface but we
  1.1265 +    // need to handle it because it's an own property of the global and the
  1.1266 +    // property name starts with an uppercase letter.
  1.1267 +    interfaceMap["QueryInterface"] = true;
  1.1268 +  }
  1.1269 +
  1.1270 +  return interfaceMap;
  1.1271 +}
  1.1272 +
  1.1273 +function runTest(isXBLScope) {
  1.1274 +  var interfaceMap = createInterfaceMap(isXBLScope);
  1.1275 +  for (var name of Object.getOwnPropertyNames(window)) {
  1.1276 +    // An interface name should start with an upper case character.
  1.1277 +    // However, we have a couple of legacy interfaces that start with 'moz', so
  1.1278 +    // we want to allow those until we can remove them.
  1.1279 +    if (!/^[A-Z]/.test(name) && legacyMozPrefixedInterfaces.indexOf(name) < 0) {
  1.1280 +      continue;
  1.1281 +    }
  1.1282 +    ok(interfaceMap[name],
  1.1283 +       "If this is failing: DANGER, are you sure you want to expose the new interface " + name +
  1.1284 +       " to all webpages as a property on the window (XBL: " + isXBLScope + ")? Do not make a change to this file without a " +
  1.1285 +       " review from a DOM peer for that specific change!!! (or a JS peer for changes to ecmaGlobals)");
  1.1286 +    delete interfaceMap[name];
  1.1287 +  }
  1.1288 +  for (var name of Object.keys(interfaceMap)) {
  1.1289 +    ok(name in window === interfaceMap[name],
  1.1290 +       name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the " + (isXBLScope ? "XBL" : "global") +" scope");
  1.1291 +    if (!interfaceMap[name]) {
  1.1292 +      delete interfaceMap[name];
  1.1293 +    }
  1.1294 +  }
  1.1295 +  if (isXBLScope) {
  1.1296 +    todo_is(Object.keys(interfaceMap).length, 0,
  1.1297 +            "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
  1.1298 +  } else {
  1.1299 +    is(Object.keys(interfaceMap).length, 0,
  1.1300 +       "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
  1.1301 +  }
  1.1302 +}
  1.1303 +
  1.1304 +runTest(false);
  1.1305 +SimpleTest.waitForExplicitFinish();
  1.1306 +
  1.1307 +</script>
  1.1308 +<span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
  1.1309 +</pre>
  1.1310 +</body>
  1.1311 +</html>

mercurial