tor-browser

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

test_worker_in_background.html (1639B)


      1 <html>
      2 
      3 <head>
      4  <title>Workers background flag test</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      7 
      8 <script type="text/javascript">
      9 
     10 let worker = new Worker("test_worker_in_background.js");
     11 var newtab;
     12 
     13 async function waitForWorkerEvent(stage) {
     14    return new Promise(resolve => {
     15        worker.addEventListener("message", e => {
     16            is(e.data.status, "PASS", stage);
     17            resolve();
     18        }, {
     19            once: true
     20        });
     21    });
     22 }
     23 
     24 
     25 add_task(async function enable_testing_prefs() {
     26    await SpecialPowers.pushPrefEnv({
     27        set: [
     28            ["dom.workers.testing.enabled", true]
     29        ],
     30    });
     31    ok(true, "testing settings enabled");
     32 });
     33 
     34 add_task(async function test_worker_in_foreground() {
     35    const stage = "CheckIsForeground";
     36    worker.postMessage(stage);
     37    await waitForWorkerEvent(stage);
     38 });
     39 
     40 add_task(async function test_worker_in_background() {
     41    const stage = "CheckIsBackground";
     42    document.onvisibilitychange = () => {
     43        if (document.visibilityState === "hidden") {
     44            worker.postMessage(stage);
     45        }
     46    }
     47    newtab = window.open('about:blank', '_blank');
     48    await waitForWorkerEvent(stage);
     49 });
     50 
     51 add_task(async function test_worker_return_to_foreground() {
     52    const stage = "CheckIsForegroundAgain";
     53    document.onvisibilitychange = () => {
     54        if (document.visibilityState === "visible") {
     55            worker.postMessage(stage);
     56        }
     57    }
     58    newtab.close();
     59    await waitForWorkerEvent(stage);
     60 });
     61 
     62 </script>
     63 </head>
     64 
     65 <body>
     66 </body>
     67 </html>