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..b1ad2075962f9bc2a8376f30b936757f4ce6da39 |
--- /dev/null |
+++ b/LayoutTests/storage/indexeddb/blob-valid-before-commit.html |
@@ -0,0 +1,65 @@ |
+<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> |
+ |