Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: LayoutTests/storage/indexeddb/blob-valid-after-deletion.html

Issue 18590006: Blob support for IDB [Blink] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: aaaaaaaand one more nit. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/storage/indexeddb/blob-valid-after-deletion.html
diff --git a/LayoutTests/storage/indexeddb/blob-valid-after-deletion.html b/LayoutTests/storage/indexeddb/blob-valid-after-deletion.html
new file mode 100644
index 0000000000000000000000000000000000000000..c87902ca025a91c636e44291e00494b707ee3003
--- /dev/null
+++ b/LayoutTests/storage/indexeddb/blob-valid-after-deletion.html
@@ -0,0 +1,86 @@
+<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 stay alive after their records are deleted.");
+
+indexedDBTest(prepareDatabase, doRead);
+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)");
+ value = null;
+}
+
+function doRead()
+{
+ preamble();
+ evalAndLog("trans = db.transaction('store')");
+ evalAndLog("store = trans.objectStore('store')");
+ evalAndLog("request = store.get(key)");
+ request.onsuccess = didRead;
+}
+
+function didRead()
+{
+ record = request.result;
+ trans.oncomplete = doDelete;
+}
+
+function doDelete()
+{
+ evalAndLog("trans = db.transaction('store', 'readwrite')");
+ evalAndLog("store = trans.objectStore('store')");
+ evalAndLog("request = store.delete(key)");
+ trans.oncomplete = didDelete;
+}
+
+function didDelete()
+{
+ 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>
+

Powered by Google App Engine
This is Rietveld 408576698