blob: cdadce69043804a2008eda0cd2fd1f432dda6d80 [file] [log] [blame]
<html>
<head>
<script src="../../../../resources/js-test.js"></script>
<script src="resources/shared.js"></script>
</head>
<body>
<iframe id="frame0"></iframe>
<iframe id="frame1"></iframe>
<iframe id="frame2"></iframe>
<script>
description("Confirm that blobs can be read back before their records are committed.");
indexedDBTest(prepareDatabase);
function prepareDatabase()
{
db = event.target.result;
event.target.transaction.onabort = unexpectedAbortCallback;
evalAndLog("store = db.createObjectStore('store')");
blobAContent = "Blob A content";
blobBContent = "Blob B content";
var blobA = new Blob([blobAContent], {"type" : "text/plain"});
var blobB = new Blob([blobBContent], {"type" : "text/plain"});
key = "key"
value = { a0: blobA, a1: blobA, b0: blobB };
evalAndLog("store.put(value, key)");
evalAndLog("request = store.get(key)");
request.onsuccess = didRead;
}
function didRead()
{
record = request.result;
urlA0 = URL.createObjectURL(record.a0);
urlA1 = URL.createObjectURL(record.a1);
urlB = URL.createObjectURL(record.b0);
document.getElementById('frame0').src = urlA0;
document.getElementById('frame0').onload = verification;
document.getElementById('frame1').src = urlA1;
document.getElementById('frame1').onload = verification;
document.getElementById('frame2').src = urlB;
document.getElementById('frame2').onload = verification;
}
var loadCount = 0;
function verification()
{
if (++loadCount < 3)
return;
URL.revokeObjectURL(urlA0);
URL.revokeObjectURL(urlA1);
URL.revokeObjectURL(urlB);
shouldBe("document.getElementById('frame0').contentDocument.body.innerText",
"blobAContent");
shouldBe("document.getElementById('frame1').contentDocument.body.innerText",
"blobAContent");
shouldBe("document.getElementById('frame2').contentDocument.body.innerText",
"blobBContent");
finishJSTest();
}
</script>
</body>
</html>