| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test the order when there are pending setVersion, delete and open calls."); |
| |
| indexedDBTest(null, h1OpenSuccess); |
| function h1OpenSuccess(evt) |
| { |
| preamble(evt); |
| evalAndLog("setVersionBlockedEventFired = false"); |
| evalAndLog("versionChangeComplete = false"); |
| evalAndLog("deleteDatabaseBlockedEventFired = false"); |
| evalAndLog("deleteDatabaseComplete = false"); |
| |
| evalAndLog("h1 = event.target.result"); |
| |
| h1.onversionchange = function h1OnVersionChange(evt) { |
| preamble(evt); |
| shouldBe("event.target.version", "1"); |
| shouldBe("event.oldVersion", "1"); |
| shouldBe("event.newVersion", "2"); |
| |
| h1.onversionchange = function h1SecondOnVersionChange(evt) { |
| preamble(evt); |
| shouldBe("event.target.version", "1"); |
| shouldBe("event.oldVersion", "1"); |
| shouldBeNull("event.newVersion"); |
| }; |
| }; |
| |
| debug("Open h2:"); |
| request = evalAndLog("indexedDB.open(dbname)"); |
| request.onblocked = unexpectedBlockedCallback; |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function h2OpenSuccess(evt) { |
| preamble(evt); |
| h2 = event.target.result; |
| |
| h2.onversionchange = function h2OnVersionChange(evt) { |
| preamble(evt); |
| shouldBe("event.target.version", "1"); |
| shouldBe("event.oldVersion", "1"); |
| shouldBe("event.newVersion", "2"); |
| }; |
| |
| debug("Try to open h3:"); |
| request = evalAndLog("indexedDB.open(dbname, 2)"); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function h3OpenSuccess(evt) { |
| preamble(evt); |
| h3 = event.target.result; |
| evalAndLog("h3.close()"); |
| }; |
| request.onblocked = function h3Blocked(evt) { |
| preamble(evt); |
| evalAndLog("setVersionBlockedEventFired = true"); |
| |
| debug("Try to open h4:"); |
| request = evalAndLog("indexedDB.open(dbname)"); |
| request.onblocked = unexpectedBlockedCallback; |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function h4OpenSuccess(evt) { |
| preamble(evt); |
| h4 = event.target.result; |
| h4.onversionchange = unexpectedVersionChangeCallback; |
| |
| shouldBeTrue("setVersionBlockedEventFired"); |
| shouldBeTrue("versionChangeComplete"); |
| shouldBeTrue("deleteDatabaseBlockedEventFired"); |
| shouldBeTrue("deleteDatabaseComplete"); |
| |
| finishJSTest(); |
| }; |
| |
| evalAndLog("h2.close()"); |
| }; |
| request.onupgradeneeded = function h3OnUpgradeneeded(evt) { |
| preamble(evt); |
| |
| transaction = event.target.transaction; |
| transaction.onabort = unexpectedAbortCallback; |
| transaction.oncomplete = function transactionOnComplete(evt) { |
| preamble(evt); |
| evalAndLog("versionChangeComplete = true"); |
| }; |
| }; |
| |
| request = evalAndLog("indexedDB.deleteDatabase(dbname)"); |
| request.onerror = unexpectedErrorCallback; |
| request.onblocked = function deleteDatabaseOnBlocked(evt) { |
| preamble(evt); |
| evalAndLog("deleteDatabaseBlockedEventFired = true"); |
| |
| evalAndLog("h1.close()"); |
| }; |
| request.onsuccess = function deleteDatabaseOnSuccess(evt) { |
| preamble(evt); |
| evalAndLog("deleteDatabaseComplete = true"); |
| }; |
| }; |
| } |