Test that IndexedDB objects that have been deleted throw exceptions On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) testStore(): deletedStore = connection.createObjectStore('deletedStore') connection.deleteObjectStore('deletedStore') Expecting exception from deletedStore.put(0, 0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to store record in an IDBObjectStore: The object store has been deleted. Expecting exception from deletedStore.add(0, 0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to store record in an IDBObjectStore: The object store has been deleted. Expecting exception from deletedStore.delete(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'delete' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.delete(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'delete' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.get(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.get(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.clear() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'clear' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.openCursor() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.openCursor(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.openCursor(0, 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.openCursor(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.openCursor(IDBKeyRange.only(0), 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.createIndex('name', 'path') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.index('name') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'index' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.deleteIndex('name') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.count() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.count(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted. Expecting exception from deletedStore.count(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted. testIndex(): store = connection.createObjectStore('store') deletedIndex = store.createIndex('deletedIndex', 'path') store.deleteIndex('deletedIndex') Expecting exception from deletedIndex.openCursor() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openCursor(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openCursor(0, 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openCursor(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openCursor(IDBKeyRange.only(0), 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openKeyCursor() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openKeyCursor(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openKeyCursor(0, 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openKeyCursor(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.openKeyCursor(IDBKeyRange.only(0), 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.get(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.get(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.getKey(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.getKey(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.count() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.count(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from deletedIndex.count(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. testTransitiveDeletion(): deletedStore = connection.createObjectStore('deletedStore') indexOfDeletedStore = deletedStore.createIndex('index', 'path') connection.deleteObjectStore('deletedStore') Expecting exception from indexOfDeletedStore.openCursor() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openCursor(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openCursor(0, 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openCursor(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openCursor(IDBKeyRange.only(0), 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openKeyCursor() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openKeyCursor(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openKeyCursor(0, 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.openKeyCursor(IDBKeyRange.only(0), 'next') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.get(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.get(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.getKey(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.getKey(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.count() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.count(0) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. Expecting exception from indexOfDeletedStore.count(IDBKeyRange.only(0)) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted. testObjectStoreCursor(): deletedStore = connection.createObjectStore('deletedStore') deletedStore.put(0, 0) deletedStore.openCursor() cursor = request.result PASS cursor.key is 0 PASS cursor.value is 0 connection.deleteObjectStore('deletedStore') Expecting exception from cursor.delete() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.update(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.continue() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.advance(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted. testIndexCursor(): store.put({id: 123}, 0) deletedIndex = store.createIndex('deletedIndex', 'id') deletedIndex.openCursor() cursor = request.result PASS cursor.key is 123 PASS cursor.primaryKey is 0 store.deleteIndex('deletedIndex') Expecting exception from cursor.delete() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.update(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.continue() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.advance(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted. testIndexOfDeletedStoreCursor(): deletedStore = connection.createObjectStore('deletedStore') deletedStore.put({id: 123}, 0) index = deletedStore.createIndex('index', 'id') index.openCursor() cursor = request.result PASS cursor.key is 123 PASS cursor.primaryKey is 0 connection.deleteObjectStore('deletedStore') Expecting exception from cursor.delete() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.update(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.continue() PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted. Expecting exception from cursor.advance(1) PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted. PASS successfullyParsed is true TEST COMPLETE