OSDN Git Service

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