summaryrefslogtreecommitdiffstats
path: root/dom/quota/test/xpcshell/test_getUsage.js
blob: 538af934f628d787dd8870b6cd51368c6f1bd352 (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

function* testSteps() {
  const origins = [
    {
      origin: "http://example.com",
      persisted: false,
      usage: 49152,
    },

    {
      origin: "http://localhost",
      persisted: false,
      usage: 147456,
    },

    {
      origin: "http://www.mozilla.org",
      persisted: true,
      usage: 98304,
    },
  ];

  const allOrigins = [
    {
      origin: "chrome",
      persisted: false,
      usage: 147456,
    },

    {
      origin: "http://example.com",
      persisted: false,
      usage: 49152,
    },

    {
      origin: "http://localhost",
      persisted: false,
      usage: 147456,
    },

    {
      origin: "http://www.mozilla.org",
      persisted: true,
      usage: 98304,
    },
  ];

  function verifyResult(result, expectedOrigins) {
    ok(result instanceof Array, "Got an array object");
    Assert.equal(
      result.length,
      expectedOrigins.length,
      "Correct number of elements"
    );

    info("Sorting elements");

    result.sort(function (a, b) {
      let originA = a.origin;
      let originB = b.origin;

      if (originA < originB) {
        return -1;
      }
      if (originA > originB) {
        return 1;
      }
      return 0;
    });

    info("Verifying elements");

    for (let i = 0; i < result.length; i++) {
      let a = result[i];
      let b = expectedOrigins[i];
      Assert.equal(a.origin, b.origin, "Origin equals");
      Assert.equal(a.persisted, b.persisted, "Persisted equals");
      Assert.equal(a.usage, b.usage, "Usage equals");
    }
  }

  info("Clearing");

  clear(continueToNextStepSync);
  yield undefined;

  info("Getting usage");

  getUsage(grabResultAndContinueHandler, /* getAll */ true);
  let result = yield undefined;

  info("Verifying result");

  verifyResult(result, []);

  info("Clearing");

  clear(continueToNextStepSync);
  yield undefined;

  info("Installing package");

  // The profile contains IndexedDB databases placed across the repositories.
  // The file create_db.js in the package was run locally, specifically it was
  // temporarily added to xpcshell.ini and then executed:
  // mach xpcshell-test --interactive dom/quota/test/xpcshell/create_db.js
  installPackage("getUsage_profile");

  info("Getting usage");

  getUsage(grabResultAndContinueHandler, /* getAll */ false);
  result = yield undefined;

  info("Verifying result");

  verifyResult(result, origins);

  info("Getting usage");

  getUsage(grabResultAndContinueHandler, /* getAll */ true);
  result = yield undefined;

  info("Verifying result");

  verifyResult(result, allOrigins);

  finishTest();
}