1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <!--
- 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 type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="text/javascript;version=1.7">
- /*
- * 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, false);
- // 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.parentNode.removeChild(iframe);
- iframe = null;
- scheduleGC();
- yield undefined;
- info("If we are still alive, then we win!");
- ok('Did not crash / trigger an assert!');
- finishTest();
- yield undefined;
- }
- </script>
- <script type="text/javascript;version=1.7" src="helpers.js"></script>
- </head>
- <body onload="runTest();"></body>
- <iframe id="iframe1"></iframe>
- </html>
|