| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test that setVersion is not blocked if handle closed in versionchange handler."); |
| |
| indexedDBTest(prepareDatabase, onOpen); |
| evalAndLog("blockedEventFired = false"); |
| evalAndLog("versionchangeEventFired = false"); |
| function prepareDatabase(evt) |
| { |
| preamble(evt); |
| evalAndLog("h1 = event.target.result"); |
| evalAndLog("h1.onversionchange = h1OnVersionChange"); |
| } |
| |
| function h1OnVersionChange(evt) |
| { |
| preamble(evt); |
| evalAndLog("versionchangeEventFired = true"); |
| shouldBe("event.oldVersion", "1"); |
| shouldBe("event.newVersion", "2"); |
| evalAndLog("h1.close()"); |
| } |
| |
| function onOpen(evt) |
| { |
| request = evalAndLog("indexedDB.open(dbname, 2)"); |
| request.onerror = unexpectedErrorCallback; |
| request.onblocked = function h2OpenBlocked(evt) { |
| preamble(evt); |
| shouldBe("event.oldVersion", "1"); |
| shouldBe("event.newVersion", "2"); |
| evalAndLog("blockedEventFired = true"); |
| }; |
| request.onupgradeneeded = function h2UpgradeNeeded(evt) { |
| preamble(evt); |
| shouldBe("event.oldVersion", "1"); |
| shouldBe("event.newVersion", "2"); |
| }; |
| request.onsuccess = function h2OpenSuccess(evt) { |
| preamble(evt); |
| shouldBeTrue("versionchangeEventFired"); |
| shouldBeFalse("blockedEventFired"); |
| finishJSTest(); |
| }; |
| } |