gecko-dev/dom/tests/mochitest/general/test_interfaces.html

1457 lines
70 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=766694
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 766694</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=766694">Mozilla Bug 766694</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 766694 **/
// This is a list of all interfaces that are exposed to every webpage.
// Please only add things to this list with great care and proper review
// from the associated module peers.
// This file lists global interfaces we want exposed and verifies they
// are what we intend. Each entry in the arrays below can either be a
// simple string with the interface name, or an object with a 'name'
// property giving the interface name as a string, and additional
// properties which qualify the exposure of that interface. For example:
//
// [
// "AGlobalInterface",
// {name: "ExperimentalThing", release: false},
// {name: "OptionalThing", pref: "some.thing.enabled"},
// {name: "FancyControl", xbl: true},
// ];
//
// See createInterfaceMap() below for a complete list of properties.
// IMPORTANT: Do not change this list without review from
// a JavaScript Engine peer!
var ecmaGlobals =
[
"Array",
"ArrayBuffer",
"Boolean",
"DataView",
"Date",
"Error",
"EvalError",
"Float32Array",
"Float64Array",
"Function",
// NB: We haven't bothered to resolve constants like Infinity and NaN on
// Xrayed windows (which are seen from the XBL scope). We could support
// this if needed with some refactoring.
{name: "Infinity", xbl: false},
"Int16Array",
"Int32Array",
"Int8Array",
"InternalError",
{name: "Intl", desktop: true},
"Iterator",
"JSON",
"Map",
"Math",
{name: "NaN", xbl: false},
"Number",
"Object",
"Proxy",
"RangeError",
"ReferenceError",
"RegExp",
"Set",
{name: "SharedArrayBuffer", nightly: true},
{name: "SharedInt8Array", nightly: true},
{name: "SharedUint8Array", nightly: true},
{name: "SharedUint8ClampedArray", nightly: true},
{name: "SharedInt16Array", nightly: true},
{name: "SharedUint16Array", nightly: true},
{name: "SharedInt32Array", nightly: true},
{name: "SharedUint32Array", nightly: true},
{name: "SharedFloat32Array", nightly: true},
{name: "SharedFloat64Array", nightly: true},
{name: "SIMD", nightly: true},
{name: "Atomics", nightly: true},
"StopIteration",
"String",
"SyntaxError",
{name: "TypedObject", nightly: true},
"TypeError",
"Uint16Array",
"Uint32Array",
"Uint8Array",
"Uint8ClampedArray",
"URIError",
"WeakMap",
"WeakSet",
];
// IMPORTANT: Do not change the list above without review from
// a JavaScript Engine peer!
// Symbol is conditionally defined.
// If it's defined, insert "Symbol" before "SyntaxError".
if (typeof Symbol === "function") {
ecmaGlobals.splice(ecmaGlobals.indexOf("SyntaxError"), 0, "Symbol");
}
// IMPORTANT: Do not change the list below without review from a DOM peer,
// except to remove items from it!
//
// This is a list of interfaces that were prefixed with 'moz' instead of 'Moz'.
// We should never to that again, interfaces in the DOM start with an uppercase
// letter. If you think you need to add an interface here, DON'T. Rename your
// interface.
var legacyMozPrefixedInterfaces =
[
"mozContact",
"mozRTCIceCandidate",
"mozRTCPeerConnection",
"mozRTCSessionDescription",
];
// IMPORTANT: Do not change the list above without review from a DOM peer,
// except to remove items from it!
// IMPORTANT: Do not change the list below without review from a DOM peer!
var interfaceNamesInGlobalScope =
[
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozAbortablePromise", pref: "dom.abortablepromise.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "AlarmsManager", pref: "dom.mozAlarms.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"AnalyserNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AnimationEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Animation", pref: "dom.animations-api.core.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "AnimationEffect", pref: "dom.animations-api.core.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "AnimationPlayer", pref: "dom.animations-api.core.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "AnimationTimeline", pref: "dom.animations-api.core.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"Attr",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Audio",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioBuffer",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "AudioChannelManager", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioContext",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioBufferSourceNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioDestinationNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioListener",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioParam",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioProcessingEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"AudioStreamTrack",
// IMPORTANT: Do not change this list without review from a DOM peer!
"BarProp",
// IMPORTANT: Do not change this list without review from a DOM peer!
"BatteryManager",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BeforeAfterKeyboardEvent", b2g: true,
pref: "dom.beforeAfterKeyboardEvent.enabled",
permission: ["embed-apps", "before-after-keyboard-event"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"BeforeUnloadEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"BiquadFilterNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Blob",
// IMPORTANT: Do not change this list without review from a DOM peer!
"BlobEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothAdapter", b2g: true, permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothDevice", b2g: true, permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothDeviceEvent", b2g: true, permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothDiscoveryStateChangedEvent", b2g: true,
permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothManager", b2g: true, permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BluetoothStatusChangedEvent", b2g: true, permission: ["bluetooth"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BoxObject", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "BroadcastChannel", pref: "dom.broadcastChannel.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CallEvent", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CallGroupErrorEvent", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraCapabilities", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraClosedEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraConfigurationEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraControl", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraDetectedFace", b2g: true, pref: "camera.control.face_detection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraFacesDetectedEvent", b2g: true, pref: "camera.control.face_detection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraManager", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraRecorderAudioProfile", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraRecorderProfile", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraRecorderProfiles", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraRecorderVideoProfile", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CameraStateChangeEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"CanvasGradient",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CanvasPattern",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CanvasRenderingContext2D",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CaretPosition",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CDATASection",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CFStateChangeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"ChannelMergerNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ChannelSplitterNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CharacterData",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ChromeWindow", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"ClipboardEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CloseEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CommandEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Comment",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CompositionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Controllers",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ConvolverNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Crypto",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CryptoKey", pref: "dom.webcrypto.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSS",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSS2Properties",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSCharsetRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSConditionRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSCounterStyleRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "CSSFontFaceLoadEvent", pref: "layout.css.font-loading-api.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSFontFaceRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSFontFeatureValuesRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSGroupingRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSImportRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSMediaRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSMozDocumentRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSNameSpaceRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSPageRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSPrimitiveValue",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSRuleList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSStyleDeclaration",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSStyleRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSStyleSheet",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSSupportsRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSValue",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CSSValueList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"CustomEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DataChannel",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "DataErrorEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "DataStore", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "DataStoreChangeEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "DataStoreCursor", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"DataTransfer",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DelayNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DesktopNotification",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DesktopNotificationCenter",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DeviceLightEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DeviceMotionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DeviceOrientationEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DeviceProximityEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "DeviceStorage", pref: "device.storage.enabled" },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "DeviceStorageChangeEvent", pref: "device.storage.enabled" },
// IMPORTANT: Do not change this list without review from a DOM peer!
"Document",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DocumentFragment",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DocumentType",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "DOMConstructor", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMCursor",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMError",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMException",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMImplementation",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMMatrix",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMMatrixReadOnly",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMParser",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMPoint",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMPointReadOnly",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMQuad",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMRect",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMRectList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMRectReadOnly",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMSettableTokenList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMStringList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMStringMap",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMTokenList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DOMTransactionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DragEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"DynamicsCompressorNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Element",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ErrorEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Event",
// IMPORTANT: Do not change this list without review from a DOM peer!
"EventSource",
// IMPORTANT: Do not change this list without review from a DOM peer!
"EventTarget",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "External", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
"File",
// IMPORTANT: Do not change this list without review from a DOM peer!
"FileList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"FileReader",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "FMRadio", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"FocusEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"FormData",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "FontFace", pref: "layout.css.font-loading-api.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "FontFaceSet", pref: "layout.css.font-loading-api.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"GainNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Gamepad", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "GamepadAxisMoveEvent", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "GamepadButtonEvent", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "GamepadButton", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "GamepadEvent", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
"HashChangeEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Headers", pref: "dom.fetch.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"History",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "HMDVRDevice", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLAllCollection",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLAnchorElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLAppletElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLAreaElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLAudioElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLBaseElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLBodyElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLBRElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLButtonElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLCanvasElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLCollection",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLContentElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDataElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDataListElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDirectoryElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDivElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDListElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLDocument",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLEmbedElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFieldSetElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFontElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFormControlsCollection",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFormElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFrameElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLFrameSetElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLHeadElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLHeadingElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLHRElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLHtmlElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLIFrameElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLImageElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLInputElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLLabelElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLLegendElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLLIElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLLinkElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMapElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMediaElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMenuElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMenuItemElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMetaElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLMeterElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLModElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLObjectElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLOListElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLOptGroupElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLOptionElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLOptionsCollection",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLOutputElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLParagraphElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLParamElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLPreElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "HTMLPictureElement", pref: "dom.image.picture.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLProgressElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLPropertiesCollection",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLQuoteElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLScriptElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLSelectElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLShadowElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLSourceElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLSpanElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLStyleElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableCaptionElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableCellElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableColElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableRowElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTableSectionElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTemplateElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTextAreaElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTimeElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTitleElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLTrackElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLUListElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLUnknownElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"HTMLVideoElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBCursor",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBCursorWithValue",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBDatabase",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBFactory",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBFileHandle",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBFileRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBIndex",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBKeyRange",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBMutableFile",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBObjectStore",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBOpenDBRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBTransaction",
// IMPORTANT: Do not change this list without review from a DOM peer!
"IDBVersionChangeEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Image",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ImageCapture", pref: "dom.imagecapture.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ImageCaptureErrorEvent", pref: "dom.imagecapture.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"ImageData",
// IMPORTANT: Do not change this list without review from a DOM peer!
"InputEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "InstallTrigger", b2g: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
"KeyEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"KeyboardEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"LocalMediaStream",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Location",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaDevices",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaElementAudioSourceNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaError",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeyError", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaEncryptedEvent", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeys", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeySession", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeySystemAccess", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeyMessageEvent", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaKeyStatusMap", pref: "media.eme.apiVisible"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaQueryList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaRecorder",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaSource", pref: "media.mediasource.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaStream",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaStreamAudioDestinationNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaStreamAudioSourceNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaStreamEvent", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MediaStreamTrackEvent", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MediaStreamTrack",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MenuBoxObject", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MessageEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MessagePort",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MimeType",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MimeTypeArray",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MouseEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MouseScrollEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozActivity", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozClirModeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"mozContact",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozContactChangeEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozCSSKeyframeRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozCSSKeyframesRule",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozEmergencyCbModeEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozInputContext", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozInputMethodManager", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozMmsMessage",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileCellInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileConnection", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileConnectionArray", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileConnectionInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileNetworkInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozMobileMessageThread",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozNDEFRecord", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozOtaStatusEvent", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozPowerManager",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "mozRTCIceCandidate", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "mozRTCPeerConnection", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "mozRTCSessionDescription", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozSettingsEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozSettingsTransactionEvent", permission: ["settings-api-read"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozSmsMessage",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozSpeakerManager", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozTimeManager", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWakeLock", b2g: true, pref: "dom.wakelock.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiCapabilities", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiConnectionInfoEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiStationInfoEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiManager", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiNetwork", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiStatusChangeEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiP2pGroupOwner", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiP2pManager", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozWifiP2pStatusChangeEvent", b2g: true, permission: ["wifi-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MutationEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MutationObserver",
// IMPORTANT: Do not change this list without review from a DOM peer!
"MutationRecord",
// IMPORTANT: Do not change this list without review from a DOM peer!
"NamedNodeMap",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Navigator",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "NetworkInformation", pref: "dom.netinfo.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"Node",
// IMPORTANT: Do not change this list without review from a DOM peer!
"NodeFilter",
// IMPORTANT: Do not change this list without review from a DOM peer!
"NodeIterator",
// IMPORTANT: Do not change this list without review from a DOM peer!
"NodeList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Notification",
// IMPORTANT: Do not change this list without review from a DOM peer!
"NotifyPaintEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"OfflineAudioCompletionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"OfflineAudioContext",
// IMPORTANT: Do not change this list without review from a DOM peer!
"OfflineResourceList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Option",
// IMPORTANT: Do not change this list without review from a DOM peer!
"OscillatorNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PageTransitionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PaintRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PaintRequestList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PannerNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "Path2D", pref: "canvas.path.enabled" },
// IMPORTANT: Do not change this list without review from a DOM peer!
"Performance",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceEntry",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceMark",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceMeasure",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceNavigation",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceResourceTiming",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PerformanceTiming",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PeriodicWave",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PermissionSettings", b2g: true, permission: ["permissions"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PhoneNumberService", permission: ["phonenumberservice"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"Plugin",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PluginArray",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PointerEvent", pref: "dom.w3c_pointer_events.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"PopStateEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PopupBlockedEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PopupBoxObject", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PositionSensorVRDevice", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationDeviceInfoManager",
pref: "dom.presentation.enabled",
permission: ["presentation-device-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"ProcessingInstruction",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ProgressEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Promise",
// IMPORTANT: Do not change this list without review from a DOM peer!
"PropertyNodeList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"RadioNodeList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Range",
// IMPORTANT: Do not change this list without review from a DOM peer!
"RecordErrorEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Rect",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Request", pref: "dom.fetch.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Response", pref: "dom.fetch.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"RGBColor",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RTCDataChannelEvent", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RTCPeerConnectionIceEvent", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RTCRtpReceiver", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RTCRtpSender", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RTCStatsReport", pref: "media.peerconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"Screen",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ScriptProcessorNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ScrollAreaEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Selection",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ServiceWorker", pref: "dom.serviceWorkers.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ServiceWorkerContainer", pref: "dom.serviceWorkers.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"SettingsLock",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SettingsManager",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "ShadowRoot", pref: "dom.webcomponents.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SharedWorker", pref: "dom.workers.sharedWorkers.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"SimpleGestureEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SimpleTest", xbl: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SourceBuffer", pref: "media.mediasource.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SourceBufferList", pref: "media.mediasource.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SpeechSynthesisEvent", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SpeechSynthesis", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SpeechSynthesisUtterance", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SpeechSynthesisVoice", b2g: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SpecialPowers", xbl: false},
// IMPORTANT: Do not change this list without review from a DOM peer!
"StereoPannerNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Storage",
// IMPORTANT: Do not change this list without review from a DOM peer!
"StorageEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"StyleSheet",
// IMPORTANT: Do not change this list without review from a DOM peer!
"StyleSheetList",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "SubtleCrypto", pref: "dom.webcrypto.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAltGlyphElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAngle",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedAngle",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedBoolean",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedEnumeration",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedInteger",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedLength",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedLengthList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedNumber",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedNumberList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedPreserveAspectRatio",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedRect",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedString",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimatedTransformList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimateElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimateMotionElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimateTransformElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGAnimationElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGCircleElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGClipPathElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGComponentTransferFunctionElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGDefsElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGDescElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGDocument",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGEllipseElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEBlendElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEColorMatrixElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEComponentTransferElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFECompositeElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEConvolveMatrixElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEDiffuseLightingElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEDisplacementMapElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEDistantLightElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEDropShadowElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEFloodElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEFuncAElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEFuncBElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEFuncGElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEFuncRElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEGaussianBlurElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEImageElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEMergeElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEMergeNodeElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEMorphologyElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEOffsetElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFEPointLightElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFESpecularLightingElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFESpotLightElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFETileElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFETurbulenceElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGFilterElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGForeignObjectElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGGElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGGradientElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGGraphicsElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGImageElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGLength",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGLengthList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGLinearGradientElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGLineElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGMarkerElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGMaskElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGMatrix",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGMetadataElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGMPathElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGNumber",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGNumberList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSeg",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegArcAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegArcRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegClosePath",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoCubicAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoCubicRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoCubicSmoothAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoCubicSmoothRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoQuadraticAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoQuadraticRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoQuadraticSmoothAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegCurvetoQuadraticSmoothRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoHorizontalAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoHorizontalRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoVerticalAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegLinetoVerticalRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegMovetoAbs",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPathSegMovetoRel",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPatternElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPoint",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPointList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPolygonElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPolylineElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGPreserveAspectRatio",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGRadialGradientElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGRect",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGRectElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGScriptElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGSetElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGStopElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGStringList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGStyleElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGSVGElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGSwitchElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGSymbolElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTextContentElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTextElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTextPathElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTextPositioningElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTitleElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTransform",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTransformList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGTSpanElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGUnitTypes",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGUseElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGViewElement",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGZoomAndPan",
// IMPORTANT: Do not change this list without review from a DOM peer!
"SVGZoomEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RequestSyncManager", b2g: true, pref: "dom.requestSync.enabled", permission: ["requestsync-manager"] },
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RequestSyncApp", b2g: true, pref: "dom.requestSync.enabled", permission: ["requestsync-manager"] },
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "RequestSyncTask", b2g: true, pref: "dom.requestSync.enabled", permission: ["requestsync-manager"] },
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Telephony", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TelephonyCall", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TelephonyCallGroup", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TelephonyCallId", b2g: true, pref: "dom.telephony.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"Text",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextDecoder",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextEncoder",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextMetrics",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextTrack",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextTrackCueList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TextTrackList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TimeEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TimeRanges",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Touch",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TouchEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TouchList",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TrackEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"TransitionEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TreeColumn", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TreeColumns", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TreeContentView", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TreeSelection", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"TreeWalker",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVChannel", b2g: true, pref: "dom.tv.enabled", permission: "tv"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVCurrentChannelChangedEvent", b2g: true, pref: "dom.tv.enabled",
permission: "tv"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVCurrentSourceChangedEvent", b2g: true, pref: "dom.tv.enabled",
permission: "tv"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVEITBroadcastedEvent", b2g: true, pref: "dom.tv.enabled",
permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVManager", b2g: true, pref: "dom.tv.enabled", permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVProgram", b2g: true, pref: "dom.tv.enabled", permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVScanningStateChangedEvent", b2g: true, pref: "dom.tv.enabled",
permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVSource", b2g: true, pref: "dom.tv.enabled", permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "TVTuner", b2g: true, pref: "dom.tv.enabled", permission: ["tv"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "UDPMessageEvent", pref: "dom.udpsocket.enabled",
permission: ["udp-socket"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "UDPSocket", pref: "dom.udpsocket.enabled",
permission: ["udp-socket"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
"UIEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"UndoManager",
// IMPORTANT: Do not change this list without review from a DOM peer!
"URL",
// IMPORTANT: Do not change this list without review from a DOM peer!
"URLSearchParams",
// IMPORTANT: Do not change this list without review from a DOM peer!
"UserProximityEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"ValidityState",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VideoPlaybackQuality", pref: "media.mediasource.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"VideoStreamTrack",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VRDevice", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VRPositionState", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VRFieldOfView", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VRFieldOfViewReadOnly", pref: "dom.vr.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"VTTCue",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "VTTRegion", pref: "media.webvtt.regions.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"WaveShaperNode",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLActiveInfo",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLBuffer",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLFramebuffer",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLProgram",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLRenderbuffer",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLRenderingContext",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLShader",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLShaderPrecisionFormat",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLTexture",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLUniformLocation",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebGLVertexArray",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WebSocket",
// IMPORTANT: Do not change this list without review from a DOM peer!
"WheelEvent",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Window",
// IMPORTANT: Do not change this list without review from a DOM peer!
"Worker",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLDocument",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLHttpRequest",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLHttpRequestEventTarget",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLHttpRequestUpload",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLSerializer",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XMLStylesheetProcessingInstruction",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XPathEvaluator",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XPathExpression",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XPathResult",
// IMPORTANT: Do not change this list without review from a DOM peer!
"XSLTProcessor",
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULButtonElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULCheckboxElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULCommandDispatcher", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULCommandEvent", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULControlElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULControllers", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULDocument", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULLabeledControlElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULPopupElement", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULTemplateBuilder", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "XULTreeBuilder", xbl: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
];
// IMPORTANT: Do not change the list above without review from a DOM peer!
function createInterfaceMap(isXBLScope) {
var prefs = SpecialPowers.Services.prefs;
var version = SpecialPowers.Cc["@mozilla.org/xre/app-info;1"].getService(SpecialPowers.Ci.nsIXULAppInfo).version;
var isNightly = version.endsWith("a1");
var isRelease = !version.contains("a");
var isDesktop = !/Mobile|Tablet/.test(navigator.userAgent);
var isB2G = !isDesktop && !navigator.userAgent.contains("Android");
var hasPermission = function (aPermissions) {
var result = false;
for (var p of aPermissions) {
result = result || SpecialPowers.hasPermission(p, window.document);
}
return result;
};
var interfaceMap = {};
function addInterfaces(interfaces)
{
for (var entry of interfaces) {
if (typeof(entry) === "string") {
interfaceMap[entry] = true;
} else if ((entry.nightly === !isNightly) ||
(entry.xbl === !isXBLScope) ||
(entry.desktop === !isDesktop) ||
(entry.b2g === !isB2G) ||
(entry.release === !isRelease) ||
(entry.pref && !prefs.getBoolPref(entry.pref)) ||
(entry.permission && !hasPermission(entry.permission))) {
interfaceMap[entry.name] = false;
} else {
interfaceMap[entry.name] = true;
}
}
}
addInterfaces(ecmaGlobals);
addInterfaces(interfaceNamesInGlobalScope);
if (isXBLScope) {
// We expose QueryInterface to XBL scopes. It's not an interface but we
// need to handle it because it's an own property of the global and the
// property name starts with an uppercase letter.
interfaceMap["QueryInterface"] = true;
}
return interfaceMap;
}
function runTest(isXBLScope) {
var interfaceMap = createInterfaceMap(isXBLScope);
for (var name of Object.getOwnPropertyNames(window)) {
// An interface name should start with an upper case character.
// However, we have a couple of legacy interfaces that start with 'moz', so
// we want to allow those until we can remove them.
if (!/^[A-Z]/.test(name) && legacyMozPrefixedInterfaces.indexOf(name) < 0) {
continue;
}
ok(interfaceMap[name],
"If this is failing: DANGER, are you sure you want to expose the new interface " + name +
" to all webpages as a property on the window (XBL: " + isXBLScope + ")? Do not make a change to this file without a " +
" review from a DOM peer for that specific change!!! (or a JS peer for changes to ecmaGlobals)");
delete interfaceMap[name];
}
for (var name of Object.keys(interfaceMap)) {
ok(name in window === interfaceMap[name],
name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the " + (isXBLScope ? "XBL" : "global") +" scope");
if (!interfaceMap[name]) {
delete interfaceMap[name];
}
}
if (isXBLScope) {
todo_is(Object.keys(interfaceMap).length, 0,
"The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
} else {
is(Object.keys(interfaceMap).length, 0,
"The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", "));
}
}
runTest(false);
SimpleTest.waitForExplicitFinish();
</script>
<span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
</pre>
</body>
</html>