tor-browser

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

test_initializeAllTemporaryOrigins.js (3209B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 const { PrincipalUtils } = ChromeUtils.importESModule(
      7  "resource://testing-common/dom/quota/test/modules/PrincipalUtils.sys.mjs"
      8 );
      9 const { QuotaUtils } = ChromeUtils.importESModule(
     10  "resource://testing-common/dom/quota/test/modules/QuotaUtils.sys.mjs"
     11 );
     12 
     13 async function testInitializeAllTemporaryOrigins() {
     14  const principal = PrincipalUtils.createPrincipal("https://example.com");
     15 
     16  // Preparation phase: simulating an existing profile with pre-existing
     17  // storage. At least one temporary origin must already exist.
     18  info("Initializing storage");
     19 
     20  {
     21    const request = Services.qms.init();
     22    await QuotaUtils.requestFinished(request);
     23  }
     24 
     25  info("Initializing temporary storage");
     26 
     27  {
     28    const request = Services.qms.initTemporaryStorage();
     29    await QuotaUtils.requestFinished(request);
     30  }
     31 
     32  info("Initializing temporary origin");
     33 
     34  {
     35    const request = Services.qms.initializeTemporaryOrigin(
     36      "default",
     37      principal,
     38      /* aCreateIfNonExistent */ true
     39    );
     40    await QuotaUtils.requestFinished(request);
     41  }
     42 
     43  // Restore the original uninitialized state to force reinitialization of both
     44  // storage and temporary storage.
     45  info("Shutting down storage");
     46 
     47  {
     48    const request = Services.qms.reset();
     49    await QuotaUtils.requestFinished(request);
     50  }
     51 
     52  // Reinitialize storage and temporary storage.
     53  info("Initializing storage");
     54 
     55  {
     56    const request = Services.qms.init();
     57    await QuotaUtils.requestFinished(request);
     58  }
     59 
     60  info("Initializing temporary storage");
     61 
     62  {
     63    const request = Services.qms.initTemporaryStorage();
     64    await QuotaUtils.requestFinished(request);
     65  }
     66 
     67  // Temporary storage initialization shouldn't initialize origins when lazy
     68  // origin initialization is enabled.
     69  info("Verifying temporary origin");
     70 
     71  {
     72    const request = Services.qms.temporaryOriginInitialized(
     73      "default",
     74      principal
     75    );
     76    const initialized = await QuotaUtils.requestFinished(request);
     77    Assert.ok(!initialized, "Temporary origin is not initialized");
     78  }
     79 
     80  // Now trigger the initialization of all temporary origins, which normally
     81  // happens automatically when incremental origin initialization is enabled
     82  // and temporary storage initialization is complete.
     83  info("Initializing all temporary origins");
     84 
     85  {
     86    const request = Services.qms.initializeAllTemporaryOrigins();
     87    await QuotaUtils.requestFinished(request);
     88  }
     89 
     90  // The temporary origin should be now initialized.
     91  info("Verifying temporary origin");
     92 
     93  {
     94    const request = Services.qms.temporaryOriginInitialized(
     95      "default",
     96      principal
     97    );
     98    const initialized = await QuotaUtils.requestFinished(request);
     99    Assert.ok(initialized, "Temporary origin is initialized");
    100  }
    101 }
    102 
    103 /* exported testSteps */
    104 async function testSteps() {
    105  add_task(
    106    {
    107      pref_set: [
    108        ["dom.quotaManager.temporaryStorage.lazyOriginInitialization", true],
    109        ["dom.quotaManager.loadQuotaFromCache", false],
    110        ["dom.quotaManager.loadQuotaFromSecondaryCache", false],
    111      ],
    112    },
    113    testInitializeAllTemporaryOrigins
    114  );
    115 }