3 <link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
4 <script src="../../fast/js/resources/js-test-pre.js"></script>
5 <script src="../../fast/js/resources/js-test-post-function.js"></script>
6 <script src="resources/shared.js"></script>
9 <p id="description"></p>
10 <div id="console"></div>
13 description("Verify that you can put the same data in 2 different databases without uniqueness constraints firing.");
14 if (window.layoutTestController)
15 layoutTestController.waitUntilDone();
21 result = evalAndLog("webkitIndexedDB.open('name', 'description')");
23 result = evalAndLog("webkitIndexedDB.open('name2', 'description2')");
25 result.onsuccess = setVersion;
26 result.onerror = unexpectedErrorCallback;
31 verifySuccessEvent(event);
32 db = evalAndLog("db = event.result");
34 result = evalAndLog("db.setVersion('new version')");
36 result.onsuccess = deleteExisting;
37 result.onerror = unexpectedErrorCallback;
40 function deleteExisting()
42 debug("setVersionSuccess():");
43 verifySuccessEvent(event);
44 window.trans = evalAndLog("trans = event.result");
45 shouldBeTrue("trans !== null");
46 trans.onabort = unexpectedAbortCallback;
48 deleteAllObjectStores(db, createIndex);
51 function createIndex()
53 window.store = evalAndLog("db.createObjectStore('storeName', null)");
54 window.indexObject = evalAndLog("store.createIndex('indexName', 'x')");
60 result = evalAndLog("store.add({x: 'value', y: 'zzz'}, 'key')");
62 result.onsuccess = addMore;
63 result.onerror = unexpectedErrorCallback;
68 verifySuccessEvent(event);
70 result = evalAndLog("event.source.add({x: 'value2', y: 'zzz2'}, 'key2')");
72 result.onsuccess = getData;
73 result.onerror = unexpectedErrorCallback;
78 verifySuccessEvent(event);
80 result = evalAndLog("indexObject.getKey('value')");
82 result.onsuccess = getObjectData;
83 result.onerror = unexpectedErrorCallback;
86 function getObjectData()
88 verifySuccessEvent(event);
89 shouldBeEqualToString("event.result", "key");
91 result = evalAndLog("indexObject.get('value')");
93 result.onsuccess = getDataFail;
94 result.onerror = unexpectedErrorCallback;
97 function getDataFail()
99 verifySuccessEvent(event);
100 shouldBeEqualToString("event.result.x", "value");
101 shouldBeEqualToString("event.result.y", "zzz");
103 result = evalAndLog("indexObject.getKey('does not exist')");
104 verifyResult(result);
105 result.onsuccess = unexpectedSuccessCallback;
106 result.onerror = getObjectDataFail;
109 function getObjectDataFail()
111 verifyErrorEvent(event);
112 shouldBe("event.code", "webkitIDBDatabaseException.NOT_FOUND_ERR");
114 result = evalAndLog("indexObject.get('does not exist')");
115 verifyResult(result);
116 result.onsuccess = unexpectedSuccessCallback;
117 result.onerror = openKeyCursor;
120 function openKeyCursor()
122 verifyErrorEvent(event);
123 shouldBe("event.code", "webkitIDBDatabaseException.NOT_FOUND_ERR");
125 window.result = evalAndLog("indexObject.openKeyCursor()");
126 verifyResult(result);
127 result.onsuccess = cursor1Continue;
128 result.onerror = unexpectedErrorCallback;
131 function cursor1Continue()
133 verifySuccessEvent(event);
134 shouldBeFalse("event.result === null");
135 shouldBeEqualToString("event.result.key", "value");
136 shouldBeEqualToString("event.result.value", "key");
138 // We re-use the last result object.
139 evalAndLog("event.result.continue()");
140 verifyResult(window.result);
141 window.result.onsuccess = cursor1Continue2;
144 function cursor1Continue2()
146 verifySuccessEvent(event);
147 shouldBeFalse("event.result === null");
148 shouldBeEqualToString("event.result.key", "value2");
149 shouldBeEqualToString("event.result.value", "key2");
151 // We re-use the last result object.
152 evalAndLog("event.result.continue()");
153 verifyResult(window.result);
154 window.result.onsuccess = openObjectCursor;
157 function openObjectCursor()
159 verifySuccessEvent(event);
160 shouldBeTrue("event.result === null");
162 window.result = evalAndLog("indexObject.openCursor()");
163 verifyResult(result);
164 result.onsuccess = cursor2Continue;
165 result.onerror = unexpectedErrorCallback;
168 function cursor2Continue()
170 verifySuccessEvent(event);
171 shouldBeFalse("event.result === null");
172 shouldBeEqualToString("event.result.key", "value");
173 shouldBeEqualToString("event.result.value.x", "value");
174 shouldBeEqualToString("event.result.value.y", "zzz");
176 // We re-use the last result object.
177 evalAndLog("event.result.continue()");
178 verifyResult(window.result);
179 window.result.onsuccess = cursor2Continue2;
182 function cursor2Continue2()
184 verifySuccessEvent(event);
185 shouldBeFalse("event.result === null");
186 shouldBeEqualToString("event.result.key", "value2");
187 shouldBeEqualToString("event.result.value.x", "value2");
188 shouldBeEqualToString("event.result.value.y", "zzz2");
190 // We re-use the last result object.
191 evalAndLog("event.result.continue()");
192 verifyResult(window.result);
193 window.result.onsuccess = last;
198 verifySuccessEvent(event);
199 shouldBeTrue("event.result === null");
209 var successfullyParsed = true;