Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Teach the DatabaseProcess to be fully SessionID aware
https://bugs.webkit.org/show_bug.cgi?id=171451

Reviewed by Geoffrey Garen.
Source/WebKit2:

SessionIDs were already at the periphery of IDB and the DatabaseProcess.
Getting a separate IDBServer per SessionID is a pretty straightforward improvement.

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::idbServer):
(WebKit::DatabaseProcess::initializeWebsiteDataStore):
(WebKit::DatabaseProcess::fetchWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
(WebKit::DatabaseProcess::indexedDatabaseOrigins):
(WebKit::DatabaseProcess::initializeDatabaseProcess): Deleted.
(WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Deleted.
(WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Deleted.
* DatabaseProcess/DatabaseProcess.h:
(WebKit::DatabaseProcess::indexedDatabaseDirectory): Deleted.
* DatabaseProcess/DatabaseProcess.messages.in:

* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
(WebKit::WebIDBConnectionToClient::create):
(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
(WebKit::WebIDBConnectionToClient::deleteDatabase):
(WebKit::WebIDBConnectionToClient::openDatabase):
(WebKit::WebIDBConnectionToClient::abortTransaction):
(WebKit::WebIDBConnectionToClient::commitTransaction):
(WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToClient::createObjectStore):
(WebKit::WebIDBConnectionToClient::deleteObjectStore):
(WebKit::WebIDBConnectionToClient::renameObjectStore):
(WebKit::WebIDBConnectionToClient::clearObjectStore):
(WebKit::WebIDBConnectionToClient::createIndex):
(WebKit::WebIDBConnectionToClient::deleteIndex):
(WebKit::WebIDBConnectionToClient::renameIndex):
(WebKit::WebIDBConnectionToClient::putOrAdd):
(WebKit::WebIDBConnectionToClient::getRecord):
(WebKit::WebIDBConnectionToClient::getAllRecords):
(WebKit::WebIDBConnectionToClient::getCount):
(WebKit::WebIDBConnectionToClient::deleteRecord):
(WebKit::WebIDBConnectionToClient::openCursor):
(WebKit::WebIDBConnectionToClient::iterateCursor):
(WebKit::WebIDBConnectionToClient::establishTransaction):
(WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
(WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
(WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
(WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
(WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
(WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:

* Shared/Databases/DatabaseProcessCreationParameters.cpp:
(WebKit::DatabaseProcessCreationParameters::encode):
(WebKit::DatabaseProcessCreationParameters::decode):
* Shared/Databases/DatabaseProcessCreationParameters.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureDatabaseProcess):
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::pageAddedToProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::databaseProcessParameters):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory):

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:

* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:


Canonical link: https://commits.webkit.org/188352@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@215961 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
beidson committed Apr 29, 2017
1 parent dd67858 commit d7587f0
Show file tree
Hide file tree
Showing 20 changed files with 244 additions and 102 deletions.
87 changes: 87 additions & 0 deletions Source/WebKit2/ChangeLog
@@ -1,3 +1,90 @@
2017-04-28 Brady Eidson <beidson@apple.com>

Teach the DatabaseProcess to be fully SessionID aware
https://bugs.webkit.org/show_bug.cgi?id=171451

Reviewed by Geoffrey Garen.

SessionIDs were already at the periphery of IDB and the DatabaseProcess.
Getting a separate IDBServer per SessionID is a pretty straightforward improvement.

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::idbServer):
(WebKit::DatabaseProcess::initializeWebsiteDataStore):
(WebKit::DatabaseProcess::fetchWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
(WebKit::DatabaseProcess::indexedDatabaseOrigins):
(WebKit::DatabaseProcess::initializeDatabaseProcess): Deleted.
(WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Deleted.
(WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Deleted.
* DatabaseProcess/DatabaseProcess.h:
(WebKit::DatabaseProcess::indexedDatabaseDirectory): Deleted.
* DatabaseProcess/DatabaseProcess.messages.in:

* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
(WebKit::WebIDBConnectionToClient::create):
(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
(WebKit::WebIDBConnectionToClient::deleteDatabase):
(WebKit::WebIDBConnectionToClient::openDatabase):
(WebKit::WebIDBConnectionToClient::abortTransaction):
(WebKit::WebIDBConnectionToClient::commitTransaction):
(WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToClient::createObjectStore):
(WebKit::WebIDBConnectionToClient::deleteObjectStore):
(WebKit::WebIDBConnectionToClient::renameObjectStore):
(WebKit::WebIDBConnectionToClient::clearObjectStore):
(WebKit::WebIDBConnectionToClient::createIndex):
(WebKit::WebIDBConnectionToClient::deleteIndex):
(WebKit::WebIDBConnectionToClient::renameIndex):
(WebKit::WebIDBConnectionToClient::putOrAdd):
(WebKit::WebIDBConnectionToClient::getRecord):
(WebKit::WebIDBConnectionToClient::getAllRecords):
(WebKit::WebIDBConnectionToClient::getCount):
(WebKit::WebIDBConnectionToClient::deleteRecord):
(WebKit::WebIDBConnectionToClient::openCursor):
(WebKit::WebIDBConnectionToClient::iterateCursor):
(WebKit::WebIDBConnectionToClient::establishTransaction):
(WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
(WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
(WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
(WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
(WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
(WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:

* Shared/Databases/DatabaseProcessCreationParameters.cpp:
(WebKit::DatabaseProcessCreationParameters::encode):
(WebKit::DatabaseProcessCreationParameters::decode):
* Shared/Databases/DatabaseProcessCreationParameters.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureDatabaseProcess):
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::pageAddedToProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::databaseProcessParameters):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory):

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:

* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):

2017-04-28 Youenn Fablet <youenn@apple.com>

getUserMedia video streams should follow device orientation
Expand Down
83 changes: 48 additions & 35 deletions Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp
Expand Up @@ -91,36 +91,42 @@ void DatabaseProcess::didReceiveMessage(IPC::Connection& connection, IPC::Decode
}

#if ENABLE(INDEXED_DATABASE)
IDBServer::IDBServer& DatabaseProcess::idbServer()
IDBServer::IDBServer& DatabaseProcess::idbServer(SessionID sessionID)
{
if (!m_idbServer)
m_idbServer = IDBServer::IDBServer::create(indexedDatabaseDirectory(), DatabaseProcess::singleton());
auto addResult = m_idbServers.add(sessionID, nullptr);
if (!addResult.isNewEntry) {
ASSERT(addResult.iterator->value);
return *addResult.iterator->value;
}

auto path = m_idbDatabasePaths.get(sessionID);
// There should already be a registered path for this SessionID.
// If there's not, then where did this SessionID come from?
ASSERT(!path.isEmpty());

return *m_idbServer;
addResult.iterator->value = IDBServer::IDBServer::create(path, DatabaseProcess::singleton());
return *addResult.iterator->value;
}
#endif

void DatabaseProcess::initializeDatabaseProcess(const DatabaseProcessCreationParameters& parameters)
void DatabaseProcess::initializeWebsiteDataStore(const DatabaseProcessCreationParameters& parameters)
{
#if ENABLE(INDEXED_DATABASE)
// *********
// IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (<rdar://problem/17454712>)
// *********

m_indexedDatabaseDirectory = parameters.indexedDatabaseDirectory;
auto addResult = m_idbDatabasePaths.add(parameters.sessionID, String());
if (!addResult.isNewEntry)
return;

addResult.iterator->value = parameters.indexedDatabaseDirectory;
SandboxExtension::consumePermanently(parameters.indexedDatabaseDirectoryExtensionHandle);

ensureIndexedDatabaseRelativePathExists(StringImpl::empty());
postDatabaseTask(createCrossThreadTask(*this, &DatabaseProcess::ensurePathExists, parameters.indexedDatabaseDirectory));
#endif
}

#if ENABLE(INDEXED_DATABASE)
void DatabaseProcess::ensureIndexedDatabaseRelativePathExists(const String& relativePath)
{
postDatabaseTask(createCrossThreadTask(*this, &DatabaseProcess::ensurePathExists, absoluteIndexedDatabasePathFromDatabaseRelativePath(relativePath)));
}
#endif

void DatabaseProcess::ensurePathExists(const String& path)
{
ASSERT(!RunLoop::isMain());
Expand All @@ -129,15 +135,6 @@ void DatabaseProcess::ensurePathExists(const String& path)
LOG_ERROR("Failed to make all directories for path '%s'", path.utf8().data());
}

#if ENABLE(INDEXED_DATABASE)
String DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath(const String& relativePath)
{
// FIXME: pathByAppendingComponent() was originally designed to append individual atomic components.
// We don't have a function designed to append a multi-component subpath, but we should.
return pathByAppendingComponent(m_indexedDatabaseDirectory, relativePath);
}
#endif

void DatabaseProcess::postDatabaseTask(CrossThreadTask&& task)
{
ASSERT(RunLoop::isMain());
Expand Down Expand Up @@ -187,17 +184,23 @@ void DatabaseProcess::createDatabaseToWebProcessConnection()
#endif
}

void DatabaseProcess::fetchWebsiteData(SessionID, OptionSet<WebsiteDataType> websiteDataTypes, uint64_t callbackID)
void DatabaseProcess::fetchWebsiteData(SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, uint64_t callbackID)
{
#if ENABLE(INDEXED_DATABASE)
auto completionHandler = [this, callbackID](const WebsiteData& websiteData) {
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0);
};

String path = m_idbDatabasePaths.get(sessionID);
if (path.isEmpty() || !websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
completionHandler({ });
return;
}

if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
// FIXME: Pick the right database store based on the session ID.
postDatabaseTask(CrossThreadTask([this, websiteDataTypes, completionHandler = WTFMove(completionHandler)]() mutable {
RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = indexedDatabaseOrigins()] {
postDatabaseTask(CrossThreadTask([this, websiteDataTypes, completionHandler = WTFMove(completionHandler), path = WTFMove(path)]() mutable {
RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = indexedDatabaseOrigins(path)] {
WebsiteData websiteData;
for (const auto& securityOrigin : securityOrigins)
websiteData.entries.append({ securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });
Expand All @@ -209,27 +212,37 @@ void DatabaseProcess::fetchWebsiteData(SessionID, OptionSet<WebsiteDataType> web
#endif
}

void DatabaseProcess::deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
void DatabaseProcess::deleteWebsiteData(WebCore::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
{
#if ENABLE(INDEXED_DATABASE)
auto completionHandler = [this, callbackID]() {
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteData(callbackID), 0);
};

if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
idbServer().closeAndDeleteDatabasesModifiedSince(modifiedSince, WTFMove(completionHandler));
auto* server = m_idbServers.get(sessionID);
if (!server || !websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
completionHandler();
return;
}

server->closeAndDeleteDatabasesModifiedSince(modifiedSince, WTFMove(completionHandler));
#endif
}

void DatabaseProcess::deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& securityOriginDatas, uint64_t callbackID)
void DatabaseProcess::deleteWebsiteDataForOrigins(WebCore::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& securityOriginDatas, uint64_t callbackID)
{
#if ENABLE(INDEXED_DATABASE)
auto completionHandler = [this, callbackID]() {
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteDataForOrigins(callbackID), 0);
};

if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
idbServer().closeAndDeleteDatabasesForOrigins(securityOriginDatas, WTFMove(completionHandler));
auto* server = m_idbServers.get(sessionID);
if (!server || !websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
completionHandler();
return;
}

server->closeAndDeleteDatabasesForOrigins(securityOriginDatas, WTFMove(completionHandler));
#endif
}

Expand Down Expand Up @@ -263,13 +276,13 @@ void DatabaseProcess::accessToTemporaryFileComplete(const String& path)
extension->revoke();
}

Vector<WebCore::SecurityOriginData> DatabaseProcess::indexedDatabaseOrigins()
Vector<WebCore::SecurityOriginData> DatabaseProcess::indexedDatabaseOrigins(const String& path)
{
if (m_indexedDatabaseDirectory.isEmpty())
if (path.isEmpty())
return { };

Vector<WebCore::SecurityOriginData> securityOrigins;
for (auto& originPath : listDirectory(m_indexedDatabaseDirectory, "*")) {
for (auto& originPath : listDirectory(path, "*")) {
String databaseIdentifier = pathGetFileName(originPath);

if (auto securityOrigin = SecurityOriginData::fromDatabaseIdentifier(databaseIdentifier))
Expand Down
17 changes: 6 additions & 11 deletions Source/WebKit2/DatabaseProcess/DatabaseProcess.h
Expand Up @@ -31,12 +31,12 @@
#include "SandboxExtension.h"
#include <WebCore/IDBBackingStore.h>
#include <WebCore/IDBServer.h>
#include <WebCore/SessionID.h>
#include <WebCore/UniqueIDBDatabase.h>
#include <wtf/CrossThreadTask.h>
#include <wtf/NeverDestroyed.h>

namespace WebCore {
class SessionID;
struct SecurityOriginData;
}

Expand All @@ -58,12 +58,7 @@ class DatabaseProcess : public ChildProcess
~DatabaseProcess();

#if ENABLE(INDEXED_DATABASE)
const String& indexedDatabaseDirectory() const { return m_indexedDatabaseDirectory; }

void ensureIndexedDatabaseRelativePathExists(const String&);
String absoluteIndexedDatabasePathFromDatabaseRelativePath(const String&);

WebCore::IDBServer::IDBServer& idbServer();
WebCore::IDBServer::IDBServer& idbServer(WebCore::SessionID);
#endif

WorkQueue& queue() { return m_queue.get(); }
Expand Down Expand Up @@ -96,7 +91,7 @@ class DatabaseProcess : public ChildProcess
void didReceiveDatabaseProcessMessage(IPC::Connection&, IPC::Decoder&);

// Message Handlers
void initializeDatabaseProcess(const DatabaseProcessCreationParameters&);
void initializeWebsiteDataStore(const DatabaseProcessCreationParameters&);
void createDatabaseToWebProcessConnection();

void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, uint64_t callbackID);
Expand All @@ -108,7 +103,7 @@ class DatabaseProcess : public ChildProcess
#endif

#if ENABLE(INDEXED_DATABASE)
Vector<WebCore::SecurityOriginData> indexedDatabaseOrigins();
Vector<WebCore::SecurityOriginData> indexedDatabaseOrigins(const String& path);
#endif

// For execution on work queue thread only
Expand All @@ -120,8 +115,8 @@ class DatabaseProcess : public ChildProcess
Ref<WorkQueue> m_queue;

#if ENABLE(INDEXED_DATABASE)
String m_indexedDatabaseDirectory;
RefPtr<WebCore::IDBServer::IDBServer> m_idbServer;
HashMap<WebCore::SessionID, String> m_idbDatabasePaths;
HashMap<WebCore::SessionID, RefPtr<WebCore::IDBServer::IDBServer>> m_idbServers;
#endif
HashMap<String, RefPtr<SandboxExtension>> m_blobTemporaryFileSandboxExtensions;
HashMap<uint64_t, std::function<void (SandboxExtension::HandleArray&&)>> m_sandboxExtensionForBlobsCompletionHandlers;
Expand Down
4 changes: 2 additions & 2 deletions Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in
Expand Up @@ -23,8 +23,8 @@
#if ENABLE(DATABASE_PROCESS)

messages -> DatabaseProcess LegacyReceiver {
# Initializes the DatabaseProcess with the correct parameters
InitializeDatabaseProcess(struct WebKit::DatabaseProcessCreationParameters processCreationParameters)
# Initializes a WebsiteDataStore/Session in the DatabaseProcess with the correct parameters
InitializeWebsiteDataStore(struct WebKit::DatabaseProcessCreationParameters processCreationParameters)

# Creates a connection for communication with a WebProcess
CreateDatabaseToWebProcessConnection()
Expand Down
Expand Up @@ -107,13 +107,13 @@ static uint64_t generateConnectionToServerIdentifier()
return ++identifier;
}

void DatabaseToWebProcessConnection::establishIDBConnectionToServer(uint64_t& serverConnectionIdentifier)
void DatabaseToWebProcessConnection::establishIDBConnectionToServer(WebCore::SessionID sessionID, uint64_t& serverConnectionIdentifier)
{
serverConnectionIdentifier = generateConnectionToServerIdentifier();
LOG(IndexedDB, "DatabaseToWebProcessConnection::establishIDBConnectionToServer - %" PRIu64, serverConnectionIdentifier);
ASSERT(!m_webIDBConnections.contains(serverConnectionIdentifier));

m_webIDBConnections.set(serverConnectionIdentifier, WebIDBConnectionToClient::create(*this, serverConnectionIdentifier));
m_webIDBConnections.set(serverConnectionIdentifier, WebIDBConnectionToClient::create(*this, serverConnectionIdentifier, sessionID));
}

void DatabaseToWebProcessConnection::removeIDBConnectionToServer(uint64_t serverConnectionIdentifier)
Expand Down
Expand Up @@ -29,6 +29,7 @@
#include "Connection.h"
#include "MessageSender.h"

#include <WebCore/SessionID.h>
#include <wtf/HashMap.h>

#if ENABLE(DATABASE_PROCESS)
Expand Down Expand Up @@ -61,7 +62,7 @@ class DatabaseToWebProcessConnection : public RefCounted<DatabaseToWebProcessCon

#if ENABLE(INDEXED_DATABASE)
// Messages handlers (Modern IDB)
void establishIDBConnectionToServer(uint64_t& serverConnectionIdentifier);
void establishIDBConnectionToServer(WebCore::SessionID, uint64_t& serverConnectionIdentifier);
void removeIDBConnectionToServer(uint64_t serverConnectionIdentifier);

HashMap<uint64_t, RefPtr<WebIDBConnectionToClient>> m_webIDBConnections;
Expand Down
Expand Up @@ -25,7 +25,7 @@
messages -> DatabaseToWebProcessConnection LegacyReceiver {
#if ENABLE(INDEXED_DATABASE)
# Creates a connection for communication with a WebProcess
EstablishIDBConnectionToServer() -> (uint64_t serverConnectionIdentifier)
EstablishIDBConnectionToServer(WebCore::SessionID sessionID) -> (uint64_t serverConnectionIdentifier)
RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier)
#endif
}
Expand Down

0 comments on commit d7587f0

Please sign in to comment.