Bug 1264593 - Add a test case for the isolation on the shared worker by first party domain. r?baku, arthuredelstein
Adapted from Tor Browser patch 15564
--- a/browser/components/originattributes/test/browser/browser.ini
+++ b/browser/components/originattributes/test/browser/browser.ini
@@ -1,14 +1,16 @@
[DEFAULT]
skip-if = buildapp == "mulet"
tags = usercontextid firstpartyisolation originattributes
support-files =
dummy.html
file_firstPartyBasic.html
+ file_sharedworker.html
+ file_sharedworker.js
head.js
test.js
test.js^headers^
test.html
test2.html
test2.js
test2.js^headers^
test_firstParty.html
@@ -21,8 +23,9 @@ support-files =
window.html
worker_blobify.js
worker_deblobify.js
[browser_firstPartyIsolation.js]
[browser_localStorageIsolation.js]
[browser_blobURLIsolation.js]
[browser_imageCacheIsolation.js]
+[browser_sharedworker.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/browser_sharedworker.js
@@ -0,0 +1,26 @@
+/**
+ * Bug 1264593 - A test case for the shared worker by first party isolation.
+ */
+
+const TEST_DOMAIN = "http://example.net/";
+const TEST_PATH = TEST_DOMAIN + "browser/browser/components/originattributes/test/browser/";
+const TEST_PAGE = TEST_PATH + "file_sharedworker.html";
+
+function* getResultFromSharedworker(aBrowser) {
+ let response = yield ContentTask.spawn(aBrowser, null, function* () {
+ let worker = new content.SharedWorker("file_sharedworker.js", "isolationSharedWorkerTest");
+
+ let result = yield new Promise(resolve => {
+ worker.port.onmessage = function (e) {
+ content.document.getElementById("display").innerHTML = e.data;
+ resolve(e.data);
+ };
+ });
+
+ return result;
+ });
+
+ return response;
+}
+
+IsolationTestTools.runTests(TEST_PAGE, getResultFromSharedworker);
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_sharedworker.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <title>Page SharedWorker creator for first party isolation</title>
+</head>
+<body>
+<div id="display" style="white-space:pre; font-family:monospace; display:inline;"></div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/components/originattributes/test/browser/file_sharedworker.js
@@ -0,0 +1,7 @@
+self.randomValue = Math.random();
+
+onconnect = function (e) {
+ let port = e.ports[0];
+ port.postMessage(self.randomValue);
+ port.start();
+};