blob: 94226c99179644dd0f506e60904b740d409881d0 [file] [log] [blame]
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +00001<html>
2<head>
beidson@apple.comf321a852014-02-12 18:17:47 +00003<script src="../../resources/js-test.js"></script>
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +00004<script src="resources/shared.js"></script>
5</head>
6<body>
7<script>
beidson@apple.com63f70102016-05-06 21:04:25 +00008if (window.internals)
9 window.internals.settings.setIndexedDBWorkersEnabled(true);
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000010
11description("No crashes when there are event listeners in a worker on shutdown");
12
dgrogan@chromium.orgd044cd52012-11-21 00:45:17 +000013if (self.location.search == "?second") {
14 testPassed("Didn't crash!");
15 finishJSTest();
16} else {
dgrogan@chromium.org810530c2012-11-27 17:45:23 +000017 evalAndLog("workerGotBlocked = false");
dgrogan@chromium.orgd044cd52012-11-21 00:45:17 +000018 evalAndLog("gotVersionChangeEvent = false");
19 indexedDBTest(prepareDatabase, startTheWorker);
20}
21
22function prepareDatabase()
23{
24 debug("inside prepareDatabase");
25 preamble();
26 db = event.target.result;
dgrogan@chromium.org810530c2012-11-27 17:45:23 +000027 db.onversionchange = onVersionChange;
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000028}
29
dgrogan@chromium.org810530c2012-11-27 17:45:23 +000030function startTheWorker()
31{
beidson@apple.comf321a852014-02-12 18:17:47 +000032 worker = startWorker("resources/pending-version-change-on-exit.js?" + encodeURIComponent(dbname));
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000033 realFinishJSTest = finishJSTest;
34 worker.onerror = function(e) {
35 testFailed(e.message);
36 realFinishJSTest();
37 };
38 finishJSTest = function() {
dgrogan@chromium.org810530c2012-11-27 17:45:23 +000039 workerGotBlocked = true;
40 maybeReload();
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000041 }
42}
dgrogan@chromium.org810530c2012-11-27 17:45:23 +000043
44function onVersionChange(e)
45{
46 gotVersionChangeEvent = true;
47 maybeReload();
48};
49
50function maybeReload()
51{
52 if (gotVersionChangeEvent && workerGotBlocked)
53 self.location = self.location + "?second";
54};
55
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000056</script>
dgrogan@chromium.orgeb074492012-04-11 02:59:54 +000057</body>
58</html>