tor-browser

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

test_getUsageForPrincipal.js (2422B)


      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 principal = getPrincipal("http://localhost");
      8 
      9  const resultBeforeInstall = {
     10    databaseUsage: 0,
     11    fileUsage: 0,
     12    usage: 0,
     13  };
     14 
     15  const resultAfterInstall = {
     16    databaseUsage: 147456,
     17    fileUsage: 0,
     18    usage: 147456,
     19  };
     20 
     21  function verifyResult(result, expectedResult) {
     22    ok(
     23      result instanceof Ci.nsIQuotaOriginUsageResult,
     24      "The result is nsIQuotaOriginUsageResult instance"
     25    );
     26 
     27    Assert.strictEqual(
     28      result.databaseUsage,
     29      expectedResult.databaseUsage,
     30      "Database usage equals"
     31    );
     32    Assert.strictEqual(
     33      result.fileUsage,
     34      expectedResult.fileUsage,
     35      "File usage equals"
     36    );
     37    Assert.strictEqual(
     38      result.usage,
     39      expectedResult.usage,
     40      "Total usage equals"
     41    );
     42  }
     43 
     44  info("Clearing");
     45 
     46  let request = clear();
     47  await requestFinished(request);
     48 
     49  info("Getting origin usage");
     50 
     51  request = getOriginUsage(principal);
     52  let result = await requestFinished(request);
     53 
     54  info("Verifying result");
     55 
     56  verifyResult(result, resultBeforeInstall);
     57 
     58  info("Clearing");
     59 
     60  request = clear();
     61  await requestFinished(request);
     62 
     63  info("Installing package");
     64 
     65  // The profile contains IndexedDB databases placed across the repositories.
     66  // The file make_getUsageForPrincipal.js was run locally, specifically it was
     67  // temporarily enabled in xpcshell.toml and then executed:
     68  // mach test --interactive dom/quota/test/xpcshell/make_getUsageForPrincipal.js
     69  installPackage("getUsageForPrincipal_profile");
     70 
     71  info("Getting origin usage");
     72 
     73  request = getOriginUsage(principal);
     74  result = await requestFinished(request);
     75 
     76  info("Verifying result");
     77 
     78  verifyResult(result, resultAfterInstall);
     79 
     80  info("Getting origin usage");
     81 
     82  Services.prefs.setIntPref(
     83    "dom.quotaManager.originOperations.pauseOnIOThreadMs",
     84    1000
     85  );
     86 
     87  request = getOriginUsage(principal);
     88 
     89  info("Cancelling request");
     90 
     91  request.cancel();
     92 
     93  try {
     94    result = await requestFinished(request);
     95    ok(false, "Should have thrown");
     96  } catch (e) {
     97    ok(true, "Should have thrown");
     98    Assert.strictEqual(
     99      e.resultCode,
    100      NS_ERROR_FAILURE,
    101      "Threw right result code"
    102    );
    103  }
    104 
    105  Services.prefs.clearUserPref(
    106    "dom.quotaManager.originOperations.pauseOnIOThreadMs"
    107  );
    108 }