JS Test Harness: Remove successfullyParsed from more tests
[WebKit-https.git] / LayoutTests / storage / indexeddb / mozilla / cursor-update-updates-indexes.html
1 <!DOCTYPE html>
2 <!--
3   original test: http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_cursor_update_updates_indexes.html?force=1
4   license of original test:
5     " Any copyright is dedicated to the Public Domain.
6       http://creativecommons.org/publicdomain/zero/1.0/ "
7 -->
8 <html>
9 <head>
10 <script src="../../../fast/js/resources/js-test-pre.js"></script>
11 <script src="../resources/shared.js"></script>
12 </head>
13 <body>
14 <p id="description"></p>
15 <div id="console"></div>
16 <script>
17
18 description("Test IndexedDB: mutating records with a r/w cursor updates indexes on those records");
19 if (window.layoutTestController)
20     layoutTestController.waitUntilDone();
21
22 function test()
23 {
24     indexedDB = evalAndLog("indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;");
25     shouldBeFalse("indexedDB == null");
26     IDBDatabaseException = evalAndLog("IDBDatabaseException = window.IDBDatabaseException || window.webkitIDBDatabaseException;");
27     shouldBeFalse("IDBDatabaseException == null");
28     IDBTransaction = evalAndLog("IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;");
29     shouldBeFalse("IDBTransaction == null");
30
31     name = window.location.pathname;
32     description = "My Test Database";
33     request = evalAndLog("indexedDB.open(name, description)");
34     request.onsuccess = openSuccess;
35     request.onerror = unexpectedErrorCallback;
36 }
37
38 function openSuccess()
39 {
40     debug("openSuccess():");
41     db = evalAndLog("db = event.target.result");
42     firstValue = evalAndLog("firstValue = 'hi';");
43     secondValue = evalAndLog("secondValue = 'bye';");
44     objectStoreInfo = evalAndLog("objectStoreInfo = [\n" +
45 "        { name: '1', options: {}, key: 1,\n" +
46 "          entry: { data: firstValue } },\n" +
47 "        { name: '2', options: { keyPath: 'foo' },\n" +
48 "          entry: { foo: 1, data: firstValue } },\n" +
49 "        { name: '3', options: { autoIncrement: true },\n" +
50 "          entry: { data: firstValue } },\n" +
51 "        { name: '4', options: { keyPath: 'foo', autoIncrement: true },\n" +
52 "          entry: { data: firstValue } },\n" +
53 "    ];");
54     i = evalAndLog("i = 0;");
55     setVersion();
56 }
57
58 function setVersion()
59 {
60     if (i < objectStoreInfo.length) {
61         info = evalAndLog("info = objectStoreInfo[i];");
62         request = evalAndLog("request = db.setVersion('1')");
63         request.onsuccess = setupObjectStoreAndCreateIndexAndAdd;
64         request.onerror = unexpectedErrorCallback;
65     } else {
66         done();
67     }
68 }
69
70 function setupObjectStoreAndCreateIndexAndAdd()
71 {
72     debug("setupObjectStoreAndCreateIndex():");
73     deleteAllObjectStores(db);
74
75     objectStore = evalAndLog("objectStore = db.createObjectStore(info.name, info.options);");
76
77     index = evalAndLog("index = objectStore.createIndex('data_index', 'data', { unique: false });");
78     uniqueIndex = evalAndLog("uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true });");
79     if (info.key) {
80         request = evalAndLog("request = objectStore.add(info.entry, info.key);");
81     } else {
82         request = evalAndLog("request = objectStore.add(info.entry);");
83     }
84     request.onsuccess = openCursor;
85     request.onerror = unexpectedErrorCallback;
86 }
87
88 function openCursor()
89 {
90     request = evalAndLog("request = objectStore.openCursor();");
91     request.onsuccess = updateCursor;
92     request.onerror = unexpectedErrorCallback;
93 }
94
95 function updateCursor()
96 {
97     cursor = evalAndLog("cursor = request.result;");
98     value = evalAndLog("value = cursor.value;");
99     value.data = evalAndLog("value.data = secondValue;");
100     request = evalAndLog("request = cursor.update(value);");
101     request.onsuccess = getIndex1;
102     request.onerror = unexpectedErrorCallback;
103 }
104
105 function getIndex1()
106 {
107     request = evalAndLog("request = index.get(secondValue);");
108     request.onsuccess = checkIndex1AndGetIndex2;
109     request.onerror = unexpectedErrorCallback;
110 }
111
112 function checkIndex1AndGetIndex2()
113 {
114     shouldBe("value.data", "event.target.result.data");
115     request = evalAndLog("request = uniqueIndex.get(secondValue);");
116     request.onsuccess = checkIndex2;
117     request.onerror = unexpectedErrorCallback;
118 }
119
120 function checkIndex2()
121 {
122     shouldBe("value.data", "event.target.result.data");
123     evalAndLog("i++;");
124     setVersion();
125 }
126
127
128 test();
129
130 </script>
131 </body>
132 </html>
133