Bug 1816170 - Disable perftest-on-autoland cron. r=aglavic
[gecko.git] / dom / indexedDB / test / unit / test_sandbox.js
blob20b34cebb56f6bdfbf056298f89d786c4a2fc855
1 /* Any copyright is dedicated to the Public Domain.
2  * http://creativecommons.org/publicdomain/zero/1.0/ */
4 function exerciseInterface() {
5   function DB(name, store) {
6     this.name = name;
7     this.store = store;
8     this._db = this._create();
9   }
11   DB.prototype = {
12     _create() {
13       var op = indexedDB.open(this.name);
14       op.onupgradeneeded = e => {
15         var db = e.target.result;
16         db.createObjectStore(this.store);
17       };
18       return new Promise(resolve => {
19         op.onsuccess = e => resolve(e.target.result);
20       });
21     },
23     _result(tx, op) {
24       return new Promise((resolve, reject) => {
25         op.onsuccess = e => resolve(e.target.result);
26         op.onerror = () => reject(op.error);
27         tx.onabort = () => reject(tx.error);
28       });
29     },
31     get(k) {
32       return this._db.then(db => {
33         var tx = db.transaction(this.store, "readonly");
34         var store = tx.objectStore(this.store);
35         return this._result(tx, store.get(k));
36       });
37     },
39     add(k, v) {
40       return this._db.then(db => {
41         var tx = db.transaction(this.store, "readwrite");
42         var store = tx.objectStore(this.store);
43         return this._result(tx, store.add(v, k));
44       });
45     },
46   };
48   var db = new DB("data", "base");
49   return db
50     .add("x", [10, {}])
51     .then(_ => db.get("x"))
52     .then(x => {
53       equal(x.length, 2);
54       equal(x[0], 10);
55       equal(typeof x[1], "object");
56       equal(Object.keys(x[1]).length, 0);
57     });
60 function run_test() {
61   do_get_profile();
63   let sb = new Cu.Sandbox("https://www.example.com", {
64     wantGlobalProperties: ["indexedDB"],
65   });
67   sb.equal = equal;
68   var innerPromise = new Promise((resolve, reject) => {
69     sb.test_done = resolve;
70     sb.test_error = reject;
71   });
72   Cu.evalInSandbox(
73     "(" +
74       exerciseInterface.toSource() +
75       ")()" +
76       ".then(test_done, test_error);",
77     sb
78   );
80   Cu.importGlobalProperties(["indexedDB"]);
81   do_test_pending();
82   Promise.all([innerPromise, exerciseInterface()]).then(do_test_finished);