tor-browser

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

test_navigator_workers_hardwareConcurrency.html (1853B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Test for Navigator.hardwareConcurrency</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8  <script type="application/javascript">
      9  "use strict";
     10 
     11  SimpleTest.waitForExplicitFinish();
     12 
     13  function getWorkerHardwareConcurrency(onmessage) {
     14    var script = "postMessage(navigator.hardwareConcurrency)";
     15    var url = URL.createObjectURL(new Blob([script]));
     16    var w = new Worker(url);
     17    w.onmessage = onmessage;
     18  }
     19 
     20  function resistFingerprinting(value) {
     21    var sp = SpecialPowers;
     22    ok(sp != null, "SpecialPowers loaded.");
     23    return sp.pushPrefEnv({"set": [["privacy.resistFingerprinting", value]]});
     24  }
     25 
     26  getWorkerHardwareConcurrency(e => {
     27    var x = e.data;
     28    is(typeof x, "number", "hardwareConcurrency should be a number.");
     29    ok(x > 0, "hardwareConcurrency should be greater than 0.");
     30 
     31    resistFingerprinting(true).then(() => {
     32      ok(true, "resistFingerprinting(true) resolved.");
     33      getWorkerHardwareConcurrency(msg => {
     34        const expected = SpecialPowers.Services.appinfo.OS == "Darwin" ? 8 : 4;
     35        const y = msg.data;
     36        ok(y === expected, "hardwareConcurrency should always be 2 when we're resisting fingerprinting.");
     37 
     38        resistFingerprinting(false).then(() => {
     39          ok(true, "resistFingerprinting(false) resolved.");
     40          getWorkerHardwareConcurrency(msg1 => {
     41            const z = msg1.data;
     42            ok(z === x, "hardwareConcurrency should be the same as before we were resisting fingerprinting.");
     43 
     44            SimpleTest.finish();
     45          });
     46        });
     47      });
     48    });
     49  });
     50 
     51  </script>
     52 </head>
     53 <body>
     54 <p id="display"></p>
     55 <div id="content" style="display: none">
     56 
     57 </div>
     58 <pre id="test">
     59 </pre>
     60 </body>
     61 </html>