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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js

Issue 2084053004: IndexedDB: Defer delete calls when there is a running upgrade (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased, made delete lists contain unique_ptrs 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 that a deleteDatabase called while handling an upgradeneeded e vent is queued and fires its events at the right time. The close() call to unblo ck the delete occurs in the connection's 'versionchange' event handler."); 6 description("Test that a deleteDatabase called while handling an upgradeneeded e vent is queued and fires its events at the right time. The close() call to unblo ck the delete occurs in the connection's 'versionchange' event handler.");
7 7
8 function test() 8 function test()
9 { 9 {
10 setDBNameFromPath(); 10 setDBNameFromPath();
11 11
12 request = evalAndLog("indexedDB.deleteDatabase(dbname)"); 12 request = evalAndLog("indexedDB.deleteDatabase(dbname)");
13 request.onsuccess = initiallyDeleted; 13 request.onsuccess = initiallyDeleted;
14 request.onerror = unexpectedErrorCallback; 14 request.onerror = unexpectedErrorCallback;
15 } 15 }
16 16
17 var sawUpgradeNeeded = false; 17 var sawUpgradeNeeded = false;
18 var sawOpenSuccess = false;
18 var sawVersionChange = false; 19 var sawVersionChange = false;
19 20
20 function initiallyDeleted(evt) { 21 function initiallyDeleted(evt) {
21 preamble(evt); 22 preamble(evt);
22 evalAndLog("request = indexedDB.open(dbname, 1)"); 23 evalAndLog("request = indexedDB.open(dbname, 1)");
23 request.onupgradeneeded = upgradeNeededCallback; 24 request.onupgradeneeded = upgradeNeededCallback;
24 request.onsuccess = unexpectedSuccessCallback; 25 request.onsuccess = openSuccessCallback;
25 } 26 }
26 27
27 function upgradeNeededCallback(evt) 28 function upgradeNeededCallback(evt)
28 { 29 {
29 preamble(evt); 30 preamble(evt);
30 shouldBeFalse("sawUpgradeNeeded"); 31 shouldBeFalse("sawUpgradeNeeded");
32 shouldBeFalse("sawOpenSuccess");
31 evalAndLog("sawUpgradeNeeded = true"); 33 evalAndLog("sawUpgradeNeeded = true");
32 shouldBe("event.oldVersion", "0"); 34 shouldBe("event.oldVersion", "0");
33 shouldBe("event.newVersion", "1"); 35 shouldBe("event.newVersion", "1");
34 36
35 evalAndLog("db = event.target.result"); 37 evalAndLog("db = event.target.result");
36 db.onversionchange = versionChangeCallback; 38 db.onversionchange = versionChangeCallback;
37 request2 = evalAndLog("deleteRequest = indexedDB.deleteDatabase(dbname)"); 39 request2 = evalAndLog("deleteRequest = indexedDB.deleteDatabase(dbname)");
38 evalAndLog("request2.onsuccess = deleteSuccessCallback"); 40 evalAndLog("request2.onsuccess = deleteSuccessCallback");
39 request2.onerror = unexpectedErrorCallback; 41 request2.onerror = unexpectedErrorCallback;
40 request2.onblocked = unexpectedBlockedCallback;; 42 request2.onblocked = unexpectedBlockedCallback;;
41 } 43 }
42 44
43 function versionChangeCallback(evt) { 45 function versionChangeCallback(evt) {
44 preamble(evt); 46 preamble(evt);
47 shouldBeTrue("sawOpenSuccess");
45 shouldBe("event.oldVersion", "1"); 48 shouldBe("event.oldVersion", "1");
46 shouldBeNull("event.newVersion"); 49 shouldBeNull("event.newVersion");
47 evalAndLog("sawVersionChange = true"); 50 evalAndLog("sawVersionChange = true");
51 evalAndLog("db.close()");
52 }
48 53
49 debug("Closing the connection before the IDBOpenDBRequest's success fires wi ll cause the open to fail."); 54 function openSuccessCallback(evt)
50 evalAndLog("db.close()"); 55 {
56 preamble(evt);
57 shouldBeTrue("sawUpgradeNeeded");
58 shouldBeFalse("sawVersionChange");
59 evalAndLog("sawOpenSuccess = true");
51 } 60 }
52 61
53 function deleteSuccessCallback(evt) 62 function deleteSuccessCallback(evt)
54 { 63 {
55 preamble(evt); 64 preamble(evt);
56 shouldBeTrue("sawVersionChange"); 65 shouldBeTrue("sawVersionChange");
57 shouldBeTrue("sawUpgradeNeeded"); 66 shouldBeTrue("sawUpgradeNeeded");
58 finishJSTest(); 67 finishJSTest();
59 } 68 }
60 69
61 test(); 70 test();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698