Diff
Modified: trunk/LayoutTests/ChangeLog (252669 => 252670)
--- trunk/LayoutTests/ChangeLog 2019-11-20 01:37:25 UTC (rev 252669)
+++ trunk/LayoutTests/ChangeLog 2019-11-20 01:53:06 UTC (rev 252670)
@@ -1,3 +1,18 @@
+2019-11-19 Sihui Liu <sihui_...@apple.com>
+
+ IndexedDB: update m_objectStoresByName after renaming object store
+ https://bugs.webkit.org/show_bug.cgi?id=204373
+
+ Reviewed by Brady Eidson.
+
+ * storage/indexeddb/put-after-objectstore-rename-expected.txt: Added.
+ * storage/indexeddb/put-after-objectstore-rename-private-expected.txt: Added.
+ * storage/indexeddb/put-after-objectstore-rename-private.html: Added.
+ * storage/indexeddb/put-after-objectstore-rename.html: Added.
+ * storage/indexeddb/resources/put-after-objectstore-rename.js: Added.
+ (prepareDatabase):
+ (openSuccess):
+
2019-11-19 Jiewen Tan <jiewen_...@apple.com>
Improve WebAuthn NFC tests after r252297
Added: trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-expected.txt (0 => 252670)
--- trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-expected.txt (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-expected.txt 2019-11-20 01:53:06 UTC (rev 252670)
@@ -0,0 +1,18 @@
+This tests verifies put operation can be performed on renamed object store
+
+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)
+Open database upgradeneeded: database old version - 0, new version - 1
+Current objectStore name: ObjectStore
+Current objectStore name: RenamedObjectStore
+Open database success
+Put success in renamed object store
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private-expected.txt (0 => 252670)
--- trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private-expected.txt (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private-expected.txt 2019-11-20 01:53:06 UTC (rev 252670)
@@ -0,0 +1,18 @@
+This tests verifies put operation can be performed on renamed object store
+
+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)
+Open database upgradeneeded: database old version - 0, new version - 1
+Current objectStore name: ObjectStore
+Current objectStore name: RenamedObjectStore
+Open database success
+Put success in renamed object store
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private.html (0 => 252670)
--- trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private.html (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename-private.html 2019-11-20 01:53:06 UTC (rev 252670)
@@ -0,0 +1,10 @@
+<!-- webkit-test-runner [ useEphemeralSession=true ] -->
+<html>
+<head>
+<script src=""
+<script src=""
+</head>
+<body>
+<script src=""
+</body>
+</html>
\ No newline at end of file
Added: trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename.html (0 => 252670)
--- trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename.html (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/put-after-objectstore-rename.html 2019-11-20 01:53:06 UTC (rev 252670)
@@ -0,0 +1,9 @@
+<html>
+<head>
+<script src=""
+<script src=""
+</head>
+<body>
+<script src=""
+</body>
+</html>
\ No newline at end of file
Added: trunk/LayoutTests/storage/indexeddb/resources/put-after-objectstore-rename.js (0 => 252670)
--- trunk/LayoutTests/storage/indexeddb/resources/put-after-objectstore-rename.js (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/resources/put-after-objectstore-rename.js 2019-11-20 01:53:06 UTC (rev 252670)
@@ -0,0 +1,46 @@
+if (this.importScripts) {
+ importScripts('../../../resources/js-test.js');
+ importScripts('shared.js');
+}
+
+description("This tests verifies put operation can be performed on renamed object store");
+
+indexedDBTest(prepareDatabase, openSuccess);
+
+var db;
+var dbName;
+var dbVersion;
+const objectStoreName = "ObjectStore";
+const newOjectStoreName = "RenamedObjectStore";
+
+function prepareDatabase(event)
+{
+ debug("Open database upgradeneeded: database old version - " + event.oldVersion + ", new version - " + event.newVersion);
+
+ db = event.target.result;
+ dbName = db.name;
+ dbVersion = db.version;
+
+ objectStore = db.createObjectStore(objectStoreName);
+ debug("Current objectStore name: " + objectStore.name);
+
+ try {
+ objectStore.name = newOjectStoreName;
+ debug("Current objectStore name: " + objectStore.name);
+ } catch(e) {
+ debug("Caught exception when renaming object store: " + e);
+ }
+}
+
+function openSuccess(event)
+{
+ debug("Open database success");
+ transaction = db.transaction(newOjectStoreName, "readwrite");
+ objectStore = transaction.objectStore(newOjectStoreName);
+ request = objectStore.put('value', 'key');
+ request._onsuccess_ = () => {
+ debug("Put success in renamed object store");
+ finishJSTest();
+ }
+ request._onerror_ = unexpectedErrorCallback;
+}
\ No newline at end of file
Modified: trunk/Source/WebCore/ChangeLog (252669 => 252670)
--- trunk/Source/WebCore/ChangeLog 2019-11-20 01:37:25 UTC (rev 252669)
+++ trunk/Source/WebCore/ChangeLog 2019-11-20 01:53:06 UTC (rev 252670)
@@ -1,3 +1,16 @@
+2019-11-19 Sihui Liu <sihui_...@apple.com>
+
+ IndexedDB: update m_objectStoresByName after renaming object store
+ https://bugs.webkit.org/show_bug.cgi?id=204373
+
+ Reviewed by Brady Eidson.
+
+ Tests: storage/indexeddb/put-after-objectstore-rename-private.html
+ storage/indexeddb/put-after-objectstore-rename.html
+
+ * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
+ (WebCore::IDBServer::MemoryIDBBackingStore::renameObjectStore):
+
2019-11-19 Sunny He <sunny...@apple.com>
Nullptr crash in Node::setTextContent via Document::setTitle if title element is removed before setTextContent call.
Modified: trunk/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp (252669 => 252670)
--- trunk/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp 2019-11-20 01:37:25 UTC (rev 252669)
+++ trunk/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp 2019-11-20 01:53:06 UTC (rev 252670)
@@ -194,6 +194,9 @@
objectStore->rename(newName);
transaction->objectStoreRenamed(*objectStore, oldName);
+ m_objectStoresByName.remove(oldName);
+ m_objectStoresByName.set(newName, objectStore);
+
m_databaseInfo->renameObjectStore(objectStoreIdentifier, newName);
return IDBError { };