tor-browser

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

browser_private_browsing.js (2627B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const URL =
      5  "http://mochi.test:8888/browser/dom/broadcastchannel/tests/blank.html";
      6 
      7 add_task(async function () {
      8  var win1 = OpenBrowserWindow({ private: true });
      9  var win1Promise = new win1.Promise(resolve => {
     10    win1.addEventListener(
     11      "load",
     12      function () {
     13        resolve();
     14      },
     15      { once: true }
     16    );
     17  });
     18  await win1Promise;
     19 
     20  var win2 = OpenBrowserWindow({ private: false });
     21  var win2Promise = new win2.Promise(resolve => {
     22    win2.addEventListener(
     23      "load",
     24      function () {
     25        resolve();
     26      },
     27      { once: true }
     28    );
     29  });
     30  await win2Promise;
     31 
     32  var tab1 = BrowserTestUtils.addTab(win1.gBrowser, URL);
     33  await BrowserTestUtils.browserLoaded(win1.gBrowser.getBrowserForTab(tab1));
     34  var browser1 = gBrowser.getBrowserForTab(tab1);
     35 
     36  var tab2 = BrowserTestUtils.addTab(win2.gBrowser, URL);
     37  await BrowserTestUtils.browserLoaded(win2.gBrowser.getBrowserForTab(tab2));
     38  var browser2 = gBrowser.getBrowserForTab(tab2);
     39 
     40  var p1 = SpecialPowers.spawn(browser1, [], function () {
     41    return new content.window.Promise(resolve => {
     42      content.window.bc = new content.window.BroadcastChannel("foobar");
     43      content.window.bc.onmessage = function (e) {
     44        resolve(e.data);
     45      };
     46    });
     47  });
     48 
     49  var p2 = SpecialPowers.spawn(browser2, [], function () {
     50    return new content.window.Promise(resolve => {
     51      content.window.bc = new content.window.BroadcastChannel("foobar");
     52      content.window.bc.onmessage = function (e) {
     53        resolve(e.data);
     54      };
     55    });
     56  });
     57 
     58  await SpecialPowers.spawn(browser1, [], function () {
     59    return new content.window.Promise(resolve => {
     60      var bc = new content.window.BroadcastChannel("foobar");
     61      bc.postMessage("hello world from private browsing");
     62      resolve();
     63    });
     64  });
     65 
     66  await SpecialPowers.spawn(browser2, [], function () {
     67    return new content.window.Promise(resolve => {
     68      var bc = new content.window.BroadcastChannel("foobar");
     69      bc.postMessage("hello world from non private browsing");
     70      resolve();
     71    });
     72  });
     73 
     74  var what1 = await p1;
     75  is(
     76    what1,
     77    "hello world from private browsing",
     78    "No messages received from the other window."
     79  );
     80 
     81  var what2 = await p2;
     82  is(
     83    what2,
     84    "hello world from non private browsing",
     85    "No messages received from the other window."
     86  );
     87 
     88  BrowserTestUtils.removeTab(tab1);
     89  await BrowserTestUtils.closeWindow(win1);
     90 
     91  BrowserTestUtils.removeTab(tab2);
     92  await BrowserTestUtils.closeWindow(win2);
     93 });