Test that deleting an object store and a database containing blobs doesn't crash.

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


dbname = "blob-delete-objectstore-db.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname, 1)
store0 = db.createObjectStore('store0')
store1 = db.createObjectStore('store1')
store0.put(blobA, key)
db.close()

reopen():
request = indexedDB.open(dbname, 2)

deleteObjectStore():
db.deleteObjectStore('store0')

didDeleteObjectStore():
trans = db.transaction('store1', 'readwrite')
store1 = trans.objectStore('store1')
store1.put(blobB, key)
db.close()
request = indexedDB.deleteDatabase(dbname)
Database deleted.
PASS successfullyParsed is true

TEST COMPLETE

