tor-browser

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

test_slowDatabaseInitialization.js (1997B)


      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 const { SimpleDBUtils } = ChromeUtils.importESModule(
     13  "resource://testing-common/dom/simpledb/test/modules/SimpleDBUtils.sys.mjs"
     14 );
     15 const { TestUtils } = ChromeUtils.importESModule(
     16  "resource://testing-common/TestUtils.sys.mjs"
     17 );
     18 
     19 add_task(
     20  {
     21    pref_set: [["dom.simpledb.databaseInitialization.pauseOnIOThreadMs", 2000]],
     22  },
     23  async function testSteps() {
     24    const principal = PrincipalUtils.createPrincipal("https://example.com");
     25    const name = "test_slowStorageInitialization.js";
     26 
     27    info("Testing origin clearing requested after starting database work");
     28 
     29    info("Starting database opening");
     30 
     31    const openPromise = (function () {
     32      const connection = SimpleDBUtils.createConnection(principal);
     33      const request = connection.open(name);
     34      const promise = SimpleDBUtils.requestFinished(request);
     35      return promise;
     36    })();
     37 
     38    info("Waiting for database work to start");
     39 
     40    await TestUtils.topicObserved("SimpleDB::DatabaseWorkStarted");
     41 
     42    info("Starting origin clearing");
     43 
     44    const clearPromise = (async function () {
     45      const request = Services.qms.clearStoragesForPrincipal(principal);
     46      const promise = QuotaUtils.requestFinished(request);
     47      return promise;
     48    })();
     49 
     50    info("Waiting for database to finish opening");
     51 
     52    try {
     53      await openPromise;
     54      ok(false, "Should have thrown");
     55    } catch (e) {
     56      ok(true, "Should have thrown");
     57      Assert.strictEqual(
     58        e.resultCode,
     59        Cr.NS_ERROR_ABORT,
     60        "Threw right result code"
     61      );
     62    }
     63 
     64    info("Waiting for origin to finish clearing");
     65 
     66    await clearPromise;
     67  }
     68 );