tor-browser

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

test_upgradeStorageFrom1_0_stripObsoleteOriginAttributes.js (4963B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 /**
      7 * This test is mainly to verify MaybeStripObsoleteOriginAttributes method.
      8 */
      9 
     10 loadScript("dom/quota/test/common/file.js");
     11 
     12 function* testSteps() {
     13  const origins = [
     14    {
     15      oldPath:
     16        "storage/permanent/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f^addonId=indexedDB-test%40kmaglione.mozilla.com",
     17      newPath:
     18        "storage/permanent/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f",
     19      url: "moz-extension://8ea6d31b-917c-431f-a204-15b95e904d4f",
     20      persistence: "persistent",
     21    },
     22 
     23    {
     24      oldPath:
     25        "storage/temporary/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f^addonId=indexedDB-test%40kmaglione.mozilla.com",
     26      newPath:
     27        "storage/temporary/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f",
     28      url: "moz-extension://8ea6d31b-917c-431f-a204-15b95e904d4f",
     29      persistence: "temporary",
     30    },
     31 
     32    {
     33      oldPath:
     34        "storage/default/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f^addonId=indexedDB-test%40kmaglione.mozilla.com",
     35      newPath:
     36        "storage/default/moz-extension+++8ea6d31b-917c-431f-a204-15b95e904d4f",
     37      url: "moz-extension://8ea6d31b-917c-431f-a204-15b95e904d4f",
     38      persistence: "default",
     39    },
     40  ];
     41 
     42  const metadataFileName = ".metadata-v2";
     43 
     44  const packages = [
     45    // Storage used by FF 49-54 (storage version 1.0 with obsolete origin
     46    // attributes).
     47    "version1_0_obsoleteOriginAttributes_profile",
     48    "../defaultStorageDirectory_shared",
     49  ];
     50 
     51  let metadataBuffers = [];
     52 
     53  info("Clearing");
     54 
     55  clear(continueToNextStepSync);
     56  yield undefined;
     57 
     58  info("Verifying storage");
     59 
     60  verifyStorage(packages, "beforeInstall");
     61 
     62  info("Installing packages");
     63 
     64  installPackages(packages);
     65 
     66  info("Verifying storage");
     67 
     68  verifyStorage(packages, "afterInstall");
     69 
     70  info("Checking origin directories");
     71 
     72  for (let origin of origins) {
     73    let originDir = getRelativeFile(origin.oldPath);
     74    let exists = originDir.exists();
     75    ok(exists, "Origin directory does exist");
     76 
     77    info("Reading out contents of metadata file");
     78 
     79    let metadataFile = originDir.clone();
     80    metadataFile.append(metadataFileName);
     81 
     82    File.createFromNsIFile(metadataFile).then(grabArgAndContinueHandler);
     83    let file = yield undefined;
     84 
     85    let fileReader = new FileReader();
     86    fileReader.onload = continueToNextStepSync;
     87    fileReader.readAsArrayBuffer(file);
     88 
     89    yield undefined;
     90 
     91    metadataBuffers.push(fileReader.result);
     92 
     93    originDir = getRelativeFile(origin.newPath);
     94    exists = originDir.exists();
     95    ok(!exists, "Origin directory doesn't exist");
     96  }
     97 
     98  info("Initializing");
     99 
    100  let request = init(continueToNextStepSync);
    101  yield undefined;
    102 
    103  Assert.equal(request.resultCode, NS_OK, "Initialization succeeded");
    104 
    105  info("Verifying storage");
    106 
    107  verifyStorage(packages, "afterInit");
    108 
    109  // TODO: Remove this block once temporary storage initialization is able to
    110  //       ignore unknown directories.
    111  getRelativeFile("storage/default/invalid+++example.com").remove(false);
    112  getRelativeFile("storage/temporary/invalid+++example.com").remove(false);
    113 
    114  info("Checking origin directories");
    115 
    116  for (let origin of origins) {
    117    let originDir = getRelativeFile(origin.oldPath);
    118    let exists = originDir.exists();
    119    ok(!exists, "Origin directory doesn't exist");
    120 
    121    originDir = getRelativeFile(origin.newPath);
    122    exists = originDir.exists();
    123    ok(exists, "Origin directory does exist");
    124 
    125    info("Reading out contents of metadata file");
    126 
    127    let metadataFile = originDir.clone();
    128    metadataFile.append(metadataFileName);
    129 
    130    File.createFromNsIFile(metadataFile).then(grabArgAndContinueHandler);
    131    let file = yield undefined;
    132 
    133    let fileReader = new FileReader();
    134    fileReader.onload = continueToNextStepSync;
    135    fileReader.readAsArrayBuffer(file);
    136 
    137    yield undefined;
    138 
    139    let metadataBuffer = fileReader.result;
    140 
    141    info("Verifying blobs differ");
    142 
    143    ok(
    144      !compareBuffers(metadataBuffer, metadataBuffers.shift()),
    145      "Metadata differ"
    146    );
    147  }
    148 
    149  info("Initializing temporary storage");
    150 
    151  request = initTemporaryStorage(continueToNextStepSync);
    152  yield undefined;
    153 
    154  Assert.equal(request.resultCode, NS_OK, "Initialization succeeded");
    155 
    156  info("Initializing origins");
    157 
    158  for (const origin of origins) {
    159    info("Initializing origin");
    160 
    161    let principal = getPrincipal(origin.url);
    162    if (origin.persistence == "persistent") {
    163      request = initPersistentOrigin(principal, continueToNextStepSync);
    164    } else {
    165      request = initTemporaryOrigin(
    166        origin.persistence,
    167        principal,
    168        /* createIfNonExistent */ true,
    169        continueToNextStepSync
    170      );
    171    }
    172    yield undefined;
    173 
    174    Assert.equal(request.resultCode, NS_OK, "Initialization succeeded");
    175 
    176    ok(!request.result, "Origin directory wasn't created");
    177  }
    178 
    179  finishTest();
    180 }