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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-versionchange.js

Issue 2148253003: IndexedDB: Implement explicit queue for IDBOpenDBRequests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Base class needs virtual dtor Created 4 years, 5 months 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
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("Test the order when there are pending setVersion, delete and open c alls."); 6 description("Test the order when there are pending open (with upgrade) and delet e calls.");
7 7
8 indexedDBTest(null, h1OpenSuccess); 8 indexedDBTest(null, h1OpenSuccess);
9 function h1OpenSuccess(evt) 9 function h1OpenSuccess(evt)
10 { 10 {
11 preamble(evt); 11 preamble(evt);
12 evalAndLog("setVersionBlockedEventFired = false"); 12 evalAndLog("openWithUpgradeBlockedEventFired = false");
13 evalAndLog("versionChangeComplete = false"); 13 evalAndLog("upgradeComplete = false");
14 evalAndLog("deleteDatabaseBlockedEventFired = false"); 14 evalAndLog("deleteDatabaseBlockedEventFired = false");
15 evalAndLog("deleteDatabaseComplete = false"); 15 evalAndLog("deleteDatabaseComplete = false");
16 16
17
cmumford 2016/07/15 14:55:37 delete extra line.
jsbell 2016/07/15 17:22:22 Done.
17 evalAndLog("h1 = event.target.result"); 18 evalAndLog("h1 = event.target.result");
18 19
19 h1.onversionchange = function h1OnVersionChange(evt) { 20 h1.onversionchange = function h1OnVersionChange(evt) {
20 preamble(evt); 21 preamble(evt);
21 shouldBe("event.target.version", "1"); 22 shouldBe("event.target.version", "1");
22 shouldBe("event.oldVersion", "1"); 23 shouldBe("event.oldVersion", "1");
23 shouldBe("event.newVersion", "2"); 24 shouldBe("event.newVersion", "2");
24 25
25 h1.onversionchange = function h1SecondOnVersionChange(evt) { 26 h1.onversionchange = function h1SecondOnVersionChange(evt) {
26 preamble(evt); 27 preamble(evt);
27 shouldBe("event.target.version", "1"); 28 testFailed('Second "versionchange" event should not be seen');
28 shouldBe("event.oldVersion", "1");
29 shouldBeNull("event.newVersion");
30 }; 29 };
31 }; 30 };
32 31
32 debug('');
33 debug("Open h2:"); 33 debug("Open h2:");
34 request = evalAndLog("indexedDB.open(dbname)"); 34 request = evalAndLog("indexedDB.open(dbname)");
35 request.onblocked = unexpectedBlockedCallback; 35 request.onblocked = unexpectedBlockedCallback;
36 request.onerror = unexpectedErrorCallback; 36 request.onerror = unexpectedErrorCallback;
37 request.onsuccess = function h2OpenSuccess(evt) { 37 request.onsuccess = function h2OpenSuccess(evt) {
38 preamble(evt); 38 preamble(evt);
39 evalAndLog("h2OpenSuccess = true");
39 h2 = event.target.result; 40 h2 = event.target.result;
40 41
41 h2.onversionchange = function h2OnVersionChange(evt) { 42 h2.onversionchange = function h2OnVersionChange(evt) {
42 preamble(evt); 43 preamble(evt);
43 shouldBe("event.target.version", "1"); 44 shouldBe("event.target.version", "1");
44 shouldBe("event.oldVersion", "1"); 45 shouldBe("event.oldVersion", "1");
45 shouldBe("event.newVersion", "2"); 46 shouldBe("event.newVersion", "2");
46 47
47 h2.onversionchange = function h2OnSecondVersionChange(evt) { 48 h2.onversionchange = function h2OnSecondVersionChange(evt) {
48 preamble(evt); 49 preamble(evt);
49 shouldBe("event.target.version", "1"); 50 testFailed('Second "versionchange" event should not be seen');
50 shouldBe("event.oldVersion", "1");
51 shouldBe("event.newVersion", "null");
52 }; 51 };
53 }; 52 };
54 53
55 debug("Try to open h3:"); 54 debug('');
55 debug("Open h3:");
56 request = evalAndLog("indexedDB.open(dbname, 2)"); 56 request = evalAndLog("indexedDB.open(dbname, 2)");
57 request.onerror = unexpectedErrorCallback; 57 request.onerror = unexpectedErrorCallback;
58 request.onsuccess = function h3OpenSuccess(evt) { 58 request.onsuccess = function h3OpenSuccess(evt) {
59 preamble(evt); 59 preamble(evt);
60 h3 = event.target.result; 60 h3 = event.target.result;
61 shouldBeTrue("upgradeComplete");
62 shouldBeFalse("deleteDatabaseBlockedEventFired");
63 shouldBeFalse("deleteDatabaseComplete");
61 evalAndLog("h3.close()"); 64 evalAndLog("h3.close()");
62 }; 65 };
63 request.onblocked = function h3Blocked(evt) { 66 request.onblocked = function h3Blocked(evt) {
64 preamble(evt); 67 preamble(evt);
65 evalAndLog("setVersionBlockedEventFired = true"); 68 evalAndLog("openWithUpgradeBlockedEventFired = true");
66 69
67 debug("Try to open h4:"); 70 debug('');
71 debug("Open h4:");
68 request = evalAndLog("indexedDB.open(dbname)"); 72 request = evalAndLog("indexedDB.open(dbname)");
69 request.onblocked = unexpectedBlockedCallback; 73 request.onblocked = unexpectedBlockedCallback;
70 request.onerror = unexpectedErrorCallback; 74 request.onerror = unexpectedErrorCallback;
71 request.onsuccess = function h4OpenSuccess(evt) { 75 request.onsuccess = function h4OpenSuccess(evt) {
72 preamble(evt); 76 preamble(evt);
73 h4 = event.target.result; 77 h4 = event.target.result;
74 h4.onversionchange = unexpectedVersionChangeCallback; 78 h4.onversionchange = unexpectedVersionChangeCallback;
75 79
76 shouldBeTrue("setVersionBlockedEventFired");
77 shouldBeTrue("versionChangeComplete");
78 shouldBeTrue("deleteDatabaseBlockedEventFired"); 80 shouldBeTrue("deleteDatabaseBlockedEventFired");
79 shouldBeTrue("deleteDatabaseComplete"); 81 shouldBeTrue("deleteDatabaseComplete");
80 82
81 finishJSTest(); 83 finishJSTest();
82 }; 84 };
83 85
86 debug('');
87 debug('Close connections to unblock previous requests:');
88 evalAndLog("h1.close()");
84 evalAndLog("h2.close()"); 89 evalAndLog("h2.close()");
85 }; 90 };
86 request.onupgradeneeded = function h3OnUpgradeneeded(evt) { 91 request.onupgradeneeded = function h3OnUpgradeneeded(evt) {
87 preamble(evt); 92 preamble(evt);
88 93
89 transaction = event.target.transaction; 94 transaction = event.target.transaction;
90 transaction.onabort = unexpectedAbortCallback; 95 transaction.onabort = unexpectedAbortCallback;
91 transaction.oncomplete = function transactionOnComplete(evt) { 96 transaction.oncomplete = function transactionOnComplete(evt) {
92 preamble(evt); 97 preamble(evt);
93 evalAndLog("versionChangeComplete = true"); 98 evalAndLog("upgradeComplete = true");
94 }; 99 };
95 }; 100 };
96 101
102 debug('... and deleteDatabase()');
97 request = evalAndLog("indexedDB.deleteDatabase(dbname)"); 103 request = evalAndLog("indexedDB.deleteDatabase(dbname)");
98 request.onerror = unexpectedErrorCallback; 104 request.onerror = unexpectedErrorCallback;
99 request.onblocked = function deleteDatabaseOnBlocked(evt) { 105 request.onblocked = function deleteDatabaseOnBlocked(evt) {
100 preamble(evt); 106 preamble(evt);
101 evalAndLog("deleteDatabaseBlockedEventFired = true"); 107 evalAndLog("deleteDatabaseBlockedEventFired = true");
102
103 evalAndLog("h1.close()");
104 }; 108 };
105 request.onsuccess = function deleteDatabaseOnSuccess(evt) { 109 request.onsuccess = function deleteDatabaseOnSuccess(evt) {
106 preamble(evt); 110 preamble(evt);
107 evalAndLog("deleteDatabaseComplete = true"); 111 evalAndLog("deleteDatabaseComplete = true");
112 shouldBeTrue("openWithUpgradeBlockedEventFired");
113 shouldBeTrue("upgradeComplete");
114 evalAndLog("deleteDatabaseBlockedEventFired = true");
108 }; 115 };
109 }; 116 };
110 } 117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698