<!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <!DOCTYPE HTML> <html> <head> <title>Test for escaped slashes in navigator.serviceWorker.register</title> <script type="text/javascript" src="http://mochi.test:8888/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="http://mochi.test:8888/tests/SimpleTest/test.css" /> <base href="https://mozilla.org/"> </head> <body> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"></pre> <script class="testbody" type="text/javascript"> var tests = [ { status: true, scriptURL: "a.js?foo%2fbar", scopeURL: null }, { status: false, scriptURL: "foo%2fbar", scopeURL: null }, { status: true, scriptURL: "a.js?foo%2Fbar", scopeURL: null }, { status: false, scriptURL: "foo%2Fbar", scopeURL: null }, { status: true, scriptURL: "a.js?foo%5cbar", scopeURL: null }, { status: false, scriptURL: "foo%5cbar", scopeURL: null }, { status: true, scriptURL: "a.js?foo%2Cbar", scopeURL: null }, { status: false, scriptURL: "foo%5Cbar", scopeURL: null }, { status: true, scriptURL: "ok.js", scopeURL: "/scope?foo%2fbar"}, { status: false, scriptURL: "ok.js", scopeURL: "/foo%2fbar"}, { status: true, scriptURL: "ok.js", scopeURL: "/scope?foo%2Fbar"}, { status: false, scriptURL: "ok.js", scopeURL: "foo%2Fbar"}, { status: true, scriptURL: "ok.js", scopeURL: "/scope?foo%5cbar"}, { status: false, scriptURL: "ok.js", scopeURL: "foo%5cbar"}, { status: true, scriptURL: "ok.js", scopeURL: "/scope?foo%5Cbar"}, { status: false, scriptURL: "ok.js", scopeURL: "foo%5Cbar"}, ]; function runTest() { if (!tests.length) { SimpleTest.finish(); return; } var test = tests.shift(); navigator.serviceWorker.register(test.scriptURL, test.scopeURL) .then(reg => { ok(false, "Register should fail"); }, err => { if (!test.status) { is(err.name, "TypeError", "Registration should fail with TypeError"); } else { ok(test.status, "Register should fail"); } }) .then(runTest); } SimpleTest.waitForExplicitFinish(); onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.serviceWorkers.enabled", true], ]}, runTest); }; </script> </body> </html>