Bug 1338438 - Test interfaces on both http and https channels, r=bz
authorShawn Huang <shuang@mozilla.com>
Tue, 14 Feb 2017 17:28:58 +0800
changeset 391754 6b1f71852f5f7493bbb2220bacdc1ad05453e07f
parent 391753 a379d64f8496e1bc32e28c273d8a3d76ee900581
child 391755 2fd6a5c4759f0d83ac771f24117687eb406a0a76
push id1468
push userasasaki@mozilla.com
push dateMon, 05 Jun 2017 19:31:07 +0000
treeherdermozilla-release@0641fc6ee9d1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbz
bugs1338438
milestone54.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1338438 - Test interfaces on both http and https channels, r=bz
dom/tests/mochitest/general/mochitest.ini
dom/tests/mochitest/general/test_interfaces.html
dom/tests/mochitest/general/test_interfaces.js
dom/tests/mochitest/general/test_interfaces_secureContext.html
dom/workers/test/mochitest.ini
dom/workers/test/test_navigator.html
dom/workers/test/test_navigator.js
dom/workers/test/test_navigator_secureContext.html
dom/workers/test/test_worker_interfaces.html
dom/workers/test/test_worker_interfaces_secureContext.html
--- a/dom/tests/mochitest/general/mochitest.ini
+++ b/dom/tests/mochitest/general/mochitest.ini
@@ -34,16 +34,17 @@ support-files =
   res6.resource^headers^
   res7.resource
   res7.resource^headers^
   res8.resource
   res8.resource^headers^
   resource_timing.js
   navigation_timing.html
   test_bug1012662_common.js
+  test_interfaces.js
   frameStorageAllowed.html
   frameStoragePrevented.html
   frameStorageChrome.html
   frameStorageNullprincipal.sjs
   workerStorageAllowed.js
   workerStoragePrevented.js
   storagePermissionsUtils.js
   frameSelectEvents.html
@@ -88,16 +89,17 @@ subsuite = clipboard
 [test_focus_legend_noparent.html]
 [test_focusrings.xul]
 skip-if = toolkit == 'android' #TIMED_OUT
 [test_for_of.html]
 [test_framedhistoryframes.html]
 [test_frameElementWrapping.html]
 [test_img_mutations.html]
 [test_interfaces.html]
+[test_interfaces_secureContext.html]
 scheme = https
 [test_navigation_timing.html]
 [test_network_events.html]
 skip-if = true
 # Disable this test until bug 795711 is fixed.
 [test_offsets.html]
 support-files = test_offsets.js
 [test_outerHTML.html]
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.html
@@ -11,1403 +11,16 @@ https://bugzilla.mozilla.org/show_bug.cg
 </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",
-    "Atomics",
-    "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",
-    "Intl",
-    "Iterator",
-    "JSON",
-    "Map",
-    "Math",
-    {name: "NaN", xbl: false},
-    "Number",
-    "Object",
-    "Promise",
-    "Proxy",
-    "RangeError",
-    "ReferenceError",
-    "Reflect",
-    "RegExp",
-    "Set",
-    "SharedArrayBuffer",
-    {name: "SIMD", nightly: true},
-    "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!
-    "AudioScheduledSourceNode",
-// 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!
-    "BaseAudioContext",
-// 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!
-    {name: "HTMLDialogElement", disabled: true},
-// 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!
-    "MediaKeyError",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaEncryptedEvent",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaKeys",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaKeySession",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaKeySystemAccess",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaKeyMessageEvent",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "MediaKeyStatusMap",
-// 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!
-    {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", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationAvailability", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationConnection", desktop: false, release: false},
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationConnectionAvailableEvent", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationConnectionCloseEvent", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationConnectionList", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationReceiver", desktop: false, release: false },
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "PresentationRequest", desktop: false, release: false },
-// 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!
-    "PushManager",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "PushSubscription",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "PushSubscriptionOptions",
-// 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!
-    "ServiceWorker",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "ServiceWorkerContainer",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "ServiceWorkerMessageEvent",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "ServiceWorkerRegistration",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "ScopedCredential", disabled: true},
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "ScopedCredentialInfo", disabled: true},
-// 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!
-    "SVGGeometryElement",
-// 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: "VRDisplayEvent", 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!
-    {name: "WebAuthnAssertion", disabled: true},
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "WebAuthnAttestation", disabled: true},
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    {name: "WebAuthentication", disabled: true},
-// 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>
+  ok(!self.isSecureContext, "The test should not be running in a secure context");
 </script>
+<script type="text/javascript" src="test_interfaces.js"></script>
 <span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
 </pre>
 </body>
 </html>
copy from dom/tests/mochitest/general/test_interfaces.html
copy to dom/tests/mochitest/general/test_interfaces.js
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.js
@@ -1,28 +1,8 @@
-<!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
@@ -1400,14 +1380,8 @@ function runTest(isXBLScope) {
   } 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>
new file mode 100644
--- /dev/null
+++ b/dom/tests/mochitest/general/test_interfaces_secureContext.html
@@ -0,0 +1,26 @@
+<!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>
+  ok(self.isSecureContext, "The test should be running in a secure context");
+</script>
+<script type="text/javascript" src="test_interfaces.js"></script>
+<span id="span" style="-moz-binding: url(file_interfaces.xml)"></span>
+</pre>
+</body>
+</html>
--- a/dom/workers/test/mochitest.ini
+++ b/dom/workers/test/mochitest.ini
@@ -56,16 +56,17 @@ support-files =
   sharedWorker_console.js
   sharedWorker_sharedWorker.js
   simpleThread_worker.js
   suspend_iframe.html
   suspend_worker.js
   terminate_worker.js
   test_csp.html^headers^
   test_csp.js
+  test_navigator.js
   referrer_worker.html
   threadErrors_worker1.js
   threadErrors_worker2.js
   threadErrors_worker3.js
   threadErrors_worker4.js
   threadTimeouts_worker.js
   throwingOnerror_worker.js
   timeoutTracing_worker.js
@@ -165,16 +166,18 @@ tags = mcb
 [test_json.html]
 [test_loadEncoding.html]
 [test_loadError.html]
 [test_location.html]
 [test_longThread.html]
 [test_multi_sharedWorker.html]
 [test_multi_sharedWorker_lifetimes.html]
 [test_navigator.html]
+[test_navigator_secureContext.html]
+scheme=https
 [test_navigator_languages.html]
 [test_newError.html]
 [test_notification.html]
 [test_notification_child.html]
 [test_notification_permission.html]
 [test_onLine.html]
 [test_promise.html]
 [test_promise_resolved_with_string.html]
@@ -205,16 +208,18 @@ skip-if = toolkit == 'android' #bug 9828
 [test_websocket_basic.html]
 skip-if = toolkit == 'android' #bug 982828
 [test_websocket_https.html]
 [test_websocket_loadgroup.html]
 skip-if = toolkit == 'android' #bug 982828
 [test_webSocket_sharedWorker.html]
 skip-if = toolkit == 'android' #bug 982828
 [test_worker_interfaces.html]
+[test_worker_interfaces_secureContext.html]
+scheme=https
 [test_workersDisabled.html]
 [test_referrer.html]
 [test_referrer_header_worker.html]
 [test_importScripts_3rdparty.html]
 [test_sharedWorker_ports.html]
 [test_sharedWorker_lifetime.html]
 [test_fileReader.html]
 [test_navigator_workers_hardwareConcurrency.html]
--- a/dom/workers/test/test_navigator.html
+++ b/dom/workers/test/test_navigator.html
@@ -13,64 +13,15 @@ Tests of DOM Worker Navigator
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 <body>
 <p id="display"></p>
 <div id="content" style="display: none">
 
 </div>
 <pre id="test">
-<script class="testbody" language="javascript">
-
-function runTest() {
-  var worker = new Worker("navigator_worker.js");
-
-  worker.onmessage = function(event) {
-    var args = JSON.parse(event.data);
-
-    if (args.name == "testFinished") {
-      SimpleTest.finish();
-      return;
-    }
-
-    if (typeof navigator[args.name] == "undefined") {
-      ok(false, "Navigator has no '" + args.name + "' property!");
-      return;
-    }
-
-    if (args.name === "languages") {
-      is(navigator.languages.toString(), args.value.toString(), "languages matches");
-      return;
-    }
-
-    if (args.name === "storage") {
-      is(typeof navigator.storage, typeof args.value, "storage type matches");
-      return;
-    }
-
-    if (args.name === "connection") {
-      is(typeof navigator.connection, typeof args.value, "connection type matches");
-      return;
-    }
-
-    is(navigator[args.name], args.value,
-       "Mismatched navigator string for " + args.name + "!");
-  };
-
-  worker.onerror = function(event) {
-    ok(false, "Worker had an error: " + event.message);
-    SimpleTest.finish();
-  }
-
-  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");
-
-  worker.postMessage({ isNightly, isRelease });
-}
-
-SpecialPowers.pushPrefEnv({"set": [["dom.netinfo.enabled", true]]}, runTest);
-SimpleTest.waitForExplicitFinish();
-
+<script>
+  ok(!self.isSecureContext, "This test should not be running in a secure context");
 </script>
+<script type="text/javascript" src="test_navigator.js"></script>
 </pre>
 </body>
 </html>
copy from dom/workers/test/test_navigator.html
copy to dom/workers/test/test_navigator.js
--- a/dom/workers/test/test_navigator.html
+++ b/dom/workers/test/test_navigator.js
@@ -1,30 +1,8 @@
-<!--
-  Any copyright is dedicated to the Public Domain.
-  http://creativecommons.org/publicdomain/zero/1.0/
--->
-<!DOCTYPE HTML>
-<html>
-<!--
-Tests of DOM Worker Navigator
--->
-<head>
-  <title>Test for DOM Worker Navigator</title>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" language="javascript">
-
 function runTest() {
   var worker = new Worker("navigator_worker.js");
 
   worker.onmessage = function(event) {
     var args = JSON.parse(event.data);
 
     if (args.name == "testFinished") {
       SimpleTest.finish();
@@ -64,13 +42,8 @@ function runTest() {
   var isNightly = version.endsWith("a1");
   var isRelease = !version.includes("a");
 
   worker.postMessage({ isNightly, isRelease });
 }
 
 SpecialPowers.pushPrefEnv({"set": [["dom.netinfo.enabled", true]]}, runTest);
 SimpleTest.waitForExplicitFinish();
-
-</script>
-</pre>
-</body>
-</html>
new file mode 100644
--- /dev/null
+++ b/dom/workers/test/test_navigator_secureContext.html
@@ -0,0 +1,27 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<!DOCTYPE HTML>
+<html>
+<!--
+Tests of DOM Worker Navigator
+-->
+<head>
+  <title>Test for DOM Worker Navigator</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script>
+  ok(self.isSecureContext, "This test should be running in a secure context");
+</script>
+<script type="text/javascript" src="test_navigator.js"></script>
+</pre>
+</body>
+</html>
--- a/dom/workers/test/test_worker_interfaces.html
+++ b/dom/workers/test/test_worker_interfaces.html
@@ -4,13 +4,16 @@
 <html>
 <head>
   <title>Validate Interfaces Exposed to Workers</title>
   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
   <script type="text/javascript" src="worker_driver.js"></script>
 </head>
 <body>
+<script>
+  ok(!self.isSecureContext, "This test should not be running in a secure context");
+</script>
 <script class="testbody" type="text/javascript">
 workerTestExec("test_worker_interfaces.js");
 </script>
 </body>
 </html>
new file mode 100644
--- /dev/null
+++ b/dom/workers/test/test_worker_interfaces_secureContext.html
@@ -0,0 +1,19 @@
+<!-- Any copyright is dedicated to the Public Domain.
+   - http://creativecommons.org/publicdomain/zero/1.0/ -->
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Validate Interfaces Exposed to Workers</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+  <script type="text/javascript" src="worker_driver.js"></script>
+</head>
+<body>
+<script>
+  ok(self.isSecureContext, "This test should be running in a secure context");
+</script>
+<script class="testbody" type="text/javascript">
+workerTestExec("test_worker_interfaces.js");
+</script>
+</body>
+</html>