dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 1 | <html> |
| 2 | <head> |
beidson@apple.com | f321a85 | 2014-02-12 18:17:47 +0000 | [diff] [blame] | 3 | <script src="../../resources/js-test.js"></script> |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 4 | <script src="resources/shared.js"></script> |
| 5 | </head> |
| 6 | <body> |
| 7 | <script> |
beidson@apple.com | 63f7010 | 2016-05-06 21:04:25 +0000 | [diff] [blame] | 8 | if (window.internals) |
| 9 | window.internals.settings.setIndexedDBWorkersEnabled(true); |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 10 | |
| 11 | description("No crashes when there are event listeners in a worker on shutdown"); |
| 12 | |
dgrogan@chromium.org | d044cd5 | 2012-11-21 00:45:17 +0000 | [diff] [blame] | 13 | if (self.location.search == "?second") { |
| 14 | testPassed("Didn't crash!"); |
| 15 | finishJSTest(); |
| 16 | } else { |
dgrogan@chromium.org | 810530c | 2012-11-27 17:45:23 +0000 | [diff] [blame] | 17 | evalAndLog("workerGotBlocked = false"); |
dgrogan@chromium.org | d044cd5 | 2012-11-21 00:45:17 +0000 | [diff] [blame] | 18 | evalAndLog("gotVersionChangeEvent = false"); |
| 19 | indexedDBTest(prepareDatabase, startTheWorker); |
| 20 | } |
| 21 | |
| 22 | function prepareDatabase() |
| 23 | { |
| 24 | debug("inside prepareDatabase"); |
| 25 | preamble(); |
| 26 | db = event.target.result; |
dgrogan@chromium.org | 810530c | 2012-11-27 17:45:23 +0000 | [diff] [blame] | 27 | db.onversionchange = onVersionChange; |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 28 | } |
| 29 | |
dgrogan@chromium.org | 810530c | 2012-11-27 17:45:23 +0000 | [diff] [blame] | 30 | function startTheWorker() |
| 31 | { |
beidson@apple.com | f321a85 | 2014-02-12 18:17:47 +0000 | [diff] [blame] | 32 | worker = startWorker("resources/pending-version-change-on-exit.js?" + encodeURIComponent(dbname)); |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 33 | realFinishJSTest = finishJSTest; |
| 34 | worker.onerror = function(e) { |
| 35 | testFailed(e.message); |
| 36 | realFinishJSTest(); |
| 37 | }; |
| 38 | finishJSTest = function() { |
dgrogan@chromium.org | 810530c | 2012-11-27 17:45:23 +0000 | [diff] [blame] | 39 | workerGotBlocked = true; |
| 40 | maybeReload(); |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 41 | } |
| 42 | } |
dgrogan@chromium.org | 810530c | 2012-11-27 17:45:23 +0000 | [diff] [blame] | 43 | |
| 44 | function onVersionChange(e) |
| 45 | { |
| 46 | gotVersionChangeEvent = true; |
| 47 | maybeReload(); |
| 48 | }; |
| 49 | |
| 50 | function maybeReload() |
| 51 | { |
| 52 | if (gotVersionChangeEvent && workerGotBlocked) |
| 53 | self.location = self.location + "?second"; |
| 54 | }; |
| 55 | |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 56 | </script> |
dgrogan@chromium.org | eb07449 | 2012-04-11 02:59:54 +0000 | [diff] [blame] | 57 | </body> |
| 58 | </html> |