diff options
Diffstat (limited to 'dom/indexedDB/test/test_blob_worker_crash.html')
-rw-r--r-- | dom/indexedDB/test/test_blob_worker_crash.html | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dom/indexedDB/test/test_blob_worker_crash.html b/dom/indexedDB/test/test_blob_worker_crash.html new file mode 100644 index 0000000000..8d242446a9 --- /dev/null +++ b/dom/indexedDB/test/test_blob_worker_crash.html @@ -0,0 +1,61 @@ +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html> +<head> + <title>Indexed Database Blob Worker Crash Test</title> + + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + + <script type="text/javascript"> + /* import-globals-from helpers.js */ + /* + * This tests ensures that if the last live reference to a Blob is on the + * worker and the database has already been shutdown, that there is no crash + * when the owning page gets cleaned up which causes the termination of the + * worker which in turn garbage collects during its shutdown. + * + * We do the IndexedDB stuff in the iframe so we can kill it as part of our + * test. Doing it out here is no good. + */ + + function* testSteps() + { + info("Open iframe, wait for it to do its IndexedDB stuff."); + + let iframe = document.getElementById("iframe1"); + window.addEventListener("message", grabEventAndContinueHandler); + // Put it in a different origin to be safe + iframe.src = // "http://example.org" + + window.location.pathname.replace( + "test_blob_worker_crash.html", + "blob_worker_crash_iframe.html"); + + let event = yield unexpectedSuccessHandler; + is(event.data.result, "ready", "worker initialized correctly"); + + info("Trigger a GC to clean-up the iframe's main-thread IndexedDB"); + scheduleGC(); + yield undefined; + + info("Kill the iframe, forget about it, trigger a GC."); + iframe.remove(); + iframe = null; + scheduleGC(); + yield undefined; + + info("If we are still alive, then we win!"); + ok("Did not crash / trigger an assert!"); + + finishTest(); + } + </script> + <script type="text/javascript" src="helpers.js"></script> + +</head> + +<body onload="runTest();"></body> + <iframe id="iframe1"></iframe> +</html> |