Title: [194595] trunk
Revision
194595
Author
beid...@apple.com
Date
2016-01-05 11:57:07 -0800 (Tue, 05 Jan 2016)

Log Message

Modern IDB: Error message updates for two failing tests.
https://bugs.webkit.org/show_bug.cgi?id=152735

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Covered by existing tests).

Add error messages for various operations on deleted objects.

* Modules/indexeddb/client/IDBCursorImpl.cpp:
(WebCore::IDBClient::IDBCursor::update):
(WebCore::IDBClient::IDBCursor::advance):
(WebCore::IDBClient::IDBCursor::continueFunction):
(WebCore::IDBClient::IDBCursor::deleteFunction):

* Modules/indexeddb/client/IDBIndexImpl.cpp:
(WebCore::IDBClient::IDBIndex::openCursor):
(WebCore::IDBClient::IDBIndex::doCount):
(WebCore::IDBClient::IDBIndex::openKeyCursor):
(WebCore::IDBClient::IDBIndex::doGet):
(WebCore::IDBClient::IDBIndex::doGetKey):

* Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
(WebCore::IDBClient::IDBObjectStore::openCursor):
(WebCore::IDBClient::IDBObjectStore::get):
(WebCore::IDBClient::IDBObjectStore::putOrAdd):
(WebCore::IDBClient::IDBObjectStore::deleteFunction):
(WebCore::IDBClient::IDBObjectStore::clear):
(WebCore::IDBClient::IDBObjectStore::createIndex):
(WebCore::IDBClient::IDBObjectStore::index):
(WebCore::IDBClient::IDBObjectStore::deleteIndex):
(WebCore::IDBClient::IDBObjectStore::doCount):

* bindings/js/JSIDBObjectStoreCustom.cpp:
(WebCore::JSIDBObjectStore::createIndex):

LayoutTests:

- Update results to accommodate new error messages.
- openKeyCursor on IDBObjectStore has been removed, so remove that from the results.
- "undefined" and "null" are invalid keys, so update the keypath-basics test to reflect this.

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/deleted-objects-expected.txt:
* storage/indexeddb/keypath-basics-expected.txt:
* storage/indexeddb/resources/keypath-basics.js:
* storage/indexeddb/transaction-basics-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (194594 => 194595)


--- trunk/LayoutTests/ChangeLog	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/ChangeLog	2016-01-05 19:57:07 UTC (rev 194595)
@@ -1,5 +1,22 @@
 2016-01-05  Brady Eidson  <beid...@apple.com>
 
+        Modern IDB: Error message updates for two failing tests.
+        https://bugs.webkit.org/show_bug.cgi?id=152735
+
+        Reviewed by Alex Christensen.
+
+        - Update results to accommodate new error messages.
+        - openKeyCursor on IDBObjectStore has been removed, so remove that from the results.
+        - "undefined" and "null" are invalid keys, so update the keypath-basics test to reflect this.
+        
+        * platform/mac-wk1/TestExpectations:
+        * storage/indexeddb/deleted-objects-expected.txt:
+        * storage/indexeddb/keypath-basics-expected.txt:
+        * storage/indexeddb/resources/keypath-basics.js:
+        * storage/indexeddb/transaction-basics-expected.txt:
+
+2016-01-05  Brady Eidson  <beid...@apple.com>
+
         IndexedDB TestExpectations gardening.
 
         Reviewed by Alex Christensen.

Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (194594 => 194595)


--- trunk/LayoutTests/platform/mac-wk1/TestExpectations	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations	2016-01-05 19:57:07 UTC (rev 194595)
@@ -85,10 +85,6 @@
 storage/indexeddb/intversion-long-queue.html [ Skip ]
 storage/indexeddb/transaction-starvation.html [ Skip ]
 
-# IDB tests with text failures related to error message differences
-storage/indexeddb/deleted-objects.html [ Failure ]
-storage/indexeddb/keypath-basics.html [ Failure ]
-
 # IDB tests with other text failures
 fast/history/page-cache-indexed-closed-db.html [ Failure ]
 storage/indexeddb/intversion-gated-on-delete.html [ Failure ]

Modified: trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt (194594 => 194595)


--- trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/storage/indexeddb/deleted-objects-expected.txt	2016-01-05 19:57:07 UTC (rev 194595)
@@ -17,12 +17,12 @@
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_STATE_ERR
 PASS ename is 'InvalidStateError'
-Exception message: Failed to execute 'put' on 'IDBObjectStore': The object store has been deleted.
+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 execute 'add' on 'IDBObjectStore': The object store has been deleted.
+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
@@ -73,31 +73,6 @@
 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.openKeyCursor()
-PASS Exception was thrown.
-PASS code is DOMException.INVALID_STATE_ERR
-PASS ename is 'InvalidStateError'
-Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
-Expecting exception from deletedStore.openKeyCursor(0)
-PASS Exception was thrown.
-PASS code is DOMException.INVALID_STATE_ERR
-PASS ename is 'InvalidStateError'
-Exception message: Failed to execute 'openKeyCursor' on 'IDBObjectStore': The object store has been deleted.
-Expecting exception from deletedStore.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 'IDBObjectStore': The object store has been deleted.
-Expecting exception from deletedStore.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 'IDBObjectStore': The object store has been deleted.
-Expecting exception from deletedStore.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 '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

Modified: trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt (194594 => 194595)


--- trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/storage/indexeddb/keypath-basics-expected.txt	2016-01-05 19:57:07 UTC (rev 194595)
@@ -11,16 +11,6 @@
 store = db.createObjectStore('name')
 PASS store.keyPath is null
 Deleted all object stores.
-store = db.createObjectStore('name', {keyPath: null})
-PASS store.keyPath is null
-index = store.createIndex('name', null)
-PASS index.keyPath is 'null'
-Deleted all object stores.
-store = db.createObjectStore('name', {keyPath: undefined})
-PASS store.keyPath is null
-index = store.createIndex('name', undefined)
-PASS index.keyPath is 'undefined'
-Deleted all object stores.
 store = db.createObjectStore('name', {keyPath: ''})
 PASS store.keyPath is ''
 index = store.createIndex('name', '')
@@ -154,514 +144,524 @@
 Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ''})
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_ACCESS_ERR
-Exception message: InvalidAccessError: DOM IDBDatabase Exception 15
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
 Deleted all object stores.
 Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ['a']})
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_ACCESS_ERR
-Exception message: InvalidAccessError: DOM IDBDatabase Exception 15
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
 Deleted all object stores.
 Expecting exception from store = db.createObjectStore('storeName', {autoIncrement: true, keyPath: ['']})
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_ACCESS_ERR
-Exception message: InvalidAccessError: DOM IDBDatabase Exception 15
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The autoIncrement option was set but the keyPath option was empty or an array.
 Deleted all object stores.
 
 Key paths which are never valid:
+Expecting exception from db.createObjectStore('name').createIndex('name', null)
+PASS Exception was thrown.
+PASS code is DOMException.SYNTAX_ERR
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
+Deleted all object stores.
+Expecting exception from db.createObjectStore('name').createIndex('name', undefined)
+PASS Exception was thrown.
+PASS code is DOMException.SYNTAX_ERR
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
+Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: ' '})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', ' ')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo '})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo ')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo bar'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo bar')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo. bar'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo. bar')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo .bar'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo .bar')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo..bar'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo..bar')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '+foo'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '+foo')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: 'foo%'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', 'foo%')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '1'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '1')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '1.0'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '1.0')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: []})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', [])
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0300'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0300')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0903'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0903')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0300'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0300')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u203F'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u203F')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u200C'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u200C')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u200D'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u200D')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u002D'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u002D')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0028'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0028')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0029'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0029')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00AB'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00AB')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00BB'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00BB')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0021'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0021')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u002B'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u002B')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00A2'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A2')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u005E'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u005E')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00A6'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A6')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00A0'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00A0')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u2028'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u2028')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u2029'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u2029')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u0000'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u0000')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\u00AD'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\u00AD')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\uD800'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\uD800')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\uE000'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\uE000')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\uFFFE'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\uFFFE')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '\uFFFF'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '\uFFFF')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u002D'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u002D')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u0028'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0028')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u0029'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0029')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00AB'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00AB')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00BB'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00BB')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u0021'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0021')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u002B'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u002B')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A2'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A2')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u005E'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u005E')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A6'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A6')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00A0'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00A0')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u2028'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u2028')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u2029'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u2029')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u0000'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u0000')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\u00AD'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\u00AD')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\uD800'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\uD800')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\uE000'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\uE000')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\uFFFE'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\uFFFE')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 Expecting exception from db.createObjectStore('name', {keyPath: '_\uFFFF'})
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path.
 Expecting exception from db.createObjectStore('name').createIndex('name', '_\uFFFF')
 PASS Exception was thrown.
 PASS code is DOMException.SYNTAX_ERR
-Exception message: SyntaxError: DOM IDBDatabase Exception 12
+Exception message: Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.
 Deleted all object stores.
 PASS successfullyParsed is true
 

Modified: trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js (194594 => 194595)


--- trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/storage/indexeddb/resources/keypath-basics.js	2016-01-05 19:57:07 UTC (rev 194595)
@@ -15,8 +15,6 @@
     deleteAllObjectStores(db);
 
     testKeyPaths = [
-        { keyPath: "null", storeExpected: "null", indexExpected: "'null'" },
-        { keyPath: "undefined", storeExpected: "null", indexExpected: "'undefined'" },
         { keyPath: "''" },
         { keyPath: "'foo'" },
         { keyPath: "'foo.bar.baz'" },
@@ -78,6 +76,12 @@
 
     debug("");
     debug("Key paths which are never valid:");
+
+    evalAndExpectException("db.createObjectStore('name').createIndex('name', null)", "DOMException.SYNTAX_ERR");
+    deleteAllObjectStores(db);
+    evalAndExpectException("db.createObjectStore('name').createIndex('name', undefined)", "DOMException.SYNTAX_ERR");
+    deleteAllObjectStores(db);
+    
     testKeyPaths = [
         "' '",
         "'foo '",
@@ -141,6 +145,7 @@
         "'_\\uFFFE'", // Special
         "'_\\uFFFF'"  // Special
     ];
+   
     testKeyPaths.forEach(function (keyPath) {
         evalAndExpectException("db.createObjectStore('name', {keyPath: " + keyPath + "})", "DOMException.SYNTAX_ERR");
         evalAndExpectException("db.createObjectStore('name').createIndex('name', " + keyPath + ")", "DOMException.SYNTAX_ERR");

Modified: trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt (194594 => 194595)


--- trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/LayoutTests/storage/indexeddb/transaction-basics-expected.txt	2016-01-05 19:57:07 UTC (rev 194595)
@@ -23,7 +23,7 @@
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_STATE_ERR
 PASS ename is 'InvalidStateError'
-Exception message: An operation was called on an object on which it is not allowed or at a time when it is not allowed.
+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.
 
 testSetVersionAbort2():
 PASS self.db.objectStoreNames is []
@@ -41,7 +41,7 @@
 PASS Exception was thrown.
 PASS code is DOMException.INVALID_STATE_ERR
 PASS ename is 'InvalidStateError'
-Exception message: An operation was called on an object on which it is not allowed or at a time when it is not allowed.
+Exception message: Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.
 store = db.createObjectStore('storeFail', null)
 index = store.createIndex('indexFail', 'x')
 

Modified: trunk/Source/WebCore/ChangeLog (194594 => 194595)


--- trunk/Source/WebCore/ChangeLog	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/Source/WebCore/ChangeLog	2016-01-05 19:57:07 UTC (rev 194595)
@@ -1,3 +1,41 @@
+2016-01-05  Brady Eidson  <beid...@apple.com>
+
+        Modern IDB: Error message updates for two failing tests.
+        https://bugs.webkit.org/show_bug.cgi?id=152735
+
+        Reviewed by Alex Christensen.
+
+        No new tests (Covered by existing tests).
+
+        Add error messages for various operations on deleted objects.
+        
+        * Modules/indexeddb/client/IDBCursorImpl.cpp:
+        (WebCore::IDBClient::IDBCursor::update):
+        (WebCore::IDBClient::IDBCursor::advance):
+        (WebCore::IDBClient::IDBCursor::continueFunction):
+        (WebCore::IDBClient::IDBCursor::deleteFunction):
+        
+        * Modules/indexeddb/client/IDBIndexImpl.cpp:
+        (WebCore::IDBClient::IDBIndex::openCursor):
+        (WebCore::IDBClient::IDBIndex::doCount):
+        (WebCore::IDBClient::IDBIndex::openKeyCursor):
+        (WebCore::IDBClient::IDBIndex::doGet):
+        (WebCore::IDBClient::IDBIndex::doGetKey):
+        
+        * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
+        (WebCore::IDBClient::IDBObjectStore::openCursor):
+        (WebCore::IDBClient::IDBObjectStore::get):
+        (WebCore::IDBClient::IDBObjectStore::putOrAdd):
+        (WebCore::IDBClient::IDBObjectStore::deleteFunction):
+        (WebCore::IDBClient::IDBObjectStore::clear):
+        (WebCore::IDBClient::IDBObjectStore::createIndex):
+        (WebCore::IDBClient::IDBObjectStore::index):
+        (WebCore::IDBClient::IDBObjectStore::deleteIndex):
+        (WebCore::IDBClient::IDBObjectStore::doCount):
+
+        * bindings/js/JSIDBObjectStoreCustom.cpp:
+        (WebCore::JSIDBObjectStore::createIndex):
+
 2016-01-05  Eric Carlson  <eric.carl...@apple.com>
 
         Avoid NULL deference in Page::updateIsPlayingMedia

Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp (194594 => 194595)


--- trunk/Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp	2016-01-05 19:57:07 UTC (rev 194595)
@@ -116,6 +116,7 @@
 
     if (sourcesDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'update' on 'IDBCursor': The cursor's source or effective object store has been deleted.");
         return nullptr;
     }
 
@@ -182,6 +183,7 @@
 
     if (sourcesDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'advance' on 'IDBCursor': The cursor's source or effective object store has been deleted.");
         return;
     }
 
@@ -238,6 +240,7 @@
 
     if (sourcesDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'continue' on 'IDBCursor': The cursor's source or effective object store has been deleted.");
         return;
     }
 
@@ -293,6 +296,7 @@
 
     if (sourcesDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'delete' on 'IDBCursor': The cursor's source or effective object store has been deleted.");
         return nullptr;
     }
 

Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBIndexImpl.cpp (194594 => 194595)


--- trunk/Source/WebCore/Modules/indexeddb/client/IDBIndexImpl.cpp	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBIndexImpl.cpp	2016-01-05 19:57:07 UTC (rev 194595)
@@ -92,6 +92,7 @@
 
     if (m_deleted || m_objectStore->isDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'openCursor' on 'IDBIndex': The index or its object store has been deleted.");
         return nullptr;
     }
 
@@ -178,6 +179,7 @@
 {
     if (m_deleted || m_objectStore->isDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'count' on 'IDBIndex': The index or its object store has been deleted.");
         return nullptr;
     }
 
@@ -202,6 +204,7 @@
 
     if (m_deleted || m_objectStore->isDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'openKeyCursor' on 'IDBIndex': The index or its object store has been deleted.");
         return nullptr;
     }
 
@@ -269,6 +272,7 @@
 {
     if (m_deleted || m_objectStore->isDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'get' on 'IDBIndex': The index or its object store has been deleted.");
         return nullptr;
     }
 
@@ -323,6 +327,7 @@
 {
     if (m_deleted || m_objectStore->isDeleted()) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'getKey' on 'IDBIndex': The index or its object store has been deleted.");
         return nullptr;
     }
 

Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp (194594 => 194595)


--- trunk/Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp	2016-01-05 19:57:07 UTC (rev 194595)
@@ -117,6 +117,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'openCursor' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -163,6 +164,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -194,6 +196,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'get' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -256,6 +259,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The object store has been deleted.");
         return nullptr;
     }
 
@@ -347,6 +351,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'delete' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -397,6 +402,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'clear' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -415,6 +421,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'createIndex' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -469,6 +476,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'index' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 
@@ -501,6 +509,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'deleteIndex' on 'IDBObjectStore': The object store has been deleted.");
         return;
     }
 
@@ -588,6 +597,7 @@
 
     if (m_deleted) {
         ec.code = IDBDatabaseException::InvalidStateError;
+        ec.message = ASCIILiteral("Failed to execute 'count' on 'IDBObjectStore': The object store has been deleted.");
         return nullptr;
     }
 

Modified: trunk/Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp (194594 => 194595)


--- trunk/Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp	2016-01-05 19:42:16 UTC (rev 194594)
+++ trunk/Source/WebCore/bindings/js/JSIDBObjectStoreCustom.cpp	2016-01-05 19:57:07 UTC (rev 194595)
@@ -32,6 +32,7 @@
 #include "JSIDBObjectStore.h"
 
 #include "IDBBindingUtilities.h"
+#include "IDBDatabaseException.h"
 #include "IDBKeyPath.h"
 #include "IDBObjectStore.h"
 #include "JSDOMBinding.h"
@@ -113,7 +114,14 @@
     IDBKeyPath keyPath;
     JSValue keyPathValue = state.argument(1);
     if (!keyPathValue.isUndefinedOrNull())
-        keyPath = idbKeyPathFromValue(&state, state.argument(1));
+        keyPath = idbKeyPathFromValue(&state, keyPathValue);
+    else {
+        ExceptionCodeWithMessage ec;
+        ec.code = IDBDatabaseException::SyntaxError;
+        ec.message = ASCIILiteral("Failed to execute 'createIndex' on 'IDBObjectStore': The keyPath argument contains an invalid key path.");
+        setDOMException(&state, ec);
+        return jsUndefined();
+    }
 
     if (state.hadException())
         return jsUndefined();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to