Diff
Modified: trunk/Source/WebKit2/ChangeLog (104622 => 104623)
--- trunk/Source/WebKit2/ChangeLog 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/ChangeLog 2012-01-10 21:14:16 UTC (rev 104623)
@@ -1,3 +1,28 @@
+2012-01-10 Anders Carlsson <[email protected]>
+
+ DispatchOnConnectionQueue messages should have a Connection parameter
+ https://bugs.webkit.org/show_bug.cgi?id=75986
+
+ Reviewed by Adam Roben.
+
+ Message handlers for messages with the DispatchOnConnectionQueue should have a CoreIPC::Connection
+ parameter, making it easier to send messages back over that connection.
+
+ * Platform/CoreIPC/HandleMessage.h:
+ (CoreIPC::callMemberFunction):
+ (CoreIPC::handleMessageOnConnectionQueue):
+ * Scripts/webkit2/messages.py:
+ (async_case_statement):
+ (generate_message_handler):
+ * Scripts/webkit2/messages_unittest.py:
+ * WebProcess/WebPage/EventDispatcher.cpp:
+ (WebKit::EventDispatcher::wheelEvent):
+ (WebKit::EventDispatcher::gestureEvent):
+ * WebProcess/WebPage/EventDispatcher.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::pluginProcessCrashed):
+ * WebProcess/WebProcess.h:
+
2012-01-10 Chris Marrin <[email protected]>
Turn off the FilterTrigger in WebKit and WebKit2
Modified: trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h (104622 => 104623)
--- trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h 2012-01-10 21:14:16 UTC (rev 104623)
@@ -196,6 +196,19 @@
(object->*function)(args.argument1, delayedReply);
}
+// Dispatch functions with connection parameter.
+template<typename C, typename MF, typename P1>
+void callMemberFunction(Connection* connection, const Arguments1<P1>& args, C* object, MF function)
+{
+ (object->*function)(connection, args.argument1);
+}
+
+template<typename C, typename MF, typename P1, typename P2>
+void callMemberFunction(Connection* connection, const Arguments2<P1, P2>& args, C* object, MF function)
+{
+ (object->*function)(connection, args.argument1, args.argument2);
+}
+
// Variadic dispatch functions.
template<typename C, typename MF>
@@ -290,6 +303,15 @@
}
template<typename T, typename C, typename MF>
+void handleMessageOnConnectionQueue(Connection* connection, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+ typename T::DecodeType::ValueType arguments;
+ if (!argumentDecoder->decode(arguments))
+ return;
+ callMemberFunction(connection, arguments, object, function);
+}
+
+template<typename T, typename C, typename MF>
void handleMessageVariadic(ArgumentDecoder* argumentDecoder, C* object, MF function)
{
typename T::DecodeType::ValueType arguments;
Modified: trunk/Source/WebKit2/Scripts/webkit2/messages.py (104622 => 104623)
--- trunk/Source/WebKit2/Scripts/webkit2/messages.py 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/Scripts/webkit2/messages.py 2012-01-10 21:14:16 UTC (rev 104623)
@@ -311,16 +311,21 @@
return '%s::%s' % (receiver.name, message.name[0].lower() + message.name[1:])
-def async_case_statement(receiver, message, statement_before_return=None):
+def async_case_statement(receiver, message):
+ dispatch_function_args = ['arguments', 'this', '&%s' % handler_function(receiver, message)]
dispatch_function = 'handleMessage'
if message_is_variadic(message):
dispatch_function += 'Variadic'
-
+ if message.has_attribute(DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE):
+ dispatch_function += 'OnConnectionQueue'
+ dispatch_function_args.insert(0, 'connection')
+
result = []
result.append(' case Messages::%s::%s:\n' % (receiver.name, message.id()))
- result.append(' CoreIPC::%s<Messages::%s::%s>(arguments, this, &%s);\n' % (dispatch_function, receiver.name, message.name, handler_function(receiver, message)))
- if statement_before_return:
- result.append(' %s\n' % statement_before_return)
+
+ result.append(' CoreIPC::%s<Messages::%s::%s>(%s);\n' % (dispatch_function, receiver.name, message.name, ', '.join(dispatch_function_args)))
+ if message.has_attribute(DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE):
+ result.append(' didHandleMessage = true;\n')
result.append(' return;\n')
return surround_in_condition(''.join(result), message.condition)
@@ -533,14 +538,14 @@
async_messages.append(message)
if async_dispatch_on_connection_queue_messages:
- result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)\n' % (receiver.name, receiver.name))
+ result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)\n' % (receiver.name, receiver.name))
result.append('{\n')
result.append('#if COMPILER(MSVC)\n')
result.append('#pragma warning(push)\n')
result.append('#pragma warning(disable: 4065)\n')
result.append('#endif\n')
result.append(' switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name)
- result += [async_case_statement(receiver, message, 'didHandleMessage = true;') for message in async_dispatch_on_connection_queue_messages]
+ result += [async_case_statement(receiver, message) for message in async_dispatch_on_connection_queue_messages]
result.append(' default:\n')
result.append(' return;\n')
result.append(' }\n')
Modified: trunk/Source/WebKit2/Scripts/webkit2/messages_unittest.py (104622 => 104623)
--- trunk/Source/WebKit2/Scripts/webkit2/messages_unittest.py 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/Scripts/webkit2/messages_unittest.py 2012-01-10 21:14:16 UTC (rev 104623)
@@ -685,7 +685,7 @@
namespace WebKit {
-void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)
+void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)
{
#if COMPILER(MSVC)
#pragma warning(push)
@@ -693,7 +693,7 @@
#endif
switch (messageID.get<Messages::WebPage::Kind>()) {
case Messages::WebPage::TestConnectionQueueID:
- CoreIPC::handleMessage<Messages::WebPage::TestConnectionQueue>(arguments, this, &WebPage::testConnectionQueue);
+ CoreIPC::handleMessageOnConnectionQueue<Messages::WebPage::TestConnectionQueue>(connection, arguments, this, &WebPage::testConnectionQueue);
didHandleMessage = true;
return;
default:
Modified: trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp (104622 => 104623)
--- trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp 2012-01-10 21:14:16 UTC (rev 104623)
@@ -78,7 +78,7 @@
}
}
-void EventDispatcher::wheelEvent(uint64_t pageID, const WebWheelEvent& wheelEvent)
+void EventDispatcher::wheelEvent(CoreIPC::Connection*, uint64_t pageID, const WebWheelEvent& wheelEvent)
{
#if ENABLE(THREADED_SCROLLING)
MutexLocker locker(m_scrollingCoordinatorsMutex);
@@ -96,7 +96,7 @@
}
#if ENABLE(GESTURE_EVENTS)
-void EventDispatcher::gestureEvent(uint64_t pageID, const WebGestureEvent& gestureEvent)
+void EventDispatcher::gestureEvent(CoreIPC::Connection*, uint64_t pageID, const WebGestureEvent& gestureEvent)
{
#if ENABLE(THREADED_SCROLLING)
MutexLocker locker(m_scrollingCoordinatorsMutex);
Modified: trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h (104622 => 104623)
--- trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h 2012-01-10 21:14:16 UTC (rev 104623)
@@ -66,9 +66,9 @@
void didReceiveEventDispatcherMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage);
// Message handlers
- void wheelEvent(uint64_t pageID, const WebWheelEvent&);
+ void wheelEvent(CoreIPC::Connection*, uint64_t pageID, const WebWheelEvent&);
#if ENABLE(GESTURE_EVENTS)
- void gestureEvent(uint64_t pageID, const WebGestureEvent&);
+ void gestureEvent(CoreIPC::Connection*, uint64_t pageID, const WebGestureEvent&);
#endif
// This is called on the main thread.
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (104622 => 104623)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-01-10 21:14:16 UTC (rev 104623)
@@ -949,7 +949,7 @@
}
#if ENABLE(PLUGIN_PROCESS)
-void WebProcess::pluginProcessCrashed(const String& pluginPath)
+void WebProcess::pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath)
{
m_pluginProcessConnectionManager.pluginProcessCrashed(pluginPath);
}
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (104622 => 104623)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-01-10 21:12:45 UTC (rev 104622)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-01-10 21:14:16 UTC (rev 104623)
@@ -182,7 +182,7 @@
#endif
#if ENABLE(PLUGIN_PROCESS)
- void pluginProcessCrashed(const String& pluginPath);
+ void pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath);
#endif
void startMemorySampler(const SandboxExtension::Handle&, const String&, const double);