tor-browser

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

test_timer.html (2775B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Test for timeStart/timeLog/timeEnd in console</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <script src="head.js"></script>
      8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      9 </head>
     10 <body>
     11  <script type="application/javascript">
     12 
     13 SimpleTest.waitForExplicitFinish();
     14 
     15 var reduceTimePrecisionPrevPrefValue = SpecialPowers.getBoolPref("privacy.reduceTimerPrecision");
     16 SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", false);
     17 
     18 function ConsoleListener() {
     19  addConsoleStorageListener(this);
     20 }
     21 
     22 ConsoleListener.prototype = {
     23  observe(aSubject) {
     24    let obj = aSubject.wrappedJSObject;
     25    if (obj.arguments[0] != "test_bug1463614") {
     26      return;
     27    }
     28 
     29    if (!this._cb || !this._cb(obj)) {
     30      return;
     31    }
     32 
     33    this._cb = null;
     34    this._resolve();
     35  },
     36 
     37  shutdown() {
     38    removeConsoleStorageListener(this);
     39  },
     40 
     41  waitFor(cb) {
     42    return new Promise(resolve => {
     43      this._cb = SpecialPowers.wrapCallback(cb);
     44      this._resolve = resolve;
     45    });
     46  },
     47 };
     48 
     49 let listener = new ConsoleListener();
     50 
     51 // Timer creation:
     52 async function runTest() {
     53  let cl = listener.waitFor(obj => {
     54    return ("timer" in obj) &&
     55           ("name" in obj.timer) &&
     56           obj.timer.name == "test_bug1463614";
     57  });
     58 
     59  console.time("test_bug1463614");
     60  await cl;
     61  ok(true, "Console.time received!");
     62 
     63  // Timer check:
     64  cl = listener.waitFor(obj => {
     65    return ("timer" in obj) &&
     66           ("name" in obj.timer) &&
     67           obj.timer.name == "test_bug1463614" &&
     68           ("duration" in obj.timer) &&
     69           obj.timer.duration >= 0 &&
     70           obj.arguments[1] == 1 &&
     71           obj.arguments[2] == 2 &&
     72           obj.arguments[3] == 3 &&
     73           obj.arguments[4] == 4;
     74  });
     75  console.timeLog("test_bug1463614", 1, 2, 3, 4);
     76  await cl;
     77  ok(true, "Console.timeLog received!");
     78 
     79  // Time deleted:
     80  cl = listener.waitFor(obj => {
     81    return ("timer" in obj) &&
     82           ("name" in obj.timer) &&
     83           obj.timer.name == "test_bug1463614" &&
     84           ("duration" in obj.timer) &&
     85           obj.timer.duration >= 0;
     86  });
     87  console.timeEnd("test_bug1463614");
     88  await cl;
     89  ok(true, "Console.timeEnd received!");
     90 
     91  // Here an error:
     92  cl = listener.waitFor(obj => {
     93    return ("timer" in obj) &&
     94           ("name" in obj.timer) &&
     95           obj.timer.name == "test_bug1463614" &&
     96           ("error" in obj.timer);
     97  });
     98  console.timeLog("test_bug1463614");
     99  await cl;
    100  ok(true, "Console.time with error received!");
    101 }
    102 
    103 runTest().then(() => {
    104  listener.shutdown();
    105 
    106  SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", reduceTimePrecisionPrevPrefValue);
    107  SimpleTest.finish();
    108 });
    109 
    110  </script>
    111 </body>
    112 </html>