diff options
34 files changed, 347 insertions, 346 deletions
diff --git a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc index e5c6e6d..77e36a4 100644 --- a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc +++ b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc @@ -283,9 +283,10 @@ TEST_F(ExtensionAlarmsTest, CreateDelayBelowMinimum) { const IPC::Message* warning = sink.GetUniqueMessageMatching( ExtensionMsg_AddMessageToConsole::ID); ASSERT_TRUE(warning); - content::ConsoleMessageLevel level = content::CONSOLE_MESSAGE_LEVEL_DEBUG; - std::string message; - ExtensionMsg_AddMessageToConsole::Read(warning, &level, &message); + ExtensionMsg_AddMessageToConsole::Param params; + ExtensionMsg_AddMessageToConsole::Read(warning, ¶ms); + content::ConsoleMessageLevel level = params.a; + std::string message = params.b; EXPECT_EQ(content::CONSOLE_MESSAGE_LEVEL_WARNING, level); EXPECT_THAT(message, testing::HasSubstr("delay is less than minimum of 1")); } diff --git a/chrome/browser/search/instant_service_unittest.cc b/chrome/browser/search/instant_service_unittest.cc index 760bb58..eca0fe4 100644 --- a/chrome/browser/search/instant_service_unittest.cc +++ b/chrome/browser/search/instant_service_unittest.cc @@ -106,9 +106,10 @@ TEST_F(InstantServiceEnabledTest, SendsSearchURLsToRenderer) { EXPECT_EQ(1U, rph->sink().message_count()); const IPC::Message* msg = rph->sink().GetMessageAt(0); ASSERT_TRUE(msg); - std::vector<GURL> search_urls; - GURL new_tab_page_url; - ChromeViewMsg_SetSearchURLs::Read(msg, &search_urls, &new_tab_page_url); + ChromeViewMsg_SetSearchURLs::Param params; + ChromeViewMsg_SetSearchURLs::Read(msg, ¶ms); + std::vector<GURL> search_urls = params.a; + GURL new_tab_page_url = params.b; EXPECT_EQ(2U, search_urls.size()); EXPECT_EQ("https://www.google.com/alt#quux=", search_urls[0].spec()); EXPECT_EQ("https://www.google.com/url?bar=", search_urls[1].spec()); diff --git a/chrome/browser/spellchecker/spellcheck_message_filter_mac_browsertest.cc b/chrome/browser/spellchecker/spellcheck_message_filter_mac_browsertest.cc index 4da3f1d..2d3efc1 100644 --- a/chrome/browser/spellchecker/spellcheck_message_filter_mac_browsertest.cc +++ b/chrome/browser/spellchecker/spellcheck_message_filter_mac_browsertest.cc @@ -52,10 +52,11 @@ IN_PROC_BROWSER_TEST_F(SpellCheckMessageFilterMacBrowserTest, base::MessageLoopForUI::current()->Run(); EXPECT_EQ(1U, target->sent_messages_.size()); - int sent_identifier; - std::vector<SpellCheckResult> sent_results; + SpellCheckMsg_RespondTextCheck::Param params; bool ok = SpellCheckMsg_RespondTextCheck::Read( - target->sent_messages_[0], &sent_identifier, &sent_results); + target->sent_messages_[0], ¶ms); + std::vector<SpellCheckResult> sent_results = params.b; + EXPECT_TRUE(ok); EXPECT_EQ(1U, sent_results.size()); EXPECT_EQ(sent_results[0].location, 0); diff --git a/chrome/browser/spellchecker/spellcheck_message_filter_unittest.cc b/chrome/browser/spellchecker/spellcheck_message_filter_unittest.cc index ecde185..696ccb4 100644 --- a/chrome/browser/spellchecker/spellcheck_message_filter_unittest.cc +++ b/chrome/browser/spellchecker/spellcheck_message_filter_unittest.cc @@ -101,15 +101,13 @@ TEST(SpellCheckMessageFilterTest, OnTextCheckCompleteTestCustomDictionary) { kRouteId, kCallbackId, kMarkers, kSuccess, kText, results); EXPECT_EQ(static_cast<size_t>(1), filter->sent_messages.size()); - int sent_identifier = -1; - bool sent_success = false; - base::string16 sent_text; - std::vector<SpellCheckResult> sent_results; - bool ok = SpellCheckMsg_RespondSpellingService::Read(filter->sent_messages[0], - &sent_identifier, - &sent_success, - &sent_text, - &sent_results); + SpellCheckMsg_RespondSpellingService::Param params; + bool ok = SpellCheckMsg_RespondSpellingService::Read( + filter->sent_messages[0], & params); + int sent_identifier = params.a; + bool sent_success = params.b; + base::string16 sent_text = params.c; + std::vector<SpellCheckResult> sent_results = params.d; EXPECT_TRUE(ok); EXPECT_EQ(kCallbackId, sent_identifier); EXPECT_EQ(kSuccess, sent_success); @@ -134,15 +132,11 @@ TEST(SpellCheckMessageFilterTest, OnTextCheckCompleteTest) { true, base::ASCIIToUTF16("Helllo walrd"), results); EXPECT_EQ(static_cast<size_t>(1), filter->sent_messages.size()); - int sent_identifier = -1; - bool sent_success = false; - base::string16 sent_text; - std::vector<SpellCheckResult> sent_results; - bool ok = SpellCheckMsg_RespondSpellingService::Read(filter->sent_messages[0], - &sent_identifier, - &sent_success, - &sent_text, - &sent_results); + SpellCheckMsg_RespondSpellingService::Param params; + bool ok = SpellCheckMsg_RespondSpellingService::Read( + filter->sent_messages[0], & params); + base::string16 sent_text = params.c; + std::vector<SpellCheckResult> sent_results = params.d; EXPECT_TRUE(ok); EXPECT_EQ(static_cast<size_t>(2), sent_results.size()); } diff --git a/chrome/renderer/spellchecker/spellcheck_provider_mac_unittest.cc b/chrome/renderer/spellchecker/spellcheck_provider_mac_unittest.cc index bab1107d..5188d39 100644 --- a/chrome/renderer/spellchecker/spellcheck_provider_mac_unittest.cc +++ b/chrome/renderer/spellchecker/spellcheck_provider_mac_unittest.cc @@ -16,36 +16,14 @@ namespace { class SpellCheckProviderMacTest : public SpellCheckProviderTest {}; -struct MessageParameters { - MessageParameters() - : router_id(0), - request_id(0) {} - - int router_id; - int request_id; - base::string16 text; - std::vector<SpellCheckMarker> markers; -}; - -MessageParameters ReadRequestTextCheck(IPC::Message* message) { - MessageParameters parameters; - bool ok = SpellCheckHostMsg_RequestTextCheck::Read( - message, - ¶meters.router_id, - ¶meters.request_id, - ¶meters.text, - ¶meters.markers); - EXPECT_TRUE(ok); - return parameters; -} - -void FakeMessageArrival(SpellCheckProvider* provider, - const MessageParameters& parameters) { +void FakeMessageArrival( + SpellCheckProvider* provider, + const SpellCheckHostMsg_RequestTextCheck::Param& parameters) { std::vector<SpellCheckResult> fake_result; bool handled = provider->OnMessageReceived( SpellCheckMsg_RespondTextCheck( 0, - parameters.request_id, + parameters.b, fake_result)); EXPECT_TRUE(handled); } @@ -60,11 +38,13 @@ TEST_F(SpellCheckProviderMacTest, SingleRoundtripSuccess) { EXPECT_EQ(provider_.messages_.size(), 1U); EXPECT_EQ(provider_.pending_text_request_size(), 1U); - MessageParameters read_parameters = - ReadRequestTextCheck(provider_.messages_[0]); - EXPECT_EQ(read_parameters.text, base::UTF8ToUTF16("hello ")); + SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; + bool ok = SpellCheckHostMsg_RequestTextCheck::Read( + provider_.messages_[0], &read_parameters1); + EXPECT_TRUE(ok); + EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); - FakeMessageArrival(&provider_, read_parameters); + FakeMessageArrival(&provider_, read_parameters1); EXPECT_EQ(completion.completion_count_, 1U); EXPECT_EQ(provider_.pending_text_request_size(), 0U); } @@ -84,13 +64,17 @@ TEST_F(SpellCheckProviderMacTest, TwoRoundtripSuccess) { EXPECT_EQ(provider_.messages_.size(), 2U); EXPECT_EQ(provider_.pending_text_request_size(), 2U); - MessageParameters read_parameters1 = - ReadRequestTextCheck(provider_.messages_[0]); - EXPECT_EQ(read_parameters1.text, base::UTF8ToUTF16("hello ")); + SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; + bool ok = SpellCheckHostMsg_RequestTextCheck::Read( + provider_.messages_[0], &read_parameters1); + EXPECT_TRUE(ok); + EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); - MessageParameters read_parameters2 = - ReadRequestTextCheck(provider_.messages_[1]); - EXPECT_EQ(read_parameters2.text, base::UTF8ToUTF16("bye ")); + SpellCheckHostMsg_RequestTextCheck::Param read_parameters2; + ok = SpellCheckHostMsg_RequestTextCheck::Read( + provider_.messages_[1], &read_parameters2); + EXPECT_TRUE(ok); + EXPECT_EQ(read_parameters2.c, base::UTF8ToUTF16("bye ")); FakeMessageArrival(&provider_, read_parameters1); EXPECT_EQ(completion1.completion_count_, 1U); diff --git a/chrome/renderer/spellchecker/spellcheck_provider_test.cc b/chrome/renderer/spellchecker/spellcheck_provider_test.cc index d0d80fa..d28cd88 100644 --- a/chrome/renderer/spellchecker/spellcheck_provider_test.cc +++ b/chrome/renderer/spellchecker/spellcheck_provider_test.cc @@ -40,13 +40,12 @@ TestingSpellCheckProvider::~TestingSpellCheckProvider() { } bool TestingSpellCheckProvider::Send(IPC::Message* message) { +#if !defined(OS_MACOSX) // Call our mock message handlers. bool handled = true; IPC_BEGIN_MESSAGE_MAP(TestingSpellCheckProvider, *message) -#if !defined(OS_MACOSX) IPC_MESSAGE_HANDLER(SpellCheckHostMsg_CallSpellingService, OnCallSpellingService) -#endif IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -54,6 +53,7 @@ bool TestingSpellCheckProvider::Send(IPC::Message* message) { delete message; return true; } +#endif messages_.push_back(message); return true; diff --git a/content/browser/browser_plugin/test_browser_plugin_guest.cc b/content/browser/browser_plugin/test_browser_plugin_guest.cc index 1e6edfd..ed65862 100644 --- a/content/browser/browser_plugin/test_browser_plugin_guest.cc +++ b/content/browser/browser_plugin/test_browser_plugin_guest.cc @@ -35,9 +35,9 @@ WebContentsImpl* TestBrowserPluginGuest::web_contents() const { void TestBrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { if (msg->type() == BrowserPluginMsg_UpdateRect::ID) { update_rect_count_++; - int instance_id = 0; - BrowserPluginMsg_UpdateRect_Params params; - BrowserPluginMsg_UpdateRect::Read(msg, &instance_id, ¶ms); + BrowserPluginMsg_UpdateRect::Param param; + BrowserPluginMsg_UpdateRect::Read(msg, ¶m); + BrowserPluginMsg_UpdateRect_Params params = param.b; last_view_size_observed_ = params.view_size; if (!expected_auto_view_size_.IsEmpty() && expected_auto_view_size_ == params.view_size) { diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc index 7448116..917d0e1 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.cc +++ b/content/browser/loader/resource_dispatcher_host_impl.cc @@ -859,10 +859,10 @@ bool ResourceDispatcherHostImpl::OnMessageReceived( } void ResourceDispatcherHostImpl::OnRequestResource( - const IPC::Message& message, + int routing_id, int request_id, const ResourceHostMsg_Request& request_data) { - BeginRequest(request_id, request_data, NULL, message.routing_id()); + BeginRequest(request_id, request_data, NULL, routing_id); } // Begins a resource request with the given params on behalf of the specified diff --git a/content/browser/loader/resource_dispatcher_host_impl.h b/content/browser/loader/resource_dispatcher_host_impl.h index 449bc13..8f839c8 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.h +++ b/content/browser/loader/resource_dispatcher_host_impl.h @@ -340,7 +340,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl int route_id, bool cancel_requests); - void OnRequestResource(const IPC::Message& msg, + void OnRequestResource(int routing_id, int request_id, const ResourceHostMsg_Request& request_data); void OnSyncLoad(int request_id, diff --git a/content/browser/renderer_host/input/touch_input_browsertest.cc b/content/browser/renderer_host/input/touch_input_browsertest.cc index a92fd26..270f39c 100644 --- a/content/browser/renderer_host/input/touch_input_browsertest.cc +++ b/content/browser/renderer_host/input/touch_input_browsertest.cc @@ -111,10 +111,10 @@ class InputEventMessageFilter : public BrowserMessageFilter { virtual bool OnMessageReceived(const IPC::Message& message, bool* message_was_ok) OVERRIDE { if (message.type() == InputHostMsg_HandleInputEvent_ACK::ID) { - ui::LatencyInfo latency; - WebInputEvent::Type type = WebInputEvent::Undefined; - InputEventAckState ack = INPUT_EVENT_ACK_STATE_UNKNOWN; - InputHostMsg_HandleInputEvent_ACK::Read(&message, &type, &ack, &latency); + InputHostMsg_HandleInputEvent_ACK::Param params; + InputHostMsg_HandleInputEvent_ACK::Read(&message, ¶ms); + WebInputEvent::Type type = params.a; + InputEventAckState ack = params.b; BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind(&InputEventMessageFilter::ReceivedEventAck, this, type, ack)); diff --git a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc index 38a7f0a..df9797d 100644 --- a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc +++ b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc @@ -89,9 +89,9 @@ class MockAudioRendererHost : public AudioRendererHost { bool handled = true; IPC_BEGIN_MESSAGE_MAP(MockAudioRendererHost, *message) IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamCreated, - OnStreamCreated) + OnNotifyStreamCreated) IPC_MESSAGE_HANDLER(AudioMsg_NotifyStreamStateChanged, - OnStreamStateChanged) + OnNotifyStreamStateChanged) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() EXPECT_TRUE(handled); @@ -100,15 +100,14 @@ class MockAudioRendererHost : public AudioRendererHost { return true; } - void OnStreamCreated(const IPC::Message& msg, - int stream_id, - base::SharedMemoryHandle handle, + void OnNotifyStreamCreated(int stream_id, + base::SharedMemoryHandle handle, #if defined(OS_WIN) - base::SyncSocket::Handle socket_handle, + base::SyncSocket::Handle socket_handle, #else - base::FileDescriptor socket_descriptor, + base::FileDescriptor socket_descriptor, #endif - uint32 length) { + uint32 length) { // Maps the shared memory. shared_memory_.reset(new base::SharedMemory(handle, false)); CHECK(shared_memory_->Map(length)); @@ -128,9 +127,8 @@ class MockAudioRendererHost : public AudioRendererHost { OnStreamCreated(stream_id, length); } - void OnStreamStateChanged(const IPC::Message& msg, - int stream_id, - media::AudioOutputIPCDelegate::State state) { + void OnNotifyStreamStateChanged(int stream_id, + media::AudioOutputIPCDelegate::State state) { switch (state) { case media::AudioOutputIPCDelegate::kPlaying: OnStreamPlaying(stream_id); diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc index a181899..d3df02e 100644 --- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc @@ -51,7 +51,8 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, const scoped_refptr<base::MessageLoopProxy>& message_loop, MediaStreamManager* manager) : MediaStreamDispatcherHost(kProcessId, salt_callback, manager), - message_loop_(message_loop) {} + message_loop_(message_loop), + current_ipc_(NULL) {} // A list of mock methods. MOCK_METHOD4(OnStreamGenerated, @@ -114,35 +115,36 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, // conversation between this object and the renderer. virtual bool Send(IPC::Message* message) OVERRIDE { CHECK(message); + current_ipc_ = message; // In this method we dispatch the messages to the according handlers as if // we are the renderer. bool handled = true; IPC_BEGIN_MESSAGE_MAP(MockMediaStreamDispatcherHost, *message) - IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated, OnStreamGenerated) + IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated, + OnStreamGeneratedInternal) IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerationFailed, - OnStreamGenerationFailed) - IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceStopped, OnDeviceStopped) - IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpened, OnDeviceOpened) - IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerated, - OnDevicesEnumerated) + OnStreamGenerationFailedInternal) + IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceStopped, OnDeviceStoppedInternal) + IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpened, OnDeviceOpenedInternal) + IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerated, OnDevicesEnumerated) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() EXPECT_TRUE(handled); delete message; + current_ipc_ = NULL; return true; } // These handler methods do minimal things and delegate to the mock methods. - void OnStreamGenerated( - const IPC::Message& msg, + void OnStreamGeneratedInternal( int request_id, std::string label, StreamDeviceInfoArray audio_device_list, StreamDeviceInfoArray video_device_list) { - OnStreamGenerated(msg.routing_id(), request_id, audio_device_list.size(), - video_device_list.size()); + OnStreamGenerated(current_ipc_->routing_id(), request_id, + audio_device_list.size(), video_device_list.size()); // Notify that the event have occurred. base::Closure quit_closure = quit_closures_.front(); quit_closures_.pop(); @@ -153,11 +155,10 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, video_devices_ = video_device_list; } - void OnStreamGenerationFailed( - const IPC::Message& msg, + void OnStreamGenerationFailedInternal( int request_id, content::MediaStreamRequestResult result) { - OnStreamGenerationFailed(msg.routing_id(), request_id, result); + OnStreamGenerationFailed(current_ipc_->routing_id(), request_id, result); if (!quit_closures_.empty()) { base::Closure quit_closure = quit_closures_.front(); quit_closures_.pop(); @@ -167,21 +168,19 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, label_= ""; } - void OnDeviceStopped(const IPC::Message& msg, - const std::string& label, - const content::StreamDeviceInfo& device) { + void OnDeviceStoppedInternal(const std::string& label, + const content::StreamDeviceInfo& device) { if (IsVideoMediaType(device.device.type)) EXPECT_TRUE(StreamDeviceInfo::IsEqual(device, video_devices_[0])); if (IsAudioMediaType(device.device.type)) EXPECT_TRUE(StreamDeviceInfo::IsEqual(device, audio_devices_[0])); - OnDeviceStopped(msg.routing_id()); + OnDeviceStopped(current_ipc_->routing_id()); } - void OnDeviceOpened(const IPC::Message& msg, - int request_id, - const std::string& label, - const StreamDeviceInfo& device) { + void OnDeviceOpenedInternal(int request_id, + const std::string& label, + const StreamDeviceInfo& device) { base::Closure quit_closure = quit_closures_.front(); quit_closures_.pop(); message_loop_->PostTask(FROM_HERE, base::ResetAndReturn(&quit_closure)); @@ -189,8 +188,7 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, opened_device_ = device; } - void OnDevicesEnumerated(const IPC::Message& msg, - int request_id, + void OnDevicesEnumerated(int request_id, const StreamDeviceInfoArray& devices) { base::Closure quit_closure = quit_closures_.front(); quit_closures_.pop(); @@ -199,7 +197,7 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, } scoped_refptr<base::MessageLoopProxy> message_loop_; - + IPC::Message* current_ipc_; std::queue<base::Closure> quit_closures_; }; diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc index be63c02..4a09469 100644 --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc @@ -160,8 +160,7 @@ P2PSocketHost* P2PSocketDispatcherHost::LookupSocket(int socket_id) { return (it == sockets_.end()) ? NULL : it->second; } -void P2PSocketDispatcherHost::OnStartNetworkNotifications( - const IPC::Message& msg) { +void P2PSocketDispatcherHost::OnStartNetworkNotifications() { if (!monitoring_networks_) { net::NetworkChangeNotifier::AddIPAddressObserver(this); monitoring_networks_ = true; @@ -172,8 +171,7 @@ void P2PSocketDispatcherHost::OnStartNetworkNotifications( &P2PSocketDispatcherHost::DoGetNetworkList, this)); } -void P2PSocketDispatcherHost::OnStopNetworkNotifications( - const IPC::Message& msg) { +void P2PSocketDispatcherHost::OnStopNetworkNotifications() { if (monitoring_networks_) { net::NetworkChangeNotifier::RemoveIPAddressObserver(this); monitoring_networks_ = false; diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.h b/content/browser/renderer_host/p2p/socket_dispatcher_host.h index 1f45691..84bba57 100644 --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.h +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.h @@ -60,9 +60,8 @@ class P2PSocketDispatcherHost P2PSocketHost* LookupSocket(int socket_id); // Handlers for the messages coming from the renderer. - void OnStartNetworkNotifications(const IPC::Message& msg); - void OnStopNetworkNotifications(const IPC::Message& msg); - + void OnStartNetworkNotifications(); + void OnStopNetworkNotifications(); void OnGetHostAddress(const std::string& host_name, int32 request_id); diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc index a47d71a..3895081 100644 --- a/content/browser/renderer_host/render_message_filter.cc +++ b/content/browser/renderer_host/render_message_filter.cc @@ -881,7 +881,7 @@ void RenderMessageFilter::OnGetMonitorColorProfile(std::vector<char>* profile) { } #endif -void RenderMessageFilter::OnDownloadUrl(const IPC::Message& message, +void RenderMessageFilter::OnDownloadUrl(int render_view_id, const GURL& url, const Referrer& referrer, const base::string16& suggested_name, @@ -907,7 +907,7 @@ void RenderMessageFilter::OnDownloadUrl(const IPC::Message& message, true, // is_content_initiated resource_context_, render_process_id_, - message.routing_id(), + render_view_id, false, save_info.Pass(), content::DownloadItem::kInvalidId, diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h index 2814a04..0f355d7 100644 --- a/content/browser/renderer_host/render_message_filter.h +++ b/content/browser/renderer_host/render_message_filter.h @@ -193,7 +193,7 @@ class RenderMessageFilter : public BrowserMessageFilter { void OnOpenChannelToPpapiBroker(int routing_id, const base::FilePath& path); void OnGenerateRoutingID(int* route_id); - void OnDownloadUrl(const IPC::Message& message, + void OnDownloadUrl(int render_view_id, const GURL& url, const Referrer& referrer, const base::string16& suggested_name, diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index 4cd7a3d..11241ab 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc @@ -2242,15 +2242,13 @@ TEST_F(RenderWidgetHostTest, OverscrollResetsOnBlur) { } std::string GetInputMessageTypes(RenderWidgetHostProcess* process) { - const WebInputEvent* event = NULL; - ui::LatencyInfo latency_info; - bool is_keyboard_shortcut; std::string result; for (size_t i = 0; i < process->sink().message_count(); ++i) { const IPC::Message *message = process->sink().GetMessageAt(i); EXPECT_EQ(InputMsg_HandleInputEvent::ID, message->type()); - EXPECT_TRUE(InputMsg_HandleInputEvent::Read( - message, &event, &latency_info, &is_keyboard_shortcut)); + InputMsg_HandleInputEvent::Param params; + EXPECT_TRUE(InputMsg_HandleInputEvent::Read(message, ¶ms)); + const WebInputEvent* event = params.a; if (i != 0) result += " "; result += WebInputEventTraits::GetName(event->type); @@ -2573,14 +2571,12 @@ TEST_F(RenderWidgetHostTest, InputRouterReceivesHasTouchEventHandlers) { void CheckLatencyInfoComponentInMessage(RenderWidgetHostProcess* process, int64 component_id, WebInputEvent::Type input_type) { - const WebInputEvent* event = NULL; - ui::LatencyInfo latency_info; - bool is_keyboard_shortcut; const IPC::Message* message = process->sink().GetUniqueMessageMatching( InputMsg_HandleInputEvent::ID); ASSERT_TRUE(message); - EXPECT_TRUE(InputMsg_HandleInputEvent::Read( - message, &event, &latency_info, &is_keyboard_shortcut)); + InputMsg_HandleInputEvent::Param params; + EXPECT_TRUE(InputMsg_HandleInputEvent::Read(message, ¶ms)); + ui::LatencyInfo latency_info = params.b; EXPECT_TRUE(latency_info.FindLatency( ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, component_id, diff --git a/content/browser/shared_worker/shared_worker_host.cc b/content/browser/shared_worker/shared_worker_host.cc index 6f6e4207..869291b 100644 --- a/content/browser/shared_worker/shared_worker_host.cc +++ b/content/browser/shared_worker/shared_worker_host.cc @@ -237,12 +237,12 @@ void SharedWorkerHost::RelayMessage( return; if (message.type() == WorkerMsg_Connect::ID) { // Crack the SharedWorker Connect message to setup routing for the port. - int sent_message_port_id; - int new_routing_id; - if (!WorkerMsg_Connect::Read( - &message, &sent_message_port_id, &new_routing_id)) { + WorkerMsg_Connect::Param param; + if (!WorkerMsg_Connect::Read(&message, ¶m)) return; - } + int sent_message_port_id = param.a; + int new_routing_id = param.b; + DCHECK(container_render_filter_); new_routing_id = container_render_filter_->GetNextRoutingID(); MessagePortService::GetInstance()->UpdateMessagePort( diff --git a/content/browser/shared_worker/shared_worker_service_impl_unittest.cc b/content/browser/shared_worker/shared_worker_service_impl_unittest.cc index 878d3bc..a56f6af 100644 --- a/content/browser/shared_worker/shared_worker_service_impl_unittest.cc +++ b/content/browser/shared_worker/shared_worker_service_impl_unittest.cc @@ -357,8 +357,10 @@ void CheckWorkerMsgConnect(MockRendererProcessHost* renderer_host, scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); EXPECT_EQ(WorkerMsg_Connect::ID, msg->type()); EXPECT_EQ(expected_msg_route_id, msg->routing_id()); - int port_id; - EXPECT_TRUE(WorkerMsg_Connect::Read(msg.get(), &port_id, routing_id)); + WorkerMsg_Connect::Param params; + EXPECT_TRUE(WorkerMsg_Connect::Read(msg.get(), ¶ms)); + int port_id = params.a; + *routing_id = params.b; EXPECT_EQ(expected_sent_message_port_id, port_id); } @@ -368,11 +370,9 @@ void CheckMessagePortMsgMessage(MockRendererProcessHost* renderer_host, scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); EXPECT_EQ(MessagePortMsg_Message::ID, msg->type()); EXPECT_EQ(expected_msg_route_id, msg->routing_id()); - base::string16 data; - std::vector<int> sent_message_port_ids; - std::vector<int> new_routing_ids; - EXPECT_TRUE(MessagePortMsg_Message::Read( - msg.get(), &data, &sent_message_port_ids, &new_routing_ids)); + MessagePortMsg_Message::Param params; + EXPECT_TRUE(MessagePortMsg_Message::Read(msg.get(), ¶ms)); + base::string16 data = params.a; EXPECT_EQ(base::ASCIIToUTF16(expected_data), data); } diff --git a/content/browser/worker_host/worker_process_host.cc b/content/browser/worker_host/worker_process_host.cc index ee9548e8..f00080e 100644 --- a/content/browser/worker_host/worker_process_host.cc +++ b/content/browser/worker_host/worker_process_host.cc @@ -510,12 +510,12 @@ void WorkerProcessHost::RelayMessage( WorkerInstance* instance) { if (message.type() == WorkerMsg_Connect::ID) { // Crack the SharedWorker Connect message to setup routing for the port. - int sent_message_port_id; - int new_routing_id; - if (!WorkerMsg_Connect::Read( - &message, &sent_message_port_id, &new_routing_id)) { + WorkerMsg_Connect::Param params; + if (!WorkerMsg_Connect::Read(&message, ¶ms)) return; - } + + int sent_message_port_id = params.a; + int new_routing_id = params.b; new_routing_id = worker_message_filter_->GetNextRoutingID(); MessagePortService::GetInstance()->UpdateMessagePort( sent_message_port_id, diff --git a/content/child/resource_dispatcher_unittest.cc b/content/child/resource_dispatcher_unittest.cc index b12db6b..9dfb43e 100644 --- a/content/child/resource_dispatcher_unittest.cc +++ b/content/child/resource_dispatcher_unittest.cc @@ -112,10 +112,11 @@ class ResourceDispatcherTest : public testing::Test, public IPC::Sender { // returning the hardcoded file contents. void ProcessMessages() { while (!message_queue_.empty()) { - int request_id; - ResourceHostMsg_Request request; + ResourceHostMsg_RequestResource::Param params; ASSERT_TRUE(ResourceHostMsg_RequestResource::Read( - &message_queue_[0], &request_id, &request)); + &message_queue_[0], ¶ms)); + int request_id = params.b; + ResourceHostMsg_Request request = params.c; // check values EXPECT_EQ(test_page_url, request.url.spec()); diff --git a/content/common/resource_messages.h b/content/common/resource_messages.h index a77864f..7c39d4f 100644 --- a/content/common/resource_messages.h +++ b/content/common/resource_messages.h @@ -302,7 +302,8 @@ IPC_MESSAGE_CONTROL2(ResourceMsg_RequestComplete, // Resource messages sent from the renderer to the browser. // Makes a resource request via the browser. -IPC_MESSAGE_ROUTED2(ResourceHostMsg_RequestResource, +IPC_MESSAGE_CONTROL3(ResourceHostMsg_RequestResource, + int /* routing_id */, int /* request_id */, ResourceHostMsg_Request) diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 3d7e3c6..4dadd33 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -1271,11 +1271,12 @@ IPC_MESSAGE_ROUTED2(ViewHostMsg_AppCacheAccessed, bool /* blocked by policy */) // Initiates a download based on user actions like 'ALT+click'. -IPC_MESSAGE_ROUTED4(ViewHostMsg_DownloadUrl, - GURL /* url */, - content::Referrer /* referrer */, - base::string16 /* suggested_name */, - bool /* use prompt for save location */) +IPC_MESSAGE_CONTROL5(ViewHostMsg_DownloadUrl, + int /* render_view_id */, + GURL /* url */, + content::Referrer /* referrer */, + base::string16 /* suggested_name */, + bool /* use prompt for save location */) // Used to go to the session history entry at the given offset (ie, -1 will // return the "back" item). diff --git a/content/renderer/browser_plugin/browser_plugin_browsertest.cc b/content/renderer/browser_plugin/browser_plugin_browsertest.cc index f277994..b7eb616 100644 --- a/content/renderer/browser_plugin/browser_plugin_browsertest.cc +++ b/content/renderer/browser_plugin/browser_plugin_browsertest.cc @@ -269,9 +269,9 @@ TEST_F(BrowserPluginTest, SrcAttribute) { BrowserPluginHostMsg_NavigateGuest::ID); ASSERT_TRUE(msg); - int instance_id = 0; - std::string src; - BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src); + BrowserPluginHostMsg_NavigateGuest::Param params; + BrowserPluginHostMsg_NavigateGuest::Read(msg, ¶ms); + std::string src = params.b; EXPECT_EQ("bar", src); std::string src_value = ExecuteScriptAndReturnString( @@ -328,8 +328,10 @@ TEST_F(BrowserPluginTest, ResizeFlowControl) { browser_plugin_manager()->sink().GetUniqueMessageMatching( BrowserPluginHostMsg_ResizeGuest::ID); ASSERT_TRUE(msg); - BrowserPluginHostMsg_ResizeGuest_Params params; - BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, ¶ms); + BrowserPluginHostMsg_ResizeGuest::Param param; + BrowserPluginHostMsg_ResizeGuest::Read(msg, ¶m); + instance_id = param.a; + BrowserPluginHostMsg_ResizeGuest_Params params = param.b; EXPECT_EQ(641, params.view_rect.width()); EXPECT_EQ(480, params.view_rect.height()); @@ -576,13 +578,10 @@ TEST_F(BrowserPluginTest, AutoSizeAttributes) { BrowserPluginHostMsg_SetAutoSize::ID); ASSERT_TRUE(auto_size_msg); - int instance_id = 0; - BrowserPluginHostMsg_AutoSize_Params auto_size_params; - BrowserPluginHostMsg_ResizeGuest_Params resize_params; - BrowserPluginHostMsg_SetAutoSize::Read(auto_size_msg, - &instance_id, - &auto_size_params, - &resize_params); + BrowserPluginHostMsg_SetAutoSize::Param param; + BrowserPluginHostMsg_SetAutoSize::Read(auto_size_msg, ¶m); + BrowserPluginHostMsg_AutoSize_Params auto_size_params = param.b; + BrowserPluginHostMsg_ResizeGuest_Params resize_params = param.c; EXPECT_FALSE(auto_size_params.enable); // These value are not populated (as an optimization) if autosize is // disabled. diff --git a/content/renderer/browser_plugin/browser_plugin_manager_impl.cc b/content/renderer/browser_plugin/browser_plugin_manager_impl.cc index 4f0bed0..5ce7ebb 100644 --- a/content/renderer/browser_plugin/browser_plugin_manager_impl.cc +++ b/content/renderer/browser_plugin/browser_plugin_manager_impl.cc @@ -74,7 +74,6 @@ void BrowserPluginManagerImpl::DidCommitCompositorFrame() { } void BrowserPluginManagerImpl::OnAllocateInstanceIDACK( - const IPC::Message& message, int request_id, int guest_instance_id) { InstanceIDMap::iterator it = diff --git a/content/renderer/browser_plugin/browser_plugin_manager_impl.h b/content/renderer/browser_plugin/browser_plugin_manager_impl.h index 2ed4135..384313b 100644 --- a/content/renderer/browser_plugin/browser_plugin_manager_impl.h +++ b/content/renderer/browser_plugin/browser_plugin_manager_impl.h @@ -38,8 +38,7 @@ class BrowserPluginManagerImpl : public BrowserPluginManager { private: virtual ~BrowserPluginManagerImpl(); - void OnAllocateInstanceIDACK(const IPC::Message& message, - int request_id, + void OnAllocateInstanceIDACK(int request_id, int guest_instance_id); int request_id_counter_; diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc index cd5a8cd..abd30c0 100644 --- a/content/renderer/input/input_event_filter.cc +++ b/content/renderer/input/input_event_filter.cc @@ -146,12 +146,12 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) { } int routing_id = message.routing_id(); - ui::LatencyInfo latency_info; - const WebInputEvent* event = NULL; - bool is_keyboard_shortcut; - if (!InputMsg_HandleInputEvent::Read( - &message, &event, &latency_info, &is_keyboard_shortcut)) + InputMsg_HandleInputEvent::Param params; + if (!InputMsg_HandleInputEvent::Read(&message, ¶ms)) return; + const WebInputEvent* event = params.a; + ui::LatencyInfo latency_info = params.b; + bool is_keyboard_shortcut = params.c; DCHECK(event); InputEventAckState ack = handler_.Run(routing_id, event, &latency_info); diff --git a/content/renderer/input/input_event_filter_unittest.cc b/content/renderer/input/input_event_filter_unittest.cc index 5da8b79..cfcc937 100644 --- a/content/renderer/input/input_event_filter_unittest.cc +++ b/content/renderer/input/input_event_filter_unittest.cc @@ -178,13 +178,11 @@ TEST_F(InputEventFilterTest, Basic) { EXPECT_EQ(kTestRoutingID, message->routing_id()); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - WebInputEvent::Type event_type = WebInputEvent::Undefined; - InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; - ui::LatencyInfo latency_info; - EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, - &event_type, - &ack_result, - &latency_info)); + InputHostMsg_HandleInputEvent_ACK::Param params; + EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms)); + WebInputEvent::Type event_type = params.a; + InputEventAckState ack_result = params.b; + EXPECT_EQ(kEvents[i].type, event_type); EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); @@ -206,11 +204,9 @@ TEST_F(InputEventFilterTest, Basic) { const IPC::Message& message = message_recorder_.message_at(i); ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); - const WebInputEvent* event = NULL; - ui::LatencyInfo latency_info; - bool is_kbd_shortcut; - EXPECT_TRUE(InputMsg_HandleInputEvent::Read( - &message, &event, &latency_info, &is_kbd_shortcut)); + InputMsg_HandleInputEvent::Param params; + EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, ¶ms)); + const WebInputEvent* event = params.a; EXPECT_EQ(kEvents[i].size, event->size); EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); @@ -234,13 +230,10 @@ TEST_F(InputEventFilterTest, Basic) { EXPECT_EQ(kTestRoutingID, message->routing_id()); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - WebInputEvent::Type event_type = WebInputEvent::Undefined; - InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; - ui::LatencyInfo latency_info; - EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, - &event_type, - &ack_result, - &latency_info)); + InputHostMsg_HandleInputEvent_ACK::Param params; + EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms)); + WebInputEvent::Type event_type = params.a; + InputEventAckState ack_result = params.b; EXPECT_EQ(kEvents[i].type, event_type); EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_CONSUMED); } diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index b06151b..a231428 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc @@ -537,9 +537,10 @@ TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_A); - int page_id_A; - PageState state_A; - ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); + ViewHostMsg_UpdateState::Param params; + ViewHostMsg_UpdateState::Read(msg_A, ¶ms); + int page_id_A = params.a; + PageState state_A = params.b; EXPECT_EQ(1, page_id_A); render_thread_->sink().ClearMessages(); @@ -609,9 +610,10 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) { const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_A); - int page_id_A; - PageState state_A; - ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); + ViewHostMsg_UpdateState::Param param; + ViewHostMsg_UpdateState::Read(msg_A, ¶m); + int page_id_A = param.a; + PageState state_A = param.b; EXPECT_EQ(1, page_id_A); render_thread_->sink().ClearMessages(); @@ -623,9 +625,9 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) { const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_B); - int page_id_B; - PageState state_B; - ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B); + ViewHostMsg_UpdateState::Read(msg_B, ¶m); + int page_id_B = param.a; + PageState state_B = param.b; EXPECT_EQ(2, page_id_B); EXPECT_NE(state_A, state_B); render_thread_->sink().ClearMessages(); @@ -638,9 +640,9 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) { const IPC::Message* msg_C = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_C); - int page_id_C; - PageState state_C; - ViewHostMsg_UpdateState::Read(msg_C, &page_id_C, &state_C); + ViewHostMsg_UpdateState::Read(msg_C, ¶m); + int page_id_C = param.a; + PageState state_C = param.b; EXPECT_EQ(3, page_id_C); EXPECT_NE(state_B, state_C); render_thread_->sink().ClearMessages(); @@ -690,9 +692,9 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) { const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg); - int page_id; - PageState state; - ViewHostMsg_UpdateState::Read(msg, &page_id, &state); + ViewHostMsg_UpdateState::Read(msg, ¶m); + int page_id = param.a; + PageState state = param.b; EXPECT_EQ(page_id_C, page_id); EXPECT_NE(state_A, state); EXPECT_NE(state_B, state); @@ -720,9 +722,10 @@ TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_A); - int page_id_A; - PageState state_A; - ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); + ViewHostMsg_UpdateState::Param param; + ViewHostMsg_UpdateState::Read(msg_A, ¶m); + int page_id_A = param.a; + PageState state_A = param.b; EXPECT_EQ(1, page_id_A); render_thread_->sink().ClearMessages(); @@ -785,9 +788,10 @@ TEST_F(RenderViewImplTest, DontIgnoreBackAfterNavEntryLimit) { const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_A); - int page_id_A; - PageState state_A; - ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); + ViewHostMsg_UpdateState::Param param; + ViewHostMsg_UpdateState::Read(msg_A, ¶m); + int page_id_A = param.a; + PageState state_A = param.b; EXPECT_EQ(1, page_id_A); render_thread_->sink().ClearMessages(); @@ -802,9 +806,9 @@ TEST_F(RenderViewImplTest, DontIgnoreBackAfterNavEntryLimit) { const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( ViewHostMsg_UpdateState::ID); ASSERT_TRUE(msg_B); - int page_id_B; - PageState state_B; - ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B); + ViewHostMsg_UpdateState::Read(msg_B, ¶m); + int page_id_B = param.a; + PageState state_B = param.b; EXPECT_EQ(2, page_id_B); render_thread_->sink().ClearMessages(); @@ -895,13 +899,11 @@ TEST_F(RenderViewImplTest, OnImeTypeChanged) { const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); EXPECT_TRUE(msg != NULL); EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); - ui::TextInputType type; - bool can_compose_inline = false; - ui::TextInputMode input_mode = ui::TEXT_INPUT_MODE_DEFAULT; - ViewHostMsg_TextInputTypeChanged::Read(msg, - &type, - &input_mode, - &can_compose_inline); + ViewHostMsg_TextInputTypeChanged::Param params; + ViewHostMsg_TextInputTypeChanged::Read(msg, ¶ms); + ui::TextInputType type = params.a; + ui::TextInputMode input_mode = params.b; + bool can_compose_inline = params.c; EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, type); EXPECT_EQ(true, can_compose_inline); @@ -917,10 +919,9 @@ TEST_F(RenderViewImplTest, OnImeTypeChanged) { msg = render_thread_->sink().GetMessageAt(0); EXPECT_TRUE(msg != NULL); EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); - ViewHostMsg_TextInputTypeChanged::Read(msg, - &type, - &input_mode, - &can_compose_inline); + ViewHostMsg_TextInputTypeChanged::Read(msg, & params); + type = params.a; + input_mode = params.b; EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type); for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInputModeTestCases); i++) { @@ -940,10 +941,9 @@ TEST_F(RenderViewImplTest, OnImeTypeChanged) { const IPC::Message* msg = render_thread_->sink().GetMessageAt(0); EXPECT_TRUE(msg != NULL); EXPECT_EQ(ViewHostMsg_TextInputTypeChanged::ID, msg->type()); - ViewHostMsg_TextInputTypeChanged::Read(msg, - &type, - &input_mode, - &can_compose_inline); + ViewHostMsg_TextInputTypeChanged::Read(msg, & params); + type = params.a; + input_mode = params.b; EXPECT_EQ(test_case->expected_mode, input_mode); } } diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc index 41dd847..c84c754 100644 --- a/content/renderer/render_widget_unittest.cc +++ b/content/renderer/render_widget_unittest.cc @@ -77,10 +77,6 @@ class TouchableRenderWidget : public RenderWidget { TEST_F(RenderWidgetUnittest, TouchHitTestSinglePoint) { scoped_refptr<TouchableRenderWidget> widget = new TouchableRenderWidget(); - blink::WebInputEvent::Type type; - InputEventAckState ack_state; - ui::LatencyInfo latency; - SyntheticWebTouchEvent touch; touch.PressPoint(10, 10); @@ -91,7 +87,9 @@ TEST_F(RenderWidgetUnittest, TouchHitTestSinglePoint) { // be 'no consumer exists'. const IPC::Message* message = widget->sink()->GetMessageAt(0); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - InputHostMsg_HandleInputEvent_ACK::Read(message, &type, &ack_state, &latency); + InputHostMsg_HandleInputEvent_ACK::Param params; + InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); + InputEventAckState ack_state = params.b; EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, ack_state); widget->sink()->ClearMessages(); @@ -104,7 +102,8 @@ TEST_F(RenderWidgetUnittest, TouchHitTestSinglePoint) { ASSERT_EQ(1u, widget->sink()->message_count()); message = widget->sink()->GetMessageAt(0); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - InputHostMsg_HandleInputEvent_ACK::Read(message, &type, &ack_state, &latency); + InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); + ack_state = params.b; EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_state); widget->sink()->ClearMessages(); } @@ -116,10 +115,6 @@ TEST_F(RenderWidgetUnittest, TouchHitTestMultiplePoints) { rects.push_back(gfx::Rect(25, 0, 10, 10)); widget->SetTouchRegion(rects); - blink::WebInputEvent::Type type; - InputEventAckState ack_state; - ui::LatencyInfo latency; - SyntheticWebTouchEvent touch; touch.PressPoint(25, 25); @@ -130,7 +125,9 @@ TEST_F(RenderWidgetUnittest, TouchHitTestMultiplePoints) { // be 'no consumer exists'. const IPC::Message* message = widget->sink()->GetMessageAt(0); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - InputHostMsg_HandleInputEvent_ACK::Read(message, &type, &ack_state, &latency); + InputHostMsg_HandleInputEvent_ACK::Param params; + InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); + InputEventAckState ack_state = params.b; EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, ack_state); widget->sink()->ClearMessages(); @@ -140,7 +137,8 @@ TEST_F(RenderWidgetUnittest, TouchHitTestMultiplePoints) { ASSERT_EQ(1u, widget->sink()->message_count()); message = widget->sink()->GetMessageAt(0); EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); - InputHostMsg_HandleInputEvent_ACK::Read(message, &type, &ack_state, &latency); + InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms); + ack_state = params.b; EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_state); widget->sink()->ClearMessages(); } diff --git a/ipc/ipc_message.h b/ipc/ipc_message.h index 1b13d67..ea6cda6 100644 --- a/ipc/ipc_message.h +++ b/ipc/ipc_message.h @@ -141,31 +141,17 @@ class IPC_EXPORT Message : public Pickle { // call. void SetHeaderValues(int32 routing, uint32 type, uint32 flags); - template<class T, class S> - static bool Dispatch(const Message* msg, T* obj, S* sender, + template<class T, class S, class P> + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, void (T::*func)()) { (obj->*func)(); return true; } - template<class T, class S> - static bool Dispatch(const Message* msg, T* obj, S* sender, - void (T::*func)() const) { - (obj->*func)(); - return true; - } - - template<class T, class S> - static bool Dispatch(const Message* msg, T* obj, S* sender, - void (T::*func)(const Message&)) { - (obj->*func)(*msg); - return true; - } - - template<class T, class S> - static bool Dispatch(const Message* msg, T* obj, S* sender, - void (T::*func)(const Message&) const) { - (obj->*func)(*msg); + template<class T, class S, class P> + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, + void (T::*func)(P*)) { + (obj->*func)(parameter); return true; } diff --git a/ipc/ipc_message_macros.h b/ipc/ipc_message_macros.h index c4e250c..f924e7b 100644 --- a/ipc/ipc_message_macros.h +++ b/ipc/ipc_message_macros.h @@ -434,9 +434,12 @@ // The following macros define the common set of methods provided by ASYNC // message classes. +// This macro is for all the async IPCs that don't pass an extra parameter using +// IPC_BEGIN_MESSAGE_MAP_WITH_PARAM. #define IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, class Method> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, Method func) { \ + template<class T, class S, class P, class Method> \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + Method func) { \ Schema::Param p; \ if (Read(msg, &p)) { \ DispatchToMethod(obj, func, p); \ @@ -444,124 +447,86 @@ } \ return false; \ } + +// The following macros are for for async IPCs which have a dispatcher with an +// extra parameter specified using IPC_BEGIN_MESSAGE_MAP_WITH_PARAM. #define IPC_ASYNC_MESSAGE_METHODS_1 \ IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, typename TA> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, \ - void (T::*func)(const Message&, TA)) { \ + template<class T, class S, class P, typename TA> \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + void (T::*func)(P*, TA)) { \ Schema::Param p; \ if (Read(msg, &p)) { \ - (obj->*func)(*msg, p.a); \ + (obj->*func)(parameter, p.a); \ return true; \ } \ return false; \ } #define IPC_ASYNC_MESSAGE_METHODS_2 \ IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, typename TA, typename TB> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, \ - void (T::*func)(const Message&, TA, TB)) { \ + template<class T, class S, class P, typename TA, typename TB> \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + void (T::*func)(P*, TA, TB)) { \ Schema::Param p; \ if (Read(msg, &p)) { \ - (obj->*func)(*msg, p.a, p.b); \ + (obj->*func)(parameter, p.a, p.b); \ return true; \ } \ return false; \ - } \ - template<typename TA, typename TB> \ - static bool Read(const IPC::Message* msg, TA* a, TB* b) { \ - Schema::Param p; \ - if (!Read(msg, &p)) \ - return false; \ - *a = p.a; \ - *b = p.b; \ - return true; \ } #define IPC_ASYNC_MESSAGE_METHODS_3 \ IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, typename TA, typename TB, typename TC> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, \ - void (T::*func)(const Message&, TA, TB, TC)) { \ + template<class T, class S, class P, typename TA, typename TB, typename TC> \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + void (T::*func)(P*, TA, TB, TC)) { \ Schema::Param p; \ if (Read(msg, &p)) { \ - (obj->*func)(*msg, p.a, p.b, p.c); \ + (obj->*func)(parameter, p.a, p.b, p.c); \ return true; \ } \ return false; \ - } \ - template<typename TA, typename TB, typename TC> \ - static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c) { \ - Schema::Param p; \ - if (!Read(msg, &p)) \ - return false; \ - *a = p.a; \ - *b = p.b; \ - *c = p.c; \ - return true; \ } #define IPC_ASYNC_MESSAGE_METHODS_4 \ IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, typename TA, typename TB, typename TC, \ + template<class T, class S, class P, typename TA, typename TB, typename TC, \ typename TD> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, \ - void (T::*func)(const Message&, TA, TB, TC, TD)) { \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + void (T::*func)(P*, TA, TB, TC, TD)) { \ Schema::Param p; \ if (Read(msg, &p)) { \ - (obj->*func)(*msg, p.a, p.b, p.c, p.d); \ + (obj->*func)(parameter, p.a, p.b, p.c, p.d); \ return true; \ } \ return false; \ - } \ - template<typename TA, typename TB, typename TC, typename TD> \ - static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c, TD* d) { \ - Schema::Param p; \ - if (!Read(msg, &p)) \ - return false; \ - *a = p.a; \ - *b = p.b; \ - *c = p.c; \ - *d = p.d; \ - return true; \ } #define IPC_ASYNC_MESSAGE_METHODS_5 \ IPC_ASYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, typename TA, typename TB, typename TC, \ + template<class T, class S, class P, typename TA, typename TB, typename TC, \ typename TD, typename TE> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, \ - void (T::*func)(const Message&, TA, TB, TC, TD, TE)) { \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + void (T::*func)(P*, TA, TB, TC, TD, TE)) { \ Schema::Param p; \ if (Read(msg, &p)) { \ - (obj->*func)(*msg, p.a, p.b, p.c, p.d, p.e); \ + (obj->*func)(parameter, p.a, p.b, p.c, p.d, p.e); \ return true; \ } \ return false; \ - } \ - template<typename TA, typename TB, typename TC, typename TD, typename TE> \ - static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c, TD* d, \ - TE* e) { \ - Schema::Param p; \ - if (!Read(msg, &p)) \ - return false; \ - *a = p.a; \ - *b = p.b; \ - *c = p.c; \ - *d = p.d; \ - *e = p.e; \ - return true; \ } // The following macros define the common set of methods provided by SYNC // message classes. #define IPC_SYNC_MESSAGE_METHODS_GENERIC \ - template<class T, class S, class Method> \ - static bool Dispatch(const Message* msg, T* obj, S* sender, Method func) { \ + template<class T, class S, class P, class Method> \ + static bool Dispatch(const Message* msg, T* obj, S* sender, P* parameter, \ + Method func) { \ Schema::SendParam send_params; \ bool ok = ReadSendParam(msg, &send_params); \ return Schema::DispatchWithSendParams(ok, send_params, msg, obj, sender, \ func); \ } \ - template<class T, class Method> \ - static bool DispatchDelayReply(const Message* msg, T* obj, Method func) { \ + template<class T, class P, class Method> \ + static bool DispatchDelayReply(const Message* msg, T* obj, P* parameter, \ + Method func) { \ Schema::SendParam send_params; \ bool ok = ReadSendParam(msg, &send_params); \ return Schema::DispatchDelayReplyWithSendParams(ok, send_params, msg, \ @@ -932,24 +897,32 @@ #define IPC_BEGIN_MESSAGE_MAP_EX(class_name, msg, msg_is_ok) \ - { \ - typedef class_name _IpcMessageHandlerClass; \ - const IPC::Message& ipc_message__ = msg; \ - bool& msg_is_ok__ = msg_is_ok; \ - switch (ipc_message__.type()) { \ + IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(class_name, msg, msg_is_ok, void, NULL) #define IPC_BEGIN_MESSAGE_MAP(class_name, msg) \ { \ typedef class_name _IpcMessageHandlerClass; \ + typedef void _ParamClass; \ + _ParamClass* param__ = NULL; \ const IPC::Message& ipc_message__ = msg; \ bool msg_is_ok__ = true; \ switch (ipc_message__.type()) { \ +#define IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(class_name, msg, msg_is_ok, \ + param_type, param) \ + { \ + typedef class_name _IpcMessageHandlerClass; \ + typedef param_type _ParamClass; \ + _ParamClass* param__ = param; \ + const IPC::Message& ipc_message__ = msg; \ + bool& msg_is_ok__ = msg_is_ok; \ + switch (ipc_message__.type()) { \ + #define IPC_MESSAGE_FORWARD(msg_class, obj, member_func) \ case msg_class::ID: { \ TRACK_RUN_IN_IPC_HANDLER(member_func); \ msg_is_ok__ = msg_class::Dispatch(&ipc_message__, obj, this, \ - &member_func); \ + param__, &member_func); \ } \ break; @@ -960,7 +933,7 @@ case msg_class::ID: { \ TRACK_RUN_IN_IPC_HANDLER(member_func); \ msg_is_ok__ = msg_class::DispatchDelayReply(&ipc_message__, obj, \ - &member_func); \ + param__, &member_func); \ } \ break; diff --git a/ipc/ipc_message_unittest.cc b/ipc/ipc_message_unittest.cc index 971314a..ceb92df 100644 --- a/ipc/ipc_message_unittest.cc +++ b/ipc/ipc_message_unittest.cc @@ -11,6 +11,19 @@ #include "ipc/ipc_message_utils.h" #include "testing/gtest/include/gtest/gtest.h" +// IPC messages for testing ---------------------------------------------------- + +#define IPC_MESSAGE_IMPL +#include "ipc/ipc_message_macros.h" + +#define IPC_MESSAGE_START TestMsgStart + +IPC_MESSAGE_CONTROL0(TestMsgClassEmpty) + +IPC_MESSAGE_CONTROL1(TestMsgClassI, int) + +IPC_SYNC_MESSAGE_CONTROL1_1(TestMsgClassIS, int, std::string) + namespace { TEST(IPCMessageTest, ListValue) { @@ -70,4 +83,71 @@ TEST(IPCMessageTest, DictionaryValue) { EXPECT_FALSE(IPC::ReadParam(&bad_msg, &iter, &output)); } +class IPCMessageParameterTest : public testing::Test { + public: + IPCMessageParameterTest() : extra_param_("extra_param"), called_(false) {} + + bool OnMessageReceived(const IPC::Message& message) { + bool msg_is_ok = true; + bool handled = true; + IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(IPCMessageParameterTest, message, + msg_is_ok, std::string, &extra_param_) + IPC_MESSAGE_HANDLER(TestMsgClassEmpty, OnEmpty) + IPC_MESSAGE_HANDLER(TestMsgClassI, OnInt) + //IPC_MESSAGE_HANDLER(TestMsgClassIS, OnSync) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + + return handled; + } + + void OnEmpty(std::string* extra_param) { + EXPECT_EQ(extra_param, &extra_param_); + called_ = true; + } + + void OnInt(std::string* extra_param, int foo) { + EXPECT_EQ(extra_param, &extra_param_); + EXPECT_EQ(foo, 42); + called_ = true; + } + + /* TODO: handle sync IPCs + void OnSync(std::string* extra_param, int foo, std::string* out) { + EXPECT_EQ(extra_param, &extra_param_); + EXPECT_EQ(foo, 42); + called_ = true; + *out = std::string("out"); + } + + bool Send(IPC::Message* reply) { + delete reply; + return true; + }*/ + + std::string extra_param_; + bool called_; +}; + +TEST_F(IPCMessageParameterTest, EmptyDispatcherWithParam) { + TestMsgClassEmpty message; + EXPECT_TRUE(OnMessageReceived(message)); + EXPECT_TRUE(called_); +} + +TEST_F(IPCMessageParameterTest, OneIntegerWithParam) { + TestMsgClassI message(42); + EXPECT_TRUE(OnMessageReceived(message)); + EXPECT_TRUE(called_); +} + +/* TODO: handle sync IPCs +TEST_F(IPCMessageParameterTest, Sync) { + std::string output; + TestMsgClassIS message(42, &output); + EXPECT_TRUE(OnMessageReceived(message)); + EXPECT_TRUE(called_); + EXPECT_EQ(output, std::string("out")); +}*/ + } // namespace diff --git a/ppapi/proxy/resource_message_test_sink.cc b/ppapi/proxy/resource_message_test_sink.cc index a17e1d5..2c237b0 100644 --- a/ppapi/proxy/resource_message_test_sink.cc +++ b/ppapi/proxy/resource_message_test_sink.cc @@ -22,9 +22,10 @@ GetAllResourceMessagesMatching(const ResourceMessageTestSink& sink, for (size_t i = 0; i < sink.message_count(); i++) { const IPC::Message* msg = sink.GetMessageAt(i); if (msg->type() == WrapperMessage::ID) { - Params cur_params; - IPC::Message cur_msg; - WrapperMessage::Read(msg, &cur_params, &cur_msg); + typename WrapperMessage::Param params; + WrapperMessage::Read(msg, ¶ms); + Params cur_params = params.a; + IPC::Message cur_msg = params.b; if (cur_msg.type() == id) { result.push_back(std::make_pair(cur_params, cur_msg)); } |