[tor-commits] [tor-browser/tor-browser-38.1.0esr-5.0-1] fixup! Bug #15502, Part 2: Regression tests for blob URL isolation

mikeperry at torproject.org mikeperry at torproject.org
Tue Jul 28 08:41:37 UTC 2015


commit eaeb778b28d2f300403a721db8374ea72f8499b6
Author: Arthur Edelstein <arthuredelstein at gmail.com>
Date:   Mon Jun 22 16:18:46 2015 -0700

    fixup! Bug #15502, Part 2: Regression tests for blob URL isolation
---
 dom/base/test/bug15502_page_blobify.html     |    3 ++-
 dom/base/test/bug15502_page_deblobify.html   |    3 ++-
 dom/base/test/bug15502_tab.html              |    5 +++--
 dom/base/test/bug15502_utils.js              |   15 +++++++--------
 dom/base/test/bug15502_worker_blobify.html   |    3 ++-
 dom/base/test/bug15502_worker_deblobify.html |    3 ++-
 dom/base/test/test_tor_bug15502.html         |   17 ++++++++++++-----
 7 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/dom/base/test/bug15502_page_blobify.html b/dom/base/test/bug15502_page_blobify.html
index d883929..5d81bec 100644
--- a/dom/base/test/bug15502_page_blobify.html
+++ b/dom/base/test/bug15502_page_blobify.html
@@ -6,6 +6,7 @@ https://bugs.torproject.org/15502
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Page blobifier for Tor Browser Bug 15502</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
 </head>
 <body>
@@ -13,7 +14,7 @@ https://bugs.torproject.org/15502
 
 <script type="text/javascript;version=1.7">
 
-Task.spawn(function* () {
+spawnTask(function* () {
   sendMessage(window.parent, "ready");
   let message = yield receiveMessage(window.parent),
       blobURL = stringToBlobURL(message);
diff --git a/dom/base/test/bug15502_page_deblobify.html b/dom/base/test/bug15502_page_deblobify.html
index e8cbd51..c728c79 100644
--- a/dom/base/test/bug15502_page_deblobify.html
+++ b/dom/base/test/bug15502_page_deblobify.html
@@ -6,6 +6,7 @@ https://bugs.torproject.org/15502
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Page deblobifier for Tor Browser Bug 15502</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
 </head>
 <body>
@@ -13,7 +14,7 @@ https://bugs.torproject.org/15502
 
 <script type="text/javascript;version=1.7">
 
-Task.spawn(function* () {
+spawnTask(function* () {
   sendMessage(window.parent, "ready");
   let blobURL = yield receiveMessage(window.parent),
       string;
diff --git a/dom/base/test/bug15502_tab.html b/dom/base/test/bug15502_tab.html
index 7bd4744..b41274e 100644
--- a/dom/base/test/bug15502_tab.html
+++ b/dom/base/test/bug15502_tab.html
@@ -6,6 +6,7 @@ https://bugs.torproject.org/15502
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Tab for Tor Browser Bug 15502</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
 </head>
 <body>
@@ -18,7 +19,7 @@ https://bugs.torproject.org/15502
 let iframe = document.getElementById("child");
 
 let connect = function (sourceObject, destinationObject) {
-  Task.spawn(function* () {
+  spawnTask(function* () {
     for (;;) {
       let message = yield receiveMessage(sourceObject);
       sendMessage(destinationObject, message);
@@ -26,7 +27,7 @@ let connect = function (sourceObject, destinationObject) {
   });
 };
 
-Task.spawn(function* () {
+spawnTask(function* () {
   sendMessage(window.opener, "ready");
   let firstParentMessage = yield receiveMessage(window.opener);
   iframe.src = firstParentMessage;
diff --git a/dom/base/test/bug15502_utils.js b/dom/base/test/bug15502_utils.js
index 9d69c12..23f61c4 100644
--- a/dom/base/test/bug15502_utils.js
+++ b/dom/base/test/bug15502_utils.js
@@ -1,11 +1,8 @@
-// Import Task.jsm
-let { Task } = SpecialPowers.Cu.import("resource://gre/modules/Task.jsm");
-
 // __listen(target, eventType, timeoutMs, useCapture)__.
 // Calls addEventListener on target, with the given eventType.
 // Returns a Promise that resolves to an Event object, if the event fires.
 // If a timeout occurs, then Promise is rejected with a "Timed out" error.
-// For use with Task.jsm.
+// For use with SpawnTask.js.
 let listen = function (target, eventType, timeoutMs, useCapture) {
   return new Promise(function (resolve, reject) {
     let listenFunction = function (event) {
@@ -13,17 +10,19 @@ let listen = function (target, eventType, timeoutMs, useCapture) {
       resolve(event);
     };
     target.addEventListener(eventType, listenFunction, useCapture);
-    setTimeout(() => reject(new Error("Timed out")), timeoutMs);
+    if (timeoutMs) {
+      setTimeout(() => reject(new Error("Timed out")), timeoutMs);
+    }
   });
 };
 
 // __receiveMessage(source)__.
 // Returns an event object for the next message received from source.
-// A Task.jsm coroutine.
+// A SpawnTask.js coroutine.
 let receiveMessage = function* (source) {
   let event;
   do {
-    event = yield listen(self, "message", 5000, false);
+    event = yield listen(self, "message", null, false);
   } while (event.source !== source);
   return event.data;
 };
@@ -94,7 +93,7 @@ let stringToBlobURL = function (s) {
 // __workerIO(scriptFile, inputString)__.
 // Sends inputString for the worker, and waits
 // for the worker to return an outputString.
-// Task.jsm coroutine.
+// SpawnTask.js coroutine.
 let workerIO = function* (scriptFile, inputString) {
   let worker = new Worker(scriptFile);
   worker.postMessage(inputString);
diff --git a/dom/base/test/bug15502_worker_blobify.html b/dom/base/test/bug15502_worker_blobify.html
index 3dd7926..7084366 100644
--- a/dom/base/test/bug15502_worker_blobify.html
+++ b/dom/base/test/bug15502_worker_blobify.html
@@ -6,6 +6,7 @@ https://bugs.torproject.org/15502
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Worker blobifier for Tor Browser Bug 15502</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
 </head>
 <body>
@@ -14,7 +15,7 @@ https://bugs.torproject.org/15502
 <pre id="test">
 <script type="text/javascript;version=1.7">
 
-Task.spawn(function* () {
+spawnTask(function* () {
   sendMessage(window.parent, "ready");
   let message = yield receiveMessage(window.parent),
       blobURL = yield workerIO("bug15502_worker_blobify.js", message);
diff --git a/dom/base/test/bug15502_worker_deblobify.html b/dom/base/test/bug15502_worker_deblobify.html
index 30ec6b4..4f498f1 100644
--- a/dom/base/test/bug15502_worker_deblobify.html
+++ b/dom/base/test/bug15502_worker_deblobify.html
@@ -6,6 +6,7 @@ https://bugs.torproject.org/15502
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Worker deblobifier for Tor Browser Bug 15502</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
 </head>
 <body>
@@ -14,7 +15,7 @@ https://bugs.torproject.org/15502
 <pre id="test">
 <script type="text/javascript;version=1.7">
 
-Task.spawn(function* () {
+spawnTask(function* () {
   sendMessage(window.parent, "ready");
   let blobURL = yield receiveMessage(window.parent),
       result = yield workerIO("bug15502_worker_deblobify.js", blobURL);
diff --git a/dom/base/test/test_tor_bug15502.html b/dom/base/test/test_tor_bug15502.html
index 06bcc1c..18b8459 100644
--- a/dom/base/test/test_tor_bug15502.html
+++ b/dom/base/test/test_tor_bug15502.html
@@ -7,6 +7,7 @@ https://bugs.torproject.org/15502
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>Test for Tor Browser Bug 15502</title>
   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
   <script type="text/javascript;version=1.7" src="bug15502_utils.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
@@ -17,8 +18,14 @@ https://bugs.torproject.org/15502
 <script class="testbody" type="application/javascript;version=1.7">
 SimpleTest.waitForExplicitFinish();
 
-// __prefs__. Import the `Serivces.prefs` object.
-let prefs = SpecialPowers.Cu.import("resource://gre/modules/Services.jsm").Services.prefs;
+// __setPref(key, value)__.
+// Set a pref value asynchronously, returning a prmoise that resolves
+// when it succeeds.
+let setPref = function* (key, value) {
+  return new Promise(function(resolve, reject) {
+    SpecialPowers.pushPrefEnv({"set": [[key, value]]}, resolve);
+  });
+};
 
 // ## Testing constants
 let domain1 = "http://example.com",
@@ -47,7 +54,7 @@ let tabIO = function* (domain, child, input) {
 // and then attempt to retrieve the object from the blobURL in `domainB`, using
 // the page `deblobPage`.
 let blobTest = function* (isolationOn, domainA, domainB, blobPage, deblobPage) {
-  prefs.setIntPref("privacy.thirdparty.isolate", isolationOn ? 2 : 0);
+  yield setPref("privacy.thirdparty.isolate", isolationOn ? 2 : 0);
   let input = "" + Math.random(),
       blobURL = yield tabIO(domainA, blobPage, input),
       result = yield tabIO(domainB, deblobPage, blobURL),
@@ -71,9 +78,9 @@ let blobTest = function* (isolationOn, domainA, domainB, blobPage, deblobPage) {
 
 
 // ## The main test
-// Run a Task.jsm coroutine that tests various combinations of domains
+// Run a coroutine that tests various combinations of domains
 // methods, and isolation states for reading and writing blob URLs.
-Task.spawn(function* () {
+spawnTask(function* () {
   for (let isolate of [false, true]) {
     for (let domainB of [domain1, domain2]) {
       for (let blob of [page_blob, worker_blob]) {





More information about the tor-commits mailing list