| Index: chrome/browser/nacl_host/nacl_process_host.cc
|
| ===================================================================
|
| --- chrome/browser/nacl_host/nacl_process_host.cc (revision 112597)
|
| +++ chrome/browser/nacl_host/nacl_process_host.cc (working copy)
|
| @@ -23,6 +23,7 @@
|
| #include "chrome/common/nacl_messages.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/browser/renderer_host/chrome_render_message_filter.h"
|
| +#include "content/common/child_process_host.h"
|
| #include "ipc/ipc_switches.h"
|
| #include "native_client/src/shared/imc/nacl_imc.h"
|
|
|
| @@ -116,6 +117,21 @@
|
| }
|
|
|
| NaClProcessHost::~NaClProcessHost() {
|
| + int exit_code;
|
| + GetChildTerminationStatus(&exit_code);
|
| + std::string message =
|
| + base::StringPrintf("NaCl process exited with status %i (0x%x)",
|
| + exit_code, exit_code);
|
| + if (exit_code == 0) {
|
| + LOG(INFO) << message;
|
| + } else {
|
| + LOG(ERROR) << message;
|
| + }
|
| +
|
| +#if defined(OS_WIN)
|
| + NaClBrokerService::GetInstance()->OnLoaderDied();
|
| +#endif
|
| +
|
| for (size_t i = 0; i < internal_->sockets_for_renderer.size(); i++) {
|
| if (nacl::Close(internal_->sockets_for_renderer[i]) != 0) {
|
| LOG(ERROR) << "nacl::Close() failed";
|
| @@ -212,7 +228,7 @@
|
| }
|
|
|
| bool NaClProcessHost::LaunchSelLdr() {
|
| - if (!CreateChannel())
|
| + if (!child_process_host()->CreateChannel())
|
| return false;
|
|
|
| CommandLine::StringType nacl_loader_prefix;
|
| @@ -232,12 +248,13 @@
|
| // http://code.google.com/p/nativeclient/issues/detail?id=2043.
|
| int flags = CHILD_NO_PIE;
|
| #elif defined(OS_LINUX)
|
| - int flags = nacl_loader_prefix.empty() ? CHILD_ALLOW_SELF : CHILD_NORMAL;
|
| + int flags = nacl_loader_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
|
| + ChildProcessHost::CHILD_NORMAL;
|
| #else
|
| - int flags = CHILD_NORMAL;
|
| + int flags = ChildProcessHost::CHILD_NORMAL;
|
| #endif
|
|
|
| - FilePath exe_path = GetChildPath(flags);
|
| + FilePath exe_path = ChildProcessHost::GetChildPath(flags);
|
| if (exe_path.empty())
|
| return false;
|
|
|
| @@ -246,7 +263,8 @@
|
|
|
| cmd_line->AppendSwitchASCII(switches::kProcessType,
|
| switches::kNaClLoaderProcess);
|
| - cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id());
|
| + cmd_line->AppendSwitchASCII(switches::kProcessChannelID,
|
| + child_process_host()->channel_id());
|
| if (logging::DialogsAreSuppressed())
|
| cmd_line->AppendSwitch(switches::kNoErrorDialogs);
|
|
|
| @@ -257,7 +275,7 @@
|
| #if defined(OS_WIN)
|
| if (RunningOnWOW64()) {
|
| return NaClBrokerService::GetInstance()->LaunchLoader(
|
| - this, ASCIIToWide(channel_id()));
|
| + this, ASCIIToWide(child_process_host()->channel_id()));
|
| } else {
|
| BrowserChildProcessHost::Launch(FilePath(), cmd_line);
|
| }
|
| @@ -282,24 +300,6 @@
|
| return BrowserChildProcessHost::GetChildTerminationStatus(exit_code);
|
| }
|
|
|
| -void NaClProcessHost::OnChildDied() {
|
| - int exit_code;
|
| - GetChildTerminationStatus(&exit_code);
|
| - std::string message =
|
| - base::StringPrintf("NaCl process exited with status %i (0x%x)",
|
| - exit_code, exit_code);
|
| - if (exit_code == 0) {
|
| - LOG(INFO) << message;
|
| - } else {
|
| - LOG(ERROR) << message;
|
| - }
|
| -
|
| -#if defined(OS_WIN)
|
| - NaClBrokerService::GetInstance()->OnLoaderDied();
|
| -#endif
|
| - BrowserChildProcessHost::OnChildDied();
|
| -}
|
| -
|
| // This only ever runs on the BrowserThread::FILE thread.
|
| // If multiple tasks are posted, the later ones are no-ops.
|
| void NaClBrowser::OpenIrtLibraryFile() {
|
| @@ -519,7 +519,3 @@
|
| NOTREACHED() << "Invalid message with type = " << msg.type();
|
| return false;
|
| }
|
| -
|
| -bool NaClProcessHost::CanShutdown() {
|
| - return true;
|
| -}
|
|
|