diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-24 06:19:28 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-24 06:19:28 +0000 |
commit | a95986a837fc86e079b5c6dac357636478b50092 (patch) | |
tree | 66a32009250791e64741216cdd6c21ecf1ff7f86 /chrome/plugin/plugin_channel_base.cc | |
parent | 125a7ba65ad10ace9edcf36d6943ce9ae2bdc1d6 (diff) | |
download | chromium_src-a95986a837fc86e079b5c6dac357636478b50092.zip chromium_src-a95986a837fc86e079b5c6dac357636478b50092.tar.gz chromium_src-a95986a837fc86e079b5c6dac357636478b50092.tar.bz2 |
Make IPC::Channel::Listener:OnMessageReceived have a return value indicating whether a message was processed or not.
TBR=brettw
Review URL: http://codereview.chromium.org/5978003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70139 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/plugin/plugin_channel_base.cc')
-rw-r--r-- | chrome/plugin/plugin_channel_base.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/chrome/plugin/plugin_channel_base.cc b/chrome/plugin/plugin_channel_base.cc index 37bc1c4..e251e9e 100644 --- a/chrome/plugin/plugin_channel_base.cc +++ b/chrome/plugin/plugin_channel_base.cc @@ -140,19 +140,20 @@ int PluginChannelBase::Count() { return static_cast<int>(g_plugin_channels_.size()); } -void PluginChannelBase::OnMessageReceived(const IPC::Message& message) { +bool PluginChannelBase::OnMessageReceived(const IPC::Message& message) { // This call might cause us to be deleted, so keep an extra reference to // ourself so that we can send the reply and decrement back in_dispatch_. lazy_plugin_channel_stack_.Pointer()->push( scoped_refptr<PluginChannelBase>(this)); + bool handled; if (message.should_unblock()) in_unblock_dispatch_++; if (message.routing_id() == MSG_ROUTING_CONTROL) { - OnControlMessageReceived(message); + handled = OnControlMessageReceived(message); } else { - bool routed = router_.RouteMessage(message); - if (!routed && message.is_sync()) { + handled = router_.RouteMessage(message); + if (!handled && message.is_sync()) { // The listener has gone away, so we must respond or else the caller will // hang waiting for a reply. IPC::Message* reply = IPC::SyncMessage::GenerateReply(&message); @@ -164,6 +165,7 @@ void PluginChannelBase::OnMessageReceived(const IPC::Message& message) { in_unblock_dispatch_--; lazy_plugin_channel_stack_.Pointer()->pop(); + return handled; } void PluginChannelBase::OnChannelConnected(int32 peer_pid) { @@ -228,9 +230,10 @@ void PluginChannelBase::RemoveRoute(int route_id) { } } -void PluginChannelBase::OnControlMessageReceived(const IPC::Message& msg) { +bool PluginChannelBase::OnControlMessageReceived(const IPC::Message& msg) { NOTREACHED() << "should override in subclass if you care about control messages"; + return false; } void PluginChannelBase::OnChannelError() { |