summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_cache2-14b-concurent-readers-complete.js
blob: cb00a4a8cd32277d32e57b961bed643c3993e396 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"use strict";

function run_test() {
  do_get_profile();

  asyncOpenCacheEntry(
    "http://x/",
    "disk",
    Ci.nsICacheStorage.OPEN_NORMALLY,
    null,
    new OpenCallback(NEW, "x1m", "x1d", function(entry) {
      // nothing to do here, we expect concurent callbacks to get
      // all notified, then the test finishes
    })
  );

  var mc = new MultipleCallbacks(3, finish_cache2_test);

  var order = 0;

  asyncOpenCacheEntry(
    "http://x/",
    "disk",
    Ci.nsICacheStorage.OPEN_NORMALLY,
    null,
    new OpenCallback(
      NORMAL | COMPLETE | NOTIFYBEFOREREAD,
      "x1m",
      "x1d",
      function(entry, beforeReading) {
        if (beforeReading) {
          ++order;
          Assert.equal(order, 3);
        } else {
          mc.fired();
        }
      }
    )
  );
  asyncOpenCacheEntry(
    "http://x/",
    "disk",
    Ci.nsICacheStorage.OPEN_NORMALLY,
    null,
    new OpenCallback(NORMAL | NOTIFYBEFOREREAD, "x1m", "x1d", function(
      entry,
      beforeReading
    ) {
      if (beforeReading) {
        ++order;
        Assert.equal(order, 1);
      } else {
        mc.fired();
      }
    })
  );
  asyncOpenCacheEntry(
    "http://x/",
    "disk",
    Ci.nsICacheStorage.OPEN_NORMALLY,
    null,
    new OpenCallback(NORMAL | NOTIFYBEFOREREAD, "x1m", "x1d", function(
      entry,
      beforeReading
    ) {
      if (beforeReading) {
        ++order;
        Assert.equal(order, 2);
      } else {
        mc.fired();
      }
    })
  );

  do_test_pending();
}