Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: LayoutTests/storage/indexeddb/resources/version-change-abort.js

Issue 243523003: Fire window.onerror for uncaught IndexedDB errors (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Don't capture full stack unless devtools is visible Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 if (this.importScripts) { 1 if (this.importScripts) {
2 importScripts('../../../resources/js-test.js'); 2 importScripts('../../../resources/js-test.js');
3 importScripts('shared.js'); 3 importScripts('shared.js');
4 } 4 }
5 5
6 description("Ensure that aborted VERSION_CHANGE transactions are completely roll ed back"); 6 description("Ensure that aborted VERSION_CHANGE transactions are completely roll ed back");
7 7
8 self.isOnErrorTest = true;
9
8 indexedDBTest(prepareDatabase, setVersion1Complete); 10 indexedDBTest(prepareDatabase, setVersion1Complete);
9 function prepareDatabase() 11 function prepareDatabase()
10 { 12 {
11 db = event.target.result; 13 db = event.target.result;
12 trans = event.target.transaction; 14 trans = event.target.transaction;
13 shouldBeTrue("trans instanceof IDBTransaction"); 15 shouldBeTrue("trans instanceof IDBTransaction");
14 trans.onabort = unexpectedAbortCallback; 16 trans.onabort = unexpectedAbortCallback;
15 trans.onerror = unexpectedErrorCallback; 17 trans.onerror = unexpectedErrorCallback;
16 18
17 evalAndLog("store = db.createObjectStore('store1')"); 19 evalAndLog("store = db.createObjectStore('store1')");
18 } 20 }
19 21
20 function setVersion1Complete() 22 function setVersion1Complete()
21 { 23 {
22 debug("setVersion1 complete"); 24 debug("setVersion1 complete");
23 shouldBe("db.version", "1"); 25 shouldBe("db.version", "1");
24 debug(""); 26 debug("");
25 db.close(); 27 db.close();
26 28
27 evalAndLog("vcreq = indexedDB.open(dbname, 2)"); 29 evalAndLog("vcreq = indexedDB.open(dbname, 2)");
28 vcreq.onupgradeneeded = inSetVersion2; 30 vcreq.onupgradeneeded = inSetVersion2;
29 vcreq.onerror = setVersion2Abort; 31 vcreq.onerror = setVersion2Abort;
30 vcreq.onblocked = unexpectedBlockedCallback; 32 vcreq.onblocked = unexpectedBlockedCallback;
31 vcreq.onsuccess = unexpectedSuccessCallback; 33 vcreq.onsuccess = unexpectedSuccessCallback;
34 expectError();
32 } 35 }
33 36
34 function inSetVersion2() 37 function inSetVersion2()
35 { 38 {
36 db = event.target.result; 39 db = event.target.result;
37 debug("setVersion2() callback"); 40 debug("setVersion2() callback");
38 shouldBe("db.version", "2"); 41 shouldBe("db.version", "2");
39 shouldBeTrue("vcreq.transaction instanceof IDBTransaction"); 42 shouldBeTrue("vcreq.transaction instanceof IDBTransaction");
40 trans = vcreq.result; 43 trans = vcreq.result;
41 trans.onerror = unexpectedErrorCallback; 44 trans.onerror = unexpectedErrorCallback;
42 trans.oncomplete = unexpectedCompleteCallback; 45 trans.oncomplete = unexpectedCompleteCallback;
43 46
44 evalAndLog("store = db.deleteObjectStore('store1')"); 47 evalAndLog("store = db.deleteObjectStore('store1')");
45 evalAndLog("store = db.createObjectStore('store2')"); 48 evalAndLog("store = db.createObjectStore('store2')");
46 49
47 // Ensure the test harness error handler is not invoked.
48 self.originalWindowOnError = self.onerror;
49 self.onerror = null;
50
51 debug("raising exception"); 50 debug("raising exception");
52 throw new Error("This should *NOT* be caught!"); 51 throw new Error("This should *NOT* be caught!");
53 } 52 }
54 53
55 function setVersion2Abort() 54 function setVersion2Abort(evt)
56 { 55 {
57 debug(""); 56 debug("");
58 debug("setVersion2Abort() callback"); 57 debug("setVersion2Abort() callback");
58 evt.preventDefault();
59 db.close();
59 60
60 // Restore test harness error handler.
61 self.onerror = self.originalWindowOnError;
62 db.close();
63 evalAndLog("request = indexedDB.open(dbname)"); 61 evalAndLog("request = indexedDB.open(dbname)");
64 request.onblocked = unexpectedBlockedCallback; 62 request.onblocked = unexpectedBlockedCallback;
65 request.onupgradeneeded = unexpectedUpgradeNeededCallback; 63 request.onupgradeneeded = unexpectedUpgradeNeededCallback;
66 request.onerror = unexpectedErrorCallback; 64 request.onerror = unexpectedErrorCallback;
67 request.onsuccess = function (e) { 65 request.onsuccess = function (e) {
68 db = event.target.result; 66 db = event.target.result;
69 shouldBe("db.version", "1"); 67 shouldBe("db.version", "1");
70 shouldBeTrue("db.objectStoreNames.contains('store1')"); 68 shouldBeTrue("db.objectStoreNames.contains('store1')");
71 shouldBeFalse("db.objectStoreNames.contains('store2')"); 69 shouldBeFalse("db.objectStoreNames.contains('store2')");
72 70
73 finishJSTest(); 71 finishJSTest();
74 } 72 };
75 } 73 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698