3 <script src="../../fast/js/resources/js-test-pre.js"></script>
4 <script src="resources/shared.js"></script>
7 <p id="description"></p>
8 <div id="console"></div>
11 description("Test IndexedDB's IDBCursor.continue() with a key parameter.");
12 if (window.layoutTestController)
13 layoutTestController.waitUntilDone();
15 var date = new Date();
17 // In order of how it should be sorted by IndexedDB.
30 new Date(date.valueOf() + 1000),
39 function openDatabase()
41 result = evalAndLog("webkitIndexedDB.open('cursor-continue')");
42 result.onsuccess = setVersion;
43 result.onerror = unexpectedErrorCallback;
48 window.db = evalAndLog("db = event.target.result");
50 result = evalAndLog("db.setVersion('new version')");
51 result.onsuccess = deleteExisting;
52 result.onerror = unexpectedErrorCallback;
55 function deleteExisting()
57 window.trans = evalAndLog("trans = event.target.result");
58 shouldBeTrue("trans !== null");
59 trans.onabort = unexpectedAbortCallback;
61 deleteAllObjectStores(db);
63 window.objectStore = evalAndLog("db.createObjectStore('someObjectStore')");
64 window.indexObject = evalAndLog("objectStore.createIndex('someIndex', 'x')");
71 result = evalAndLog("objectStore.add({'x': testData[nextToAdd]}, nextToAdd)");
72 result.onsuccess = ++window.nextToAdd < testData.length ? addData : ascendingTest;
73 result.onerror = unexpectedErrorCallback;
76 function ascendingTest()
79 var request = evalAndLog("indexObject.openKeyCursor(null, webkitIDBCursor.NEXT)");
80 request.onsuccess = ascendingCallback;
81 request.onerror = unexpectedErrorCallback;
85 function ascendingCallback()
88 if (window.stage == 0) {
89 shouldBe("event.target.result.primaryKey", "0");
90 evalAndLog("event.target.result.continue(3.14159)");
91 } else if (window.stage == 1) {
92 shouldBe("event.target.result.primaryKey", "3");
93 evalAndLog("event.target.result.continue(3.14159)");
94 } else if (window.stage == 2) {
95 shouldBe("event.target.result.primaryKey", "4");
96 evalAndLog("event.target.result.continue(3.14159)");
97 } else if (window.stage == 3) {
98 shouldBe("event.target.result.primaryKey", "5");
99 evalAndLog("event.target.result.continue(12)");
100 } else if (window.stage == 4) {
101 shouldBe("event.target.result.primaryKey", "7");
102 evalAndLog("event.target.result.continue(date)");
103 } else if (window.stage == 5) {
104 shouldBe("event.target.result.primaryKey", "9");
105 evalAndLog("event.target.result.continue(date)");
106 } else if (window.stage == 6) {
107 shouldBe("event.target.result.primaryKey", "10");
108 evalAndLog("event.target.result.continue(date)");
109 } else if (window.stage == 7) {
110 shouldBe("event.target.result.primaryKey", "11");
111 evalAndLog("event.target.result.continue('A bit1')");
112 } else if (window.stage == 8) {
113 shouldBe("event.target.result.primaryKey", "14");
114 evalAndLog("event.target.result.continue('A bit3')");
115 } else if (window.stage == 9) {
116 shouldBe("event.target.result.primaryKey", "16");
117 evalAndLog("event.target.result.continue('the BIGGEST string')");
118 } else if (window.stage == 10) {
119 shouldBe("event.target.result.primaryKey", "17");
120 evalAndLog("event.target.result.continue('the BIGGEST string')");
121 } else if (window.stage == 11) {
122 shouldBeNull("event.target.result");
126 testFailed("Illegal stage.");
131 function descendingTest()
134 var request = evalAndLog("indexObject.openKeyCursor(null, webkitIDBCursor.PREV)");
135 request.onsuccess = descendingCallback;
136 request.onerror = unexpectedErrorCallback;
140 function descendingCallback()
142 if (window.stage == 0) {
143 shouldBe("event.target.result.primaryKey", "17");
144 evalAndLog("event.target.result.continue('A bit2')");
145 } else if (window.stage == 1) {
146 shouldBe("event.target.result.primaryKey", "15");
147 evalAndLog("event.target.result.continue('A bit2')");
148 } else if (window.stage == 2) {
149 shouldBe("event.target.result.primaryKey", "14");
150 evalAndLog("event.target.result.continue(date)");
151 } else if (window.stage == 3) {
152 shouldBe("event.target.result.primaryKey", "10");
153 evalAndLog("event.target.result.continue(date)");
154 } else if (window.stage == 4) {
155 shouldBe("event.target.result.primaryKey", "9");
156 evalAndLog("event.target.result.continue(1)");
157 } else if (window.stage == 5) {
158 shouldBe("event.target.result.primaryKey", "2");
159 evalAndLog("event.target.result.continue(1)");
160 } else if (window.stage == 6) {
161 shouldBe("event.target.result.primaryKey", "1");
162 evalAndLog("event.target.result.continue(1)");
163 } else if (window.stage == 7) {
164 shouldBe("event.target.result.primaryKey", "0");
165 evalAndLog("event.target.result.continue(1)");
166 } else if (window.stage == 8) {
167 shouldBeNull("event.target.result");
171 testFailed("Illegal stage.");
176 openDatabase(); // The first step.