Chromium Code Reviews| Index: chrome/installer/util/install_util.cc |
| diff --git a/chrome/installer/util/install_util.cc b/chrome/installer/util/install_util.cc |
| index dbaaf2bec161e99cc9b06d2c6c6dab978760646e..bd94142f5f75814426e1b6812b299daa32b4b913 100644 |
| --- a/chrome/installer/util/install_util.cc |
| +++ b/chrome/installer/util/install_util.cc |
| @@ -11,16 +11,10 @@ |
| #include <shlobj.h> |
| #include <shlwapi.h> |
| -#include <memory> |
| -#include <string> |
| -#include <vector> |
| - |
| #include "base/command_line.h" |
| -#include "base/environment.h" |
| #include "base/files/file_util.h" |
| #include "base/logging.h" |
| #include "base/macros.h" |
| -#include "base/numerics/safe_conversions.h" |
| #include "base/path_service.h" |
| #include "base/process/launch.h" |
| #include "base/strings/string_util.h" |
| @@ -32,6 +26,8 @@ |
| #include "base/win/windows_version.h" |
| #include "chrome/common/chrome_constants.h" |
| #include "chrome/common/chrome_paths.h" |
| +#include "chrome/install_static/install_details.h" |
| +#include "chrome/install_static/install_modes.h" |
| #include "chrome/installer/util/browser_distribution.h" |
| #include "chrome/installer/util/google_update_constants.h" |
| #include "chrome/installer/util/installation_state.h" |
| @@ -44,7 +40,6 @@ using installer::ProductState; |
| namespace { |
| -const char kEnvProgramFilesPath[] = "CHROME_PROBED_PROGRAM_FILES_PATH"; |
| const wchar_t kRegDowngradeVersion[] = L"DowngradeVersion"; |
| // Creates a zero-sized non-decorated foreground window that doesn't appear |
| @@ -277,86 +272,16 @@ void InstallUtil::AddInstallerResultItems( |
| } |
| bool InstallUtil::IsPerUserInstall(const base::FilePath& exe_path) { |
|
gab
2017/02/14 16:57:56
/* exe_path */
grt (UTC plus 2)
2017/02/14 21:04:24
Done.
|
| - std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| - std::string env_program_files_path; |
| - // Check environment variable to find program files path. |
| - base::FilePath program_files_path; |
| - if (env->GetVar(kEnvProgramFilesPath, &env_program_files_path) && |
| - !env_program_files_path.empty()) { |
| - program_files_path = |
| - base::FilePath(base::UTF8ToWide(env_program_files_path)); |
| - } else { |
| - const int kProgramFilesKey = |
| -#if defined(_WIN64) |
| - // TODO(wfh): Revise this when Chrome is/can be installed in the 64-bit |
| - // program files directory. |
| - base::DIR_PROGRAM_FILESX86; |
| -#else |
| - base::DIR_PROGRAM_FILES; |
| -#endif |
| - if (!PathService::Get(kProgramFilesKey, &program_files_path)) { |
| - NOTREACHED(); |
| - return true; |
| - } |
| - env->SetVar(kEnvProgramFilesPath, |
| - base::WideToUTF8(program_files_path.value())); |
| - } |
| - |
| - // Return true if the program files path is not a case-insensitive prefix of |
| - // the exe path. |
| - if (exe_path.value().size() < program_files_path.value().size()) |
| - return true; |
| - DWORD prefix_len = |
| - base::saturated_cast<DWORD>(program_files_path.value().size()); |
| - return ::CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, |
| - exe_path.value().data(), prefix_len, |
| - program_files_path.value().data(), prefix_len) != |
| - CSTR_EQUAL; |
| -} |
| - |
| -void InstallUtil::ResetIsPerUserInstallForTest() { |
| - std::unique_ptr<base::Environment> env(base::Environment::Create()); |
| - env->UnSetVar(kEnvProgramFilesPath); |
| -} |
| - |
| -bool CheckIsChromeSxSProcess() { |
| - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| - CHECK(command_line); |
| - |
| - if (command_line->HasSwitch(installer::switches::kChromeSxS)) |
| - return true; |
| - |
| - // Also return true if we are running from Chrome SxS installed path. |
| - base::FilePath exe_dir; |
| - PathService::Get(base::DIR_EXE, &exe_dir); |
| - base::string16 chrome_sxs_dir(installer::kGoogleChromeInstallSubDir2); |
| - chrome_sxs_dir.append(installer::kSxSSuffix); |
| - |
| - // This is SxS if current EXE is in or under (possibly multiple levels under) |
| - // |chrome_sxs_dir|\|installer::kInstallBinaryDir| |
| - std::vector<base::FilePath::StringType> components; |
| - exe_dir.GetComponents(&components); |
| - // We need at least 1 element in the array for the behavior of the following |
| - // loop to be defined. This should always be true, since we're splitting the |
| - // path to our executable and one of the components will be the drive letter. |
| - DCHECK(!components.empty()); |
| - typedef std::vector<base::FilePath::StringType>::const_reverse_iterator |
| - ComponentsIterator; |
| - for (ComponentsIterator current = components.rbegin(), parent = current + 1; |
| - parent != components.rend(); current = parent++) { |
| - if (base::FilePath::CompareEqualIgnoreCase( |
| - *current, installer::kInstallBinaryDir) && |
| - base::FilePath::CompareEqualIgnoreCase(*parent, chrome_sxs_dir)) { |
| - return true; |
| - } |
| - } |
| - |
| - return false; |
| + return !install_static::InstallDetails::Get().system_level(); |
| } |
| bool InstallUtil::IsChromeSxSProcess() { |
| - static bool sxs = CheckIsChromeSxSProcess(); |
| - return sxs; |
| +#if defined(GOOGLE_CHROME_BUILD) |
| + return install_static::InstallDetails::Get().install_mode_index() == |
| + install_static::CANARY_INDEX; |
| +#else |
| + return false; |
| +#endif |
| } |
| // static |