WebIDBConnectionToClient.h [plain text]
#pragma once
#if ENABLE(INDEXED_DATABASE)
#include "MessageSender.h"
#include "StorageToWebProcessConnection.h"
#include <WebCore/IDBConnectionToClient.h>
#include <pal/SessionID.h>
namespace WebCore {
class IDBCursorInfo;
class IDBIndexInfo;
class IDBKeyData;
class IDBObjectStoreInfo;
class IDBRequestData;
class IDBTransactionInfo;
class IDBValue;
class SerializedScriptValue;
struct IDBGetAllRecordsData;
struct IDBGetRecordData;
struct IDBIterateCursorData;
struct IDBKeyRangeData;
struct SecurityOriginData;
}
namespace WebKit {
class WebIDBConnectionToClient final : public WebCore::IDBServer::IDBConnectionToClientDelegate, public IPC::MessageSender, public RefCounted<WebIDBConnectionToClient> {
public:
static Ref<WebIDBConnectionToClient> create(StorageToWebProcessConnection&, uint64_t serverConnectionIdentifier, PAL::SessionID);
virtual ~WebIDBConnectionToClient();
WebCore::IDBServer::IDBConnectionToClient& connectionToClient();
uint64_t identifier() const final { return m_identifier; }
uint64_t messageSenderDestinationID() final { return m_identifier; }
void didDeleteDatabase(const WebCore::IDBResultData&) final;
void didOpenDatabase(const WebCore::IDBResultData&) final;
void didAbortTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
void didCommitTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
void didCreateObjectStore(const WebCore::IDBResultData&) final;
void didDeleteObjectStore(const WebCore::IDBResultData&) final;
void didRenameObjectStore(const WebCore::IDBResultData&) final;
void didClearObjectStore(const WebCore::IDBResultData&) final;
void didCreateIndex(const WebCore::IDBResultData&) final;
void didDeleteIndex(const WebCore::IDBResultData&) final;
void didRenameIndex(const WebCore::IDBResultData&) final;
void didPutOrAdd(const WebCore::IDBResultData&) final;
void didGetRecord(const WebCore::IDBResultData&) final;
void didGetAllRecords(const WebCore::IDBResultData&) final;
void didGetCount(const WebCore::IDBResultData&) final;
void didDeleteRecord(const WebCore::IDBResultData&) final;
void didOpenCursor(const WebCore::IDBResultData&) final;
void didIterateCursor(const WebCore::IDBResultData&) final;
void fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection&, const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion) final;
void didStartTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
void didCloseFromServer(WebCore::IDBServer::UniqueIDBDatabaseConnection&, const WebCore::IDBError&) final;
void notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion) final;
void didGetAllDatabaseNames(uint64_t callbackID, const Vector<String>& databaseNames) final;
void ref() override { RefCounted<WebIDBConnectionToClient>::ref(); }
void deref() override { RefCounted<WebIDBConnectionToClient>::deref(); }
void deleteDatabase(const WebCore::IDBRequestData&);
void openDatabase(const WebCore::IDBRequestData&);
void abortTransaction(const WebCore::IDBResourceIdentifier&);
void commitTransaction(const WebCore::IDBResourceIdentifier&);
void didFinishHandlingVersionChangeTransaction(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier&);
void createObjectStore(const WebCore::IDBRequestData&, const WebCore::IDBObjectStoreInfo&);
void deleteObjectStore(const WebCore::IDBRequestData&, const String& objectStoreName);
void renameObjectStore(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, const String& newName);
void clearObjectStore(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier);
void createIndex(const WebCore::IDBRequestData&, const WebCore::IDBIndexInfo&);
void deleteIndex(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, const String& indexName);
void renameIndex(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, uint64_t indexIdentifier, const String& newName);
void putOrAdd(const WebCore::IDBRequestData&, const WebCore::IDBKeyData&, const WebCore::IDBValue&, unsigned overwriteMode);
void getRecord(const WebCore::IDBRequestData&, const WebCore::IDBGetRecordData&);
void getAllRecords(const WebCore::IDBRequestData&, const WebCore::IDBGetAllRecordsData&);
void getCount(const WebCore::IDBRequestData&, const WebCore::IDBKeyRangeData&);
void deleteRecord(const WebCore::IDBRequestData&, const WebCore::IDBKeyRangeData&);
void openCursor(const WebCore::IDBRequestData&, const WebCore::IDBCursorInfo&);
void iterateCursor(const WebCore::IDBRequestData&, const WebCore::IDBIterateCursorData&);
void establishTransaction(uint64_t databaseConnectionIdentifier, const WebCore::IDBTransactionInfo&);
void databaseConnectionPendingClose(uint64_t databaseConnectionIdentifier);
void databaseConnectionClosed(uint64_t databaseConnectionIdentifier);
void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier& transactionIdentifier);
void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier& requestIdentifier);
void openDBRequestCancelled(const WebCore::IDBRequestData&);
void confirmDidCloseFromServer(uint64_t databaseConnectionIdentifier);
void getAllDatabaseNames(uint64_t serverConnectionIdentifier, const WebCore::SecurityOriginData& topOrigin, const WebCore::SecurityOriginData& openingOrigin, uint64_t callbackID);
void disconnectedFromWebProcess();
void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
private:
WebIDBConnectionToClient(StorageToWebProcessConnection&, uint64_t serverConnectionIdentifier, PAL::SessionID);
IPC::Connection* messageSenderConnection() final;
template<class MessageType> void handleGetResult(const WebCore::IDBResultData&);
Ref<StorageToWebProcessConnection> m_connection;
uint64_t m_identifier;
PAL::SessionID m_sessionID;
RefPtr<WebCore::IDBServer::IDBConnectionToClient> m_connectionToClient;
};
}
#endif // ENABLE(INDEXED_DATABASE)