summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html')
-rw-r--r--devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html61
1 files changed, 61 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html b/devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html
new file mode 100644
index 0000000000..bf5b0b0b0a
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/resources/service-workers/push-sw.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>Service worker push test</title>
+</head>
+<body>
+<script type="text/javascript">
+
+"use strict";
+
+let registration;
+let subscription;
+
+const registerServiceWorker = async function() {
+ const perm = { type: "desktop-notification", allow: true, context: document };
+ await SpecialPowers.pushPermissions([perm]);
+
+ try {
+ registration = await navigator.serviceWorker.register("push-sw.js");
+ dump("Push service worker registered\n");
+ } catch (e) {
+ dump("Push service worker not registered: " + e + "\n");
+ }
+};
+
+// Helper called from helper-serviceworker.js to unregister the service worker.
+window.getRegistration = function() {
+ return registration;
+};
+
+// Helper called from browser_aboutdebugging_serviceworker_pushservice_url.js
+window.subscribeToPush = async function() {
+ try {
+ subscription = await registration.pushManager.subscribe();
+ dump("SW subscribed to push: " + subscription.endpoint + "\n");
+ } catch (e) {
+ dump("SW not subscribed to push: " + e + "\n");
+ }
+};
+
+// Helper called from browser_aboutdebugging_serviceworker_pushservice_url.js
+window.unsubscribeToPush = async function() {
+ subscription.unsubscribe();
+};
+
+// Expose a promise to wait until the service worker is claimed.
+window.onSwClaimed = new Promise(resolve => {
+ navigator.serviceWorker.addEventListener("message", function(event) {
+ if (event.data == "sw-claimed") {
+ resolve();
+ }
+ });
+});
+
+// Register the service worker.
+registerServiceWorker();
+
+</script>
+</body>
+</html>