IndexedDB 2.0: Throw the correct exceptions during IDBObjectStore/IDBIndex renaming.
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Nov 2016 15:49:33 +0000 (15:49 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Nov 2016 15:49:33 +0000 (15:49 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164405

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/IndexedDB/idbindex-rename-errors-expected.txt:
* web-platform-tests/IndexedDB/idbobjectstore-rename-errors-expected.txt:

Source/WebCore:

No new tests (Covered by existing tests).

* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::setName):

* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::setName):

LayoutTests:

* storage/indexeddb/modern/index-rename-1-expected.txt:
* storage/indexeddb/modern/index-rename-1-private-expected.txt:
* storage/indexeddb/modern/objectstore-rename-1-expected.txt:
* storage/indexeddb/modern/objectstore-rename-1-private-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208383 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename-errors-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-errors-expected.txt
LayoutTests/storage/indexeddb/modern/index-rename-1-expected.txt
LayoutTests/storage/indexeddb/modern/index-rename-1-private-expected.txt
LayoutTests/storage/indexeddb/modern/objectstore-rename-1-expected.txt
LayoutTests/storage/indexeddb/modern/objectstore-rename-1-private-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/Modules/indexeddb/IDBIndex.cpp
Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp

index 478f2a8..cae8d47 100644 (file)
@@ -1,3 +1,15 @@
+2016-11-04  Brady Eidson  <beidson@apple.com>
+
+        IndexedDB 2.0: Throw the correct exceptions during IDBObjectStore/IDBIndex renaming.
+        https://bugs.webkit.org/show_bug.cgi?id=164405
+
+        Reviewed by Alex Christensen.
+
+        * storage/indexeddb/modern/index-rename-1-expected.txt:
+        * storage/indexeddb/modern/index-rename-1-private-expected.txt:
+        * storage/indexeddb/modern/objectstore-rename-1-expected.txt:
+        * storage/indexeddb/modern/objectstore-rename-1-private-expected.txt:
+
 2016-11-04  Romain Bellessort  <romain.bellessort@crf.canon.fr>
 
         [Readable Streams API] Implement ByteStreamController error()
index 8d1cf24..52f820c 100644 (file)
@@ -1,3 +1,13 @@
+2016-11-04  Brady Eidson  <beidson@apple.com>
+
+        IndexedDB 2.0: Throw the correct exceptions during IDBObjectStore/IDBIndex renaming.
+        https://bugs.webkit.org/show_bug.cgi?id=164405
+
+        Reviewed by Alex Christensen.
+
+        * web-platform-tests/IndexedDB/idbindex-rename-errors-expected.txt:
+        * web-platform-tests/IndexedDB/idbobjectstore-rename-errors-expected.txt:
+
 2016-11-03  Brady Eidson  <beidson@apple.com>
 
         IndexedDB 2.0: Handle IDBIndex rename behavior properly when version change transaction aborts.
index f3c9808..f90e703 100644 (file)
@@ -2,7 +2,7 @@
 PASS IndexedDB deleted index rename throws 
 PASS IndexedDB index rename throws in a readonly transaction 
 PASS IndexedDB index rename throws in a readwrite transaction 
-FAIL IndexedDB index rename throws in an inactive transaction assert_throws: function "() => authorIndex.name = 'renamed_by_author'" threw object "InvalidStateError (DOM Exception 11): Failed set property..." that is not a DOMException TransactionInactiveError: property "code" is equal to 11, expected 0
-FAIL IndexedDB index rename to the name of another index throws assert_throws: function "() => index.name = 'by_title'" threw object "InvalidStateError (DOM Exception 11): Failed set property..." that is not a DOMException ConstraintError: property "code" is equal to 11, expected 0
+FAIL IndexedDB index rename throws in an inactive transaction assert_throws: function "() => authorIndex.name = 'renamed_by_author'" threw object "TransactionInactiveError (DOM Exception 31): Failed set p..." that is not a DOMException TransactionInactiveError: property "code" is equal to 31, expected 0
+FAIL IndexedDB index rename to the name of another index throws assert_throws: function "() => index.name = 'by_title'" threw object "ConstraintError (DOM Exception 29): Failed set property '..." that is not a DOMException ConstraintError: property "code" is equal to 29, expected 0
 PASS IndexedDB index rename handles exceptions when stringifying names 
 
index 56c9a48..6e3d0eb 100644 (file)
@@ -2,7 +2,7 @@
 PASS IndexedDB deleted object store rename throws 
 PASS IndexedDB object store rename throws in a readonly transaction 
 PASS IndexedDB object store rename throws in a readwrite transaction 
-FAIL IndexedDB object store rename throws in an inactive transaction assert_throws: function "() => { bookStore.name = 'renamed_books'; }" threw object "InvalidStateError (DOM Exception 11): Failed set property..." that is not a DOMException TransactionInactiveError: property "code" is equal to 11, expected 0
-FAIL IndexedDB object store rename to the name of another store throws assert_throws: function "() => store.name = 'not_books'" threw object "InvalidStateError (DOM Exception 11): Failed set property..." that is not a DOMException ConstraintError: property "code" is equal to 11, expected 0
+FAIL IndexedDB object store rename throws in an inactive transaction assert_throws: function "() => { bookStore.name = 'renamed_books'; }" threw object "TransactionInactiveError (DOM Exception 31): Failed set p..." that is not a DOMException TransactionInactiveError: property "code" is equal to 31, expected 0
+FAIL IndexedDB object store rename to the name of another store throws assert_throws: function "() => store.name = 'not_books'" threw object "ConstraintError (DOM Exception 29): Failed set property '..." that is not a DOMException ConstraintError: property "code" is equal to 29, expected 0
 PASS IndexedDB object store rename handles exceptions when stringifying names 
 
index c032f25..86ce98d 100644 (file)
@@ -10,7 +10,7 @@ indexedDB.open(dbname)
 Initial upgrade needed: Old version - 0 New version - 1
 Failed to rename deleted index: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBIndex': The index has been deleted.
 Initial index name: NewIndex
-Caught exception renaming index to the name of another existing index: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBIndex': The owning object store already has an index named 'ExistingIndex'.
+Caught exception renaming index to the name of another existing index: ConstraintError (DOM Exception 29): Failed set property 'name' on 'IDBIndex': The owning object store already has an index named 'ExistingIndex'.
 Renamed this index to the same name it already has, it's name is now: NewIndex
 Renamed index name: RenamedIndex
 Current index name in a new transaction: RenamedIndex
index c032f25..86ce98d 100644 (file)
@@ -10,7 +10,7 @@ indexedDB.open(dbname)
 Initial upgrade needed: Old version - 0 New version - 1
 Failed to rename deleted index: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBIndex': The index has been deleted.
 Initial index name: NewIndex
-Caught exception renaming index to the name of another existing index: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBIndex': The owning object store already has an index named 'ExistingIndex'.
+Caught exception renaming index to the name of another existing index: ConstraintError (DOM Exception 29): Failed set property 'name' on 'IDBIndex': The owning object store already has an index named 'ExistingIndex'.
 Renamed this index to the same name it already has, it's name is now: NewIndex
 Renamed index name: RenamedIndex
 Current index name in a new transaction: RenamedIndex
index ed12216..1cedb42 100644 (file)
@@ -9,7 +9,7 @@ indexedDB.deleteDatabase(dbname)
 indexedDB.open(dbname)
 Initial upgrade needed: Old version - 0 New version - 1
 Initial objectStore name: TestObjectStore
-Caught exception renaming object store to the name of another existing object store: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBObjectStore': The database already has an object store named 'ExistingObjectStore'.
+Caught exception renaming object store to the name of another existing object store: ConstraintError (DOM Exception 29): Failed set property 'name' on 'IDBObjectStore': The database already has an object store named 'ExistingObjectStore'.
 Renamed objectStore name: RenamedObjectStore
 Current objectStore name in a new transaction: RenamedObjectStore
 Caught exception renaming object store outside of a version change transaction: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBObjectStore': The object store's transaction is not a version change transaction.
index ed12216..1cedb42 100644 (file)
@@ -9,7 +9,7 @@ indexedDB.deleteDatabase(dbname)
 indexedDB.open(dbname)
 Initial upgrade needed: Old version - 0 New version - 1
 Initial objectStore name: TestObjectStore
-Caught exception renaming object store to the name of another existing object store: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBObjectStore': The database already has an object store named 'ExistingObjectStore'.
+Caught exception renaming object store to the name of another existing object store: ConstraintError (DOM Exception 29): Failed set property 'name' on 'IDBObjectStore': The database already has an object store named 'ExistingObjectStore'.
 Renamed objectStore name: RenamedObjectStore
 Current objectStore name in a new transaction: RenamedObjectStore
 Caught exception renaming object store outside of a version change transaction: InvalidStateError (DOM Exception 11): Failed set property 'name' on 'IDBObjectStore': The object store's transaction is not a version change transaction.
index 6e6505a..add97c5 100644 (file)
@@ -1,3 +1,18 @@
+2016-11-04  Brady Eidson  <beidson@apple.com>
+
+        IndexedDB 2.0: Throw the correct exceptions during IDBObjectStore/IDBIndex renaming.
+        https://bugs.webkit.org/show_bug.cgi?id=164405
+
+        Reviewed by Alex Christensen.
+
+        No new tests (Covered by existing tests).
+
+        * Modules/indexeddb/IDBIndex.cpp:
+        (WebCore::IDBIndex::setName):
+
+        * Modules/indexeddb/IDBObjectStore.cpp:
+        (WebCore::IDBObjectStore::setName):
+
 2016-11-04  Romain Bellessort  <romain.bellessort@crf.canon.fr>
 
         [Readable Streams API] Implement ByteStreamController error()
index 8e90874..1136257 100644 (file)
@@ -93,13 +93,13 @@ ExceptionOr<void> IDBIndex::setName(const String& name)
         return Exception { INVALID_STATE_ERR, ASCIILiteral("Failed set property 'name' on 'IDBIndex': The index's transaction is not a version change transaction.") };
 
     if (!m_objectStore.transaction().isActive())
-        return Exception { INVALID_STATE_ERR, ASCIILiteral("Failed set property 'name' on 'IDBIndex': The index's transaction is not active.") };
+        return Exception { TransactionInactiveError, ASCIILiteral("Failed set property 'name' on 'IDBIndex': The index's transaction is not active.") };
 
     if (m_info.name() == name)
         return { };
 
     if (m_objectStore.info().hasIndex(name))
-        return Exception { INVALID_STATE_ERR, makeString("Failed set property 'name' on 'IDBIndex': The owning object store already has an index named '", name, "'.") };
+        return Exception { ConstraintError, makeString("Failed set property 'name' on 'IDBIndex': The owning object store already has an index named '", name, "'.") };
 
     m_objectStore.transaction().database().renameIndex(*this, name);
     m_info.rename(name);
index 67290b4..7b6d398 100644 (file)
@@ -106,13 +106,13 @@ ExceptionOr<void> IDBObjectStore::setName(const String& name)
         return Exception { INVALID_STATE_ERR, ASCIILiteral("Failed set property 'name' on 'IDBObjectStore': The object store's transaction is not a version change transaction.") };
 
     if (!m_transaction->isActive())
-        return Exception { INVALID_STATE_ERR, ASCIILiteral("Failed set property 'name' on 'IDBObjectStore': The object store's transaction is not active.") };
+        return Exception { TransactionInactiveError, ASCIILiteral("Failed set property 'name' on 'IDBObjectStore': The object store's transaction is not active.") };
 
     if (m_info.name() == name)
         return { };
 
     if (m_transaction->database().info().hasObjectStore(name))
-        return Exception { INVALID_STATE_ERR, makeString("Failed set property 'name' on 'IDBObjectStore': The database already has an object store named '", name, "'.") };
+        return Exception { ConstraintError, makeString("Failed set property 'name' on 'IDBObjectStore': The database already has an object store named '", name, "'.") };
 
     m_transaction->database().renameObjectStore(*this, name);
     m_info.rename(name);