Chromium Code Reviews| Index: LayoutTests/storage/indexeddb/blob-valid-before-commit.html |
| diff --git a/LayoutTests/storage/indexeddb/blob-valid-before-commit.html b/LayoutTests/storage/indexeddb/blob-valid-before-commit.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..09ad3c0d4ab899aaf816f888816f7691f42201b0 |
| --- /dev/null |
| +++ b/LayoutTests/storage/indexeddb/blob-valid-before-commit.html |
| @@ -0,0 +1,67 @@ |
| +<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; |
| + delete record; |
| + record = null; |
|
cmumford
2014/06/04 21:01:19
Do you need to set record to null?
jsbell
2014/06/04 21:56:26
Ditto (pointed out/missed/harmless/useless)
ericu
2014/06/06 22:57:00
Done.
|
| + 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> |
| + |