diff options
Diffstat (limited to 'dom/tests/mochitest/general/test_interfaces.html')
-rw-r--r-- | dom/tests/mochitest/general/test_interfaces.html | 1383 |
1 files changed, 1383 insertions, 0 deletions
diff --git a/dom/tests/mochitest/general/test_interfaces.html b/dom/tests/mochitest/general/test_interfaces.html new file mode 100644 index 0000000000..acbc12e072 --- /dev/null +++ b/dom/tests/mochitest/general/test_interfaces.html @@ -0,0 +1,1383 @@ +<!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: "ReallyExperimentalThing", nightly: true}, +// {name: "DesktopOnlyThing", desktop: true}, +// {name: "FancyControl", xbl: true}, +// {name: "DisabledEverywhere", disabled: 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", android: false}, + "Iterator", + "JSON", + "Map", + "Math", + {name: "NaN", xbl: false}, + "Number", + "Object", + "Promise", + "Proxy", + "RangeError", + "ReferenceError", + "Reflect", + "RegExp", + "Set", + {name: "SharedArrayBuffer", release: false}, + {name: "SIMD", nightly: true}, + {name: "Atomics", release: false}, + "StopIteration", + "String", + "Symbol", + "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! + +// 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! + "AnalyserNode", +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "Animation"}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "AnimationEffectReadOnly", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "AnimationEffectTiming", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "AnimationEffectTimingReadOnly", release: false}, +// 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: "AnimationPlaybackEvent", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "AnimationTimeline", release: false}, +// 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! + "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! + "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: "BoxObject", xbl: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + "BroadcastChannel", +// IMPORTANT: Do not change this list without review from a DOM peer! + "Cache", +// IMPORTANT: Do not change this list without review from a DOM peer! + "CacheStorage", +// IMPORTANT: Do not change this list without review from a DOM peer! + "CanvasCaptureMediaStream", +// 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! + "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: "ChromeNodeList", xbl: true}, +// 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! + "ConstantSourceNode", +// 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! + "CryptoKey", +// 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! + {name: "CSSAnimation", release: false}, +// 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! + "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! + "CSSKeyframeRule", +// IMPORTANT: Do not change this list without review from a DOM peer! + "CSSKeyframesRule", +// 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! + {name: "CSSPseudoElement", release: false}, +// 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! + {name: "CSSTransition", release: false}, +// 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! + "CustomElementRegistry", +// 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! + "DataTransfer", +// IMPORTANT: Do not change this list without review from a DOM peer! + "DataTransferItem", +// IMPORTANT: Do not change this list without review from a DOM peer! + "DataTransferItemList", +// 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: "DeviceStorageAreaChangedEvent", desktop: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + { name: "DeviceStorageAreaListener", desktop: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + { name: "DeviceStorage", desktop: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + { name: "DeviceStorageChangeEvent", desktop: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + "Directory", +// 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! + {name: "DocumentTimeline", release: false}, +// 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! + "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! + "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! + "External", +// 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! + "FileSystem", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FileSystemDirectoryEntry", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FileSystemDirectoryReader", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FileSystemEntry", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FileSystemFileEntry", +// 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! + "FontFace", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FontFaceSet", +// IMPORTANT: Do not change this list without review from a DOM peer! + "FontFaceSetLoadEvent", +// 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! + "Gamepad", +// IMPORTANT: Do not change this list without review from a DOM peer! + "GamepadAxisMoveEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "GamepadButtonEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "GamepadButton", +// IMPORTANT: Do not change this list without review from a DOM peer! + "GamepadEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "GamepadPose", release: 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! + "Headers", +// 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! + "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! + "HTMLDetailsElement", +// 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! + "HTMLPictureElement", +// 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! + "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! + {name: "IdleDeadline", nightly: true}, +// 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! + "IIRFilterNode", +// 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! + "ImageBitmap", +// IMPORTANT: Do not change this list without review from a DOM peer! + "ImageBitmapRenderingContext", +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "ImageCapture", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "ImageCaptureErrorEvent", disabled: true}, +// 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! + "InstallTrigger", +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "IntersectionObserver", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "IntersectionObserverEntry", disabled: true}, +// 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! + {name: "KeyframeEffectReadOnly", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "KeyframeEffect", release: false}, +// 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! + "MediaDeviceInfo", +// 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", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaEncryptedEvent", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaKeys", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaKeySession", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaKeySystemAccess", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaKeyMessageEvent", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MediaKeyStatusMap", android: false}, +// 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! + "MediaSource", +// 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! + "MediaStreamEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "MediaStreamTrackEvent", +// 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! + "MessageChannel", +// 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! + "mozRTCIceCandidate", +// IMPORTANT: Do not change this list without review from a DOM peer! + "mozRTCPeerConnection", +// IMPORTANT: Do not change this list without review from a DOM peer! + "mozRTCSessionDescription", +// 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", desktop: false}, +// 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! + {name: "OffscreenCanvas", disabled: true}, +// 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! + "Path2D", +// 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! + {name: "PerformanceObserver", nightly: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PerformanceObserverEntryList", nightly: true}, +// 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! + "Permissions", +// IMPORTANT: Do not change this list without review from a DOM peer! + "PermissionStatus", +// 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", nightly: true, desktop: true, disabled: true}, +// 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: "PresentationDeviceInfoManager", + disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "Presentation", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationAvailability", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationConnection", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationConnectionAvailableEvent", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationConnectionClosedEvent", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationConnectionList", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationReceiver", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "PresentationRequest", disabled: true}, +// 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! + "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! + "Request", +// IMPORTANT: Do not change this list without review from a DOM peer! + "Response", +// 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! + "RTCCertificate", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCDataChannelEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCDTMFSender", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCDTMFToneChangeEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCIceCandidate", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCPeerConnection", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCPeerConnectionIceEvent", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCRtpReceiver", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCRtpSender", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCSessionDescription", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCStatsReport", +// IMPORTANT: Do not change this list without review from a DOM peer! + "RTCTrackEvent", +// 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! + "ScreenOrientation", +// 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! + "SettingsLock", +// IMPORTANT: Do not change this list without review from a DOM peer! + "ShadowRoot", // Bogus, but the test harness forces it on. See bug 1159768. +// IMPORTANT: Do not change this list without review from a DOM peer! + "SharedWorker", +// 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! + "SourceBuffer", +// IMPORTANT: Do not change this list without review from a DOM peer! + "SourceBufferList", +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "SpeechSynthesisErrorEvent", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "SpeechSynthesisEvent", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "SpeechSynthesis", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "SpeechSynthesisUtterance", android: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "SpeechSynthesisVoice", android: false}, +// 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! + {name: "StorageManager", nightly: true}, +// 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! + "SubtleCrypto", +// 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! + "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! + "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! + "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! + "TextTrackCue", +// 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: "U2F", disabled: true}, +// 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! + "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! + "VideoPlaybackQuality", +// 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: "VRDisplay", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VRDisplayCapabilities", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VREyeParameters", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VRFieldOfView", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VRFrameData", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VRPose", release: false}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "VRStageParameters", release: false}, +// 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", disabled: true}, +// 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! + "WebGLContextEvent", +// 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! + "WebGLQuery", +// 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! + "WebGL2RenderingContext", +// IMPORTANT: Do not change this list without review from a DOM peer! + "WebGLSampler", +// 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! + "WebGLSync", +// 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! + "WebGLTransformFeedback", +// 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! + "WebGLVertexArrayObject", +// IMPORTANT: Do not change this list without review from a DOM peer! + "WebKitCSSMatrix", +// 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 version = SpecialPowers.Cc["@mozilla.org/xre/app-info;1"].getService(SpecialPowers.Ci.nsIXULAppInfo).version; + var isNightly = version.endsWith("a1"); + var isRelease = !version.includes("a"); + var isDesktop = !/Mobile|Tablet/.test(navigator.userAgent); + var isMac = /Mac OS/.test(navigator.oscpu); + var isWindows = /Windows/.test(navigator.oscpu); + var isAndroid = navigator.userAgent.includes("Android"); + var isLinux = /Linux/.test(navigator.oscpu) && !isAndroid; + + var interfaceMap = {}; + + function addInterfaces(interfaces) + { + for (var entry of interfaces) { + if (typeof(entry) === "string") { + interfaceMap[entry] = true; + } else { + ok(!("pref" in entry), "Bogus pref annotation for " + entry.name); + if ((entry.nightly === !isNightly) || + (entry.nightlyAndroid === !(isAndroid && isNightly) && isAndroid) || + (entry.xbl === !isXBLScope) || + (entry.desktop === !isDesktop) || + (entry.windows === !isWindows) || + (entry.mac === !isMac) || + (entry.linux === !isLinux) || + (entry.android === !isAndroid && !entry.nightlyAndroid) || + (entry.release === !isRelease) || + entry.disabled) { + 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> |