Title: [252670] trunk
Revision
252670
Author
sihui_...@apple.com
Date
2019-11-19 17:53:06 -0800 (Tue, 19 Nov 2019)

Log Message

IndexedDB: update m_objectStoresByName after renaming object store
https://bugs.webkit.org/show_bug.cgi?id=204373

Reviewed by Brady Eidson.

Source/WebCore:

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):

LayoutTests:

* 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):

Modified Paths

Added Paths

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 { };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to