diff options
Diffstat (limited to 'devtools/client/aboutdebugging/test/service-workers')
6 files changed, 127 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/service-workers/delay-sw.html b/devtools/client/aboutdebugging/test/service-workers/delay-sw.html new file mode 100644 index 000000000..545830eba --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/delay-sw.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="UTF-8"> + <title>Service worker test</title> +</head> +<body> +<script type="text/javascript"> +"use strict"; + +var sw = navigator.serviceWorker.register("delay-sw.js"); +sw.then( + function () { + dump("SW registered\n"); + }, + function (e) { + dump("SW not registered: " + e + "\n"); + } +); +</script> +</body> +</html> diff --git a/devtools/client/aboutdebugging/test/service-workers/delay-sw.js b/devtools/client/aboutdebugging/test/service-workers/delay-sw.js new file mode 100644 index 000000000..3f16c5058 --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/delay-sw.js @@ -0,0 +1,17 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* eslint-env worker */ + +"use strict"; + +function wait(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms); + }); +} + +// Wait for one second to switch from installing to installed. +self.addEventListener("install", function (event) { + event.waitUntil(wait(1000)); +}); diff --git a/devtools/client/aboutdebugging/test/service-workers/empty-sw.html b/devtools/client/aboutdebugging/test/service-workers/empty-sw.html new file mode 100644 index 000000000..a94c2b9ff --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/empty-sw.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="UTF-8"> + <title>Service worker test</title> +</head> +<body> +<script type="text/javascript"> +"use strict"; + +var sw = navigator.serviceWorker.register("empty-sw.js"); +sw.then( + function () { + dump("SW registered\n"); + }, + function (e) { + dump("SW not registered: " + e + "\n"); + } +); +</script> +</body> +</html> diff --git a/devtools/client/aboutdebugging/test/service-workers/empty-sw.js b/devtools/client/aboutdebugging/test/service-workers/empty-sw.js new file mode 100644 index 000000000..1e7226402 --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/empty-sw.js @@ -0,0 +1 @@ +// Empty, just test registering. diff --git a/devtools/client/aboutdebugging/test/service-workers/push-sw.html b/devtools/client/aboutdebugging/test/service-workers/push-sw.html new file mode 100644 index 000000000..7db01f091 --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/push-sw.html @@ -0,0 +1,32 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="UTF-8"> + <title>Service worker push test</title> +</head> +<body> +<script type="text/javascript"> +"use strict"; +SpecialPowers.addPermission("desktop-notification", true, document); +var sw = navigator.serviceWorker.register("push-sw.js"); +var sub = null; +sw.then( + function (registration) { + dump("SW registered\n"); + registration.pushManager.subscribe().then( + function (subscription) { + sub = subscription; + dump("SW subscribed to push: " + sub.endpoint + "\n"); + }, + function (error) { + dump("SW not subscribed to push: " + error + "\n"); + } + ); + }, + function (error) { + dump("SW not registered: " + error + "\n"); + } +); +</script> +</body> +</html> diff --git a/devtools/client/aboutdebugging/test/service-workers/push-sw.js b/devtools/client/aboutdebugging/test/service-workers/push-sw.js new file mode 100644 index 000000000..b5006eedb --- /dev/null +++ b/devtools/client/aboutdebugging/test/service-workers/push-sw.js @@ -0,0 +1,33 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* eslint-env worker */ +/* global clients */ + +"use strict"; + +// Send a message to all controlled windows. +function postMessage(message) { + return clients.matchAll().then(function (clientlist) { + clientlist.forEach(function (client) { + client.postMessage(message); + }); + }); +} + +// Don't wait for the next page load to become the active service worker. +self.addEventListener("install", function (event) { + event.waitUntil(self.skipWaiting()); +}); + +// Claim control over the currently open test page when activating. +self.addEventListener("activate", function (event) { + event.waitUntil(self.clients.claim().then(function () { + return postMessage("sw-claimed"); + })); +}); + +// Forward all "push" events to the controlled window. +self.addEventListener("push", function (event) { + event.waitUntil(postMessage("sw-pushed")); +}); |