Index: components/nacl/renderer/trusted_plugin_channel.cc |
diff --git a/components/nacl/renderer/trusted_plugin_channel.cc b/components/nacl/renderer/trusted_plugin_channel.cc |
index 29e8aff20a0d74f2c0d56bbfb64ea2752386b1cd..0aaf6bc34c29991034a731f2bdc8852c5a16d6cb 100644 |
--- a/components/nacl/renderer/trusted_plugin_channel.cc |
+++ b/components/nacl/renderer/trusted_plugin_channel.cc |
@@ -5,15 +5,22 @@ |
#include "components/nacl/renderer/trusted_plugin_channel.h" |
#include "base/callback_helpers.h" |
+#include "components/nacl/common/nacl_renderer_messages.h" |
+#include "components/nacl/renderer/nexe_load_manager.h" |
#include "content/public/renderer/render_thread.h" |
#include "ipc/ipc_sync_channel.h" |
+#include "ipc/ipc_message_macros.h" |
#include "ppapi/c/pp_errors.h" |
namespace nacl { |
TrustedPluginChannel::TrustedPluginChannel( |
+ NexeLoadManager* nexe_load_manager, |
const IPC::ChannelHandle& handle, |
- base::WaitableEvent* shutdown_event) { |
+ base::WaitableEvent* shutdown_event, |
+ bool report_exit_status) |
+ : nexe_load_manager_(nexe_load_manager), |
+ report_exit_status_(report_exit_status) { |
channel_ = IPC::SyncChannel::Create( |
handle, |
IPC::Channel::MODE_CLIENT, |
@@ -30,8 +37,18 @@ bool TrustedPluginChannel::Send(IPC::Message* message) { |
return channel_->Send(message); |
} |
-bool TrustedPluginChannel::OnMessageReceived(const IPC::Message& message) { |
- return false; |
+bool TrustedPluginChannel::OnMessageReceived(const IPC::Message& msg) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(TrustedPluginChannel, msg) |
+ IPC_MESSAGE_HANDLER(NaClRendererMsg_ReportExitStatus, OnReportExitStatus); |
+ IPC_MESSAGE_UNHANDLED(handled = false); |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+} |
+ |
+void TrustedPluginChannel::OnReportExitStatus(int exit_status) { |
+ if (report_exit_status_) |
+ nexe_load_manager_->set_exit_status(exit_status); |
} |
} // namespace nacl |