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 a transaction with an error aborts unless preventDefault() is called.");
14 if (window.layoutTestController)
15 layoutTestController.waitUntilDone();
19 result = evalAndLog("webkitIndexedDB.open('name')");
21 result.onsuccess = setVersion;
22 result.onerror = unexpectedErrorCallback;
27 verifySuccessEvent(event);
28 db = evalAndLog("db = event.result");
30 result = evalAndLog("db.setVersion('new version')");
32 result.onsuccess = deleteExisting;
33 result.onerror = unexpectedErrorCallback;
36 function deleteExisting()
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");
45 deleteAllObjectStores(db, createObjectStore);
48 function createObjectStore()
50 evalAndLog("db.createObjectStore('storeName', null)");
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')");
61 result.onsuccess = addMore;
62 result.onerror = unexpectedErrorCallback;
67 verifySuccessEvent(event);
69 result = evalAndLog("event.source.add({x: 'value', y: 'zzz'}, 'key')");
71 result.onsuccess = unexpectedSuccessCallback;
72 result.addEventListener("error", preventTheDefault);
75 function preventTheDefault()
77 evalAndLog("event.preventDefault()");
80 function transactionCompleted()
82 testPassed("Transaction completed");
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')");
91 result.onsuccess = unexpectedSuccessCallback;
92 result.onerror = allowDefault;
95 function allowDefault()
97 debug("Doing nothing to prevent the default action...");
100 function transactionAborted1()
102 testPassed("Transaction aborted");
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");
115 function transactionAborted2()
117 testPassed("Transaction aborted");
123 var successfullyParsed = true;