OLD | NEW |
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(); |
OLD | NEW |