Test that data inserted into IndexedDB does not get corrupted on disk.

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

dbname = "data-corruption.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
setVersionSuccess():
PASS event.dataLoss is "none"
trans = event.target.transaction
PASS trans is non-null.
db.createObjectStore('storeName')
addData():
transaction = db.transaction(['storeName'], 'readwrite')
request = transaction.objectStore('storeName').add({x: testDate}, 'key')
addData():
transaction = db.transaction(['storeName'], 'readonly')
request = transaction.objectStore('storeName').get('key')
PASS event.target.result.x.toString() is testDate.toString()
PASS successfullyParsed is true

TEST COMPLETE

