Bug 1264593 - Add a test case for the isolation on the shared worker by first party domain. r?baku, arthuredelstein draft
authorTim Huang <tihuang@mozilla.com>
Sun, 07 Aug 2016 01:20:59 +0800
changeset 416421 a8e1b60f158e0fb2b62dabdddbc43e196b6aefb8
parent 416020 560b2c805bf7bebeb3ceebc495a81b2aa4c0c755
child 531852 e26cf7f6d5c36bdf768a9ef667448c71744a975e
push id30141
push userbmo:tihuang@mozilla.com
push dateThu, 22 Sep 2016 03:59:40 +0000
reviewersbaku, arthuredelstein
bugs1264593, 15564
milestone52.0a1
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
browser/components/originattributes/test/browser/browser.ini
browser/components/originattributes/test/browser/browser_sharedworker.js
browser/components/originattributes/test/browser/file_sharedworker.html
browser/components/originattributes/test/browser/file_sharedworker.js
--- 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();
+};