| <!-- webkit-test-runner [ useEphemeralSession=true ] --> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| <script src="resources/shared.js"></script> |
| </head> |
| <body> |
| <script> |
| description("No crashes when there are event listeners in a worker on shutdown"); |
| |
| if (self.location.search == "?second") { |
| testPassed("Didn't crash!"); |
| finishJSTest(); |
| } else { |
| evalAndLog("workerGotBlocked = false"); |
| evalAndLog("gotVersionChangeEvent = false"); |
| indexedDBTest(prepareDatabase, startTheWorker); |
| } |
| |
| function prepareDatabase() |
| { |
| debug("inside prepareDatabase"); |
| preamble(); |
| db = event.target.result; |
| db.onversionchange = onVersionChange; |
| } |
| |
| function startTheWorker() |
| { |
| worker = startWorker("resources/pending-version-change-on-exit.js?" + encodeURIComponent(dbname)); |
| realFinishJSTest = finishJSTest; |
| worker.onerror = function(e) { |
| testFailed(e.message); |
| realFinishJSTest(); |
| }; |
| finishJSTest = function() { |
| workerGotBlocked = true; |
| maybeReload(); |
| } |
| } |
| |
| function onVersionChange(e) |
| { |
| gotVersionChangeEvent = true; |
| maybeReload(); |
| }; |
| |
| function maybeReload() |
| { |
| if (gotVersionChangeEvent && workerGotBlocked) |
| self.location = self.location + "?second"; |
| }; |
| |
| </script> |
| </body> |
| </html> |