summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/chrome_dll_main.cc10
-rw-r--r--chrome/app/client_util.cc16
-rw-r--r--chrome/app/dummy_main_functions.cc4
-rw-r--r--chrome/browser/memory_details.cc2
-rw-r--r--chrome/browser/nacl_host/nacl_broker_host.cc74
-rw-r--r--chrome/browser/nacl_host/nacl_broker_host.h46
-rw-r--r--chrome/browser/nacl_host/nacl_broker_service.cc69
-rw-r--r--chrome/browser/nacl_host/nacl_broker_service.h57
-rw-r--r--chrome/browser/nacl_process_host.cc110
-rw-r--r--chrome/browser/nacl_process_host.h13
-rwxr-xr-xchrome/chrome_browser.gypi5
-rw-r--r--chrome/chrome_common.gypi3
-rw-r--r--chrome/common/child_process_host.cc8
-rw-r--r--chrome/common/child_process_host.h2
-rw-r--r--chrome/common/child_process_info.cc4
-rw-r--r--chrome/common/child_process_info.h3
-rw-r--r--chrome/common/chrome_constants.cc1
-rw-r--r--chrome/common/chrome_constants.h1
-rw-r--r--chrome/common/chrome_switches.cc8
-rw-r--r--chrome/common/chrome_switches.h3
-rw-r--r--chrome/common/nacl_cmd_line.cc44
-rw-r--r--chrome/common/nacl_cmd_line.h16
-rw-r--r--chrome/common/nacl_messages_internal.h11
-rw-r--r--chrome/common/nacl_types.h20
-rw-r--r--chrome/common/sandbox_init_wrapper_mac.cc2
-rw-r--r--chrome/common/sandbox_init_wrapper_win.cc2
-rw-r--r--chrome/common/sandbox_policy.cc20
-rw-r--r--chrome/installer/util/util_constants.cc1
-rw-r--r--chrome/installer/util/util_constants.h1
-rw-r--r--chrome/nacl.gypi4
-rw-r--r--chrome/nacl/broker_thread.cc72
-rw-r--r--chrome/nacl/broker_thread.h37
-rw-r--r--chrome/nacl/nacl_main.cc67
-rw-r--r--chrome/nacl/nacl_thread.cc2
-rw-r--r--chrome/nacl/nacl_thread.h2
-rw-r--r--chrome/renderer/render_process.cc2
36 files changed, 77 insertions, 665 deletions
diff --git a/chrome/app/chrome_dll_main.cc b/chrome/app/chrome_dll_main.cc
index 1603d32..1e3cb83 100644
--- a/chrome/app/chrome_dll_main.cc
+++ b/chrome/app/chrome_dll_main.cc
@@ -93,7 +93,7 @@ extern int NaClMain(const MainFunctionParams&);
extern int UtilityMain(const MainFunctionParams&);
extern int ProfileImportMain(const MainFunctionParams&);
extern int ZygoteMain(const MainFunctionParams&);
-#if defined(_WIN64)
+#ifdef NACL_WIN64
extern int NaClBrokerMain(const MainFunctionParams&);
#endif
@@ -261,7 +261,7 @@ static void AdjustLinuxOOMScore(const std::string& process_type) {
} else if (process_type == switches::kProfileImportProcess) {
NOTIMPLEMENTED();
#ifndef DISABLE_NACL
- } else if (process_type == switches::kNaClLoaderProcess) {
+ } else if (process_type == switches::kNaClProcess) {
score = kPluginScore;
#endif
} else if (process_type == switches::kZygoteProcess ||
@@ -686,13 +686,9 @@ int ChromeMain(int argc, char** argv) {
} else if (process_type == switches::kWorkerProcess) {
rv = WorkerMain(main_params);
#ifndef DISABLE_NACL
- } else if (process_type == switches::kNaClLoaderProcess) {
+ } else if (process_type == switches::kNaClProcess) {
rv = NaClMain(main_params);
#endif
-#ifdef _WIN64 // The broker process is used only on Win64.
- } else if (process_type == switches::kNaClBrokerProcess) {
- rv = NaClBrokerMain(main_params);
-#endif
} else if (process_type == switches::kZygoteProcess) {
#if defined(OS_LINUX)
if (ZygoteMain(main_params)) {
diff --git a/chrome/app/client_util.cc b/chrome/app/client_util.cc
index a4bc50b..993f468 100644
--- a/chrome/app/client_util.cc
+++ b/chrome/app/client_util.cc
@@ -7,7 +7,6 @@
#include "chrome/app/breakpad_win.h"
#include "chrome/app/client_util.h"
-#include "chrome/common/chrome_switches.h"
#include "chrome/common/result_codes.h"
#include "chrome/installer/util/browser_distribution.h"
#include "chrome/installer/util/install_util.h"
@@ -84,22 +83,7 @@ bool EnvQueryStr(const wchar_t* key_name, std::wstring* value) {
// value not being null to dermine if this path contains a valid dll.
HMODULE LoadChromeWithDirectory(std::wstring* dir) {
::SetCurrentDirectoryW(dir->c_str());
-#ifdef _WIN64
- const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
- if ((cmd_line.GetSwitchValueASCII(switches::kProcessType) ==
- switches::kNaClBrokerProcess) ||
- (cmd_line.GetSwitchValueASCII(switches::kProcessType) ==
- switches::kNaClLoaderProcess)) {
- // Load the 64-bit DLL when running in a 64-bit process.
- dir->append(installer_util::kChromeNaCl64Dll);
- } else {
- // Only NaCl broker and loader can be launched as Win64 processes.
- NOTREACHED();
- return NULL;
- }
-#else
dir->append(installer_util::kChromeDll);
-#endif
return ::LoadLibraryExW(dir->c_str(), NULL,
LOAD_WITH_ALTERED_SEARCH_PATH);
}
diff --git a/chrome/app/dummy_main_functions.cc b/chrome/app/dummy_main_functions.cc
index c8b7c5e..192720e 100644
--- a/chrome/app/dummy_main_functions.cc
+++ b/chrome/app/dummy_main_functions.cc
@@ -35,6 +35,10 @@ int ZygoteMain(const MainFunctionParams& parameters) {
return ResultCodes::BAD_PROCESS_TYPE;
}
+int NaClBrokerMain(const MainFunctionParams& parameters) {
+ return ResultCodes::BAD_PROCESS_TYPE;
+}
+
int DiagnosticsMain(const CommandLine& command_line) {
return 1;
}
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc
index 4c7e2fb..f212698 100644
--- a/chrome/browser/memory_details.cc
+++ b/chrome/browser/memory_details.cc
@@ -209,7 +209,7 @@ void MemoryDetails::UpdateHistograms() {
case ChildProcessInfo::SANDBOX_HELPER_PROCESS:
UMA_HISTOGRAM_MEMORY_KB("Memory.SandboxHelper", sample);
break;
- case ChildProcessInfo::NACL_LOADER_PROCESS:
+ case ChildProcessInfo::NACL_PROCESS:
UMA_HISTOGRAM_MEMORY_KB("Memory.NativeClient", sample);
break;
default:
diff --git a/chrome/browser/nacl_host/nacl_broker_host.cc b/chrome/browser/nacl_host/nacl_broker_host.cc
deleted file mode 100644
index 8abc228..0000000
--- a/chrome/browser/nacl_host/nacl_broker_host.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/nacl_host/nacl_broker_host.h"
-
-#include "base/command_line.h"
-#include "ipc/ipc_switches.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/nacl_host/nacl_broker_service.h"
-#include "chrome/browser/nacl_process_host.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/nacl_cmd_line.h"
-#include "chrome/common/nacl_messages.h"
-
-NaClBrokerHost::NaClBrokerHost(
- ResourceDispatcherHost* resource_dispatcher_host)
- : ChildProcessHost(NACL_BROKER_PROCESS, resource_dispatcher_host) {
-}
-
-NaClBrokerHost::~NaClBrokerHost() {
-}
-
-URLRequestContext* NaClBrokerHost::GetRequestContext(
- uint32 request_id,
- const ViewHostMsg_Resource_Request& request_data) {
- return NULL;
-}
-
-bool NaClBrokerHost::Init() {
- // Create the channel that will be used for communicating with the broker.
- if (!CreateChannel())
- return false;
-
- // Create the path to the nacl broker/loader executable.
- FilePath exe_path = GetChildPath(false);
- if (exe_path.empty())
- return false;
-
- FilePath nacl_path = exe_path.DirName().Append(chrome::kNaClAppName);
- CommandLine* cmd_line = new CommandLine(nacl_path);
- nacl::CopyNaClCommandLineArguments(cmd_line);
-
- cmd_line->AppendSwitchWithValue(switches::kProcessType,
- switches::kNaClBrokerProcess);
-
- cmd_line->AppendSwitchWithValue(switches::kProcessChannelID,
- ASCIIToWide(channel_id()));
-
- ChildProcessHost::Launch(FilePath(), cmd_line);
- return true;
-}
-
-void NaClBrokerHost::OnMessageReceived(const IPC::Message& msg) {
- IPC_BEGIN_MESSAGE_MAP(NaClBrokerHost, msg)
- IPC_MESSAGE_HANDLER(NaClProcessMsg_BrokerReady, OnBrokerReady)
- IPC_MESSAGE_HANDLER(NaClProcessMsg_LoaderLaunched, OnLoaderLaunched)
- IPC_END_MESSAGE_MAP()
-}
-
-void NaClBrokerHost::OnBrokerReady() {
- NaClBrokerService::GetInstance()->OnBrokerStarted();
-}
-
-bool NaClBrokerHost::LaunchLoader(
- const std::wstring& loader_channel_id) {
- return Send(new NaClProcessMsg_LaunchLoaderThroughBroker(loader_channel_id));
-}
-
-void NaClBrokerHost::OnLoaderLaunched(const std::wstring& loader_channel_id,
- base::ProcessHandle handle) {
- NaClBrokerService::GetInstance()->OnLoaderLaunched(loader_channel_id, handle);
-}
diff --git a/chrome/browser/nacl_host/nacl_broker_host.h b/chrome/browser/nacl_host/nacl_broker_host.h
deleted file mode 100644
index f526aa1..0000000
--- a/chrome/browser/nacl_host/nacl_broker_host.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_NACL_HOST_NACL_BROKER_HOST_H_
-#define CHROME_BROWSER_NACL_HOST_NACL_BROKER_HOST_H_
-
-#include "base/basictypes.h"
-#include "base/process.h"
-#include "chrome/common/child_process_host.h"
-#include "ipc/ipc_message.h"
-
-class NaClBrokerHost : public ChildProcessHost {
- public:
- explicit NaClBrokerHost(ResourceDispatcherHost* resource_dispatcher_host);
- ~NaClBrokerHost();
-
- // This function starts the broker process. It needs to be called
- // before loaders can be launched.
- bool Init();
-
- // Send a message to the broker process, causing it to launch
- // a Native Client loader process.
- bool LaunchLoader(const std::wstring& loader_channel_id);
-
- private:
- // ResourceDispatcherHost::Receiver implementation:
- virtual URLRequestContext* GetRequestContext(
- uint32 request_id,
- const ViewHostMsg_Resource_Request& request_data);
-
- virtual bool CanShutdown() { return true; }
-
- // Handler for NaClProcessMsg_BrokerReady message (sent by the broker process)
- void OnBrokerReady();
- // Handler for NaClProcessMsg_LoaderLaunched message
- void OnLoaderLaunched(const std::wstring& loader_channel_id,
- base::ProcessHandle handle);
-
- // IPC::Channel::Listener
- virtual void OnMessageReceived(const IPC::Message& msg);
-
- DISALLOW_COPY_AND_ASSIGN(NaClBrokerHost);
-};
-
-#endif // CHROME_BROWSER_NACL_HOST_NACL_BROKER_HOST_H_
diff --git a/chrome/browser/nacl_host/nacl_broker_service.cc b/chrome/browser/nacl_host/nacl_broker_service.cc
deleted file mode 100644
index ef659cd..0000000
--- a/chrome/browser/nacl_host/nacl_broker_service.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/nacl_host/nacl_broker_service.h"
-
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/nacl_process_host.h"
-#include "chrome/common/chrome_switches.h"
-
-NaClBrokerService* NaClBrokerService::GetInstance() {
- return Singleton<NaClBrokerService>::get();
-}
-
-NaClBrokerService::NaClBrokerService()
- : broker_started_(false),
- broker_host_(NULL),
- resource_dispatcher_host_(NULL),
- initialized_(false) {
-}
-
-void NaClBrokerService::Init(ResourceDispatcherHost* resource_dispatcher_host) {
- if (initialized_) {
- return;
- }
- resource_dispatcher_host_ = resource_dispatcher_host;
- StartBroker();
- initialized_ = true;
-}
-
-bool NaClBrokerService::StartBroker() {
- broker_host_.reset(new NaClBrokerHost(resource_dispatcher_host_));
- if (!broker_host_->Init()) {
- // Initialization failed, we will not retry in the future
- broker_host_.reset(NULL);
- }
- return (broker_host_ != NULL);
-}
-
-bool NaClBrokerService::LaunchLoader(NaClProcessHost* nacl_process_host,
- const std::wstring& loader_channel_id) {
- if (broker_started_) {
- broker_host_->LaunchLoader(loader_channel_id);
- } else {
- // Add task to the list
- pending_launches_[loader_channel_id] = nacl_process_host;
- }
- return true;
-}
-
-void NaClBrokerService::OnBrokerStarted() {
- PendingLaunchesMap::iterator it;
- for (it = pending_launches_.begin(); it != pending_launches_.end(); it++) {
- broker_host_->LaunchLoader(it->first);
- }
- broker_started_ = true;
-}
-
-void NaClBrokerService::OnLoaderLaunched(const std::wstring& channel_id,
- base::ProcessHandle handle) {
- NaClProcessHost* client;
- PendingLaunchesMap::iterator it = pending_launches_.find(channel_id);
- if (pending_launches_.end() == it) {
- NOTREACHED();
- }
- client = it->second;
- client->OnProcessLaunchedByBroker(handle);
- pending_launches_.erase(it);
-}
diff --git a/chrome/browser/nacl_host/nacl_broker_service.h b/chrome/browser/nacl_host/nacl_broker_service.h
deleted file mode 100644
index 75e089d..0000000
--- a/chrome/browser/nacl_host/nacl_broker_service.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_NACL_HOST_NACL_BROKER_SERVICE_H_
-#define CHROME_BROWSER_NACL_HOST_NACL_BROKER_SERVICE_H_
-
-#include <map>
-
-#include "base/basictypes.h"
-#include "base/singleton.h"
-#include "chrome/browser/nacl_host/nacl_broker_host.h"
-
-class NaClProcessHost;
-
-class NaClBrokerService {
- public:
- // Returns the NaClBrokerService singleton.
- static NaClBrokerService* GetInstance();
-
- void Init(ResourceDispatcherHost* resource_dispatcher_host);
-
- // Can be called several times, must be called before LaunchLoader.
- bool StartBroker();
-
- // Send a message to the broker process, causing it to launch
- // a Native Client loader process.
- bool LaunchLoader(NaClProcessHost* client,
- const std::wstring& loader_channel_id);
-
- // Called by NaClBrokerHost to notify the service
- // that the broker was launched.
- void OnBrokerStarted();
-
- // Called by NaClBrokerHost to notify the service that a loader was launched.
- void OnLoaderLaunched(const std::wstring& channel_id,
- base::ProcessHandle handle);
-
- private:
- typedef std::map<std::wstring, NaClProcessHost*>
- PendingLaunchesMap;
-
- friend struct DefaultSingletonTraits<NaClBrokerService>;
-
- NaClBrokerService();
- ~NaClBrokerService() {}
-
- bool broker_started_;
- scoped_ptr<NaClBrokerHost> broker_host_;
- bool initialized_;
- ResourceDispatcherHost* resource_dispatcher_host_;
- PendingLaunchesMap pending_launches_;
-
- DISALLOW_COPY_AND_ASSIGN(NaClBrokerService);
-};
-
-#endif // CHROME_BROWSER_NACL_HOST_NACL_BROKER_SERVICE_H_
diff --git a/chrome/browser/nacl_process_host.cc b/chrome/browser/nacl_process_host.cc
index 9f57620..f736ab7 100644
--- a/chrome/browser/nacl_process_host.cc
+++ b/chrome/browser/nacl_process_host.cc
@@ -10,12 +10,9 @@
#include <fcntl.h>
#endif
-#include "base/command_line.h"
-#include "chrome/browser/nacl_host/nacl_broker_service.h"
#include "chrome/browser/renderer_host/resource_message_filter.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/logging_chrome.h"
-#include "chrome/common/nacl_cmd_line.h"
#include "chrome/common/nacl_messages.h"
#include "chrome/common/render_messages.h"
#include "ipc/ipc_switches.h"
@@ -27,15 +24,11 @@
NaClProcessHost::NaClProcessHost(
ResourceDispatcherHost *resource_dispatcher_host,
const std::wstring& url)
- : ChildProcessHost(NACL_LOADER_PROCESS, resource_dispatcher_host),
+ : ChildProcessHost(NACL_PROCESS, resource_dispatcher_host),
resource_dispatcher_host_(resource_dispatcher_host),
reply_msg_(NULL),
- descriptor_(0),
- running_on_wow64_(false) {
+ descriptor_(0) {
set_name(url);
-#if defined(OS_WIN)
- CheckIsWow64();
-#endif
}
NaClProcessHost::~NaClProcessHost() {
@@ -84,67 +77,73 @@ bool NaClProcessHost::LaunchSelLdr() {
return false;
CommandLine* cmd_line = new CommandLine(exe_path);
- nacl::CopyNaClCommandLineArguments(cmd_line);
+ if (logging::DialogsAreSuppressed())
+ cmd_line->AppendSwitch(switches::kNoErrorDialogs);
+
+ // Propagate the following switches to the plugin command line (along with
+ // any associated values) if present in the browser command line.
+ // TODO(gregoryd): check which flags of those below can be supported.
+ static const char* const switch_names[] = {
+ switches::kNoSandbox,
+ switches::kTestSandbox,
+ switches::kDisableBreakpad,
+ switches::kFullMemoryCrashReport,
+ switches::kEnableLogging,
+ switches::kDisableLogging,
+ switches::kLoggingLevel,
+ switches::kEnableDCHECK,
+ switches::kSilentDumpOnDCHECK,
+ switches::kMemoryProfiling,
+#if defined(OS_MACOSX)
+ // TODO(dspringer): remove this when NaCl x86-32 security issues are fixed
+ switches::kEnableNaClOnMac,
+#endif
+ };
+
+ const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
#if defined(OS_MACOSX)
- // TODO(dspringer): NaCl is temporalrily disabled on the Mac by default, but
- // it can be enabled with the --enable-nacl cmd-line switch. Remove this check
- // when the security issues in the Mac PIC code are resolved.
- if (!cmd_line->HasSwitch(switches::kEnableNaCl))
+// TODO(dspringer): NaCl is temporalrily disabled on the Mac by default, but it
+// can be enabled with the --enable-nacl cmd-line switch. Remove this check
+// when the security issues in the Mac PIC code are resolved.
+ if (!browser_command_line.HasSwitch(switches::kEnableNaClOnMac))
return false;
#endif
+ for (size_t i = 0; i < arraysize(switch_names); ++i) {
+ if (browser_command_line.HasSwitch(switch_names[i])) {
+ cmd_line->AppendSwitchWithValue(switch_names[i],
+ browser_command_line.GetSwitchValueASCII(switch_names[i]));
+ }
+ }
+
cmd_line->AppendSwitchWithValue(switches::kProcessType,
- switches::kNaClLoaderProcess);
+ switches::kNaClProcess);
cmd_line->AppendSwitchWithValue(switches::kProcessChannelID,
ASCIIToWide(channel_id()));
- // On Windows we might need to start the broker process to launch a new loader
+ ChildProcessHost::Launch(
#if defined(OS_WIN)
- if (running_on_wow64_) {
- NaClBrokerService::GetInstance()->Init(resource_dispatcher_host_);
- NaClBrokerService::GetInstance()->LaunchLoader(this,
- ASCIIToWide(channel_id()));
- } else
-#endif
- ChildProcessHost::Launch(
-#if defined(OS_WIN)
- FilePath(),
+ FilePath(),
#elif defined(OS_POSIX)
- false,
- base::environment_vector(),
+ false,
+ base::environment_vector(),
#endif
- cmd_line);
+ cmd_line);
return true;
}
-void NaClProcessHost::OnProcessLaunchedByBroker(base::ProcessHandle handle) {
- set_handle(handle);
- OnProcessLaunched();
-}
-
-bool NaClProcessHost::DidChildCrash() {
- if (running_on_wow64_) {
- bool child_exited;
- return base::DidProcessCrash(&child_exited, handle());
- }
- return ChildProcessHost::DidChildCrash();
-}
-
void NaClProcessHost::OnProcessLaunched() {
nacl::FileDescriptor imc_handle;
base::ProcessHandle nacl_process_handle;
#if NACL_WINDOWS
// Duplicate the IMC handle
- // We assume the size of imc_handle has the same size as HANDLE, so the cast
- // below is safe.
- DCHECK(sizeof(HANDLE) == sizeof(imc_handle));
DuplicateHandle(base::GetCurrentProcessHandle(),
reinterpret_cast<HANDLE>(pair_[0]),
resource_message_filter_->handle(),
- reinterpret_cast<HANDLE*>(&imc_handle),
+ &imc_handle,
GENERIC_READ | GENERIC_WRITE,
FALSE,
DUPLICATE_CLOSE_SOURCE);
@@ -213,24 +212,3 @@ URLRequestContext* NaClProcessHost::GetRequestContext(
const ViewHostMsg_Resource_Request& request_data) {
return NULL;
}
-
-#if defined(OS_WIN)
-// TODO(gregoryd): invoke CheckIsWow64 only once, not for each NaClProcessHost
-typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
-void NaClProcessHost::CheckIsWow64() {
- LPFN_ISWOW64PROCESS fnIsWow64Process;
-
- fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
- GetModuleHandle(TEXT("kernel32")),
- "IsWow64Process");
-
- if (fnIsWow64Process != NULL) {
- BOOL bIsWow64 = FALSE;
- if (fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) {
- if (bIsWow64) {
- running_on_wow64_ = true;
- }
- }
- }
-}
-#endif
diff --git a/chrome/browser/nacl_process_host.h b/chrome/browser/nacl_process_host.h
index ca416f6..8159836 100644
--- a/chrome/browser/nacl_process_host.h
+++ b/chrome/browser/nacl_process_host.h
@@ -33,11 +33,6 @@ class NaClProcessHost : public ChildProcessHost {
virtual void OnMessageReceived(const IPC::Message& msg);
- void OnProcessLaunchedByBroker(base::ProcessHandle handle);
-
- protected:
- virtual bool DidChildCrash();
-
private:
bool LaunchSelLdr();
@@ -52,11 +47,6 @@ class NaClProcessHost : public ChildProcessHost {
virtual bool CanShutdown() { return true; }
-#if defined(OS_WIN)
- // Check whether the browser process is running on WOW64 - Windows only
- void CheckIsWow64();
-#endif
-
private:
ResourceDispatcherHost* resource_dispatcher_host_;
@@ -73,9 +63,6 @@ class NaClProcessHost : public ChildProcessHost {
// The NaCl specific descriptor for this process.
int descriptor_;
- // Windows platform flag
- bool running_on_wow64_;
-
DISALLOW_COPY_AND_ASSIGN(NaClProcessHost);
};
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index b9a7475..6adda93 100755
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2205,11 +2205,6 @@
'../views/views.gyp:views',
],
'sources': [
- # NaCl broker is used on Windows only
- 'browser/nacl_host/nacl_broker_host.cc',
- 'browser/nacl_host/nacl_broker_host.h',
- 'browser/nacl_host/nacl_broker_service.cc',
- 'browser/nacl_host/nacl_broker_service.h',
'browser/net/ssl_config_service_manager_system.cc',
# Using built-in rule in vstudio for midl.
'browser/history/history_indexer.idl',
diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi
index c0205b2..ffb4bb3 100644
--- a/chrome/chrome_common.gypi
+++ b/chrome/chrome_common.gypi
@@ -60,10 +60,7 @@
'common/main_function_params.h',
'common/message_router.cc',
'common/message_router.h',
- 'common/nacl_cmd_line.cc',
- 'common/nacl_cmd_line.h',
'common/nacl_messages.h',
- 'common/nacl_types.h',
'common/nacl_messages_internal.h',
'common/notification_details.h',
'common/notification_observer.h',
diff --git a/chrome/common/child_process_host.cc b/chrome/common/child_process_host.cc
index 51c6de4..9fb6b52 100644
--- a/chrome/common/child_process_host.cc
+++ b/chrome/common/child_process_host.cc
@@ -177,13 +177,9 @@ void ChildProcessHost::Notify(NotificationType type) {
ChromeThread::UI, FROM_HERE, new ChildNotificationTask(type, this));
}
-bool ChildProcessHost::DidChildCrash() {
- return child_process_->DidProcessCrash();
-}
-
void ChildProcessHost::OnChildDied() {
- if (handle() != base::kNullProcessHandle) {
- bool did_crash = DidChildCrash();
+ if (child_process_->GetHandle()) {
+ bool did_crash = child_process_->DidProcessCrash();
if (did_crash) {
OnProcessCrashed();
// Report that this child process crashed.
diff --git a/chrome/common/child_process_host.h b/chrome/common/child_process_host.h
index 22d5cc3..ec6e86d 100644
--- a/chrome/common/child_process_host.h
+++ b/chrome/common/child_process_host.h
@@ -116,8 +116,6 @@ class ChildProcessHost : public ResourceDispatcherHost::Receiver,
bool opening_channel() { return opening_channel_; }
const std::string& channel_id() { return channel_id_; }
- virtual bool DidChildCrash();
-
private:
// Sends the given notification to the notification service on the UI thread.
void Notify(NotificationType type);
diff --git a/chrome/common/child_process_info.cc b/chrome/common/child_process_info.cc
index 473512f..c915e80 100644
--- a/chrome/common/child_process_info.cc
+++ b/chrome/common/child_process_info.cc
@@ -54,7 +54,7 @@ std::wstring ChildProcessInfo::GetTypeNameInEnglish(
return L"Zygote";
case SANDBOX_HELPER_PROCESS:
return L"Sandbox helper";
- case NACL_LOADER_PROCESS:
+ case NACL_PROCESS:
return L"Native Client module";
case UNKNOWN_PROCESS:
default:
@@ -77,7 +77,7 @@ std::wstring ChildProcessInfo::GetLocalizedTitle() const {
message_id = IDS_TASK_MANAGER_UTILITY_PREFIX;
} else if (type_ == ChildProcessInfo::PROFILE_IMPORT_PROCESS) {
message_id = IDS_TASK_MANAGER_PROFILE_IMPORT_PREFIX;
- } else if (type_ == ChildProcessInfo::NACL_LOADER_PROCESS) {
+ } else if (type_ == ChildProcessInfo::NACL_PROCESS) {
message_id = IDS_TASK_MANAGER_NACL_PREFIX;
} else {
DCHECK(false) << "Need localized name for child process type.";
diff --git a/chrome/common/child_process_info.h b/chrome/common/child_process_info.h
index 1607417..5726675 100644
--- a/chrome/common/child_process_info.h
+++ b/chrome/common/child_process_info.h
@@ -20,12 +20,11 @@ class ChildProcessInfo {
RENDER_PROCESS,
PLUGIN_PROCESS,
WORKER_PROCESS,
- NACL_LOADER_PROCESS,
+ NACL_PROCESS,
UTILITY_PROCESS,
PROFILE_IMPORT_PROCESS,
ZYGOTE_PROCESS,
SANDBOX_HELPER_PROCESS,
- NACL_BROKER_PROCESS,
GPU_PROCESS
};
diff --git a/chrome/common/chrome_constants.cc b/chrome/common/chrome_constants.cc
index 8226cd8..c75ab65 100644
--- a/chrome/common/chrome_constants.cc
+++ b/chrome/common/chrome_constants.cc
@@ -52,7 +52,6 @@ const FilePath::CharType kHelperProcessExecutablePath[] =
const FilePath::CharType kFrameworkName[] =
FPL(PRODUCT_STRING " Framework.framework");
#endif // OS_MACOSX
-const wchar_t kNaClAppName[] = L"nacl";
#if defined(GOOGLE_CHROME_BUILD)
const wchar_t kBrowserAppName[] = L"Chrome";
const char kStatsFilename[] = "ChromeStats2";
diff --git a/chrome/common/chrome_constants.h b/chrome/common/chrome_constants.h
index fc271e0..c8121d0 100644
--- a/chrome/common/chrome_constants.h
+++ b/chrome/common/chrome_constants.h
@@ -31,7 +31,6 @@ extern const wchar_t kNotSignedInProfile[];
extern const wchar_t kNotSignedInID[];
extern const char kStatsFilename[];
extern const wchar_t kBrowserResourcesDll[];
-extern const wchar_t kNaClAppName[];
extern const FilePath::CharType kExtensionFileExtension[];
// filenames
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index c9bc494..574752a 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -384,12 +384,8 @@ const char kMessageLoopHistogrammer[] = "message-loop-histogrammer";
// and performance tests.
const char kMetricsRecordingOnly[] = "metrics-recording-only";
-// Causes the process to run as a NativeClient broker
-// (used for launching NaCl loader processes on 64-bit Windows).
-const char kNaClBrokerProcess[] = "nacl-broker";
-
-// Causes the process to run as a NativeClient loader.
-const char kNaClLoaderProcess[] = "nacl-loader";
+// Causes the process to run as a NativeClient's sel_ldr subprocess.
+const char kNaClProcess[] = "nacl";
// Causes the Native Client process to display a dialog on launch.
const char kNaClStartupDialog[] = "nacl-startup-dialog";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 856df24..4f8d4d6 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -121,8 +121,7 @@ extern const char kMediaCacheSize[];
extern const char kMemoryProfiling[];
extern const char kMessageLoopHistogrammer[];
extern const char kMetricsRecordingOnly[];
-extern const char kNaClBrokerProcess[];
-extern const char kNaClLoaderProcess[];
+extern const char kNaClProcess[];
extern const char kNaClStartupDialog[];
extern const char kNewTabPage[];
extern const char kNoDefaultBrowserCheck[];
diff --git a/chrome/common/nacl_cmd_line.cc b/chrome/common/nacl_cmd_line.cc
deleted file mode 100644
index 2212c68..0000000
--- a/chrome/common/nacl_cmd_line.cc
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/command_line.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/logging_chrome.h"
-
-namespace nacl {
- void CopyNaClCommandLineArguments(CommandLine* cmd_line) {
- const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
- if (logging::DialogsAreSuppressed())
- cmd_line->AppendSwitch(switches::kNoErrorDialogs);
-
- // Propagate the following switches to the NaCl loader command line (along
- // with any associated values) if present in the browser command line.
- // TODO(gregoryd): check which flags of those below can be supported.
- static const char* const switch_names[] = {
- switches::kNoSandbox,
- switches::kTestSandbox,
- switches::kDisableBreakpad,
- switches::kFullMemoryCrashReport,
- switches::kEnableLogging,
- switches::kDisableLogging,
- switches::kLoggingLevel,
- switches::kEnableDCHECK,
- switches::kSilentDumpOnDCHECK,
- switches::kMemoryProfiling,
-#if defined(OS_MACOSX)
- // TODO(dspringer): remove this when NaCl x86-32 security issues are fixed
- switches::kEnableNaClOnMac,
-#endif
- };
-
- for (size_t i = 0; i < arraysize(switch_names); ++i) {
- if (browser_command_line.HasSwitch(switch_names[i])) {
- cmd_line->AppendSwitchWithValue(
- switch_names[i],
- browser_command_line.GetSwitchValueASCII(switch_names[i]));
- }
- }
- }
-}
diff --git a/chrome/common/nacl_cmd_line.h b/chrome/common/nacl_cmd_line.h
deleted file mode 100644
index 1091e11..0000000
--- a/chrome/common/nacl_cmd_line.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_COMMON_NACL_CMD_LINE_H_
-#define CHROME_COMMON_NACL_CMD_LINE_H_
-
-#include "base/command_line.h"
-
-namespace nacl {
- // Copy all the relevant arguments from the command line of the current
- // process to cmd_line that will be used for launching the NaCl loader/broker.
- void CopyNaClCommandLineArguments(CommandLine* cmd_line);
-}
-
-#endif // CHROME_COMMON_NACL_CMD_LINE_H_
diff --git a/chrome/common/nacl_messages_internal.h b/chrome/common/nacl_messages_internal.h
index 11dfba7..3794255 100644
--- a/chrome/common/nacl_messages_internal.h
+++ b/chrome/common/nacl_messages_internal.h
@@ -14,16 +14,5 @@ IPC_BEGIN_MESSAGES(NaClProcess)
int /* descriptor id */,
nacl::FileDescriptor /* handle value */)
- // Tells the NaCl broker to launch a NaCl loader process.
- IPC_MESSAGE_CONTROL1(NaClProcessMsg_LaunchLoaderThroughBroker,
- std::wstring /* channel ID for the loader */)
-
- // Notify the browser process that the loader was launched successfully.
- IPC_MESSAGE_CONTROL2(NaClProcessMsg_LoaderLaunched,
- std::wstring, /* channel ID for the loader */
- base::ProcessHandle /* loader process handle */)
-
- // Notify the browser process that the broker is ready (sent by the broker)
- IPC_MESSAGE_CONTROL0(NaClProcessMsg_BrokerReady)
IPC_END_MESSAGES(NaClProcess)
diff --git a/chrome/common/nacl_types.h b/chrome/common/nacl_types.h
index 5c5f5dc..394edd3 100644
--- a/chrome/common/nacl_types.h
+++ b/chrome/common/nacl_types.h
@@ -6,23 +6,15 @@
#ifndef CHROME_COMMON_NACL_TYPES_H_
#define CHROME_COMMON_NACL_TYPES_H_
-#if defined(OS_POSIX)
-#include "base/file_descriptor_posix.h"
-#endif
-
-// TODO(gregoryd): add a Windows definition for base::FileDescriptor
+// TODO(gregoryd): add a Windows definition for base::FileDescriptor,
+// replace the macros with inline functions.
namespace nacl {
#if defined(OS_WIN)
- // We assume that HANDLE always uses less than 32 bits
- typedef int FileDescriptor;
- inline HANDLE ToNativeHandle(const FileDescriptor& desc) {
- return reinterpret_cast<HANDLE>(desc);
- }
+typedef HANDLE FileDescriptor;
+#define NATIVE_HANDLE(desc) (desc)
#elif defined(OS_POSIX)
- typedef base::FileDescriptor FileDescriptor;
- inline int ToNativeHandle(const FileDescriptor& desc) {
- return desc.fd;
- }
+typedef base::FileDescriptor FileDescriptor;
+#define NATIVE_HANDLE(desc) ((desc).fd)
#endif
}
diff --git a/chrome/common/sandbox_init_wrapper_mac.cc b/chrome/common/sandbox_init_wrapper_mac.cc
index a47240d..3341b08 100644
--- a/chrome/common/sandbox_init_wrapper_mac.cc
+++ b/chrome/common/sandbox_init_wrapper_mac.cc
@@ -39,7 +39,7 @@ bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line,
} else if (process_type == switches::kWorkerProcess) {
// Worker process sandbox.
sandbox_process_type = sandbox::SANDBOX_TYPE_WORKER;
- } else if ((process_type == switches::kNaClLoaderProcess) ||
+ } else if ((process_type == switches::kNaClProcess) ||
(process_type == switches::kPluginProcess) ||
(process_type == switches::kProfileImportProcess)) {
return true;
diff --git a/chrome/common/sandbox_init_wrapper_win.cc b/chrome/common/sandbox_init_wrapper_win.cc
index 5d4399a..0bfba24 100644
--- a/chrome/common/sandbox_init_wrapper_win.cc
+++ b/chrome/common/sandbox_init_wrapper_win.cc
@@ -21,7 +21,7 @@ bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line,
if ((process_type == switches::kRendererProcess) ||
(process_type == switches::kExtensionProcess) ||
(process_type == switches::kWorkerProcess) ||
- (process_type == switches::kNaClLoaderProcess) ||
+ (process_type == switches::kNaClProcess) ||
(process_type == switches::kUtilityProcess) ||
(process_type == switches::kPluginProcess &&
command_line.HasSwitch(switches::kSafePlugins))) {
diff --git a/chrome/common/sandbox_policy.cc b/chrome/common/sandbox_policy.cc
index a79a962..9e70b08 100644
--- a/chrome/common/sandbox_policy.cc
+++ b/chrome/common/sandbox_policy.cc
@@ -23,13 +23,6 @@
#include "sandbox/src/sandbox.h"
#include "webkit/glue/plugins/plugin_list.h"
-#ifdef NACL_WIN64
- // The sandbox can be used also by the NaCl broker process. In this case we
- // define a global variable g_broker_services instead of g_browser_process.
- // This can be changed if we discover that the broker process needs to be more
- // similar to the browser process.
- extern sandbox::BrokerServices* g_broker_services;
-#endif
namespace {
// The DLLs listed here are known (or under strong suspicion) of causing crashes
@@ -349,12 +342,10 @@ base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line,
type = ChildProcessInfo::PLUGIN_PROCESS;
} else if (type_str == switches::kWorkerProcess) {
type = ChildProcessInfo::WORKER_PROCESS;
- } else if (type_str == switches::kNaClLoaderProcess) {
- type = ChildProcessInfo::NACL_LOADER_PROCESS;
+ } else if (type_str == switches::kNaClProcess) {
+ type = ChildProcessInfo::NACL_PROCESS;
} else if (type_str == switches::kUtilityProcess) {
type = ChildProcessInfo::UTILITY_PROCESS;
- } else if (type_str == switches::kNaClBrokerProcess) {
- type = ChildProcessInfo::NACL_BROKER_PROCESS;
} else if (type_str == switches::kGpuProcess) {
type = ChildProcessInfo::GPU_PROCESS;
} else {
@@ -388,15 +379,10 @@ base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line,
return process;
}
-#ifdef NACL_WIN64
- // When running in the broker we get the BrokerServices pointer from a global
- // variable. It is initialized in NaClBrokerMain.
- sandbox::BrokerServices* broker_service = g_broker_services;
-#else
// spawn the child process in the sandbox
sandbox::BrokerServices* broker_service =
g_browser_process->broker_services();
-#endif
+
sandbox::ResultCode result;
PROCESS_INFORMATION target = {0};
sandbox::TargetPolicy* policy = broker_service->CreatePolicy();
diff --git a/chrome/installer/util/util_constants.cc b/chrome/installer/util/util_constants.cc
index 6b89abf..5505685 100644
--- a/chrome/installer/util/util_constants.cc
+++ b/chrome/installer/util/util_constants.cc
@@ -113,7 +113,6 @@ const wchar_t kChromeExe[] = L"chrome.exe";
const wchar_t kChromeOldExe[] = L"old_chrome.exe";
const wchar_t kChromeNewExe[] = L"new_chrome.exe";
const wchar_t kChromeDll[] = L"chrome.dll";
-const wchar_t kChromeNaCl64Dll[] = L"chrome_nacl_win64.dll";
const wchar_t kChromeFrameDll[] = L"npchrome_frame.dll";
const wchar_t kSetupExe[] = L"setup.exe";
const wchar_t kInstallerDir[] = L"Installer";
diff --git a/chrome/installer/util/util_constants.h b/chrome/installer/util/util_constants.h
index b3a4eed..f510cdc 100644
--- a/chrome/installer/util/util_constants.h
+++ b/chrome/installer/util/util_constants.h
@@ -81,7 +81,6 @@ extern const wchar_t kChromeExe[];
extern const wchar_t kChromeOldExe[];
extern const wchar_t kChromeNewExe[];
extern const wchar_t kChromeDll[];
-extern const wchar_t kChromeNaCl64Dll[];
extern const wchar_t kChromeFrameDll[];
extern const wchar_t kSetupExe[];
extern const wchar_t kInstallerDir[];
diff --git a/chrome/nacl.gypi b/chrome/nacl.gypi
index d142af7..696b60d 100644
--- a/chrome/nacl.gypi
+++ b/chrome/nacl.gypi
@@ -86,10 +86,6 @@
'chrome_strings',
'common_nacl_win64',
],
- 'sources': [
- 'nacl/broker_thread.cc',
- 'nacl/broker_thread.h',
- ],
'defines': [
'<@(nacl_win64_defines)',
],
diff --git a/chrome/nacl/broker_thread.cc b/chrome/nacl/broker_thread.cc
deleted file mode 100644
index 0b4bbd2..0000000
--- a/chrome/nacl/broker_thread.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/nacl/broker_thread.h"
-
-#include "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/path_service.h"
-#include "base/process_util.h"
-#include "chrome/common/sandbox_policy.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/nacl_cmd_line.h"
-#include "chrome/common/nacl_messages.h"
-#include "ipc/ipc_switches.h"
-
-NaClBrokerThread::NaClBrokerThread()
- : browser_handle_(0),
- broker_services_(NULL) {
-}
-
-NaClBrokerThread::~NaClBrokerThread() {
- base::CloseProcessHandle(browser_handle_);
-}
-
-NaClBrokerThread* NaClBrokerThread::current() {
- return static_cast<NaClBrokerThread*>(ChildThread::current());
-}
-
-void NaClBrokerThread::OnControlMessageReceived(const IPC::Message& msg) {
- IPC_BEGIN_MESSAGE_MAP(NaClBrokerThread, msg)
- IPC_MESSAGE_HANDLER(NaClProcessMsg_LaunchLoaderThroughBroker,
- OnLaunchLoaderThroughBroker)
- IPC_END_MESSAGE_MAP()
-}
-
-void NaClBrokerThread::OnLaunchLoaderThroughBroker(
- const std::wstring& loader_channel_id) {
- base::ProcessHandle loader_process = 0;
- base::ProcessHandle loader_handle_in_browser = 0;
-
- // Create the path to the nacl broker/loader executable - it's the executable
- // this code is running in.
- FilePath exe_path;
- PathService::Get(base::FILE_EXE, &exe_path);
- if (!exe_path.empty()) {
- CommandLine* cmd_line = new CommandLine(exe_path);
- nacl::CopyNaClCommandLineArguments(cmd_line);
-
- cmd_line->AppendSwitchWithValue(switches::kProcessType,
- switches::kNaClLoaderProcess);
-
- cmd_line->AppendSwitchWithValue(switches::kProcessChannelID,
- loader_channel_id);
-
- loader_process = sandbox::StartProcessWithAccess(cmd_line, FilePath());
- if (loader_process) {
- DuplicateHandle(::GetCurrentProcess(), loader_process,
- browser_handle_, &loader_handle_in_browser,
- PROCESS_DUP_HANDLE, FALSE, 0);
- }
- }
- Send(new NaClProcessMsg_LoaderLaunched(loader_channel_id,
- loader_handle_in_browser));
-}
-
-void NaClBrokerThread::OnChannelConnected(int32 peer_pid) {
- bool res = base::OpenProcessHandle(peer_pid, &browser_handle_);
- DCHECK(res);
- Send(new NaClProcessMsg_BrokerReady());
-}
-
diff --git a/chrome/nacl/broker_thread.h b/chrome/nacl/broker_thread.h
deleted file mode 100644
index d88919f..0000000
--- a/chrome/nacl/broker_thread.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_NACL_BROKER_THREAD_H_
-#define CHROME_NACL_BROKER_THREAD_H_
-
-#include "chrome/common/child_thread.h"
-#include "chrome/common/nacl_types.h"
-
-#if defined(OS_WIN)
-#include "sandbox/src/sandbox.h"
-#endif
-
-// The BrokerThread class represents the thread that handles the messages from
-// the browser process and starts NaCl loader processes.
-class NaClBrokerThread : public ChildThread {
- public:
- NaClBrokerThread();
- ~NaClBrokerThread();
- // Returns the one NaCl thread.
- static NaClBrokerThread* current();
-
- virtual void OnChannelConnected(int32 peer_pid);
-
- private:
- virtual void OnControlMessageReceived(const IPC::Message& msg);
- void OnLaunchLoaderThroughBroker(const std::wstring& loader_channel_id);
- void OnShareBrowserHandle(int browser_handle);
-
- base::ProcessHandle browser_handle_;
- sandbox::BrokerServices* broker_services_;
-
- DISALLOW_COPY_AND_ASSIGN(NaClBrokerThread);
-};
-
-#endif // CHROME_NACL_BROKER_THREAD_H_
diff --git a/chrome/nacl/nacl_main.cc b/chrome/nacl/nacl_main.cc
index ffda8ab..72bc8a2 100644
--- a/chrome/nacl/nacl_main.cc
+++ b/chrome/nacl/nacl_main.cc
@@ -20,66 +20,8 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/logging_chrome.h"
#include "chrome/common/main_function_params.h"
-#include "chrome/common/result_codes.h"
-#if defined(OS_WIN)
-#include "chrome/nacl/broker_thread.h"
-#endif
#include "chrome/nacl/nacl_thread.h"
-#ifdef _WIN64
-
-sandbox::BrokerServices* g_broker_services = NULL;
-
-// main() routine for the NaCl broker process.
-// This is necessary for supporting NaCl in Chrome on Win64.
-int NaClBrokerMain(const MainFunctionParams& parameters) {
- // The main thread of the broker.
- MessageLoopForIO main_message_loop;
- std::wstring app_name = chrome::kNaClAppName;
- PlatformThread::SetName(WideToASCII(app_name + L"_NaClBrokerMain").c_str());
-
- SystemMonitor system_monitor;
- HighResolutionTimerManager hi_res_timer_manager;
-
- const CommandLine& parsed_command_line = parameters.command_line_;
-
- DLOG(INFO) << "Started NaCL broker with " <<
- parsed_command_line.command_line_string();
-
- // NOTE: this code is duplicated from browser_main.cc
- // IMPORTANT: This piece of code needs to run as early as possible in the
- // process because it will initialize the sandbox broker, which requires the
- // process to swap its window station. During this time all the UI will be
- // broken. This has to run before threads and windows are created.
- sandbox::BrokerServices* broker_services =
- parameters.sandbox_info_.BrokerServices();
- if (broker_services) {
- g_broker_services = broker_services;
- if (!parsed_command_line.HasSwitch(switches::kNoSandbox)) {
- bool use_winsta = !parsed_command_line.HasSwitch(
- switches::kDisableAltWinstation);
- // Precreate the desktop and window station used by the renderers.
- sandbox::TargetPolicy* policy = broker_services->CreatePolicy();
- sandbox::ResultCode result = policy->CreateAlternateDesktop(use_winsta);
- CHECK(sandbox::SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION != result);
- policy->Release();
- }
- }
-
- {
- ChildProcess broker_process;
- broker_process.set_main_thread(new NaClBrokerThread());
- MessageLoop::current()->Run();
- }
-
- return 0;
-}
-#else
-int NaClBrokerMain(const MainFunctionParams& parameters) {
- return ResultCodes::BAD_PROCESS_TYPE;
-}
-#endif // _WIN64
-
// This function provides some ways to test crash and assertion handling
// behavior of the renderer.
static void HandleNaClTestParameters(const CommandLine& command_line) {
@@ -106,7 +48,7 @@ static void LaunchNaClChildProcess() {
}
#endif
-// main() routine for the NaCl loader process.
+// main() routine for running as the sel_ldr process.
int NaClMain(const MainFunctionParams& parameters) {
const CommandLine& parsed_command_line = parameters.command_line_;
@@ -118,12 +60,7 @@ int NaClMain(const MainFunctionParams& parameters) {
// The main thread of the plugin services IO.
MessageLoopForIO main_message_loop;
- // NaCl code runs in a different binary on Win64.
-#ifdef _WIN64
- std::wstring app_name = chrome::kNaClAppName;
-#else
std::wstring app_name = chrome::kBrowserAppName;
-#endif
PlatformThread::SetName(WideToASCII(app_name + L"_NaClMain").c_str());
SystemMonitor system_monitor;
@@ -133,7 +70,7 @@ int NaClMain(const MainFunctionParams& parameters) {
sandbox::TargetServices* target_services =
parameters.sandbox_info_.TargetServices();
- DLOG(INFO) << "Started NaCl loader with " <<
+ DLOG(INFO) << "Started plugin with " <<
parsed_command_line.command_line_string();
HMODULE sandbox_test_module = NULL;
diff --git a/chrome/nacl/nacl_thread.cc b/chrome/nacl/nacl_thread.cc
index 0f05f06..4c9dd5f05 100644
--- a/chrome/nacl/nacl_thread.cc
+++ b/chrome/nacl/nacl_thread.cc
@@ -36,5 +36,5 @@ void NaClThread::OnControlMessageReceived(const IPC::Message& msg) {
void NaClThread::OnStartSelLdr(int channel_descriptor,
nacl::FileDescriptor handle) {
- SelMain(channel_descriptor, nacl::ToNativeHandle(handle));
+ SelMain(channel_descriptor, NATIVE_HANDLE(handle));
}
diff --git a/chrome/nacl/nacl_thread.h b/chrome/nacl/nacl_thread.h
index 8893819..fd8fe76 100644
--- a/chrome/nacl/nacl_thread.h
+++ b/chrome/nacl/nacl_thread.h
@@ -10,6 +10,8 @@
#include "chrome/common/child_thread.h"
#include "chrome/common/nacl_types.h"
+class NotificationService;
+
// The NaClThread class represents a background thread where NaCl app gets
// started.
class NaClThread : public ChildThread {
diff --git a/chrome/renderer/render_process.cc b/chrome/renderer/render_process.cc
index 5a5bfe7..ac372ed 100644
--- a/chrome/renderer/render_process.cc
+++ b/chrome/renderer/render_process.cc
@@ -150,7 +150,7 @@ bool RenderProcess::LaunchNaClProcess(const char* url,
reinterpret_cast<base::ProcessId*>(nacl_process_id)))) {
return false;
}
- *imc_handle = nacl::ToNativeHandle(imc_descriptor);
+ *imc_handle = NATIVE_HANDLE(imc_descriptor);
*nacl_process_handle = nacl_process;
return true;
}