| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test closing a database connection in IndexedDB."); |
| |
| indexedDBTest(prepareDatabase, runFirstRegularTransaction); |
| function prepareDatabase() |
| { |
| db = event.target.result; |
| store = evalAndLog("store = db.createObjectStore('store')"); |
| request = evalAndLog("request = store.put('x', 'y')"); |
| request.onsuccess = onPutSuccess; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function onPutSuccess() |
| { |
| testPassed("Put success") |
| } |
| |
| function runFirstRegularTransaction() |
| { |
| debug("running first transaction") |
| currentTransaction = evalAndLog("currentTransaction = db.transaction(['store'], 'readwrite')"); |
| currentTransaction.onabort = unexpectedAbortCallback; |
| currentTransaction.oncomplete = firstTransactionComplete; |
| objectStore = currentTransaction.objectStore('store'); |
| request = evalAndLog("objectStore.put('a', 'b')"); |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function firstTransactionComplete() |
| { |
| evalAndLog("db.close()"); |
| evalAndExpectException("db.transaction(['store'], 'readwrite')", "DOMException.INVALID_STATE_ERR", "'InvalidStateError'"); |
| |
| debug("") |
| debug("verify that we can reopen the db after calling close") |
| request = evalAndLog("indexedDB.open(dbname)"); |
| request.onsuccess = onSecondOpen |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function onSecondOpen() { |
| second_db = evalAndLog("second_db = event.target.result"); |
| currentTransaction = evalAndLog("currentTransaction = second_db.transaction(['store'], 'readwrite')"); |
| store = currentTransaction.objectStore('store'); |
| request = evalAndLog("request = store.put('1', '2')"); |
| request.onsuccess = onFinalPutSuccess; |
| request.onerror = unexpectedErrorCallback; |
| currentTransaction.oncomplete = finishJSTest; |
| currentTransaction.onabort = unexpectedAbortCallback; |
| } |
| |
| function onFinalPutSuccess() { |
| testPassed("final put success"); |
| } |