tor-browser

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

test_getUsage.js (3327B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 async function testSteps() {
      7  const origins = [
      8    {
      9      origin: "http://example.com",
     10      persisted: false,
     11      usage: 49152,
     12    },
     13 
     14    {
     15      origin: "http://localhost",
     16      persisted: false,
     17      usage: 147456,
     18    },
     19 
     20    {
     21      origin: "http://www.mozilla.org",
     22      persisted: true,
     23      usage: 98304,
     24    },
     25  ];
     26 
     27  const allOrigins = [
     28    {
     29      origin: "chrome",
     30      persisted: false,
     31      usage: 147456,
     32    },
     33 
     34    {
     35      origin: "http://example.com",
     36      persisted: false,
     37      usage: 49152,
     38    },
     39 
     40    {
     41      origin: "http://localhost",
     42      persisted: false,
     43      usage: 147456,
     44    },
     45 
     46    {
     47      origin: "http://www.mozilla.org",
     48      persisted: true,
     49      usage: 98304,
     50    },
     51  ];
     52 
     53  function verifyResult(result, expectedOrigins) {
     54    ok(result instanceof Array, "Got an array object");
     55    Assert.equal(
     56      result.length,
     57      expectedOrigins.length,
     58      "Correct number of elements"
     59    );
     60 
     61    info("Sorting elements");
     62 
     63    result.sort(function (a, b) {
     64      let originA = a.origin;
     65      let originB = b.origin;
     66 
     67      if (originA < originB) {
     68        return -1;
     69      }
     70      if (originA > originB) {
     71        return 1;
     72      }
     73      return 0;
     74    });
     75 
     76    info("Verifying elements");
     77 
     78    for (let i = 0; i < result.length; i++) {
     79      let a = result[i];
     80      let b = expectedOrigins[i];
     81      Assert.equal(a.origin, b.origin, "Origin equals");
     82      Assert.equal(a.persisted, b.persisted, "Persisted equals");
     83      Assert.equal(a.usage, b.usage, "Usage equals");
     84    }
     85  }
     86 
     87  function dummy() {}
     88 
     89  info("Clearing");
     90 
     91  let request = clear();
     92  await requestFinished(request);
     93 
     94  info("Getting usage");
     95 
     96  request = getUsage(dummy, /* getAll */ true);
     97  let result = await requestFinished(request);
     98 
     99  info("Verifying result");
    100 
    101  verifyResult(result, []);
    102 
    103  info("Clearing");
    104 
    105  request = clear();
    106  await requestFinished(request);
    107 
    108  info("Installing package");
    109 
    110  // The profile contains IndexedDB databases placed across the repositories.
    111  // The file create_db.js in the package was run locally, specifically it was
    112  // temporarily added to xpcshell.toml and then executed:
    113  // mach xpcshell-test --interactive dom/quota/test/xpcshell/create_db.js
    114  installPackage("getUsage_profile");
    115 
    116  info("Getting usage");
    117 
    118  request = getUsage(dummy, /* getAll */ false);
    119  result = await requestFinished(request);
    120 
    121  info("Verifying result");
    122 
    123  verifyResult(result, origins);
    124 
    125  info("Getting usage");
    126 
    127  request = getUsage(dummy, /* getAll */ true);
    128  result = await requestFinished(request);
    129 
    130  info("Verifying result");
    131 
    132  verifyResult(result, allOrigins);
    133 
    134  info("Getting usage");
    135 
    136  Services.prefs.setIntPref(
    137    "dom.quotaManager.originOperations.pauseOnIOThreadMs",
    138    1000
    139  );
    140 
    141  request = getUsage(dummy, /* getAll */ true);
    142 
    143  info("Cancelling request");
    144 
    145  request.cancel();
    146 
    147  try {
    148    result = await requestFinished(request);
    149    ok(false, "Should have thrown");
    150  } catch (e) {
    151    ok(true, "Should have thrown");
    152    Assert.strictEqual(
    153      e.resultCode,
    154      NS_ERROR_FAILURE,
    155      "Threw right result code"
    156    );
    157  }
    158 
    159  Services.prefs.clearUserPref(
    160    "dom.quotaManager.originOperations.pauseOnIOThreadMs"
    161  );
    162 }