Diff
Modified: trunk/Source/WebCore/ChangeLog (196724 => 196725)
--- trunk/Source/WebCore/ChangeLog 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebCore/ChangeLog 2016-02-17 23:25:20 UTC (rev 196725)
@@ -1,3 +1,27 @@
+2016-02-17 Brady Eidson <[email protected]>
+
+ Modern IDB: More Encoder/Decoder/Messaging scaffolding for WK2 IPC.
+ https://bugs.webkit.org/show_bug.cgi?id=154356
+
+ Reviewed by Alex Christensen.
+
+ No change in behavior yet; Just laying the groundwork.
+
+ * Modules/indexeddb/shared/IDBDatabaseInfo.h:
+ (WebCore::IDBDatabaseInfo::encode):
+ (WebCore::IDBDatabaseInfo::decode):
+
+ * Modules/indexeddb/shared/IDBError.h:
+ (WebCore::IDBError::encode):
+ (WebCore::IDBError::decode):
+
+ * Modules/indexeddb/shared/IDBRequestData.h:
+ (WebCore::IDBRequestData::decode):
+
+ * Modules/indexeddb/shared/IDBResultData.h:
+ (WebCore::IDBResultData::encode):
+ (WebCore::IDBResultData::decode):
+
2016-02-17 Saam barati <[email protected]>
Implement Proxy [[Get]]
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBDatabaseInfo.h (196724 => 196725)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBDatabaseInfo.h 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBDatabaseInfo.h 2016-02-17 23:25:20 UTC (rev 196725)
@@ -59,13 +59,16 @@
void deleteObjectStore(const String& objectStoreName);
void deleteObjectStore(uint64_t objectStoreIdentifier);
+ WEBCORE_EXPORT IDBDatabaseInfo();
+
+ template<class Encoder> void encode(Encoder&) const;
+ template<class Decoder> static bool decode(Decoder&, IDBDatabaseInfo&);
+
#ifndef NDEBUG
String loggingString() const;
#endif
private:
- IDBDatabaseInfo();
-
IDBObjectStoreInfo* getInfoForExistingObjectStore(const String& objectStoreName);
IDBObjectStoreInfo* getInfoForExistingObjectStore(uint64_t objectStoreIdentifier);
@@ -77,6 +80,30 @@
};
+template<class Encoder>
+void IDBDatabaseInfo::encode(Encoder& encoder) const
+{
+ encoder << m_name << m_version << m_maxObjectStoreID << m_objectStoreMap;
+}
+
+template<class Decoder>
+bool IDBDatabaseInfo::decode(Decoder& decoder, IDBDatabaseInfo& info)
+{
+ if (!decoder.decode(info.m_name))
+ return false;
+
+ if (!decoder.decode(info.m_version))
+ return false;
+
+ if (!decoder.decode(info.m_maxObjectStoreID))
+ return false;
+
+ if (!decoder.decode(info.m_objectStoreMap))
+ return false;
+
+ return true;
+}
+
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBError.h (196724 => 196725)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBError.h 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBError.h 2016-02-17 23:25:20 UTC (rev 196725)
@@ -57,11 +57,24 @@
String m_message;
};
-template<class Decoder> bool IDBError::decode(Decoder&, IDBError&)
+template<class Encoder>
+void IDBError::encode(Encoder& encoder) const
{
- return false;
+ encoder << m_code << m_message;
}
+
+template<class Decoder>
+bool IDBError::decode(Decoder& decoder, IDBError& error)
+{
+ if (!decoder.decode(error.m_code))
+ return false;
+ if (!decoder.decode(error.m_message))
+ return false;
+
+ return true;
+}
+
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h (196724 => 196725)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h 2016-02-17 23:25:20 UTC (rev 196725)
@@ -137,28 +137,28 @@
if (!decoder.decode(hasObject))
return false;
if (hasObject) {
- IDBResourceIdentifier identifier;
- if (!decoder.decode(identifier))
+ std::unique_ptr<IDBResourceIdentifier> object = std::make_unique<IDBResourceIdentifier>();
+ if (!decoder.decode(*object))
return false;
- request.m_requestIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+ request.m_requestIdentifier = WTFMove(object);
}
if (!decoder.decode(hasObject))
return false;
if (hasObject) {
- IDBResourceIdentifier identifier;
- if (!decoder.decode(identifier))
+ std::unique_ptr<IDBResourceIdentifier> object = std::make_unique<IDBResourceIdentifier>();
+ if (!decoder.decode(*object))
return false;
- request.m_transactionIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+ request.m_transactionIdentifier = WTFMove(object);
}
if (!decoder.decode(hasObject))
return false;
if (hasObject) {
- IDBResourceIdentifier identifier;
- if (!decoder.decode(identifier))
+ std::unique_ptr<IDBResourceIdentifier> object = std::make_unique<IDBResourceIdentifier>();
+ if (!decoder.decode(*object))
return false;
- request.m_cursorIdentifier = std::make_unique<IDBResourceIdentifier>(identifier);
+ request.m_cursorIdentifier = WTFMove(object);
}
return true;
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h (196724 => 196725)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResultData.h 2016-02-17 23:25:20 UTC (rev 196725)
@@ -118,11 +118,88 @@
uint64_t m_resultInteger { 0 };
};
-template<class Decoder> bool IDBResultData::decode(Decoder&, IDBResultData&)
+template<class Encoder>
+void IDBResultData::encode(Encoder& encoder) const
{
- return false;
+ encoder << m_requestIdentifier << m_error << m_databaseConnectionIdentifier << m_resultInteger;
+
+ encoder.encodeEnum(m_type);
+
+ encoder << !!m_databaseInfo;
+ if (m_databaseInfo)
+ encoder << *m_databaseInfo;
+
+ encoder << !!m_transactionInfo;
+ if (m_transactionInfo)
+ encoder << *m_transactionInfo;
+
+ encoder << !!m_resultKey;
+ if (m_resultKey)
+ encoder << *m_resultKey;
+
+ encoder << !!m_getResult;
+ if (m_getResult)
+ encoder << *m_getResult;
}
+template<class Decoder> bool IDBResultData::decode(Decoder& decoder, IDBResultData& result)
+{
+ if (!decoder.decode(result.m_requestIdentifier))
+ return false;
+
+ if (!decoder.decode(result.m_error))
+ return false;
+
+ if (!decoder.decode(result.m_databaseConnectionIdentifier))
+ return false;
+
+ if (!decoder.decode(result.m_resultInteger))
+ return false;
+
+ if (!decoder.decodeEnum(result.m_type))
+ return false;
+
+ bool hasObject;
+
+ if (!decoder.decode(hasObject))
+ return false;
+ if (hasObject) {
+ std::unique_ptr<IDBDatabaseInfo> object = std::make_unique<IDBDatabaseInfo>();
+ if (!decoder.decode(*object))
+ return false;
+ result.m_databaseInfo = WTFMove(object);
+ }
+
+ if (!decoder.decode(hasObject))
+ return false;
+ if (hasObject) {
+ std::unique_ptr<IDBTransactionInfo> object = std::make_unique<IDBTransactionInfo>();
+ if (!decoder.decode(*object))
+ return false;
+ result.m_transactionInfo = WTFMove(object);
+ }
+
+ if (!decoder.decode(hasObject))
+ return false;
+ if (hasObject) {
+ std::unique_ptr<IDBKeyData> object = std::make_unique<IDBKeyData>();
+ if (!decoder.decode(*object))
+ return false;
+ result.m_resultKey = WTFMove(object);
+ }
+
+ if (!decoder.decode(hasObject))
+ return false;
+ if (hasObject) {
+ std::unique_ptr<IDBGetResult> object = std::make_unique<IDBGetResult>();
+ if (!decoder.decode(*object))
+ return false;
+ result.m_getResult = WTFMove(object);
+ }
+
+ return true;
+}
+
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)
Modified: trunk/Source/WebKit2/ChangeLog (196724 => 196725)
--- trunk/Source/WebKit2/ChangeLog 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebKit2/ChangeLog 2016-02-17 23:25:20 UTC (rev 196725)
@@ -1,3 +1,34 @@
+2016-02-17 Brady Eidson <[email protected]>
+
+ Modern IDB: More Encoder/Decoder/Messaging scaffolding for WK2 IPC.
+ https://bugs.webkit.org/show_bug.cgi?id=154356
+
+ Reviewed by Alex Christensen.
+
+ No change in behavior yet; Just laying the groundwork.
+
+ * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
+ (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
+ (WebKit::WebIDBConnectionToClient::didOpenDatabase):
+ (WebKit::WebIDBConnectionToClient::didAbortTransaction):
+ (WebKit::WebIDBConnectionToClient::didCommitTransaction):
+ (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
+ (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
+ (WebKit::WebIDBConnectionToClient::didClearObjectStore):
+ (WebKit::WebIDBConnectionToClient::didCreateIndex):
+ (WebKit::WebIDBConnectionToClient::didDeleteIndex):
+ (WebKit::WebIDBConnectionToClient::didPutOrAdd):
+ (WebKit::WebIDBConnectionToClient::didGetRecord):
+ (WebKit::WebIDBConnectionToClient::didGetCount):
+ (WebKit::WebIDBConnectionToClient::didDeleteRecord):
+ (WebKit::WebIDBConnectionToClient::didOpenCursor):
+ (WebKit::WebIDBConnectionToClient::didIterateCursor):
+ (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
+ (WebKit::WebIDBConnectionToClient::didStartTransaction):
+ (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
+ * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
+ * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in:
+
2016-02-17 Alex Christensen <[email protected]>
Fix GTK build after r196720.
Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp (196724 => 196725)
--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp 2016-02-17 23:25:20 UTC (rev 196725)
@@ -28,6 +28,12 @@
#if ENABLE(INDEXED_DATABASE)
+#include "WebCoreArgumentCoders.h"
+#include "WebIDBConnectionToServerMessages.h"
+#include <WebCore/IDBError.h>
+#include <WebCore/IDBResultData.h>
+#include <WebCore/UniqueIDBDatabaseConnection.h>
+
using namespace WebCore;
namespace WebKit {
@@ -62,76 +68,94 @@
return *m_connectionToClient;
}
-void WebIDBConnectionToClient::didDeleteDatabase(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didDeleteDatabase(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidDeleteDatabase(resultData));
}
-void WebIDBConnectionToClient::didOpenDatabase(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didOpenDatabase(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidOpenDatabase(resultData));
}
-void WebIDBConnectionToClient::didAbortTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&)
+void WebIDBConnectionToClient::didAbortTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError& error)
{
+ send(Messages::WebIDBConnectionToServer::DidAbortTransaction(transactionIdentifier, error));
}
-void WebIDBConnectionToClient::didCommitTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&)
+void WebIDBConnectionToClient::didCommitTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError& error)
{
+ send(Messages::WebIDBConnectionToServer::DidCommitTransaction(transactionIdentifier, error));
}
-void WebIDBConnectionToClient::didCreateObjectStore(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didCreateObjectStore(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidCreateObjectStore(resultData));
}
-void WebIDBConnectionToClient::didDeleteObjectStore(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didDeleteObjectStore(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidDeleteObjectStore(resultData));
}
-void WebIDBConnectionToClient::didClearObjectStore(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didClearObjectStore(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidClearObjectStore(resultData));
}
-void WebIDBConnectionToClient::didCreateIndex(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didCreateIndex(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidCreateIndex(resultData));
}
-void WebIDBConnectionToClient::didDeleteIndex(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didDeleteIndex(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidDeleteIndex(resultData));
}
-void WebIDBConnectionToClient::didPutOrAdd(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didPutOrAdd(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidPutOrAdd(resultData));
}
-void WebIDBConnectionToClient::didGetRecord(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didGetRecord(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidGetRecord(resultData));
}
-void WebIDBConnectionToClient::didGetCount(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didGetCount(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidGetCount(resultData));
}
-void WebIDBConnectionToClient::didDeleteRecord(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didDeleteRecord(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidDeleteRecord(resultData));
}
-void WebIDBConnectionToClient::didOpenCursor(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didOpenCursor(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidOpenCursor(resultData));
}
-void WebIDBConnectionToClient::didIterateCursor(const WebCore::IDBResultData&)
+void WebIDBConnectionToClient::didIterateCursor(const WebCore::IDBResultData& resultData)
{
+ send(Messages::WebIDBConnectionToServer::DidIterateCursor(resultData));
}
-void WebIDBConnectionToClient::fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection&, const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
+void WebIDBConnectionToClient::fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection& connection, const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
{
+ send(Messages::WebIDBConnectionToServer::FireVersionChangeEvent(connection.identifier(), requestIdentifier, requestedVersion));
}
-void WebIDBConnectionToClient::didStartTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&)
+void WebIDBConnectionToClient::didStartTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError& error)
{
+ send(Messages::WebIDBConnectionToServer::DidStartTransaction(transactionIdentifier, error));
}
void WebIDBConnectionToClient::notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion)
{
+ send(Messages::WebIDBConnectionToServer::NotifyOpenDBRequestBlocked(requestIdentifier, oldVersion, newVersion));
}
void WebIDBConnectionToClient::deleteDatabase(const IDBRequestData&)
Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp (196724 => 196725)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp 2016-02-17 23:25:20 UTC (rev 196725)
@@ -249,7 +249,18 @@
{
}
+void WebIDBConnectionToServer::fireVersionChangeEvent(uint64_t, const WebCore::IDBResourceIdentifier&, uint64_t)
+{
+}
+void WebIDBConnectionToServer::didStartTransaction(const WebCore::IDBResourceIdentifier&, const WebCore::IDBError&)
+{
+}
+
+void WebIDBConnectionToServer::notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier&, uint64_t, uint64_t)
+{
+}
+
} // namespace WebKit
#endif // ENABLE(INDEXED_DATABASE)
Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h (196724 => 196725)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h 2016-02-17 23:25:20 UTC (rev 196725)
@@ -84,6 +84,9 @@
void didDeleteRecord(const WebCore::IDBResultData&);
void didOpenCursor(const WebCore::IDBResultData&);
void didIterateCursor(const WebCore::IDBResultData&);
+ void fireVersionChangeEvent(uint64_t uniqueDatabaseConnectionIdentifier, const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion);
+ void didStartTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&);
+ void notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion);
private:
WebIDBConnectionToServer();
Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in (196724 => 196725)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in 2016-02-17 23:11:59 UTC (rev 196724)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in 2016-02-17 23:25:20 UTC (rev 196725)
@@ -38,6 +38,11 @@
DidDeleteRecord(WebCore::IDBResultData result)
DidOpenCursor(WebCore::IDBResultData result)
DidIterateCursor(WebCore::IDBResultData result)
+
+ FireVersionChangeEvent(uint64_t databaseConnectionIdentifier, WebCore::IDBResourceIdentifier requestIdentifier, uint64_t requestedVersion)
+ DidStartTransaction(WebCore::IDBResourceIdentifier transactionIdentifier, WebCore::IDBError error)
+ NotifyOpenDBRequestBlocked(WebCore::IDBResourceIdentifier requestIdentifier, uint64_t oldVersion, uint64_t newVersion)
+
}
#endif // ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)