tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / storage / indexeddb / error-causes-abort-by-default.html
1 <html>
2 <head>
3 <script src="../../fast/js/resources/js-test-pre.js"></script>
4 <script src="resources/shared.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9 <script>
10
11 description("Verify that a transaction with an error aborts unless preventDefault() is called.");
12 if (window.layoutTestController) 
13     layoutTestController.waitUntilDone();
14
15 function test()
16 {
17     request = evalAndLog("webkitIndexedDB.open('error-causes-abort-by-default')");
18     request.onsuccess = setVersion;
19     request.onerror = unexpectedErrorCallback;
20 }
21
22 function setVersion()
23 {
24     db = evalAndLog("db = event.target.result");
25
26     request = evalAndLog("db.setVersion('new version')");
27     request.onsuccess = deleteExisting;
28     request.onerror = unexpectedErrorCallback;
29 }
30
31 function deleteExisting()
32 {
33     debug("setVersionSuccess():");
34     window.trans = evalAndLog("trans = event.target.result");
35     shouldBeTrue("trans !== null");
36     trans.onabort = unexpectedAbortCallback;
37     evalAndLog("trans.oncomplete = addData");
38
39     deleteAllObjectStores(db);
40
41     evalAndLog("db.createObjectStore('storeName', null)");
42 }
43
44 function addData()
45 {
46     trans = evalAndLog("trans = db.transaction(['storeName'], webkitIDBTransaction.READ_WRITE)");
47     evalAndLog("trans.onabort = unexpectedAbortCallback");
48     evalAndLog("trans.oncomplete = transactionCompleted");
49     store = evalAndLog("store = trans.objectStore('storeName')");
50     request = evalAndLog("store.add({x: 'value', y: 'zzz'}, 'key')");
51     request.onsuccess = addMore;
52     request.onerror = unexpectedErrorCallback;
53 }
54
55 function addMore()
56 {
57     
58     request = evalAndLog("event.target.source.add({x: 'value', y: 'zzz'}, 'key')");
59     request.onsuccess = unexpectedSuccessCallback;
60     request.addEventListener("error", preventTheDefault);
61 }
62
63 function preventTheDefault()
64 {
65     evalAndLog("event.preventDefault()");
66 }
67
68 function transactionCompleted()
69 {
70     testPassed("Transaction completed");
71     debug("");
72     debug("");
73     trans = evalAndLog("trans = db.transaction(['storeName'], webkitIDBTransaction.READ_WRITE)");
74     evalAndLog("trans.onabort = transactionAborted1");
75     evalAndLog("trans.oncomplete = unexpectedCompleteCallback");
76     store = evalAndLog("store = trans.objectStore('storeName')");
77     request = evalAndLog("store.add({x: 'value', y: 'zzz'}, 'key')");
78     request.onsuccess = unexpectedSuccessCallback;
79     request.onerror = allowDefault;
80 }
81
82 function allowDefault()
83 {
84     debug("Doing nothing to prevent the default action...");
85 }
86
87 function transactionAborted1()
88 {
89     testPassed("Transaction aborted");
90     debug("");
91     debug("");
92     trans = evalAndLog("trans = db.transaction(['storeName'], webkitIDBTransaction.READ_WRITE)");
93     evalAndLog("trans.onabort = transactionAborted2");
94     evalAndLog("trans.oncomplete = unexpectedCompleteCallback");
95     store = evalAndLog("store = trans.objectStore('storeName')");
96     request = evalAndLog("store.add({x: 'value', y: 'zzz'}, 'key')");
97     request.onsuccess = unexpectedSuccessCallback;
98     debug("Omitting an onerror handler");
99 }
100
101 function transactionAborted2()
102 {
103     testPassed("Transaction aborted");
104     done();
105 }
106
107 test();
108
109
110 </script>
111 </body>
112 </html>