Confirm that blobs can be read back before their records are committed.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


dbname = "blob-valid-before-commit.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
store = db.createObjectStore('store')
store.put(value, key)
request = store.get(key)
PASS document.getElementById('frame0').contentDocument.body.innerText is blobAContent
PASS document.getElementById('frame1').contentDocument.body.innerText is blobAContent
PASS document.getElementById('frame2').contentDocument.body.innerText is blobBContent
PASS successfullyParsed is true

TEST COMPLETE
  
