diff options
author | gregoryd@google.com <gregoryd@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-30 00:10:10 +0000 |
---|---|---|
committer | gregoryd@google.com <gregoryd@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-30 00:10:10 +0000 |
commit | 08aab35037965c2d7d71263b453fda74fa48b378 (patch) | |
tree | 45eabab475f9137125bc74a45062a78d9e7f0cc5 /chrome/app | |
parent | 7946a0ca0347117c1f8870eb441f31ba185fc5ab (diff) | |
download | chromium_src-08aab35037965c2d7d71263b453fda74fa48b378.zip chromium_src-08aab35037965c2d7d71263b453fda74fa48b378.tar.gz chromium_src-08aab35037965c2d7d71263b453fda74fa48b378.tar.bz2 |
Implement the broker process that launches NaCl loader processes on 64-bit Windows systems.
BUG=28176
TEST=none
Review URL: http://codereview.chromium.org/542030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37578 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/app')
-rw-r--r-- | chrome/app/chrome_dll_main.cc | 10 | ||||
-rw-r--r-- | chrome/app/client_util.cc | 16 | ||||
-rw-r--r-- | chrome/app/dummy_main_functions.cc | 4 |
3 files changed, 23 insertions, 7 deletions
diff --git a/chrome/app/chrome_dll_main.cc b/chrome/app/chrome_dll_main.cc index 1e3cb83..1603d32 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&); -#ifdef NACL_WIN64 +#if defined(_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::kNaClProcess) { + } else if (process_type == switches::kNaClLoaderProcess) { score = kPluginScore; #endif } else if (process_type == switches::kZygoteProcess || @@ -686,9 +686,13 @@ int ChromeMain(int argc, char** argv) { } else if (process_type == switches::kWorkerProcess) { rv = WorkerMain(main_params); #ifndef DISABLE_NACL - } else if (process_type == switches::kNaClProcess) { + } else if (process_type == switches::kNaClLoaderProcess) { 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 993f468..a4bc50b 100644 --- a/chrome/app/client_util.cc +++ b/chrome/app/client_util.cc @@ -7,6 +7,7 @@ #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" @@ -83,7 +84,22 @@ 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 192720e..c8b7c5e 100644 --- a/chrome/app/dummy_main_functions.cc +++ b/chrome/app/dummy_main_functions.cc @@ -35,10 +35,6 @@ 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; } |