Revert "Install 64-bit browser versions under "C:\Program Files" by default"

This reverts commit 2001eb11359fae01107202c73ffb657f0d918d70.

Reason for revert: Suspected of breaking mini_installer_tests on Win7; see crbug.com/1092356

Original change's description:
> Install 64-bit browser versions under "C:\Program Files" by default
> 
> Browsers installed under "C:\Program Files (x86)" remain in that
> directory and will continue to be updated. They must be uninstalled
> first to be reinstalled under "C:\Program Files".
> 
> Bug: 380177
> Change-Id: I45b8898ddf39dd7a5fe7e6e0ce258da313ea880f
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2204420
> Commit-Queue: Yann Dago <ydago@chromium.org>
> Reviewed-by: Greg Thompson <grt@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#775810}

TBR=grt@chromium.org,ydago@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 380177, 1092356
Change-Id: Ic63cc4adcf2285f7e41fa8dc35d7260cf86bc64f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2232949
Reviewed-by: Marc Treib <treib@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776007}
diff --git a/chrome/installer/setup/installer_state.cc b/chrome/installer/setup/installer_state.cc
index 6883665..b5e6e41b 100644
--- a/chrome/installer/setup/installer_state.cc
+++ b/chrome/installer/setup/installer_state.cc
@@ -79,6 +79,8 @@
 
   const bool is_uninstall = command_line.HasSwitch(switches::kUninstall);
 
+  // TODO(grt): Infer target_path_ from an existing install in support of
+  // varying install locations; see https://crbug.com/380177.
   target_path_ = GetChromeInstallPath(system_install());
   state_key_ = install_static::GetClientStateKeyPath();
 
diff --git a/chrome/installer/util/BUILD.gn b/chrome/installer/util/BUILD.gn
index 0b770ce..8010633 100644
--- a/chrome/installer/util/BUILD.gn
+++ b/chrome/installer/util/BUILD.gn
@@ -310,7 +310,6 @@
       "experiment_storage_unittest.cc",
       "experiment_unittest.cc",
       "google_update_settings_unittest.cc",
-      "helper_unittest.cc",
       "install_util_unittest.cc",
       "l10n_string_util_unittest.cc",
       "logging_installer_unittest.cc",
diff --git a/chrome/installer/util/helper.cc b/chrome/installer/util/helper.cc
index 1190b20..9019ba9 100644
--- a/chrome/installer/util/helper.cc
+++ b/chrome/installer/util/helper.cc
@@ -5,56 +5,26 @@
 #include "chrome/installer/util/helper.h"
 
 #include "base/path_service.h"
-#include "base/win/registry.h"
 #include "chrome/install_static/install_util.h"
-#include "chrome/installer/util/install_util.h"
 #include "chrome/installer/util/util_constants.h"
 
-namespace {
-
-base::FilePath GetDefaultChromeInstallPath(bool system_install) {
-  base::FilePath install_path;
-  int key = system_install ? base::DIR_PROGRAM_FILES : base::DIR_LOCAL_APP_DATA;
-  if (base::PathService::Get(key, &install_path)) {
-    install_path =
-        install_path.Append(install_static::GetChromeInstallSubDirectory());
-    install_path = install_path.Append(installer::kInstallBinaryDir);
-  }
-  return install_path;
-}
-
-base::FilePath GetCurrentInstallPathFromRegistry(bool system_install) {
-  base::FilePath install_path;
-  if (!InstallUtil::GetChromeVersion(system_install).IsValid())
-    return install_path;
-
-  std::wstring uninstall_string;
-  base::win::RegKey key(system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
-                        install_static::GetClientStateKeyPath().c_str(),
-                        KEY_QUERY_VALUE | KEY_WOW64_32KEY);
-  key.ReadValue(installer::kUninstallStringField, &uninstall_string);
-
-  // The UninstallString has the format
-  // [InstallPath]/[version]/Installer/setup.exe. In order to get the
-  // [InstallPath], the full path must be pruned of the last 3 components.
-  if (!uninstall_string.empty()) {
-    install_path = base::FilePath(std::move(uninstall_string))
-                       .DirName()
-                       .DirName()
-                       .DirName();
-  }
-  return install_path;
-}
-
-}  // namespace
-
 namespace installer {
 
 base::FilePath GetChromeInstallPath(bool system_install) {
-  base::FilePath install_path =
-      GetCurrentInstallPathFromRegistry(system_install);
-  if (install_path.empty())
-    install_path = GetDefaultChromeInstallPath(system_install);
+  base::FilePath install_path;
+#if defined(_WIN64)
+  // TODO(wfh): Place Chrome binaries into DIR_PROGRAM_FILESX86 until the code
+  // to support moving the binaries is added.
+  int key =
+      system_install ? base::DIR_PROGRAM_FILESX86 : base::DIR_LOCAL_APP_DATA;
+#else
+  int key = system_install ? base::DIR_PROGRAM_FILES : base::DIR_LOCAL_APP_DATA;
+#endif
+  if (base::PathService::Get(key, &install_path)) {
+    install_path =
+        install_path.Append(install_static::GetChromeInstallSubDirectory());
+    install_path = install_path.Append(kInstallBinaryDir);
+  }
   return install_path;
 }
 
diff --git a/chrome/installer/util/helper.h b/chrome/installer/util/helper.h
index 16c4bf7..5dadc32 100644
--- a/chrome/installer/util/helper.h
+++ b/chrome/installer/util/helper.h
@@ -11,14 +11,11 @@
 
 namespace installer {
 
-// This function returns the install path for Chrome depending on whether it's
-// a system wide install or a user specific install.
-// Returns the install path stored at
-// Software\Google\Update\ClientState\{appguid}\UninstallString
-// under HKLM if |system_install| is true, HKCU otherwise. If no path was stored
-// in the registry, returns (%ProgramFiles%\[Company\]Product\Application) if
-// |system_install| is true, otherwise returns user specific location
-// (%LOCALAPPDATA%\[Company\]Product\Application).
+// This function returns the install path for Chrome depending on whether its
+// system wide install or user specific install.
+// system_install: if true, the function returns system wide location
+//                 (ProgramFiles\Google). Otherwise it returns user specific
+//                 location (Document And Settings\<user>\Local Settings...)
 base::FilePath GetChromeInstallPath(bool system_install);
 
 }  // namespace installer
diff --git a/chrome/installer/util/helper_unittest.cc b/chrome/installer/util/helper_unittest.cc
deleted file mode 100644
index f02e9b8..0000000
--- a/chrome/installer/util/helper_unittest.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2020 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/installer/util/helper.h"
-
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/optional.h"
-#include "base/path_service.h"
-#include "base/test/scoped_path_override.h"
-#include "base/test/test_reg_util_win.h"
-#include "base/version.h"
-#include "base/win/registry.h"
-#include "chrome/install_static/install_util.h"
-#include "chrome/installer/util/google_update_constants.h"
-#include "chrome/installer/util/util_constants.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace installer {
-
-// Tests GetChromeInstallPath with a boolean parameter which is |true| if the
-// test must use system-level values or |false| it the test must use user-level
-// values.
-class GetChromeInstallPathTest : public testing::TestWithParam<bool> {
- public:
-  GetChromeInstallPathTest() = default;
-
-  void SetUp() override {
-    ASSERT_TRUE(program_files_.CreateUniqueTempDir());
-    ASSERT_TRUE(random_.CreateUniqueTempDir());
-    ASSERT_TRUE(local_app_data_.CreateUniqueTempDir());
-    ASSERT_NO_FATAL_FAILURE(
-        registry_override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE));
-    ASSERT_NO_FATAL_FAILURE(
-        registry_override_manager_.OverrideRegistry(HKEY_CURRENT_USER));
-    program_files_override_.emplace(base::DIR_PROGRAM_FILES,
-                                    program_files_path());
-    local_data_app_override_.emplace(base::DIR_LOCAL_APP_DATA,
-                                     local_app_data_path());
-  }
-
-  base::FilePath random_path() const { return random_.GetPath(); }
-  base::FilePath program_files_path() const { return program_files_.GetPath(); }
-  base::FilePath local_app_data_path() const {
-    return local_app_data_.GetPath();
-  }
-  static bool is_system_level() { return GetParam(); }
-
-  base::FilePath GetExpectedPath(bool system_level) {
-    auto path = system_level ? program_files_path() : local_app_data_path();
-    return path.Append(install_static::GetChromeInstallSubDirectory())
-        .Append(kInstallBinaryDir);
-  }
-
-  static base::win::RegKey GetClientsRegKey() {
-    return base::win::RegKey(
-        is_system_level() ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
-        install_static::GetClientsKeyPath().c_str(),
-        KEY_SET_VALUE | KEY_WOW64_32KEY);
-  }
-
-  static base::win::RegKey GetClientStateRegKey() {
-    return base::win::RegKey(
-        is_system_level() ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
-        install_static::GetClientStateKeyPath().c_str(),
-        KEY_SET_VALUE | KEY_WOW64_32KEY);
-  }
-
- private:
-  base::ScopedTempDir program_files_;
-  base::ScopedTempDir random_;
-  base::ScopedTempDir local_app_data_;
-  registry_util::RegistryOverrideManager registry_override_manager_;
-  base::Optional<base::ScopedPathOverride> program_files_override_;
-  base::Optional<base::ScopedPathOverride> local_data_app_override_;
-};
-
-TEST_P(GetChromeInstallPathTest, NoRegistryValue) {
-  EXPECT_EQ(GetChromeInstallPath(is_system_level()),
-            GetExpectedPath(is_system_level()));
-}
-
-TEST_P(GetChromeInstallPathTest, RegistryValueSet) {
-  base::win::RegKey client_state_key(GetClientStateRegKey());
-  ASSERT_EQ(client_state_key.WriteValue(
-                kUninstallStringField,
-                random_path()
-                    .Append(install_static::GetChromeInstallSubDirectory())
-                    .Append(kInstallBinaryDir)
-                    .AppendASCII("1.0.0.0\\Installer\\setup.exe")
-                    .value()
-                    .c_str()),
-            ERROR_SUCCESS);
-
-  base::win::RegKey client_key(GetClientsRegKey());
-  ASSERT_EQ(client_key.WriteValue(google_update::kRegVersionField, L"1.0.0.0"),
-            ERROR_SUCCESS);
-  EXPECT_EQ(GetChromeInstallPath(is_system_level()),
-            random_path()
-                .Append(install_static::GetChromeInstallSubDirectory())
-                .Append(kInstallBinaryDir));
-}
-
-TEST_P(GetChromeInstallPathTest, RegistryValueSetWrongScope) {
-  base::win::RegKey client_state_key(GetClientStateRegKey());
-  ASSERT_EQ(client_state_key.WriteValue(
-                kUninstallStringField,
-                random_path()
-                    .Append(install_static::GetChromeInstallSubDirectory())
-                    .Append(kInstallBinaryDir)
-                    .AppendASCII("1.0.0.0\\Installer\\setup.exe")
-                    .value()
-                    .c_str()),
-            ERROR_SUCCESS);
-
-  base::win::RegKey client_key(GetClientsRegKey());
-  ASSERT_EQ(client_key.WriteValue(google_update::kRegVersionField, L"1.0.0.0"),
-            ERROR_SUCCESS);
-  EXPECT_EQ(GetChromeInstallPath(!is_system_level()),
-            GetExpectedPath(!is_system_level()));
-}
-
-TEST_P(GetChromeInstallPathTest, RegistryValueSetNoProductVersion) {
-  base::win::RegKey client_state_key(GetClientStateRegKey());
-  ASSERT_EQ(client_state_key.WriteValue(
-                kUninstallStringField,
-                random_path()
-                    .Append(install_static::GetChromeInstallSubDirectory())
-                    .Append(kInstallBinaryDir)
-                    .AppendASCII("1.0.0.0\\Installer\\setup.exe")
-                    .value()
-                    .c_str()),
-            ERROR_SUCCESS);
-  EXPECT_EQ(GetChromeInstallPath(is_system_level()),
-            GetExpectedPath(is_system_level()));
-}
-
-INSTANTIATE_TEST_SUITE_P(UserLevelTest,
-                         GetChromeInstallPathTest,
-                         testing::Values(false));
-INSTANTIATE_TEST_SUITE_P(SystemLevelTest,
-                         GetChromeInstallPathTest,
-                         testing::Values(true));
-
-}  // namespace installer
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 51f0092..8c53f45 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -872,8 +872,11 @@
 base::string16 GetInstallationSuffixForModeAtLevel(
     const install_static::InstallConstants& mode,
     bool system_install) {
-  // Search based on the existing install location. If no existing install
-  // found, uses the default install location for the mode.
+  // Search based on the default install location for the mode. If we ever
+  // support customizing the install location (https://crbug.com/113987,
+  // https://crbug.com/302491) this will have to change to something else, such
+  // as probing the Omaha keys in the registry to see where the mode is
+  // installed.
   const base::FilePath chrome_exe =
       installer::GetChromeInstallPath(system_install)
           .Append(installer::kChromeExe);
diff --git a/chrome/test/mini_installer/variable_expander.py b/chrome/test/mini_installer/variable_expander.py
index 04a6dba..f9be0137 100644
--- a/chrome/test/mini_installer/variable_expander.py
+++ b/chrome/test/mini_installer/variable_expander.py
@@ -157,46 +157,31 @@
         previous_version_mini_installer_path)
     windows_major_ver, windows_minor_ver, _, _, _ = win32api.GetVersionEx()
     self._variable_mapping = {
-        'CHROMEDRIVER_PATH':
-        chromedriver_path,
-        'QUIET':
-        '-q' if quiet else '',
-        'OUTPUT_DIR':
-        '"--output-dir=%s"' % output_dir if output_dir else '',
-        'LOCAL_APPDATA':
-        shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, None, 0),
-        'LOG_FILE':
-        '',
-        'MINI_INSTALLER':
-        mini_installer_abspath,
-        'MINI_INSTALLER_FILE_VERSION':
-        _GetFileVersion(mini_installer_abspath),
-        'MINI_INSTALLER_BITNESS':
-        _GetFileBitness(mini_installer_abspath),
+        'CHROMEDRIVER_PATH': chromedriver_path,
+        'QUIET': '-q' if quiet else '',
+        'OUTPUT_DIR': '"--output-dir=%s"' % output_dir if output_dir else '',
+        'LOCAL_APPDATA': shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA,
+                                               None, 0),
+        'LOG_FILE': '',
+        'MINI_INSTALLER': mini_installer_abspath,
+        'MINI_INSTALLER_FILE_VERSION': _GetFileVersion(mini_installer_abspath),
+        'MINI_INSTALLER_BITNESS': _GetFileBitness(mini_installer_abspath),
         'PREVIOUS_VERSION_MINI_INSTALLER':
-        previous_version_mini_installer_abspath,
-        'PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION':
-        _GetFileVersion(previous_version_mini_installer_abspath),
-        'PROGRAM_FILES':
-        shell.SHGetFolderPath(0, shellcon.CSIDL_PROGRAM_FILES, None, 0),
-        'USER_SPECIFIC_REGISTRY_SUFFIX':
-        _GetUserSpecificRegistrySuffix(),
-        'VERSION_SERVER_2003':
-        '(5, 2)',
-        'VERSION_VISTA':
-        '(6, 0)',
-        'VERSION_WIN10':
-        '(10, 0)',
-        'VERSION_WIN7':
-        '(6, 1)',
-        'VERSION_WIN8':
-        '(6, 2)',
-        'VERSION_WIN8_1':
-        '(6, 3)',
-        'VERSION_XP':
-        '(5, 1)',
-        'WINDOWS_VERSION':
-        '(%s, %s)' % (windows_major_ver, windows_minor_ver)
+            previous_version_mini_installer_abspath,
+        'PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION': _GetFileVersion(
+            previous_version_mini_installer_abspath),
+        'PROGRAM_FILES': shell.SHGetFolderPath(0,
+                                               shellcon.CSIDL_PROGRAM_FILESX86,
+                                               None, 0),
+        'USER_SPECIFIC_REGISTRY_SUFFIX': _GetUserSpecificRegistrySuffix(),
+        'VERSION_SERVER_2003': '(5, 2)',
+        'VERSION_VISTA': '(6, 0)',
+        'VERSION_WIN10': '(10, 0)',
+        'VERSION_WIN7': '(6, 1)',
+        'VERSION_WIN8': '(6, 2)',
+        'VERSION_WIN8_1': '(6, 3)',
+        'VERSION_XP': '(5, 1)',
+        'WINDOWS_VERSION': '(%s, %s)' % (windows_major_ver, windows_minor_ver)
     }
 
     mini_installer_product_name = _GetProductName(mini_installer_abspath)