diff options
Diffstat (limited to 'Source/WebKit2/Scripts')
-rw-r--r-- | Source/WebKit2/Scripts/webkit2/messages.py | 38 | ||||
-rw-r--r-- | Source/WebKit2/Scripts/webkit2/messages_unittest.py | 84 |
2 files changed, 66 insertions, 56 deletions
diff --git a/Source/WebKit2/Scripts/webkit2/messages.py b/Source/WebKit2/Scripts/webkit2/messages.py index f1cd50389..69a9e352e 100644 --- a/Source/WebKit2/Scripts/webkit2/messages.py +++ b/Source/WebKit2/Scripts/webkit2/messages.py @@ -131,6 +131,7 @@ def message_to_struct_declaration(message): result.append(' static const Kind messageID = %s;\n' % message.id()) result.append(' static CoreIPC::StringReference receiverName() { return messageReceiverName(); }\n') result.append(' static CoreIPC::StringReference name() { return CoreIPC::StringReference("%s"); }\n' % message.name) + result.append(' static const bool isSync = %s;\n' % ('false', 'true')[message.reply_parameters != None]) result.append('\n') if message.reply_parameters != None: if message.has_attribute(DELAYED_ATTRIBUTE): @@ -317,7 +318,7 @@ def handler_function(receiver, message): return '%s::%s' % (receiver.name, message.name[0].lower() + message.name[1:]) -def async_case_statement(receiver, message): +def async_message_statement(receiver, message): dispatch_function_args = ['decoder', 'this', '&%s' % handler_function(receiver, message)] dispatch_function = 'handleMessage' if message.has_attribute(VARIADIC_ATTRIBUTE): @@ -327,16 +328,16 @@ def async_case_statement(receiver, message): dispatch_function_args.insert(0, 'connection') result = [] - result.append(' case Messages::%s::%s:\n' % (receiver.name, message.id())) - + result.append(' if (decoder.messageName() == Messages::%s::%s::name()) {\n' % (receiver.name, message.name)) 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') + result.append(' }\n') return surround_in_condition(''.join(result), message.condition) -def sync_case_statement(receiver, message): +def sync_message_statement(receiver, message): dispatch_function = 'handleMessage' if message.has_attribute(DELAYED_ATTRIBUTE): dispatch_function += 'Delayed' @@ -344,10 +345,10 @@ def sync_case_statement(receiver, message): dispatch_function += 'Variadic' result = [] - result.append(' case Messages::%s::%s:\n' % (receiver.name, message.id())) + 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(' return;\n') - + result.append(' }\n') return surround_in_condition(''.join(result), message.condition) @@ -387,6 +388,7 @@ def headers_for_type(type): 'WTF::String': ['<wtf/text/WTFString.h>'], 'WebCore::CompositionUnderline': ['<WebCore/Editor.h>'], 'WebCore::GrammarDetail': ['<WebCore/TextCheckerClient.h>'], + 'WebCore::GraphicsLayerAnimations': ['<WebCore/GraphicsLayerAnimation.h>'], 'WebCore::KeyframeValueList': ['<WebCore/GraphicsLayer.h>'], 'WebCore::KeypressCommand': ['<WebCore/KeyboardEvent.h>'], 'WebCore::FileChooserSettings': ['<WebCore/FileChooser.h>'], @@ -545,42 +547,30 @@ def generate_message_handler(file): async_messages.append(message) if async_dispatch_on_connection_queue_messages: - result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, bool& didHandleMessage)\n' % (receiver.name, receiver.name)) + result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder, 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) for message in async_dispatch_on_connection_queue_messages] - result.append(' default:\n') - result.append(' return;\n') - result.append(' }\n') + result += [async_message_statement(receiver, message) for message in async_dispatch_on_connection_queue_messages] result.append('#if COMPILER(MSVC)\n') result.append('#pragma warning(pop)\n') result.append('#endif\n') result.append('}\n\n') if async_messages: - result.append('void %s::didReceive%sMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder)\n' % (receiver.name, receiver.name)) + result.append('void %s::didReceive%sMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder)\n' % (receiver.name, receiver.name)) result.append('{\n') - result.append(' switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name) - result += [async_case_statement(receiver, message) for message in async_messages] - result.append(' default:\n') - result.append(' break;\n') - result.append(' }\n\n') + result += [async_message_statement(receiver, message) for message in async_messages] result.append(' ASSERT_NOT_REACHED();\n') result.append('}\n') if sync_messages: result.append('\n') - result.append('void %s::didReceiveSync%sMessage(CoreIPC::Connection*%s, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)\n' % (receiver.name, receiver.name, ' connection' if sync_delayed_messages else '')) + result.append('void %s::didReceiveSync%sMessage(CoreIPC::Connection*%s, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)\n' % (receiver.name, receiver.name, ' connection' if sync_delayed_messages else '')) result.append('{\n') - result.append(' switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name) - result += [sync_case_statement(receiver, message) for message in sync_messages] - result.append(' default:\n') - result.append(' break;\n') - result.append(' }\n\n') + result += [sync_message_statement(receiver, message) for message in sync_messages] result.append(' ASSERT_NOT_REACHED();\n') result.append('}\n') diff --git a/Source/WebKit2/Scripts/webkit2/messages_unittest.py b/Source/WebKit2/Scripts/webkit2/messages_unittest.py index f4fa1eee8..6b1ebfd2f 100644 --- a/Source/WebKit2/Scripts/webkit2/messages_unittest.py +++ b/Source/WebKit2/Scripts/webkit2/messages_unittest.py @@ -382,6 +382,7 @@ struct LoadURL : CoreIPC::Arguments1<const WTF::String&> { static const Kind messageID = LoadURLID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("LoadURL"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const WTF::String&> DecodeType; explicit LoadURL(const WTF::String& url) @@ -395,6 +396,7 @@ struct TouchEvent : CoreIPC::Arguments1<const WebKit::WebTouchEvent&> { static const Kind messageID = TouchEventID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("TouchEvent"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const WebKit::WebTouchEvent&> DecodeType; explicit TouchEvent(const WebKit::WebTouchEvent& event) @@ -408,6 +410,7 @@ struct DidReceivePolicyDecision : CoreIPC::Arguments3<uint64_t, uint64_t, uint32 static const Kind messageID = DidReceivePolicyDecisionID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("DidReceivePolicyDecision"); } + static const bool isSync = false; typedef CoreIPC::Arguments3<uint64_t, uint64_t, uint32_t> DecodeType; DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction) @@ -420,6 +423,7 @@ struct Close : CoreIPC::Arguments0 { static const Kind messageID = CloseID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("Close"); } + static const bool isSync = false; typedef CoreIPC::Arguments0 DecodeType; }; @@ -428,6 +432,7 @@ struct PreferencesDidChange : CoreIPC::Arguments1<const WebKit::WebPreferencesSt static const Kind messageID = PreferencesDidChangeID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("PreferencesDidChange"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const WebKit::WebPreferencesStore&> DecodeType; explicit PreferencesDidChange(const WebKit::WebPreferencesStore& store) @@ -440,6 +445,7 @@ struct SendDoubleAndFloat : CoreIPC::Arguments2<double, float> { static const Kind messageID = SendDoubleAndFloatID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("SendDoubleAndFloat"); } + static const bool isSync = false; typedef CoreIPC::Arguments2<double, float> DecodeType; SendDoubleAndFloat(double d, float f) @@ -452,6 +458,7 @@ struct SendInts : CoreIPC::Arguments2<const Vector<uint64_t>&, const Vector<Vect static const Kind messageID = SendIntsID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("SendInts"); } + static const bool isSync = false; typedef CoreIPC::Arguments2<const Vector<uint64_t>&, const Vector<Vector<uint64_t> >&> DecodeType; SendInts(const Vector<uint64_t>& ints, const Vector<Vector<uint64_t> >& intVectors) @@ -464,6 +471,7 @@ struct CreatePlugin : CoreIPC::Arguments2<uint64_t, const WebKit::Plugin::Parame static const Kind messageID = CreatePluginID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("CreatePlugin"); } + static const bool isSync = true; typedef CoreIPC::Arguments1<bool&> Reply; typedef CoreIPC::Arguments2<uint64_t, const WebKit::Plugin::Parameters&> DecodeType; @@ -477,6 +485,7 @@ struct RunJavaScriptAlert : CoreIPC::Arguments2<uint64_t, const WTF::String&> { static const Kind messageID = RunJavaScriptAlertID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("RunJavaScriptAlert"); } + static const bool isSync = true; typedef CoreIPC::Arguments0 Reply; typedef CoreIPC::Arguments2<uint64_t, const WTF::String&> DecodeType; @@ -490,6 +499,7 @@ struct GetPlugins : CoreIPC::Arguments1<bool> { static const Kind messageID = GetPluginsID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("GetPlugins"); } + static const bool isSync = true; typedef CoreIPC::Arguments1<Vector<WebCore::PluginInfo>&> Reply; typedef CoreIPC::Arguments1<bool> DecodeType; @@ -503,6 +513,7 @@ struct GetPluginProcessConnection : CoreIPC::Arguments1<const WTF::String&> { static const Kind messageID = GetPluginProcessConnectionID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("GetPluginProcessConnection"); } + static const bool isSync = true; struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { DelayedReply(PassRefPtr<CoreIPC::Connection>, PassOwnPtr<CoreIPC::MessageEncoder>); @@ -527,6 +538,7 @@ struct TestMultipleAttributes : CoreIPC::Arguments0 { static const Kind messageID = TestMultipleAttributesID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("TestMultipleAttributes"); } + static const bool isSync = true; struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { DelayedReply(PassRefPtr<CoreIPC::Connection>, PassOwnPtr<CoreIPC::MessageEncoder>); @@ -547,6 +559,7 @@ struct TestConnectionQueue : CoreIPC::Arguments1<uint64_t> { static const Kind messageID = TestConnectionQueueID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("TestConnectionQueue"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<uint64_t> DecodeType; explicit TestConnectionQueue(uint64_t pluginID) @@ -559,6 +572,7 @@ struct TestParameterAttributes : CoreIPC::Arguments3<uint64_t, double, double> { static const Kind messageID = TestParameterAttributesID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("TestParameterAttributes"); } + static const bool isSync = false; typedef CoreIPC::Arguments3<uint64_t, double, double> DecodeType; TestParameterAttributes(uint64_t foo, double bar, double baz) @@ -572,6 +586,7 @@ struct DidCreateWebProcessConnection : CoreIPC::Arguments1<const CoreIPC::MachPo static const Kind messageID = DidCreateWebProcessConnectionID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("DidCreateWebProcessConnection"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const CoreIPC::MachPort&> DecodeType; explicit DidCreateWebProcessConnection(const CoreIPC::MachPort& connectionIdentifier) @@ -586,6 +601,7 @@ struct InterpretKeyEvent : CoreIPC::Arguments1<uint32_t> { static const Kind messageID = InterpretKeyEventID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("InterpretKeyEvent"); } + static const bool isSync = true; typedef CoreIPC::Arguments1<Vector<WebCore::KeypressCommand>&> Reply; typedef CoreIPC::Arguments1<uint32_t> DecodeType; @@ -601,6 +617,7 @@ struct DeprecatedOperation : CoreIPC::Arguments1<const CoreIPC::DummyType&> { static const Kind messageID = DeprecatedOperationID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("DeprecatedOperation"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const CoreIPC::DummyType&> DecodeType; explicit DeprecatedOperation(const CoreIPC::DummyType& dummy) @@ -615,6 +632,7 @@ struct ExperimentalOperation : CoreIPC::Arguments1<const CoreIPC::DummyType&> { static const Kind messageID = ExperimentalOperationID; static CoreIPC::StringReference receiverName() { return messageReceiverName(); } static CoreIPC::StringReference name() { return CoreIPC::StringReference("ExperimentalOperation"); } + static const bool isSync = false; typedef CoreIPC::Arguments1<const CoreIPC::DummyType&> DecodeType; explicit ExperimentalOperation(const CoreIPC::DummyType& dummy) @@ -743,97 +761,99 @@ bool TestMultipleAttributes::DelayedReply::send() namespace WebKit { -void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, bool& didHandleMessage) +void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder, bool& didHandleMessage) { #if COMPILER(MSVC) #pragma warning(push) #pragma warning(disable: 4065) #endif - switch (messageID.get<Messages::WebPage::Kind>()) { - case Messages::WebPage::TestConnectionQueueID: + if (decoder.messageName() == Messages::WebPage::TestConnectionQueue::name()) { CoreIPC::handleMessageOnConnectionQueue<Messages::WebPage::TestConnectionQueue>(connection, decoder, this, &WebPage::testConnectionQueue); didHandleMessage = true; return; - default: - return; } #if COMPILER(MSVC) #pragma warning(pop) #endif } -void WebPage::didReceiveWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder) +void WebPage::didReceiveWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder) { - switch (messageID.get<Messages::WebPage::Kind>()) { - case Messages::WebPage::LoadURLID: + if (decoder.messageName() == Messages::WebPage::LoadURL::name()) { CoreIPC::handleMessage<Messages::WebPage::LoadURL>(decoder, this, &WebPage::loadURL); return; + } #if ENABLE(TOUCH_EVENTS) - case Messages::WebPage::TouchEventID: + if (decoder.messageName() == Messages::WebPage::TouchEvent::name()) { CoreIPC::handleMessage<Messages::WebPage::TouchEvent>(decoder, this, &WebPage::touchEvent); return; + } #endif - case Messages::WebPage::DidReceivePolicyDecisionID: + if (decoder.messageName() == Messages::WebPage::DidReceivePolicyDecision::name()) { CoreIPC::handleMessage<Messages::WebPage::DidReceivePolicyDecision>(decoder, this, &WebPage::didReceivePolicyDecision); return; - case Messages::WebPage::CloseID: + } + if (decoder.messageName() == Messages::WebPage::Close::name()) { CoreIPC::handleMessage<Messages::WebPage::Close>(decoder, this, &WebPage::close); return; - case Messages::WebPage::PreferencesDidChangeID: + } + if (decoder.messageName() == Messages::WebPage::PreferencesDidChange::name()) { CoreIPC::handleMessage<Messages::WebPage::PreferencesDidChange>(decoder, this, &WebPage::preferencesDidChange); return; - case Messages::WebPage::SendDoubleAndFloatID: + } + if (decoder.messageName() == Messages::WebPage::SendDoubleAndFloat::name()) { CoreIPC::handleMessage<Messages::WebPage::SendDoubleAndFloat>(decoder, this, &WebPage::sendDoubleAndFloat); return; - case Messages::WebPage::SendIntsID: + } + if (decoder.messageName() == Messages::WebPage::SendInts::name()) { CoreIPC::handleMessage<Messages::WebPage::SendInts>(decoder, this, &WebPage::sendInts); return; - case Messages::WebPage::TestParameterAttributesID: + } + if (decoder.messageName() == Messages::WebPage::TestParameterAttributes::name()) { CoreIPC::handleMessage<Messages::WebPage::TestParameterAttributes>(decoder, this, &WebPage::testParameterAttributes); return; + } #if PLATFORM(MAC) - case Messages::WebPage::DidCreateWebProcessConnectionID: + if (decoder.messageName() == Messages::WebPage::DidCreateWebProcessConnection::name()) { CoreIPC::handleMessage<Messages::WebPage::DidCreateWebProcessConnection>(decoder, this, &WebPage::didCreateWebProcessConnection); return; + } #endif #if ENABLE(DEPRECATED_FEATURE) - case Messages::WebPage::DeprecatedOperationID: + if (decoder.messageName() == Messages::WebPage::DeprecatedOperation::name()) { CoreIPC::handleMessage<Messages::WebPage::DeprecatedOperation>(decoder, this, &WebPage::deprecatedOperation); return; + } #endif #if ENABLE(EXPERIMENTAL_FEATURE) - case Messages::WebPage::ExperimentalOperationID: + if (decoder.messageName() == Messages::WebPage::ExperimentalOperation::name()) { CoreIPC::handleMessage<Messages::WebPage::ExperimentalOperation>(decoder, this, &WebPage::experimentalOperation); return; -#endif - default: - break; } - +#endif ASSERT_NOT_REACHED(); } -void WebPage::didReceiveSyncWebPageMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder) +void WebPage::didReceiveSyncWebPageMessage(CoreIPC::Connection* connection, CoreIPC::MessageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder) { - switch (messageID.get<Messages::WebPage::Kind>()) { - case Messages::WebPage::CreatePluginID: + if (decoder.messageName() == Messages::WebPage::CreatePlugin::name()) { CoreIPC::handleMessage<Messages::WebPage::CreatePlugin>(decoder, *replyEncoder, this, &WebPage::createPlugin); return; - case Messages::WebPage::RunJavaScriptAlertID: + } + if (decoder.messageName() == Messages::WebPage::RunJavaScriptAlert::name()) { CoreIPC::handleMessage<Messages::WebPage::RunJavaScriptAlert>(decoder, *replyEncoder, this, &WebPage::runJavaScriptAlert); return; - case Messages::WebPage::GetPluginProcessConnectionID: + } + if (decoder.messageName() == Messages::WebPage::GetPluginProcessConnection::name()) { CoreIPC::handleMessageDelayed<Messages::WebPage::GetPluginProcessConnection>(connection, decoder, replyEncoder, this, &WebPage::getPluginProcessConnection); return; + } #if PLATFORM(MAC) - case Messages::WebPage::InterpretKeyEventID: + if (decoder.messageName() == Messages::WebPage::InterpretKeyEvent::name()) { CoreIPC::handleMessage<Messages::WebPage::InterpretKeyEvent>(decoder, *replyEncoder, this, &WebPage::interpretKeyEvent); return; -#endif - default: - break; } - +#endif ASSERT_NOT_REACHED(); } |