tor-browser

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

test_cache2-07a-open-memory.js (2780B)


      1 "use strict";
      2 
      3 function run_test() {
      4  do_get_profile();
      5 
      6  // First check how behaves the memory storage.
      7 
      8  asyncOpenCacheEntry(
      9    "http://mem-first/",
     10    "memory",
     11    Ci.nsICacheStorage.OPEN_NORMALLY,
     12    null,
     13    new OpenCallback(NEW, "mem1-meta", "mem1-data", function (entryM1) {
     14      Assert.ok(!entryM1.persistent);
     15      asyncOpenCacheEntry(
     16        "http://mem-first/",
     17        "disk",
     18        Ci.nsICacheStorage.OPEN_NORMALLY,
     19        null,
     20        new OpenCallback(NORMAL, "mem1-meta", "mem1-data", function (entryM2) {
     21          Assert.ok(!entryM1.persistent);
     22          Assert.ok(!entryM2.persistent);
     23 
     24          // Now check the disk storage behavior.
     25 
     26          asyncOpenCacheEntry(
     27            "http://disk-first/",
     28            "disk",
     29            Ci.nsICacheStorage.OPEN_NORMALLY,
     30            null,
     31            // Must wait for write, since opening the entry as memory-only before the disk one
     32            // is written would cause NS_ERROR_NOT_AVAILABLE from openOutputStream when writing
     33            // this disk entry since it's doomed during opening of the memory-only entry for the same URL.
     34            new OpenCallback(
     35              NEW | WAITFORWRITE,
     36              "disk1-meta",
     37              "disk1-data",
     38              function (entryD1) {
     39                Assert.ok(entryD1.persistent);
     40                // Now open the same URL as a memory-only entry, the disk entry must be doomed.
     41                asyncOpenCacheEntry(
     42                  "http://disk-first/",
     43                  "memory",
     44                  Ci.nsICacheStorage.OPEN_NORMALLY,
     45                  null,
     46                  // This must be recreated
     47                  new OpenCallback(NEW, "mem2-meta", "mem2-data", function (
     48                    entryD2
     49                  ) {
     50                    Assert.ok(entryD1.persistent);
     51                    Assert.ok(!entryD2.persistent);
     52                    // Check we get it back, even when opening via the disk storage
     53                    asyncOpenCacheEntry(
     54                      "http://disk-first/",
     55                      "disk",
     56                      Ci.nsICacheStorage.OPEN_NORMALLY,
     57                      null,
     58                      new OpenCallback(
     59                        NORMAL,
     60                        "mem2-meta",
     61                        "mem2-data",
     62                        function (entryD3) {
     63                          Assert.ok(entryD1.persistent);
     64                          Assert.ok(!entryD2.persistent);
     65                          Assert.ok(!entryD3.persistent);
     66                          finish_cache2_test();
     67                        }
     68                      )
     69                    );
     70                  })
     71                );
     72              }
     73            )
     74          );
     75        })
     76      );
     77    })
     78  );
     79 
     80  do_test_pending();
     81 }