Bug 1796551 [wpt PR 36570] - WebKit export of https://bugs.webkit.org/show_bug.cgi...
[gecko.git] / netwerk / test / unit / test_bug654926_doom_and_read.js
blob739a2a07d5bb498607185fdc73ec60ee4ff9596e
1 "use strict";
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;
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   }
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);
32   write_and_check(os, data, data.length);
34   os.close();
35   entry.close();
37   // open, doom, append, read
38   asyncOpenCacheEntry(
39     "http://data/",
40     "disk",
41     Ci.nsICacheStorage.OPEN_NORMALLY,
42     null,
43     test_read_after_doom
44   );
47 function test_read_after_doom(status, entry) {
48   Assert.equal(status, Cr.NS_OK);
49   var data = gen_1MiB();
50   var os = entry.openOutputStream(entry.dataSize, data.length);
52   entry.asyncDoom(null);
53   write_and_check(os, data, data.length);
55   os.close();
57   var is = entry.openInputStream(0);
58   pumpReadStream(is, function(read) {
59     Assert.equal(read.length, 2 * 1024 * 1024);
60     is.close();
62     entry.close();
63     do_test_finished();
64   });
67 function run_test() {
68   do_get_profile();
70   // clear the cache
71   evict_cache_entries();
73   asyncOpenCacheEntry(
74     "http://data/",
75     "disk",
76     Ci.nsICacheStorage.OPEN_NORMALLY,
77     null,
78     write_datafile
79   );
81   do_test_pending();