tor-browser

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

test_bug654926_doom_and_read.js (1467B)


      1 "use strict";
      2 
      3 function gen_1MiB() {
      4  var i;
      5  var data = "x";
      6  for (i = 0; i < 20; i++) {
      7    data += data;
      8  }
      9  return data;
     10 }
     11 
     12 function write_and_check(str, data, len) {
     13  var written = str.write(data, len);
     14  if (written != len) {
     15    do_throw(
     16      "str.write has not written all data!\n" +
     17        "  Expected: " +
     18        len +
     19        "\n" +
     20        "  Actual: " +
     21        written +
     22        "\n"
     23    );
     24  }
     25 }
     26 
     27 function write_datafile(status, entry) {
     28  Assert.equal(status, Cr.NS_OK);
     29  var data = gen_1MiB();
     30  var os = entry.openOutputStream(0, data.length);
     31 
     32  write_and_check(os, data, data.length);
     33 
     34  os.close();
     35 
     36  // open, doom, append, read
     37  asyncOpenCacheEntry(
     38    "http://data/",
     39    "disk",
     40    Ci.nsICacheStorage.OPEN_NORMALLY,
     41    null,
     42    test_read_after_doom
     43  );
     44 }
     45 
     46 function test_read_after_doom(status, entry) {
     47  Assert.equal(status, Cr.NS_OK);
     48  var data = gen_1MiB();
     49  var os = entry.openOutputStream(entry.dataSize, data.length);
     50 
     51  entry.asyncDoom(null);
     52  write_and_check(os, data, data.length);
     53 
     54  os.close();
     55 
     56  var is = entry.openInputStream(0);
     57  pumpReadStream(is, function (read) {
     58    Assert.equal(read.length, 2 * 1024 * 1024);
     59    is.close();
     60 
     61    do_test_finished();
     62  });
     63 }
     64 
     65 function run_test() {
     66  do_get_profile();
     67 
     68  // clear the cache
     69  evict_cache_entries();
     70 
     71  asyncOpenCacheEntry(
     72    "http://data/",
     73    "disk",
     74    Ci.nsICacheStorage.OPEN_NORMALLY,
     75    null,
     76    write_datafile
     77  );
     78 
     79  do_test_pending();
     80 }