Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
6 var testGenerator = testSteps();
8 function testSteps()
9 {
10 const name = this.window ? window.location.pathname : "Splendid Test";
12 const objectStoreData = [
13 { key: "1", value: "foo" },
14 { key: "2", value: "bar" },
15 { key: "3", value: "baz" }
16 ];
18 let request = indexedDB.open(name, 1);
19 request.onerror = errorHandler;
20 request.onupgradeneeded = grabEventAndContinueHandler;
21 request.onsuccess = grabEventAndContinueHandler;
22 let event = yield undefined; // upgradeneeded
24 let db = event.target.result;
26 let objectStore = db.createObjectStore("data", { keyPath: null });
28 // First, add all our data to the object store.
29 let addedData = 0;
30 for (let i in objectStoreData) {
31 request = objectStore.add(objectStoreData[i].value,
32 objectStoreData[i].key);
33 request.onerror = errorHandler;
34 request.onsuccess = function(event) {
35 if (++addedData == objectStoreData.length) {
36 testGenerator.send(event);
37 }
38 }
39 }
40 event = yield undefined; // testGenerator.send
42 // Now create the index.
43 objectStore.createIndex("set", "", { unique: true });
44 yield undefined; // success
46 let trans = db.transaction("data", "readwrite");
47 objectStore = trans.objectStore("data");
48 index = objectStore.index("set");
50 let request = index.get("bar");
51 request.onerror = errorHandler;
52 request.onsuccess = grabEventAndContinueHandler;
54 let event = yield undefined;
56 is(event.target.result, "bar", "Got correct result");
58 let request = objectStore.add("foopy", 4);
59 request.onerror = errorHandler;
60 request.onsuccess = grabEventAndContinueHandler;
62 yield undefined;
64 let request = index.get("foopy");
65 request.onerror = errorHandler;
66 request.onsuccess = grabEventAndContinueHandler;
68 let event = yield undefined;
70 is(event.target.result, "foopy", "Got correct result");
72 let request = objectStore.add("foopy", 5);
73 request.addEventListener("error", new ExpectError("ConstraintError", true));
74 request.onsuccess = unexpectedSuccessHandler;
76 trans.oncomplete = grabEventAndContinueHandler;
78 yield undefined;
79 yield undefined;
81 finishTest();
82 yield undefined;
83 }