Diff
Modified: trunk/Source/WebKit2/ChangeLog (143261 => 143262)
--- trunk/Source/WebKit2/ChangeLog 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/ChangeLog 2013-02-18 21:52:34 UTC (rev 143262)
@@ -1,3 +1,25 @@
+2013-02-18 Anders Carlsson <[email protected]>
+
+ StorageManager message handlers should take the connection
+ https://bugs.webkit.org/show_bug.cgi?id=110151
+
+ Reviewed by Andreas Kling.
+
+ * Platform/CoreIPC/HandleMessage.h:
+ (CoreIPC):
+ (CoreIPC::callMemberFunction):
+ (CoreIPC::handleMessage):
+ * Scripts/webkit2/messages.py:
+ (sync_message_statement):
+ (generate_message_handler):
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::createStorageArea):
+ (WebKit::StorageManager::destroyStorageArea):
+ (WebKit::StorageManager::getValues):
+ * UIProcess/Storage/StorageManager.h:
+ (StorageManager):
+ * UIProcess/Storage/StorageManager.messages.in:
+
2013-02-18 Christophe Dumez <[email protected]>
[EFL][WK2] Use C API inside ewk_security_origin
Modified: trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h (143261 => 143262)
--- trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h 2013-02-18 21:52:34 UTC (rev 143262)
@@ -247,6 +247,12 @@
(object->*function)(connection, args.argument1, args.argument2, args.argument3, args.argument4);
}
+template<typename C, typename MF, typename P1, typename R1>
+void callMemberFunction(Connection* connection, const Arguments1<P1>& args, Arguments1<R1>& replyArgs, C* object, MF function)
+{
+ (object->*function)(connection, args.argument1, replyArgs.argument1);
+}
+
// Variadic dispatch functions.
template<typename C, typename MF>
@@ -341,6 +347,18 @@
}
template<typename T, typename C, typename MF>
+void handleMessage(Connection* connection, MessageDecoder& decoder, MessageEncoder& replyEncoder, C* object, MF function)
+{
+ typename T::DecodeType::ValueType arguments;
+ if (!decoder.decode(arguments))
+ return;
+
+ typename T::Reply::ValueType replyArguments;
+ callMemberFunction(connection, arguments, replyArguments, object, function);
+ replyEncoder << replyArguments;
+}
+
+template<typename T, typename C, typename MF>
void handleMessage(Connection* connection, MessageDecoder& decoder, C* object, MF function)
{
typename T::DecodeType::ValueType arguments;
Modified: trunk/Source/WebKit2/Scripts/webkit2/messages.py (143261 => 143262)
--- trunk/Source/WebKit2/Scripts/webkit2/messages.py 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/Scripts/webkit2/messages.py 2013-02-18 21:52:34 UTC (rev 143262)
@@ -328,9 +328,11 @@
if message.has_attribute(VARIADIC_ATTRIBUTE):
dispatch_function += 'Variadic'
+ wants_connection = message.has_attribute(DELAYED_ATTRIBUTE) or message.has_attribute(WANTS_CONNECTION_ATTRIBUTE)
+
result = []
result.append(' if (decoder.messageName() == Messages::%s::%s::name()) {\n' % (receiver.name, message.name))
- result.append(' CoreIPC::%s<Messages::%s::%s>(%sdecoder, %sreplyEncoder, this, &%s);\n' % (dispatch_function, receiver.name, message.name, 'connection, ' if message.has_attribute(DELAYED_ATTRIBUTE) else '', '' if message.has_attribute(DELAYED_ATTRIBUTE) else '*', handler_function(receiver, message)))
+ result.append(' CoreIPC::%s<Messages::%s::%s>(%sdecoder, %sreplyEncoder, this, &%s);\n' % (dispatch_function, receiver.name, message.name, 'connection, ' if wants_connection else '', '' if message.has_attribute(DELAYED_ATTRIBUTE) else '*', handler_function(receiver, message)))
result.append(' return;\n')
result.append(' }\n')
return surround_in_condition(''.join(result), message.condition)
@@ -572,7 +574,7 @@
if receiver.has_attribute(LEGACY_RECEIVER_ATTRIBUTE):
result.append('void %s::didReceiveSync%sMessage(CoreIPC::Connection*%s, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)\n' % (receiver.name, receiver.name, ' connection' if sync_delayed_messages else ''))
else:
- result.append('void %s::didReceiveSyncMessage(CoreIPC::Connection*%s, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)\n' % (receiver.name, ' connection' if sync_delayed_messages else ''))
+ result.append('void %s::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)\n' % (receiver.name))
result.append('{\n')
result += [sync_message_statement(receiver, message) for message in sync_messages]
result.append(' ASSERT_NOT_REACHED();\n')
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (143261 => 143262)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-02-18 21:52:34 UTC (rev 143262)
@@ -56,17 +56,17 @@
webProcessProxy->connection()->removeWorkQueueMessageReceiver(Messages::StorageManager::messageReceiverName());
}
-void StorageManager::createStorageArea(uint64_t storageAreaID, uint64_t storageNamespaceID, const SecurityOriginData&)
+void StorageManager::createStorageArea(CoreIPC::Connection*, uint64_t storageAreaID, uint64_t storageNamespaceID, const SecurityOriginData&)
{
UNUSED_PARAM(storageAreaID);
UNUSED_PARAM(storageNamespaceID);
}
-void StorageManager::destroyStorageArea(uint64_t)
+void StorageManager::destroyStorageArea(CoreIPC::Connection*, uint64_t)
{
}
-void StorageManager::getValues(uint64_t, HashMap<String, String>&)
+void StorageManager::getValues(CoreIPC::Connection*, uint64_t, HashMap<String, String>&)
{
// FIXME: Implement this.
}
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (143261 => 143262)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-02-18 21:52:34 UTC (rev 143262)
@@ -54,9 +54,9 @@
virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder) OVERRIDE;
// Message handlers.
- void createStorageArea(uint64_t storageAreaID, uint64_t storageNamespaceID, const SecurityOriginData&);
- void destroyStorageArea(uint64_t storageAreaID);
- void getValues(uint64_t storageAreaID, HashMap<String, String>& values);
+ void createStorageArea(CoreIPC::Connection*, uint64_t storageAreaID, uint64_t storageNamespaceID, const SecurityOriginData&);
+ void destroyStorageArea(CoreIPC::Connection*, uint64_t storageAreaID);
+ void getValues(CoreIPC::Connection*, uint64_t storageAreaID, HashMap<String, String>& values);
RefPtr<WorkQueue> m_queue;
};
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in (143261 => 143262)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in 2013-02-18 21:52:00 UTC (rev 143261)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in 2013-02-18 21:52:34 UTC (rev 143262)
@@ -21,8 +21,8 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
messages -> StorageManager {
- CreateStorageArea(uint64_t storageAreaID, uint64_t storageNamespaceID, WebKit::SecurityOriginData securityOriginData)
- DestroyStorageArea(uint64_t storageAreaID)
+ CreateStorageArea(uint64_t storageAreaID, uint64_t storageNamespaceID, WebKit::SecurityOriginData securityOriginData) WantsConnection
+ DestroyStorageArea(uint64_t storageAreaID) WantsConnection
- GetValues(uint64_t storageAreaID) -> (WTF::HashMap<WTF::String, WTF::String> values)
+ GetValues(uint64_t storageAreaID) -> (WTF::HashMap<WTF::String, WTF::String> values) WantsConnection
}