tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_sharedWorker_privateBrowsing.html (2926B)


      1 <html xmlns="http://www.w3.org/1999/xhtml">
      2 <head>
      3  <title>Test for SharedWorker - Private Browsing</title>
      4  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
      5  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
      6 </head>
      7 <body>
      8 
      9 <script type="application/javascript">
     10 const {BrowserTestUtils} = ChromeUtils.importESModule(
     11  "resource://testing-common/BrowserTestUtils.sys.mjs"
     12 );
     13 var mainWindow;
     14 
     15 var contentPage = "http://mochi.test:8888/chrome/dom/workers/test/empty.html";
     16 
     17 function testOnWindow(aIsPrivate, aCallback) {
     18  var win = mainWindow.OpenBrowserWindow({private: aIsPrivate});
     19  win.addEventListener("load", function() {
     20    win.addEventListener("DOMContentLoaded", function onInnerLoad() {
     21      if (win.content.location.href != contentPage) {
     22        BrowserTestUtils.startLoadingURIString(win.gBrowser, contentPage);
     23        return;
     24      }
     25 
     26      win.removeEventListener("DOMContentLoaded", onInnerLoad, true);
     27      SimpleTest.executeSoon(function() { aCallback(win); });
     28    }, true);
     29  }, {capture: true, once: true});
     30 }
     31 
     32 function setupWindow() {
     33  mainWindow = window.browsingContext.topChromeWindow;
     34  runTest();
     35 }
     36 
     37 var wN;
     38 var wP;
     39 
     40 function doTests() {
     41  testOnWindow(false, function(aWin) {
     42    wN = aWin;
     43 
     44    testOnWindow(true, function(win) {
     45      wP = win;
     46 
     47      var sharedWorker1 = new wP.content.SharedWorker('sharedWorker_privateBrowsing.js');
     48      sharedWorker1.port.onmessage = function(event) {
     49        is(event.data, 1, "Only 1 sharedworker expected in the private window");
     50 
     51        var sharedWorker2 = new wN.content.SharedWorker('sharedWorker_privateBrowsing.js');
     52        sharedWorker2.port.onmessage = function(event1) {
     53          is(event1.data, 1, "Only 1 sharedworker expected in the normal window");
     54 
     55          var sharedWorker3 = new wP.content.SharedWorker('sharedWorker_privateBrowsing.js');
     56          sharedWorker3.port.onmessage = function(event2) {
     57            is(event2.data, 2, "Only 2 sharedworker expected in the private window");
     58            runTest();
     59          }
     60        }
     61      }
     62    });
     63  });
     64 }
     65 
     66 function doSystemSharedWorkerTest() {
     67  try {
     68    let chromeShared =
     69      new wP.SharedWorker("chrome://mochitests/content/dom/workers/test/sharedWorker_privateBrowsing.js");
     70    ok(true, "system SharedWorker created without throwing or crashing!");
     71  } catch (_ex) {
     72    ok(false, "system SharedWorker should not throw or crash");
     73  }
     74  runTest();
     75 }
     76 
     77 var steps = [
     78  setupWindow,
     79  doTests,
     80  doSystemSharedWorkerTest,
     81 ];
     82 
     83 function runTest() {
     84  if (!steps.length) {
     85    wN.close();
     86    wP.close();
     87 
     88    SimpleTest.finish();
     89    return;
     90  }
     91 
     92  var step = steps.shift();
     93  step();
     94 }
     95 
     96 SimpleTest.waitForExplicitFinish();
     97 SpecialPowers.pushPrefEnv({"set": [
     98  ["browser.startup.page", 0],
     99  ["browser.startup.homepage_override.mstone", "ignore"],
    100 ]}, runTest);
    101 
    102 </script>
    103 </body>
    104 </html>