summaryrefslogtreecommitdiffstats
path: root/dom/security/test/csp/file_service_worker.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/security/test/csp/file_service_worker.html')
-rw-r--r--dom/security/test/csp/file_service_worker.html35
1 files changed, 35 insertions, 0 deletions
diff --git a/dom/security/test/csp/file_service_worker.html b/dom/security/test/csp/file_service_worker.html
new file mode 100644
index 0000000000..8dc65befb8
--- /dev/null
+++ b/dom/security/test/csp/file_service_worker.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Bug 1208559 - ServiceWorker registration not governed by CSP</title>
+</head>
+<body>
+<script>
+ function finish(status) {
+ window.parent.postMessage({result: status}, "*");
+ }
+
+ const BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN = 5;
+ const cookieBehavior = SpecialPowers.getIntPref("network.cookie.cookieBehavior");
+
+ const promises = [
+ navigator.serviceWorker.ready,
+ navigator.serviceWorker.register("file_service_worker.js", { scope: "." })
+ ];
+
+ if (cookieBehavior == BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN) {
+ Promise.allSettled(promises).then(results => {
+ const resultValues = results
+ .map(result =>
+ result.status === "fulfilled" ? "allowed" : "blocked"
+ )
+ .join(",");
+ finish(resultValues);
+ });
+ } else {
+ Promise.race(promises).then(finish.bind(null, 'allowed'),
+ finish.bind(null, 'blocked'));
+ }
+ </script>
+</body>
+</html>