| <html> |
| <head> |
| <script src="../../fast/js/resources/js-test-pre.js"></script> |
| <script src="resources/shared.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| |
| description("Test that data inserted into IndexedDB does not get corrupted on disk."); |
| if (window.layoutTestController) |
| layoutTestController.waitUntilDone(); |
| |
| function test() |
| { |
| request = evalAndLog("webkitIndexedDB.open('data-corruption')"); |
| request.onsuccess = openSuccess; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function openSuccess() |
| { |
| debug("openSuccess():"); |
| window.db = evalAndLog("db = event.target.result"); |
| |
| request = evalAndLog("db.setVersion('new version')"); |
| request.onsuccess = setVersionSuccess; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function setVersionSuccess() |
| { |
| debug("setVersionSuccess():"); |
| window.trans = evalAndLog("trans = event.target.result"); |
| shouldBeTrue("trans !== null"); |
| trans.onabort = unexpectedAbortCallback; |
| trans.oncomplete = addData; |
| |
| deleteAllObjectStores(db); |
| |
| evalAndLog("db.createObjectStore('storeName')"); |
| } |
| |
| var testDate = new Date('February 24, 1955 12:00:08'); |
| |
| function addData() |
| { |
| debug("addData():"); |
| var transaction = evalAndLog("transaction = db.transaction(['storeName'], webkitIDBTransaction.READ_WRITE)"); |
| var request = evalAndLog("request = transaction.objectStore('storeName').add({x: testDate}, 'key')"); |
| request.onerror = unexpectedErrorCallback; |
| transaction.oncomplete = getData; |
| } |
| |
| function getData() |
| { |
| debug("addData():"); |
| var transaction = evalAndLog("transaction = db.transaction(['storeName'], webkitIDBTransaction.READ_ONLY)"); |
| var request = evalAndLog("request = transaction.objectStore('storeName').get('key')"); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = doCheck; |
| } |
| |
| function doCheck() |
| { |
| shouldBeTrue("event.target.result.x.toString() == testDate.toString()"); |
| done(); |
| } |
| |
| test(); |
| |
| |
| </script> |
| </body> |
| </html> |