Title: [104623] trunk/Source/WebKit2
Revision
104623
Author
[email protected]
Date
2012-01-10 13:14:16 -0800 (Tue, 10 Jan 2012)

Log Message

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:

Modified Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to