Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 81d83dea0f5bec17b0ec62b7ad81b90ee95f6a42
https://github.com/WebKit/WebKit/commit/81d83dea0f5bec17b0ec62b7ad81b90ee95f6a42
Author: Sihui Liu <[email protected]>
Date: 2024-02-26 (Mon, 26 Feb 2024)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp
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/server/IDBServer.cpp
M Source/WebCore/Modules/indexeddb/server/IDBServer.h
M Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.cpp
M Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.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
A Source/WebCore/Modules/indexeddb/shared/IDBOpenRequestData.cpp
A Source/WebCore/Modules/indexeddb/shared/IDBOpenRequestData.h
M Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp
M Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
M Source/WebCore/Modules/mediasource/MediaSourceInterfaceWorker.cpp
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/loader/EmptyClients.cpp
M Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/IDBStorageManager.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/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
M Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h
M Source/WebKitLegacy/Storage/InProcessIDBServer.cpp
M Source/WebKitLegacy/Storage/InProcessIDBServer.h
Log Message:
-----------
Introduce IDBOpenRequestData and add validators
https://bugs.webkit.org/show_bug.cgi?id=270109
rdar://123643973
Reviewed by Alex Christensen.
IDBRequestData has a few optional data members because it is used to represent
both open requests and transaction
requests, and different request types have different data members. For example,
an open request should not have
transaction identifier. Therefore, an IDBRequestData object decoded from IPC
message and has null data members will be
viewed as valid object, and message handlers need to perform additional checks
on that object to ensure it's valid for
the target request type. For example, if the message is for a transaction
request, then message handler needs to ensure
transaction identifier is not null. To make the code more robust by moving the
checks to IPC layer, this patch
introduces a new class IDBOpenRequestData for open requests, and adds message
validators to both IDBRequestData and
IDBOpenRequestData.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:
(WebCore::IDBOpenDBRequest::setIsContextSuspended):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::openDatabase):
(WebCore::IDBClient::IDBConnectionProxy::deleteDatabase):
(WebCore::IDBClient::IDBConnectionProxy::openDBRequestCancelled):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h:
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::deleteDatabase):
(WebCore::IDBClient::IDBConnectionToServer::openDatabase):
(WebCore::IDBClient::IDBConnectionToServer::openDBRequestCancelled):
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:
* Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
* Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::openDatabase):
(WebCore::IDBServer::IDBServer::deleteDatabase):
(WebCore::IDBServer::IDBServer::idbTransaction const):
(WebCore::IDBServer::IDBServer::openDBRequestCancelled):
* Source/WebCore/Modules/indexeddb/server/IDBServer.h:
* Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.cpp:
(WebCore::IDBServer::ServerOpenDBRequest::create):
(WebCore::IDBServer::ServerOpenDBRequest::ServerOpenDBRequest):
* Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.h:
(WebCore::IDBServer::ServerOpenDBRequest::requestData const):
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabase::handleDelete):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterSpaceCheck):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h:
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):
* Source/WebCore/Modules/indexeddb/shared/IDBOpenRequestData.cpp: Added.
(WebCore::IDBOpenRequestData::IDBOpenRequestData):
(WebCore::m_requestType):
(WebCore::IDBOpenRequestData::isolatedCopy const):
* Source/WebCore/Modules/indexeddb/shared/IDBOpenRequestData.h: Added.
(WebCore::IDBOpenRequestData::serverConnectionIdentifier const):
(WebCore::IDBOpenRequestData::requestIdentifier const):
(WebCore::IDBOpenRequestData::databaseIdentifier const):
(WebCore::IDBOpenRequestData::requestedVersion const):
(WebCore::IDBOpenRequestData::isOpenRequest const):
(WebCore::IDBOpenRequestData::isDeleteRequest const):
* Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp:
(WebCore::IDBRequestData::IDBRequestData):
(WebCore::IDBRequestData::isolatedCopy):
(WebCore::IDBRequestData::transactionIdentifier const):
(WebCore::m_requestType): Deleted.
(WebCore::IDBRequestData::databaseIdentifier const): Deleted.
* Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::isOpenRequest const): Deleted.
(WebCore::IDBRequestData::isDeleteRequest const): Deleted.
* Source/WebCore/Modules/mediasource/MediaSourceInterfaceWorker.cpp:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/loader/EmptyClients.cpp:
* Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:
(WebKit::IDBStorageManager::openDatabase):
(WebKit::IDBStorageManager::deleteDatabase):
(WebKit::IDBStorageManager::openDBRequestCancelled):
* Source/WebKit/NetworkProcess/storage/IDBStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::openDatabase):
(WebKit::NetworkStorageManager::openDBRequestCancelled):
(WebKit::NetworkStorageManager::deleteDatabase):
(WebKit::NetworkStorageManager::idbTransaction):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::deleteDatabase):
(WebKit::WebIDBConnectionToServer::openDatabase):
(WebKit::WebIDBConnectionToServer::openDBRequestCancelled):
* Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
* Source/WebKitLegacy/Storage/InProcessIDBServer.cpp:
(InProcessIDBServer::deleteDatabase):
(InProcessIDBServer::openDatabase):
(InProcessIDBServer::openDBRequestCancelled):
* Source/WebKitLegacy/Storage/InProcessIDBServer.h:
Canonical link: https://commits.webkit.org/275368@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes