blob: ac426ec70f813f93a894869c925fefc54fc64198 [file] [log] [blame]
<script src="../../../../resources/js-test.js"></script>
<script src="../../resources/shared.js"></script>
<script>
var child;
function waitForChildToBeClosed()
{
if (child && !child.closed) {
setTimeout(waitForChildToBeClosed, 0);
return;
}
if (window.testRunner) {
gc();
finishTheTest();
} else {
debug("The original blob object we created will go away after garbage collection. Since we can't reliably cause synchronous GC in the browser, we'll wait 5 seconds before continuing the test.");
setTimeout(finishTheTest, 5000);
}
}
child = window.open("", "childWindow");
if (child) {
child.close();
setTimeout(waitForChildToBeClosed, 0);
}
var testGenerator;
function continueWithEvent(event)
{
testGenerator.next(event);
}
function asyncContinue()
{
setTimeout("testGenerator.next();", 0);
}
function idbRequest(request)
{
request.onerror = continueWithEvent;
request.onsuccess = continueWithEvent;
}
var db;
function finishTheTest()
{
request = window.indexedDB.open("blob-svg-image1.html");
request.onsuccess = function(event) {
db = event.target.result;
testGenerator = testSteps();
testGenerator.next();
}
}
function* testSteps()
{
debug("Now let's retrieve the svg image blob.");
objectStore = db.transaction("TestObjectStore").objectStore("TestObjectStore");
idbRequest(objectStore.get("foo"));
event = yield;
var blob = event.target.result;
debug(" Result is " + blob);
const url = URL.createObjectURL(blob);
img = document.createElement("img");
img.onload = function(event) {
debug("Image loaded successfully");
URL.revokeObjectURL(url);
asyncContinue();
}
img.onerror = function(event) {
debug("Image failed to load");
URL.revokeObjectURL(url);
asyncContinue();
}
img.src = url;
document.body.appendChild(img);
yield;
finishJSTest();
}
</script>