tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / storage / indexeddb / mozilla / odd-result-order.html
1 <!DOCTYPE html>
2 <!--
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/ "
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: request result persists in setTimeout callback");
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     IDBDatabase = evalAndLog("IDBDatabase = window.IDBDatabase || window.webkitIDBDatabase;");
29     shouldBeFalse("IDBDatabase == null");
30     IDBTransaction = evalAndLog("IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;");
31     shouldBeFalse("IDBTransaction == null");
32
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;
38 }
39
40 function openSuccess()
41 {
42     debug("openSuccess():");
43     db = evalAndLog("db = null;");
44     setTimeout(function() {
45         db = evalAndLog("db = request.result;");
46         checkDatabaseType();
47     }, 0);
48 }
49
50 function checkDatabaseType()
51 {
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;
58 }
59
60 function setupObjectStore()
61 {
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;");
67 }
68
69 function addRecord()
70 {
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;
77 }
78
79 function addSuccess()
80 {
81     debug("addSuccess():");
82     key = evalAndLog("key = null;");
83     setTimeout(function() {
84       key = evalAndLog("key = request.result;");
85       checkAddedKey();
86     }, 0);
87 }
88
89 function checkAddedKey()
90 {
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;
97 }
98
99 function getSuccess()
100 {
101     debug("getSuccess():");
102     record = evalAndLog("record = null;");
103     setTimeout(function() {
104       record = evalAndLog("record = request.result;");
105       checkRetrievedKey();
106     }, 0);
107 }
108
109 function checkRetrievedKey()
110 {
111     debug("checkRetrievedKey():");
112     shouldBe("record.key", "data.key");
113     shouldBe("record.index", "data.index");
114     deleteRecord();
115 }
116
117 function deleteRecord()
118 {
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;
124 }
125
126 function deleteSuccess()
127 {
128     debug("deleteSuccess():");
129     done();
130 }
131
132
133 test();
134
135 </script>
136 </body>
137 </html>