author | Luke Wagner <luke@mozilla.com> |
Thu, 23 Feb 2017 16:38:39 -0600 | |
changeset 344641 | 0187aa7969c7f4979962fc77719e374d6682c2c0 |
parent 344640 | d93ecd34da85f28e71dca30633dc5a14046f56fd |
child 344642 | c7e5e32cae0a3c388b03fb2117d4d5f137be3827 |
push id | 31414 |
push user | cbook@mozilla.com |
push date | Fri, 24 Feb 2017 10:47:41 +0000 |
treeherder | mozilla-central@be661bae6cb9 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jorendorff |
bugs | 1342060 |
milestone | 54.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
|
--- a/dom/tests/mochitest/general/test_interfaces.js +++ b/dom/tests/mochitest/general/test_interfaces.js @@ -69,17 +69,17 @@ var ecmaGlobals = "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "URIError", "WeakMap", "WeakSet", - "WebAssembly" + {name: "WebAssembly", disabled: !SpecialPowers.Cu.getJSTestingFunctions().wasmIsSupported()} ]; // 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'.
--- a/dom/workers/test/serviceworkers/test_serviceworker_interfaces.js +++ b/dom/workers/test/serviceworkers/test_serviceworker_interfaces.js @@ -64,17 +64,17 @@ var ecmaGlobals = "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "URIError", "WeakMap", "WeakSet", - "WebAssembly" + {name: "WebAssembly", optional: true} ]; // 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! var interfaceNamesInGlobalScope = [ // IMPORTANT: Do not change this list without review from a DOM peer! @@ -248,16 +248,18 @@ function createInterfaceMap(version, use ok(!("pref" in entry), "Bogus pref annotation for " + entry.name); if ((entry.nightly === !isNightly) || (entry.nightlyAndroid === !(isAndroid && isNightly) && isAndroid) || (entry.nonReleaseAndroid === !(isAndroid && !isRelease) && isAndroid) || (entry.desktop === !isDesktop) || (entry.android === !isAndroid && !entry.nonReleaseAndroid && !entry.nightlyAndroid) || (entry.release === !isRelease)) { interfaceMap[entry.name] = false; + } else if (entry.optional) { + interfaceMap[entry.name] = "optional"; } else { interfaceMap[entry.name] = true; } } } } addInterfaces(ecmaGlobals); @@ -268,27 +270,31 @@ function createInterfaceMap(version, use function runTest(version, userAgent) { var interfaceMap = createInterfaceMap(version, userAgent); for (var name of Object.getOwnPropertyNames(self)) { // An interface name should start with an upper case character. if (!/^[A-Z]/.test(name)) { continue; } - ok(interfaceMap[name], + ok(interfaceMap[name] === "optional" || 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 service worker? 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 self === interfaceMap[name], - name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); - if (!interfaceMap[name]) { + if (interfaceMap[name] === "optional") { delete interfaceMap[name]; + } else { + ok(name in self === interfaceMap[name], + name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); + if (!interfaceMap[name]) { + delete interfaceMap[name]; + } } } is(Object.keys(interfaceMap).length, 0, "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", ")); } workerTestGetVersion(function(version) { workerTestGetUserAgent(function(userAgent) {
--- a/dom/workers/test/test_worker_interfaces.js +++ b/dom/workers/test/test_worker_interfaces.js @@ -64,17 +64,17 @@ var ecmaGlobals = "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "URIError", "WeakMap", "WeakSet", - "WebAssembly" + {name: "WebAssembly", optional: true} ]; // 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! var interfaceNamesInGlobalScope = [ // IMPORTANT: Do not change this list without review from a DOM peer! @@ -262,16 +262,18 @@ function createInterfaceMap(version, use ok(!("pref" in entry), "Bogus pref annotation for " + entry.name); if ((entry.nightly === !isNightly) || (entry.nightlyAndroid === !(isAndroid && isNightly) && isAndroid) || (entry.desktop === !isDesktop) || (entry.android === !isAndroid && !entry.nightlyAndroid) || (entry.release === !isRelease) || entry.disabled) { interfaceMap[entry.name] = false; + } else if (entry.optional) { + interfaceMap[entry.name] = "optional"; } else { interfaceMap[entry.name] = true; } } } } addInterfaces(ecmaGlobals); @@ -282,27 +284,31 @@ function createInterfaceMap(version, use function runTest(version, userAgent) { var interfaceMap = createInterfaceMap(version, userAgent); for (var name of Object.getOwnPropertyNames(self)) { // An interface name should start with an upper case character. if (!/^[A-Z]/.test(name)) { continue; } - ok(interfaceMap[name], + ok(interfaceMap[name] === "optional" || 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 worker? 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 self === interfaceMap[name], - name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); - if (!interfaceMap[name]) { + if (interfaceMap[name] === "optional") { delete interfaceMap[name]; + } else { + ok(name in self === interfaceMap[name], + name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); + if (!interfaceMap[name]) { + delete interfaceMap[name]; + } } } is(Object.keys(interfaceMap).length, 0, "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", ")); } workerTestGetVersion(function(version) { workerTestGetUserAgent(function(userAgent) {