[webkit-changes] [WebKit/WebKit] 2421ae: [IndexedDB] Generate index keys for newly created ...

Sihui noreply at github.com
Tue Feb 25 13:36:07 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2421aec95337294207e263a9e0cfa61003c28016
      https://github.com/WebKit/WebKit/commit/2421aec95337294207e263a9e0cfa61003c28016
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2025-02-25 (Tue, 25 Feb 2025)

  Changed paths:
    M Source/WebCore/Modules/indexeddb/IDBDatabase.cpp
    M Source/WebCore/Modules/indexeddb/IDBDatabase.h
    M Source/WebCore/Modules/indexeddb/IDBTransaction.cpp
    M Source/WebCore/Modules/indexeddb/IDBTransaction.h
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h
    M Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h
    M Source/WebCore/Modules/indexeddb/client/TransactionOperation.cpp
    M Source/WebCore/Modules/indexeddb/client/TransactionOperation.h
    M Source/WebCore/Modules/indexeddb/server/IDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.cpp
    M Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h
    M Source/WebCore/Modules/indexeddb/server/IDBConnectionToClientDelegate.h
    M Source/WebCore/Modules/indexeddb/server/IDBServer.cpp
    M Source/WebCore/Modules/indexeddb/server/IDBServer.h
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h
    M Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp
    M Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.h
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h
    M Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp
    M Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h
    M Source/WebCore/loader/EmptyClients.cpp
    M Source/WebKit/NetworkProcess/storage/IDBStorageConnectionToClient.cpp
    M Source/WebKit/NetworkProcess/storage/IDBStorageConnectionToClient.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in
    M Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
    M Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h
    M Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in
    M Source/WebKitLegacy/Storage/InProcessIDBServer.cpp
    M Source/WebKitLegacy/Storage/InProcessIDBServer.h

  Log Message:
  -----------
  [IndexedDB] Generate index keys for newly created index on client side
https://bugs.webkit.org/show_bug.cgi?id=288167
rdar://145258114

Reviewed by Brady Eidson.

When handling a index creation request, server now iterates all existing records of object store and asks requested
client to generate index keys. Server will wait until all index keys to be generated before replying client with the
result of the index creation request.

No new test as there should be no user-visible behavior change.

* Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::scriptExecutionContextIdentifier const):
* Source/WebCore/Modules/indexeddb/IDBDatabase.h:
* Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::createIndexOnServer):
(WebCore::IDBTransaction::protectedDatabase const):
(WebCore::IDBTransaction::generateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/IDBTransaction.h:
* Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::generateIndexKeyForRecord):
(WebCore::IDBClient::IDBConnectionProxy::didGenerateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h:
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::generateIndexKeyForRecord):
(WebCore::IDBClient::IDBConnectionToServer::didGenerateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
* Source/WebCore/Modules/indexeddb/client/TransactionOperation.cpp:
(WebCore::IDBClient::TransactionOperation::TransactionOperation):
* Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:
(WebCore::IDBClient::TransactionOperation::transaction const):
(WebCore::IDBClient::TransactionOperation::scriptExecutionContextIdentifier const):
(WebCore::IDBClient::TransactionOperation::cursorIdentifier const):
(WebCore::IDBClient::TransactionOperation::TransactionOperation): Deleted.
(WebCore::IDBClient::TransactionOperation::transaction): Deleted.
* Source/WebCore/Modules/indexeddb/server/IDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.cpp:
(WebCore::IDBServer::IDBConnectionToClient::generateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h:
* Source/WebCore/Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
* Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::didGenerateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/server/IDBServer.h:
* Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
(WebCore::IDBServer::MemoryBackingStoreTransaction::removeNewIndex):
* Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.h:
* Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::addIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::revertAddIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::updateIndexRecordsWithIndexKey):
(WebCore::IDBServer::MemoryIDBBackingStore::forEachObjectStoreRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::createIndex): Deleted.
* Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::addIndex):
(WebCore::IDBServer::MemoryObjectStore::revertAddIndex):
(WebCore::IDBServer::MemoryObjectStore::updateIndexRecordsWithIndexKey):
(WebCore::IDBServer::MemoryObjectStore::forEachRecord):
(WebCore::IDBServer::MemoryObjectStore::createIndex): Deleted.
* Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.h:
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::addIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::revertAddIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateIndexRecordsWithIndexKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::forEachObjectStoreRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): Deleted.
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord): Deleted.
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAsync):
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAsyncAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::didGenerateIndexKeyForRecord):
(WebCore::IDBServer::UniqueIDBDatabase::didCreateIndexAsyncForTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex): Deleted.
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h:
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::didCreateIndexAsync):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::generateIndexKeyForRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::didGenerateIndexKeyForRecord):
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::pendingGenerateIndexKeyRequests const):
* Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
* Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/loader/EmptyClients.cpp:
* Source/WebKit/NetworkProcess/storage/IDBStorageConnectionToClient.cpp:
(WebKit::IDBStorageConnectionToClient::generateIndexKeyForRecord):
* Source/WebKit/NetworkProcess/storage/IDBStorageConnectionToClient.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::didGenerateIndexKeyForRecord):
(WebKit::NetworkStorageManager::createIndex):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in:
* Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::didGenerateIndexKeyForRecord):
(WebKit::WebIDBConnectionToServer::generateIndexKeyForRecord):
* Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
* Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in:
* Source/WebKitLegacy/Storage/InProcessIDBServer.cpp:
(InProcessIDBServer::generateIndexKeyForRecord):
(InProcessIDBServer::didGenerateIndexKeyForRecord):
* Source/WebKitLegacy/Storage/InProcessIDBServer.h:

Canonical link: https://commits.webkit.org/291051@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list