Index: content/ppapi_plugin/broker_process_dispatcher.cc |
diff --git a/content/ppapi_plugin/broker_process_dispatcher.cc b/content/ppapi_plugin/broker_process_dispatcher.cc |
index 01325531cd35cee481b92a516d4f8831204b2031..a6e5ba6d9e8fab7c8febd0c0851328a2de8b26e2 100644 |
--- a/content/ppapi_plugin/broker_process_dispatcher.cc |
+++ b/content/ppapi_plugin/broker_process_dispatcher.cc |
@@ -10,6 +10,7 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "base/debug/dump_without_crashing.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "content/child/child_process.h" |
@@ -77,12 +78,14 @@ void GetPermissionSettingsCallback( |
BrokerProcessDispatcher::BrokerProcessDispatcher( |
PP_GetInterface_Func get_plugin_interface, |
- PP_ConnectInstance_Func connect_instance) |
+ PP_ConnectInstance_Func connect_instance, |
+ bool peer_is_browser) |
: ppapi::proxy::BrokerSideDispatcher(connect_instance), |
get_plugin_interface_(get_plugin_interface), |
flash_browser_operations_1_3_(NULL), |
flash_browser_operations_1_2_(NULL), |
- flash_browser_operations_1_0_(NULL) { |
+ flash_browser_operations_1_0_(NULL), |
+ peer_is_browser_(peer_is_browser) { |
if (get_plugin_interface) { |
flash_browser_operations_1_0_ = |
static_cast<const PPP_Flash_BrowserOperations_1_0*>( |
@@ -110,17 +113,36 @@ BrokerProcessDispatcher::~BrokerProcessDispatcher() { |
} |
bool BrokerProcessDispatcher::OnMessageReceived(const IPC::Message& msg) { |
+ if (BrokerSideDispatcher::OnMessageReceived(msg)) |
+ return true; |
+ |
+ if (!peer_is_browser_) { |
+ // We might want to consider killing the peer instead is we see problems in |
+ // the future. |
+ if (msg.type() == PpapiMsg_GetSitesWithData::ID || |
+ msg.type() == PpapiMsg_ClearSiteData::ID || |
+ msg.type() == PpapiMsg_DeauthorizeContentLicenses::ID || |
+ msg.type() == PpapiMsg_GetPermissionSettings::ID || |
+ msg.type() == PpapiMsg_SetDefaultPermission::ID || |
+ msg.type() == PpapiMsg_SetSitePermission::ID) { |
+ base::debug::DumpWithoutCrashing(); |
+ } |
+ return false; |
+ } |
+ |
+ bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(BrokerProcessDispatcher, msg) |
IPC_MESSAGE_HANDLER(PpapiMsg_GetSitesWithData, OnGetSitesWithData) |
IPC_MESSAGE_HANDLER(PpapiMsg_ClearSiteData, OnClearSiteData) |
IPC_MESSAGE_HANDLER(PpapiMsg_DeauthorizeContentLicenses, |
OnDeauthorizeContentLicenses) |
- IPC_MESSAGE_HANDLER(PpapiMsg_GetPermissionSettings, OnGetPermissionSettings) |
+ IPC_MESSAGE_HANDLER(PpapiMsg_GetPermissionSettings, |
+ OnGetPermissionSettings) |
IPC_MESSAGE_HANDLER(PpapiMsg_SetDefaultPermission, OnSetDefaultPermission) |
IPC_MESSAGE_HANDLER(PpapiMsg_SetSitePermission, OnSetSitePermission) |
- IPC_MESSAGE_UNHANDLED(return BrokerSideDispatcher::OnMessageReceived(msg)) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
- return true; |
+ return handled; |
} |
void BrokerProcessDispatcher::OnGetPermissionSettingsCompleted( |