Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Unified Diff: components/nacl/browser/nacl_process_host.cc

Issue 131413009: Prototype: Use Chromium IPC for plugin LOAD_MODULE. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased, some FIXMEs cleaned up Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/nacl/browser/nacl_process_host.cc
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc
index e6e8ef450177a7df62ee5ecad6db1c6c26430689..eb89043bf4f075877bbbf1ad66be56513bea45c4 100644
--- a/components/nacl/browser/nacl_process_host.cc
+++ b/components/nacl/browser/nacl_process_host.cc
@@ -573,6 +573,8 @@ bool NaClProcessHost::OnMessageReceived(const IPC::Message& msg) {
#endif
IPC_MESSAGE_HANDLER(NaClProcessHostMsg_PpapiChannelCreated,
OnPpapiBrowserChannelCreated)
+ IPC_MESSAGE_HANDLER(NaClProcessHostMsg_TrustedPluginChannelCreated,
+ OnTrustedPluginChannelCreated)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -594,8 +596,8 @@ void NaClProcessHost::OnResourcesReady() {
}
}
-bool NaClProcessHost::ReplyToRenderer(
- const IPC::ChannelHandle& channel_handle) {
+bool NaClProcessHost::ReplyToRenderer() {
+ fprintf(stderr, "NaClProcessHost::ReplyToRenderer\n");
#if defined(OS_WIN)
// If we are on 64-bit Windows, the NaCl process's sandbox is
// managed by a different process from the renderer's sandbox. We
@@ -637,11 +639,15 @@ bool NaClProcessHost::ReplyToRenderer(
#endif
const ChildProcessData& data = process_->GetData();
+ fprintf(stderr, "about to send message to renderer, "
+ "trusted plugin channel handle name: %s\n",
+ nacl_renderer_channel_handle_.name.c_str());
SendMessageToRenderer(
NaClLaunchResult(handle_for_renderer,
- channel_handle,
- base::GetProcId(data.handle),
- data.id),
+ ppapi_renderer_channel_handle_,
+ nacl_renderer_channel_handle_,
+ base::GetProcId(data.handle),
+ data.id),
std::string() /* error_message */);
internal_->socket_for_renderer = NACL_INVALID_HANDLE;
return true;
@@ -778,7 +784,7 @@ bool NaClProcessHost::StartNaClExecution() {
bool NaClProcessHost::SendStart() {
if (!enable_ppapi_proxy()) {
- if (!ReplyToRenderer(IPC::ChannelHandle()))
+ if (!ReplyToRenderer())
return false;
}
return StartNaClExecution();
@@ -848,14 +854,34 @@ void NaClProcessHost::OnPpapiBrowserChannelCreated(
}
}
+void NaClProcessHost::OnTrustedPluginChannelCreated(
+ const IPC::ChannelHandle& channel_handle) {
+ fprintf(stderr, "NaClProcessHost::OnTrustedPluginChannelCreated\n");
+ fprintf(stderr, "handle name: %s\n", channel_handle.name.c_str());
+ nacl_renderer_channel_handle_ = channel_handle;
+ if (!ppapi_renderer_channel_handle_.name.empty()) {
+ if (reply_msg_) {
+ ReplyToRenderer();
dmichael (off chromium) 2014/02/06 18:18:47 This looks iffy... you do ReplyToRenderer wheneve
teravest1 2014/02/06 18:21:15 I do wait until both channels have been created be
dmichael (off chromium) 2014/02/06 18:24:22 D'oh, okay, I see that now. Sorry. I should either
+ } else {
+ // Attempt to open more than 1 NaCl renderer channel is not supported.
dmichael (off chromium) 2014/02/06 18:18:47 nit: "Attempt to open"->"Opening"?
+ // Shut down the NaCl process.
+ process_->GetHost()->ForceShutdown();
+ }
+ }
+}
+
void NaClProcessHost::OnPpapiRendererChannelCreated(
const IPC::ChannelHandle& channel_handle) {
- if (reply_msg_) {
- ReplyToRenderer(channel_handle);
- } else {
- // Attempt to open more than 1 NaCl renderer channel is not supported.
- // Shut down the NaCl process.
- process_->GetHost()->ForceShutdown();
+ fprintf(stderr, "NaClProcessHost::OnPpapiRendererChannelCreated\n");
+ ppapi_renderer_channel_handle_ = channel_handle;
+ if (!nacl_renderer_channel_handle_.name.empty()) {
+ if (reply_msg_) {
+ ReplyToRenderer();
+ } else {
+ // Attempt to open more than 1 NaCl renderer channel is not supported.
+ // Shut down the NaCl process.
+ process_->GetHost()->ForceShutdown();
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698