3 original test: http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_odd_result_order.html?raw=1
4 license of original test:
5 " Any copyright is dedicated to the Public Domain.
6 http://creativecommons.org/publicdomain/zero/1.0/ "
10 <script src="../../../fast/js/resources/js-test-pre.js"></script>
11 <script src="../resources/shared.js"></script>
14 <p id="description"></p>
15 <div id="console"></div>
18 description("Test IndexedDB: request result persists in setTimeout callback");
19 if (window.layoutTestController)
20 layoutTestController.waitUntilDone();
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 IDBDatabase = evalAndLog("IDBDatabase = window.IDBDatabase || window.webkitIDBDatabase;");
29 shouldBeFalse("IDBDatabase == null");
30 IDBTransaction = evalAndLog("IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;");
31 shouldBeFalse("IDBTransaction == null");
33 name = window.location.pathname;
34 description = "My Test Database";
35 request = evalAndLog("indexedDB.open(name, description)");
36 request.onsuccess = openSuccess;
37 request.onerror = unexpectedErrorCallback;
40 function openSuccess()
42 debug("openSuccess():");
43 db = evalAndLog("db = null;");
44 setTimeout(function() {
45 db = evalAndLog("db = request.result;");
50 function checkDatabaseType()
52 debug("checkDatabaseType():");
53 shouldBeTrue("db instanceof IDBDatabase");
54 db.onerror = unexpectedErrorCallback;
55 request = evalAndLog("request = db.setVersion('1')");
56 request.onsuccess = setupObjectStore;
57 request.onerror = unexpectedErrorCallback;
60 function setupObjectStore()
62 debug("setupObjectStore():");
63 deleteAllObjectStores(db);
64 objectStore = evalAndLog("objectStore = db.createObjectStore('foo', { keyPath: 'key', autoIncrement: true });");
65 index = evalAndLog("index = objectStore.createIndex('foo', 'index');");
66 evalAndLog("event.target.transaction.oncomplete = addRecord;");
71 debug("addRecord():");
72 objectStore = evalAndLog("objectStore = db.transaction('foo', IDBTransaction.READ_WRITE).objectStore('foo');");
73 data = evalAndLog("data = { key: 5, index: 10 };");
74 request = evalAndLog("request = objectStore.add(data);");
75 request.onsuccess = addSuccess;
76 request.onerror = unexpectedErrorCallback;
81 debug("addSuccess():");
82 key = evalAndLog("key = null;");
83 setTimeout(function() {
84 key = evalAndLog("key = request.result;");
89 function checkAddedKey()
91 debug("checkAddedKey():");
92 shouldBe("key", "data.key");
93 objectStore = evalAndLog("objectStore = db.transaction('foo').objectStore('foo');");
94 request = evalAndLog("request = objectStore.get(data.key);");
95 request.onsuccess = getSuccess;
96 request.onerror = unexpectedErrorCallback;
101 debug("getSuccess():");
102 record = evalAndLog("record = null;");
103 setTimeout(function() {
104 record = evalAndLog("record = request.result;");
109 function checkRetrievedKey()
111 debug("checkRetrievedKey():");
112 shouldBe("record.key", "data.key");
113 shouldBe("record.index", "data.index");
117 function deleteRecord()
119 debug("deleteRecord():");
120 objectStore = evalAndLog("objectStore = db.transaction('foo', IDBTransaction.READ_WRITE).objectStore('foo');");
121 request = evalAndLog("request = objectStore.delete(data.key);");
122 request.onsuccess = deleteSuccess;
123 request.onerror = unexpectedErrorCallback;
126 function deleteSuccess()
128 debug("deleteSuccess():");