Modern IDB: Encoder/Decoder/Messaging scaffolding for WK2 IPC.
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Feb 2016 20:42:55 +0000 (20:42 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Feb 2016 20:42:55 +0000 (20:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154351

Reviewed by Alex Christensen.

No change in behavior yet; Just laying the groundwork.

Source/WebCore:

* Modules/indexeddb/IDBDatabaseIdentifier.h:
(WebCore::IDBDatabaseIdentifier::encode):
(WebCore::IDBDatabaseIdentifier::decode):

* Modules/indexeddb/shared/IDBCursorInfo.h:
(WebCore::IDBCursorInfo::encode):
(WebCore::IDBCursorInfo::decode):

* Modules/indexeddb/shared/IDBIndexInfo.h:
(WebCore::IDBIndexInfo::encode):
(WebCore::IDBIndexInfo::decode):

* Modules/indexeddb/shared/IDBObjectStoreInfo.h:
(WebCore::IDBObjectStoreInfo::encode):
(WebCore::IDBObjectStoreInfo::decode):

* Modules/indexeddb/shared/IDBRequestData.h:
(WebCore::IDBRequestData::encode):
(WebCore::IDBRequestData::decode):

* Modules/indexeddb/shared/IDBResourceIdentifier.h:
(WebCore::IDBResourceIdentifier::encode):
(WebCore::IDBResourceIdentifier::decode):

* Modules/indexeddb/shared/IDBTransactionInfo.h:
(WebCore::IDBTransactionInfo::encode):
(WebCore::IDBTransactionInfo::decode):

Source/WebKit2:

Implement in all of the client->server message sends, requiring many Encoder/Decoders for
IDB objects to also be implemented:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::deleteDatabase):
(WebKit::WebIDBConnectionToServer::openDatabase):
(WebKit::WebIDBConnectionToServer::abortTransaction):
(WebKit::WebIDBConnectionToServer::commitTransaction):
(WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToServer::createObjectStore):
(WebKit::WebIDBConnectionToServer::deleteObjectStore):
(WebKit::WebIDBConnectionToServer::clearObjectStore):
(WebKit::WebIDBConnectionToServer::createIndex):
(WebKit::WebIDBConnectionToServer::deleteIndex):
(WebKit::WebIDBConnectionToServer::putOrAdd):
(WebKit::WebIDBConnectionToServer::getRecord):
(WebKit::WebIDBConnectionToServer::getCount):
(WebKit::WebIDBConnectionToServer::deleteRecord):
(WebKit::WebIDBConnectionToServer::openCursor):
(WebKit::WebIDBConnectionToServer::iterateCursor):
(WebKit::WebIDBConnectionToServer::establishTransaction):
(WebKit::WebIDBConnectionToServer::databaseConnectionClosed):
(WebKit::WebIDBConnectionToServer::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToServer::didFireVersionChangeEvent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@196715 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.h
Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.h
Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.h
Source/WebCore/Modules/indexeddb/shared/IDBObjectStoreInfo.h
Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h
Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp

index 9272cbb..0ff2a8e 100644 (file)
@@ -1,3 +1,40 @@
+2016-02-17  Brady Eidson  <beidson@apple.com>
+
+        Modern IDB: Encoder/Decoder/Messaging scaffolding for WK2 IPC.
+        https://bugs.webkit.org/show_bug.cgi?id=154351
+
+        Reviewed by Alex Christensen.
+
+        No change in behavior yet; Just laying the groundwork.
+
+        * Modules/indexeddb/IDBDatabaseIdentifier.h:
+        (WebCore::IDBDatabaseIdentifier::encode):
+        (WebCore::IDBDatabaseIdentifier::decode):
+        
+        * Modules/indexeddb/shared/IDBCursorInfo.h:
+        (WebCore::IDBCursorInfo::encode):
+        (WebCore::IDBCursorInfo::decode):
+        
+        * Modules/indexeddb/shared/IDBIndexInfo.h:
+        (WebCore::IDBIndexInfo::encode):
+        (WebCore::IDBIndexInfo::decode):
+        
+        * Modules/indexeddb/shared/IDBObjectStoreInfo.h:
+        (WebCore::IDBObjectStoreInfo::encode):
+        (WebCore::IDBObjectStoreInfo::decode):
+        
+        * Modules/indexeddb/shared/IDBRequestData.h:
+        (WebCore::IDBRequestData::encode):
+        (WebCore::IDBRequestData::decode):
+        
+        * Modules/indexeddb/shared/IDBResourceIdentifier.h:
+        (WebCore::IDBResourceIdentifier::encode):
+        (WebCore::IDBResourceIdentifier::decode):
+        
+        * Modules/indexeddb/shared/IDBTransactionInfo.h:
+        (WebCore::IDBTransactionInfo::encode):
+        (WebCore::IDBTransactionInfo::decode):
+
 2016-02-17  Andreas Kling  <akling@apple.com>
 
         [iOS] Purge GraphicsServices font cache on memory warning.
index 8cff283..f9ef010 100644 (file)
@@ -94,6 +94,9 @@ public:
 
     String databaseDirectoryRelativeToRoot(const String& rootDirectory) const;
 
+    template<class Encoder> void encode(Encoder&) const;
+    template<class Decoder> static bool decode(Decoder&, IDBDatabaseIdentifier&);
+
 #ifndef NDEBUG
     String debugString() const;
 #endif
@@ -116,6 +119,27 @@ struct IDBDatabaseIdentifierHashTraits : WTF::SimpleClassHashTraits<IDBDatabaseI
     static bool isEmptyValue(const IDBDatabaseIdentifier& info) { return info.isEmpty(); }
 };
 
+template<class Encoder>
+void IDBDatabaseIdentifier::encode(Encoder& encoder) const
+{
+    encoder << m_databaseName << m_openingOrigin << m_mainFrameOrigin;
+}
+
+template<class Decoder>
+bool IDBDatabaseIdentifier::decode(Decoder& decoder, IDBDatabaseIdentifier& identifier)
+{
+    if (!decoder.decode(identifier.m_databaseName))
+        return false;
+
+    if (!decoder.decode(identifier.m_openingOrigin))
+        return false;
+
+    if (!decoder.decode(identifier.m_mainFrameOrigin))
+        return false;
+
+    return true;
+}
+
 } // namespace WebCore
 
 namespace WTF {
index d1a4919..9a1cee2 100644 (file)
@@ -81,8 +81,8 @@ private:
 
     IDBResourceIdentifier m_cursorIdentifier;
     IDBResourceIdentifier m_transactionIdentifier;
-    uint64_t m_objectStoreIdentifier;
-    uint64_t m_sourceIdentifier;
+    uint64_t m_objectStoreIdentifier { 0 };
+    uint64_t m_sourceIdentifier { 0 };
 
     IDBKeyRangeData m_range;
 
@@ -91,9 +91,44 @@ private:
     IndexedDB::CursorType m_type;
 };
 
-template<class Decoder> bool IDBCursorInfo::decode(Decoder&, IDBCursorInfo&)
+template<class Encoder>
+void IDBCursorInfo::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_cursorIdentifier << m_transactionIdentifier << m_objectStoreIdentifier << m_sourceIdentifier << m_range;
+
+    encoder.encodeEnum(m_source);
+    encoder.encodeEnum(m_direction);
+    encoder.encodeEnum(m_type);
+}
+
+template<class Decoder>
+bool IDBCursorInfo::decode(Decoder& decoder, IDBCursorInfo& info)
+{
+    if (!decoder.decode(info.m_cursorIdentifier))
+        return false;
+
+    if (!decoder.decode(info.m_transactionIdentifier))
+        return false;
+
+    if (!decoder.decode(info.m_objectStoreIdentifier))
+        return false;
+
+    if (!decoder.decode(info.m_sourceIdentifier))
+        return false;
+
+    if (!decoder.decode(info.m_range))
+        return false;
+
+    if (!decoder.decodeEnum(info.m_source))
+        return false;
+
+    if (!decoder.decodeEnum(info.m_direction))
+        return false;
+
+    if (!decoder.decodeEnum(info.m_type))
+        return false;
+
+    return true;
 }
 
 } // namespace WebCore
index f2a3ba2..d39d2c3 100644 (file)
@@ -63,9 +63,34 @@ private:
     bool m_multiEntry { false };
 };
 
-template<class Decoder> bool IDBIndexInfo::decode(Decoder&, IDBIndexInfo&)
+template<class Encoder>
+void IDBIndexInfo::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_identifier << m_objectStoreIdentifier << m_name << m_keyPath << m_unique << m_multiEntry;
+}
+
+template<class Decoder>
+bool IDBIndexInfo::decode(Decoder& decoder, IDBIndexInfo& info)
+{
+    if (!decoder.decode(info.m_identifier))
+        return false;
+
+    if (!decoder.decode(info.m_objectStoreIdentifier))
+        return false;
+
+    if (!decoder.decode(info.m_name))
+        return false;
+
+    if (!decoder.decode(info.m_keyPath))
+        return false;
+
+    if (!decoder.decode(info.m_unique))
+        return false;
+
+    if (!decoder.decode(info.m_multiEntry))
+        return false;
+
+    return true;
 }
 
 } // namespace WebCore
index 26709a3..8efc5b9 100644 (file)
@@ -80,9 +80,34 @@ private:
 
 };
 
-template<class Decoder> bool IDBObjectStoreInfo::decode(Decoder&, IDBObjectStoreInfo&)
+template<class Encoder>
+void IDBObjectStoreInfo::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_identifier << m_name << m_keyPath << m_autoIncrement << m_maxIndexID << m_indexMap;
+}
+
+template<class Decoder>
+bool IDBObjectStoreInfo::decode(Decoder& decoder, IDBObjectStoreInfo& info)
+{
+    if (!decoder.decode(info.m_identifier))
+        return false;
+
+    if (!decoder.decode(info.m_name))
+        return false;
+
+    if (!decoder.decode(info.m_keyPath))
+        return false;
+
+    if (!decoder.decode(info.m_autoIncrement))
+        return false;
+
+    if (!decoder.decode(info.m_maxIndexID))
+        return false;
+
+    if (!decoder.decode(info.m_indexMap))
+        return false;
+
+    return true;
 }
 
 } // namespace WebCore
index 6f4962b..188977d 100644 (file)
@@ -87,9 +87,81 @@ private:
     IndexedDB::RequestType m_requestType { IndexedDB::RequestType::Other };
 };
 
-template<class Decoder> bool IDBRequestData::decode(Decoder&, IDBRequestData&)
+template<class Encoder>
+void IDBRequestData::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_serverConnectionIdentifier << m_objectStoreIdentifier << m_indexIdentifier << m_databaseIdentifier << m_requestedVersion;
+
+    encoder.encodeEnum(m_indexRecordType);
+    encoder.encodeEnum(m_requestType);
+
+    encoder << !!m_requestIdentifier;
+    if (m_requestIdentifier)
+        encoder << *m_requestIdentifier;
+
+    encoder << !!m_transactionIdentifier;
+    if (m_transactionIdentifier)
+        encoder << *m_transactionIdentifier;
+
+    encoder << !!m_cursorIdentifier;
+    if (m_cursorIdentifier)
+        encoder << *m_cursorIdentifier;
+}
+
+template<class Decoder>
+bool IDBRequestData::decode(Decoder& decoder, IDBRequestData& request)
+{
+    if (!decoder.decode(request.m_serverConnectionIdentifier))
+        return false;
+
+    if (!decoder.decode(request.m_objectStoreIdentifier))
+        return false;
+
+    if (!decoder.decode(request.m_indexIdentifier))
+        return false;
+
+    if (!decoder.decode(request.m_databaseIdentifier))
+        return false;
+
+    if (!decoder.decode(request.m_requestedVersion))
+        return false;
+
+    if (!decoder.decodeEnum(request.m_indexRecordType))
+        return false;
+
+    if (!decoder.decodeEnum(request.m_requestType))
+        return false;
+
+    bool hasObject;
+
+    if (!decoder.decode(hasObject))
+        return false;
+    if (hasObject) {
+        IDBResourceIdentifier identifier;
+        if (!decoder.decode(identifier))
+            return false;
+        request.m_requestIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+    }
+
+    if (!decoder.decode(hasObject))
+        return false;
+    if (hasObject) {
+        IDBResourceIdentifier identifier;
+        if (!decoder.decode(identifier))
+            return false;
+        request.m_transactionIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+    }
+
+    if (!decoder.decode(hasObject))
+        return false;
+    if (hasObject) {
+        IDBResourceIdentifier identifier;
+        if (!decoder.decode(identifier))
+            return false;
+        request.m_cursorIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+    }
+
+    return true;
 }
 
 } // namespace WebCore
index 278bff2..4141345 100644 (file)
@@ -118,9 +118,22 @@ struct IDBResourceIdentifierHashTraits : WTF::CustomHashTraits<IDBResourceIdenti
     }
 };
 
-template<class Decoder> bool IDBResourceIdentifier::decode(Decoder&, IDBResourceIdentifier&)
+template<class Encoder>
+void IDBResourceIdentifier::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_idbConnectionIdentifier << m_resourceNumber;
+}
+
+template<class Decoder>
+bool IDBResourceIdentifier::decode(Decoder& decoder, IDBResourceIdentifier& identifier)
+{
+    if (!decoder.decode(identifier.m_idbConnectionIdentifier))
+        return false;
+
+    if (!decoder.decode(identifier.m_resourceNumber))
+        return false;
+
+    return true;
 }
 
 } // namespace WebCore
index 87a26a3..6dbb836 100644 (file)
@@ -80,9 +80,29 @@ private:
     std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo;
 };
 
-template<class Decoder> bool IDBTransactionInfo::decode(Decoder&, IDBTransactionInfo&)
+template<class Encoder>
+void IDBTransactionInfo::encode(Encoder& encoder) const
 {
-    return false;
+    encoder << m_identifier << m_newVersion << m_objectStores;
+    encoder.encodeEnum(m_mode);
+}
+
+template<class Decoder>
+bool IDBTransactionInfo::decode(Decoder& decoder, IDBTransactionInfo& info)
+{
+    if (!decoder.decode(info.m_identifier))
+        return false;
+
+    if (!decoder.decode(info.m_newVersion))
+        return false;
+
+    if (!decoder.decode(info.m_objectStores))
+        return false;
+
+    if (!decoder.decodeEnum(info.m_mode))
+        return false;
+
+    return true;
 }
 
 } // namespace WebCore
index af42896..b70707e 100644 (file)
@@ -1,3 +1,36 @@
+2016-02-17  Brady Eidson  <beidson@apple.com>
+
+        Modern IDB: Encoder/Decoder/Messaging scaffolding for WK2 IPC.
+        https://bugs.webkit.org/show_bug.cgi?id=154351
+
+        Reviewed by Alex Christensen.
+
+        No change in behavior yet; Just laying the groundwork.
+
+        Implement in all of the client->server message sends, requiring many Encoder/Decoders for
+        IDB objects to also be implemented:
+        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
+        (WebKit::WebIDBConnectionToServer::deleteDatabase):
+        (WebKit::WebIDBConnectionToServer::openDatabase):
+        (WebKit::WebIDBConnectionToServer::abortTransaction):
+        (WebKit::WebIDBConnectionToServer::commitTransaction):
+        (WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction):
+        (WebKit::WebIDBConnectionToServer::createObjectStore):
+        (WebKit::WebIDBConnectionToServer::deleteObjectStore):
+        (WebKit::WebIDBConnectionToServer::clearObjectStore):
+        (WebKit::WebIDBConnectionToServer::createIndex):
+        (WebKit::WebIDBConnectionToServer::deleteIndex):
+        (WebKit::WebIDBConnectionToServer::putOrAdd):
+        (WebKit::WebIDBConnectionToServer::getRecord):
+        (WebKit::WebIDBConnectionToServer::getCount):
+        (WebKit::WebIDBConnectionToServer::deleteRecord):
+        (WebKit::WebIDBConnectionToServer::openCursor):
+        (WebKit::WebIDBConnectionToServer::iterateCursor):
+        (WebKit::WebIDBConnectionToServer::establishTransaction):
+        (WebKit::WebIDBConnectionToServer::databaseConnectionClosed):
+        (WebKit::WebIDBConnectionToServer::abortOpenAndUpgradeNeeded):
+        (WebKit::WebIDBConnectionToServer::didFireVersionChangeEvent):
+
 2016-02-17  Alex Christensen  <achristensen@webkit.org>
 
         Copy http body when being redirected with 308 with NetworkSession
index 9592cff..f05f8ce 100644 (file)
@@ -28,7 +28,9 @@
 
 #if ENABLE(INDEXED_DATABASE)
 
+#include "DataReference.h"
 #include "DatabaseToWebProcessConnectionMessages.h"
+#include "WebIDBConnectionToClientMessages.h"
 #include "WebProcess.h"
 #include "WebToDatabaseProcessConnection.h"
 #include <WebCore/IDBConnectionToServer.h>
@@ -85,84 +87,106 @@ IDBClient::IDBConnectionToServer& WebIDBConnectionToServer::coreConnectionToServ
     return *m_connectionToServer;
 }
 
-void WebIDBConnectionToServer::deleteDatabase(IDBRequestData&)
+void WebIDBConnectionToServer::deleteDatabase(IDBRequestData& requestData)
 {
+    send(Messages::WebIDBConnectionToClient::DeleteDatabase(requestData));
 }
 
-void WebIDBConnectionToServer::openDatabase(IDBRequestData&)
+void WebIDBConnectionToServer::openDatabase(IDBRequestData& requestData)
 {
+    send(Messages::WebIDBConnectionToClient::OpenDatabase(requestData));
 }
 
-void WebIDBConnectionToServer::abortTransaction(IDBResourceIdentifier&)
+void WebIDBConnectionToServer::abortTransaction(IDBResourceIdentifier& transactionIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::AbortTransaction(transactionIdentifier));
 }
 
-void WebIDBConnectionToServer::commitTransaction(IDBResourceIdentifier&)
+void WebIDBConnectionToServer::commitTransaction(IDBResourceIdentifier& transactionIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::CommitTransaction(transactionIdentifier));
 }
 
-void WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction(IDBResourceIdentifier&)
+void WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction(IDBResourceIdentifier& transactionIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::DidFinishHandlingVersionChangeTransaction(transactionIdentifier));
 }
 
-void WebIDBConnectionToServer::createObjectStore(const IDBRequestData&, const IDBObjectStoreInfo&)
+void WebIDBConnectionToServer::createObjectStore(const IDBRequestData& requestData, const IDBObjectStoreInfo& info)
 {
+    send(Messages::WebIDBConnectionToClient::CreateObjectStore(requestData, info));
 }
 
-void WebIDBConnectionToServer::deleteObjectStore(const IDBRequestData&, const String& objectStoreName)
+void WebIDBConnectionToServer::deleteObjectStore(const IDBRequestData& requestData, const String& objectStoreName)
 {
+    send(Messages::WebIDBConnectionToClient::DeleteObjectStore(requestData, objectStoreName));
 }
 
-void WebIDBConnectionToServer::clearObjectStore(const IDBRequestData&, uint64_t objectStoreIdentifier)
+void WebIDBConnectionToServer::clearObjectStore(const IDBRequestData& requestData, uint64_t objectStoreIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::ClearObjectStore(requestData, objectStoreIdentifier));
 }
 
-void WebIDBConnectionToServer::createIndex(const IDBRequestData&, const IDBIndexInfo&)
+void WebIDBConnectionToServer::createIndex(const IDBRequestData& requestData, const IDBIndexInfo& info)
 {
+    send(Messages::WebIDBConnectionToClient::CreateIndex(requestData, info));
 }
 
-void WebIDBConnectionToServer::deleteIndex(const IDBRequestData&, uint64_t objectStoreIdentifier, const String& indexName)
+void WebIDBConnectionToServer::deleteIndex(const IDBRequestData& requestData, uint64_t objectStoreIdentifier, const String& indexName)
 {
+    send(Messages::WebIDBConnectionToClient::DeleteIndex(requestData, objectStoreIdentifier, indexName));
 }
 
-void WebIDBConnectionToServer::putOrAdd(const IDBRequestData&, IDBKey*, SerializedScriptValue&, const IndexedDB::ObjectStoreOverwriteMode)
+void WebIDBConnectionToServer::putOrAdd(const IDBRequestData& requestData, IDBKey* key, SerializedScriptValue& value, const IndexedDB::ObjectStoreOverwriteMode mode)
 {
+    IDBKeyData keyData(key);
+    IPC::DataReference valueData(value.data());
+    send(Messages::WebIDBConnectionToClient::PutOrAdd(requestData, keyData, valueData, mode != IndexedDB::ObjectStoreOverwriteMode::NoOverwrite));
 }
 
-void WebIDBConnectionToServer::getRecord(const IDBRequestData&, const IDBKeyRangeData&)
+void WebIDBConnectionToServer::getRecord(const IDBRequestData& requestData, const IDBKeyRangeData& range)
 {
+    send(Messages::WebIDBConnectionToClient::GetRecord(requestData, range));
 }
 
-void WebIDBConnectionToServer::getCount(const IDBRequestData&, const IDBKeyRangeData&)
+void WebIDBConnectionToServer::getCount(const IDBRequestData& requestData, const IDBKeyRangeData& range)
 {
+    send(Messages::WebIDBConnectionToClient::GetCount(requestData, range));
 }
 
-void WebIDBConnectionToServer::deleteRecord(const IDBRequestData&, const IDBKeyRangeData&)
+void WebIDBConnectionToServer::deleteRecord(const IDBRequestData& requestData, const IDBKeyRangeData& range)
 {
+    send(Messages::WebIDBConnectionToClient::DeleteRecord(requestData, range));
 }
 
-void WebIDBConnectionToServer::openCursor(const IDBRequestData&, const IDBCursorInfo&)
+void WebIDBConnectionToServer::openCursor(const IDBRequestData& requestData, const IDBCursorInfo& info)
 {
+    send(Messages::WebIDBConnectionToClient::OpenCursor(requestData, info));
 }
 
-void WebIDBConnectionToServer::iterateCursor(const IDBRequestData&, const IDBKeyData&, unsigned long count)
+void WebIDBConnectionToServer::iterateCursor(const IDBRequestData& requestData, const IDBKeyData& key, unsigned long count)
 {
+    send(Messages::WebIDBConnectionToClient::IterateCursor(requestData, key, count));
 }
 
-void WebIDBConnectionToServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&)
+void WebIDBConnectionToServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo& info)
 {
+    send(Messages::WebIDBConnectionToClient::EstablishTransaction(databaseConnectionIdentifier, info));
 }
 
 void WebIDBConnectionToServer::databaseConnectionClosed(uint64_t databaseConnectionIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::DatabaseConnectionClosed(databaseConnectionIdentifier));
 }
 
 void WebIDBConnectionToServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::AbortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier));
 }
 
 void WebIDBConnectionToServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier)
 {
+    send(Messages::WebIDBConnectionToClient::DidFireVersionChangeEvent(databaseConnectionIdentifier, requestIdentifier));
 }
 
 void WebIDBConnectionToServer::didDeleteDatabase(const IDBResultData&)