diff options
author | huangs <huangs@chromium.org> | 2015-01-28 16:00:27 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-29 00:02:38 +0000 |
commit | 45817557f9fda44543d513a500eb0d74dd415ee0 (patch) | |
tree | 549154a964e0a5691d827f30c9a22feab8c77ac7 /chrome/installer | |
parent | 2b6fb4107dc736f4e230b4900a30e6fbed92ba0e (diff) | |
download | chromium_src-45817557f9fda44543d513a500eb0d74dd415ee0.zip chromium_src-45817557f9fda44543d513a500eb0d74dd415ee0.tar.gz chromium_src-45817557f9fda44543d513a500eb0d74dd415ee0.tar.bz2 |
[Installer] Cleaning up dead code for App Launcher / App Host installs.
The "shadow" App Launcher registry keys are still managed. The code that
do this are concentrated to the new files app_launcher_installer.* to
facilitate future updates.
This CL also significantly reduces the size of setup.exe, presumably due
to removal of dependencies.
TEST=Windows only. Install and update still work as before.
- Right after fresh install, ensure reg key at user level exists:
Google\Update\Clients\{FDA71E6F-AC4C-4a00-8B70-9958A68906BF}
BUG=297647
Review URL: https://codereview.chromium.org/811283002
Cr-Commit-Position: refs/heads/master@{#313626}
Diffstat (limited to 'chrome/installer')
47 files changed, 336 insertions, 1574 deletions
diff --git a/chrome/installer/mini_installer/appid.h b/chrome/installer/mini_installer/appid.h index 1ea93a4..327e8b5 100644 --- a/chrome/installer/mini_installer/appid.h +++ b/chrome/installer/mini_installer/appid.h @@ -9,7 +9,6 @@ namespace google_update { extern const wchar_t kAppGuid[]; extern const wchar_t kSxSAppGuid[]; -extern const wchar_t kChromeAppHostAppGuid[]; extern const wchar_t kChromeFrameAppGuid[]; extern const wchar_t kMultiInstallAppGuid[]; } diff --git a/chrome/installer/mini_installer/chrome_appid.cc b/chrome/installer/mini_installer/chrome_appid.cc index 841da52..910ec1d 100644 --- a/chrome/installer/mini_installer/chrome_appid.cc +++ b/chrome/installer/mini_installer/chrome_appid.cc @@ -6,8 +6,6 @@ namespace google_update { const wchar_t kAppGuid[] = L"{8A69D345-D564-463c-AFF1-A69D9E530F96}"; -const wchar_t kChromeAppHostAppGuid[] = - L"{FDA71E6F-AC4C-4a00-8B70-9958A68906BF}"; const wchar_t kChromeFrameAppGuid[] = L"{8BA986DA-5100-405E-AA35-86F34A02ACBF}"; const wchar_t kMultiInstallAppGuid[] = L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; diff --git a/chrome/installer/mini_installer/configuration.cc b/chrome/installer/mini_installer/configuration.cc index 023ed6c..33551cb 100644 --- a/chrome/installer/mini_installer/configuration.cc +++ b/chrome/installer/mini_installer/configuration.cc @@ -34,7 +34,6 @@ void Configuration::Clear() { argument_count_ = 0; has_chrome_ = false; has_chrome_frame_ = false; - has_app_host_ = false; is_multi_install_ = false; is_system_level_ = false; query_component_build_ = false; @@ -61,9 +60,6 @@ bool Configuration::InitializeFromCommandLine(const wchar_t* command_line) { has_chrome_ = true; else if (0 == ::lstrcmpi(args_[i], L"--chrome-frame")) has_chrome_frame_ = true; - else if ((0 == ::lstrcmpi(args_[i], L"--app-host")) || - (0 == ::lstrcmpi(args_[i], L"--app-launcher"))) - has_app_host_ = true; else if (0 == ::lstrcmpi(args_[i], L"--multi-install")) is_multi_install_ = true; else if (0 == ::lstrcmpi(args_[i], L"--system-level")) @@ -76,8 +72,9 @@ bool Configuration::InitializeFromCommandLine(const wchar_t* command_line) { // Single-install defaults to Chrome. if (!is_multi_install_) - has_chrome_ = !(has_chrome_frame_ || has_app_host_); + has_chrome_ = !has_chrome_frame_; } + return args_ != NULL; } diff --git a/chrome/installer/mini_installer/configuration.h b/chrome/installer/mini_installer/configuration.h index 9498354..7c50e146 100644 --- a/chrome/installer/mini_installer/configuration.h +++ b/chrome/installer/mini_installer/configuration.h @@ -46,9 +46,6 @@ class Configuration { // Returns true if --chrome-frame is on the command line. bool has_chrome_frame() const { return has_chrome_frame_; } - // Returns true if --app-host is on the command line. - bool has_app_host() const { return has_app_host_; } - // Returns true if --multi-install is on the command line. bool is_multi_install() const { return is_multi_install_; } @@ -66,7 +63,6 @@ class Configuration { Operation operation_; bool has_chrome_; bool has_chrome_frame_; - bool has_app_host_; bool is_multi_install_; bool is_system_level_; bool query_component_build_; diff --git a/chrome/installer/mini_installer/mini_installer.cc b/chrome/installer/mini_installer/mini_installer.cc index b0126a5..600ea46 100644 --- a/chrome/installer/mini_installer/mini_installer.cc +++ b/chrome/installer/mini_installer/mini_installer.cc @@ -257,16 +257,11 @@ bool GetSetupExePathFromRegistry(const Configuration& configuration, return true; } - // Make a last-ditch effort to look in the Chrome and App Host client state - // keys. + // Make a last-ditch effort to look in the Chrome client state key. if (GetSetupExePathForGuidFromRegistry( system_level, configuration.chrome_app_guid(), path, size)) { return true; } - if (configuration.has_app_host() && GetSetupExePathForGuidFromRegistry( - system_level, google_update::kChromeAppHostAppGuid, path, size)) { - return true; - } return false; } diff --git a/chrome/installer/setup/app_launcher_installer.cc b/chrome/installer/setup/app_launcher_installer.cc new file mode 100644 index 0000000..3c30aaf --- /dev/null +++ b/chrome/installer/setup/app_launcher_installer.cc @@ -0,0 +1,120 @@ +// Copyright 2015 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. + +#if defined(GOOGLE_CHROME_BUILD) + +#include "chrome/installer/setup/app_launcher_installer.h" + +#include "base/strings/string16.h" +#include "base/version.h" +#include "chrome/installer/setup/install_worker.h" +#include "chrome/installer/setup/setup_util.h" +#include "chrome/installer/util/google_update_constants.h" +#include "chrome/installer/util/install_util.h" +#include "chrome/installer/util/installer_state.h" +#include "chrome/installer/util/l10n_string_util.h" +#include "chrome/installer/util/product.h" +#include "chrome/installer/util/updating_app_registration_data.h" +#include "chrome/installer/util/work_item.h" +#include "chrome/installer/util/work_item_list.h" + +#include "installer_util_strings.h" // NOLINT + +namespace installer { + +namespace { + +// The legacy command ids for installing an application or extension. These are +// only here so they can be removed from the registry. +const wchar_t kLegacyCmdInstallApp[] = L"install-application"; +const wchar_t kLegacyCmdInstallExtension[] = L"install-extension"; +const wchar_t kLegacyCmdQueryEULAAcceptance[] = L"query-eula-acceptance"; +const wchar_t kLegacyCmdQuickEnableApplicationHost[] = + L"quick-enable-application-host"; + +// The legacy app_host.exe executable, which should be eradicated. +const wchar_t kLegacyChromeAppHostExe[] = L"app_host.exe"; + +base::string16 GetAppLauncherDisplayName() { + return GetLocalizedString(IDS_PRODUCT_APP_LAUNCHER_NAME_BASE); +} + +void AddLegacyAppCommandRemovalItem(const InstallerState& installer_state, + const AppRegistrationData& reg_data, + const wchar_t* name, + WorkItemList* list) { + // Ignore failures since this is a clean-up operation and shouldn't block + // install or update. + list->AddDeleteRegKeyWorkItem( + installer_state.root_key(), + GetRegistrationDataCommandKey(reg_data, name), + KEY_WOW64_32KEY) + ->set_ignore_failure(true); +} + +} // namespace + +void AddAppLauncherVersionKeyWorkItems(HKEY root, + const base::Version& new_version, + bool add_language_identifier, + WorkItemList* list) { + DCHECK(!InstallUtil::IsChromeSxSProcess()); + const UpdatingAppRegistrationData app_launcher_reg_data(kAppLauncherGuid); + AddVersionKeyWorkItems(root, + app_launcher_reg_data.GetVersionKey(), + GetAppLauncherDisplayName(), + new_version, + add_language_identifier, + list); +} + +void RemoveAppLauncherVersionKey(HKEY reg_root) { + DCHECK(!InstallUtil::IsChromeSxSProcess()); + const UpdatingAppRegistrationData app_launcher_reg_data(kAppLauncherGuid); + InstallUtil::DeleteRegistryKey( + reg_root, app_launcher_reg_data.GetVersionKey(), KEY_WOW64_32KEY); +} + +void AddRemoveLegacyAppHostExeWorkItems(const base::FilePath& target_path, + const base::FilePath& temp_path, + WorkItemList* list) { + DCHECK(!InstallUtil::IsChromeSxSProcess()); + list->AddDeleteTreeWorkItem( + target_path.Append(kLegacyChromeAppHostExe), + temp_path)->set_ignore_failure(true); +} + +void AddRemoveLegacyAppCommandsWorkItems(const InstallerState& installer_state, + WorkItemList* list) { + DCHECK(!InstallUtil::IsChromeSxSProcess()); + DCHECK(list); + for (const auto* p : installer_state.products()) { + if (p->is_chrome()) { + // Remove "install-application" command from App Launcher. + const UpdatingAppRegistrationData app_launcher_reg_data(kAppLauncherGuid); + AddLegacyAppCommandRemovalItem(installer_state, app_launcher_reg_data, + kLegacyCmdInstallApp, list); + + // Remove "install-extension" command from Chrome. + const AppRegistrationData& chrome_reg_data = + p->distribution()->GetAppRegistrationData(); + AddLegacyAppCommandRemovalItem(installer_state, chrome_reg_data, + kLegacyCmdInstallExtension, list); + } + if (p->is_chrome_binaries()) { + const AppRegistrationData& binaries_reg_data = + p->distribution()->GetAppRegistrationData(); + // Remove "query-eula-acceptance" command from Binaries. + AddLegacyAppCommandRemovalItem(installer_state, binaries_reg_data, + kLegacyCmdQueryEULAAcceptance, list); + // Remove "quick-enable-application-host" command from Binaries. + AddLegacyAppCommandRemovalItem(installer_state, binaries_reg_data, + kLegacyCmdQuickEnableApplicationHost, list); + } + } +} + +} // namespace installer + +#endif // GOOGLE_CHROME_BUILD diff --git a/chrome/installer/setup/app_launcher_installer.h b/chrome/installer/setup/app_launcher_installer.h new file mode 100644 index 0000000..132005e --- /dev/null +++ b/chrome/installer/setup/app_launcher_installer.h @@ -0,0 +1,58 @@ +// Copyright 2015 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. + +// The App Launcher is an adjunct product of Google Chrome, but it has a +// distinct registry entry. The functions in this file tap into various points +// in installer flow to update the App Launcher's registry, including the +// removal of deprecated app commands. This concentrates ugly code to to one +// place to facilitate future refactoring. + +#ifndef CHROME_INSTALLER_SETUP_APP_LAUNCHER_INSTALLER_H_ +#define CHROME_INSTALLER_SETUP_APP_LAUNCHER_INSTALLER_H_ + +#if defined(GOOGLE_CHROME_BUILD) + +#include <windows.h> + +namespace base { +class FilePath; +class Version; +} // namespace base + +class WorkItemList; + +namespace installer { + +class InstallerState; + +// Create Version key for a App Launcher (if not already present) and sets the +// new product version as the last step. We need this for App Launcher in +// order for shadow registry key to work. +void AddAppLauncherVersionKeyWorkItems( + HKEY root, + const base::Version& new_version, + bool add_language_identifier, + WorkItemList* list); + +// Remove App Launcher's registry key, so it is in sync with Google Chrome's. +// Note: The key is added by App Launcher in SetDidRunForNDayActiveStats(). +void RemoveAppLauncherVersionKey(HKEY reg_root); + +// Adds work item to unconditionally remove legacy executables. +void AddRemoveLegacyAppHostExeWorkItems(const base::FilePath& target_path, + const base::FilePath& temp_path, + WorkItemList* list); + +// Adds work item to unconditionally remove legacy app commands like +// "install-application", "install-extension", and +// "quick-enable-application-host". +void AddRemoveLegacyAppCommandsWorkItems( + const InstallerState& installer_state, + WorkItemList* work_item_list); + +} // namespace installer + +#endif // defined(GOOGLE_CHROME_BUILD) + +#endif // CHROME_INSTALLER_SETUP_APP_LAUNCHER_INSTALLER_H_ diff --git a/chrome/installer/setup/install.cc b/chrome/installer/setup/install.cc index f4c091b..d94824d 100644 --- a/chrome/installer/setup/install.cc +++ b/chrome/installer/setup/install.cc @@ -258,23 +258,6 @@ void CleanupLegacyShortcuts(const installer::InstallerState& installer_state, base::DeleteFile(uninstall_shortcut_path, false); } -// Returns the appropriate shortcut operations for App Launcher, -// based on state of installation and master_preferences. -installer::InstallShortcutOperation GetAppLauncherShortcutOperation( - const installer::InstallationState& original_state, - const installer::InstallerState& installer_state) { - const installer::ProductState* original_app_host_state = - original_state.GetProductState(installer_state.system_install(), - BrowserDistribution::CHROME_APP_HOST); - bool app_launcher_exists = original_app_host_state && - original_app_host_state->uninstall_command() - .HasSwitch(installer::switches::kChromeAppLauncher); - if (!app_launcher_exists) - return installer::INSTALL_SHORTCUT_CREATE_ALL; - - return installer::INSTALL_SHORTCUT_REPLACE_EXISTING; -} - } // end namespace namespace installer { @@ -529,22 +512,6 @@ InstallStatus InstallOrUpdateProduct( installer_state.UpdateStage(installer::CREATING_SHORTCUTS); - const installer::Product* app_launcher_product = - installer_state.FindProduct(BrowserDistribution::CHROME_APP_HOST); - // Creates shortcuts for App Launcher. - if (app_launcher_product) { - // TODO(huangs): Remove this check once we have system-level App Host. - DCHECK(!installer_state.system_install()); - const base::FilePath app_host_exe( - installer_state.target_path().Append(kChromeAppHostExe)); - InstallShortcutOperation app_launcher_shortcut_operation = - GetAppLauncherShortcutOperation(original_state, installer_state); - - // Always install per-user shortcuts for App Launcher. - CreateOrUpdateShortcuts(app_host_exe, *app_launcher_product, prefs, - CURRENT_USER, app_launcher_shortcut_operation); - } - const installer::Product* chrome_product = installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER); // Creates shortcuts for Chrome. diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc index 64af4da..d730914 100644 --- a/chrome/installer/setup/install_worker.cc +++ b/chrome/installer/setup/install_worker.cc @@ -28,6 +28,7 @@ #include "base/win/windows_version.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_switches.h" +#include "chrome/installer/setup/app_launcher_installer.h" #include "chrome/installer/setup/install.h" #include "chrome/installer/setup/setup_constants.h" #include "chrome/installer/setup/setup_util.h" @@ -46,7 +47,6 @@ #include "chrome/installer/util/product.h" #include "chrome/installer/util/set_reg_value_work_item.h" #include "chrome/installer/util/shell_util.h" -#include "chrome/installer/util/updating_app_registration_data.h" #include "chrome/installer/util/util_constants.h" #include "chrome/installer/util/work_item_list.h" @@ -73,11 +73,6 @@ const wchar_t kIELowRightsPolicyOldGuid[] = const wchar_t kElevationPolicyKeyPath[] = L"SOFTWARE\\Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\"; -// The legacy command ids for installing an application or extension. These are -// only here so they can be removed from the registry. -const wchar_t kLegacyCmdInstallApp[] = L"install-application"; -const wchar_t kLegacyCmdInstallExtension[] = L"install-extension"; - void GetOldIELowRightsElevationPolicyKeyPath(base::string16* key_path) { key_path->assign(kElevationPolicyKeyPath, arraysize(kElevationPolicyKeyPath) - 1); @@ -155,34 +150,26 @@ void AddInstallerCopyTasks(const InstallerState& installer_state, WorkItem::ALWAYS); } - // If only the App Host (not even the Chrome Binaries) is being installed, - // this must be a user-level App Host piggybacking on system-level Chrome - // Binaries. Only setup.exe is required, and only for uninstall. - if (installer_state.products().size() != 1 || - !installer_state.FindProduct(BrowserDistribution::CHROME_APP_HOST)) { - base::FilePath archive_dst(installer_dir.Append(archive_path.BaseName())); - if (archive_path != archive_dst) { - // In the past, we copied rather than moved for system level installs so - // that the permissions of %ProgramFiles% would be picked up. Now that - // |temp_path| is in %ProgramFiles% for system level installs (and in - // %LOCALAPPDATA% otherwise), there is no need to do this for the archive. - // Setup.exe, on the other hand, is created elsewhere so it must always be - // copied. - if (temp_path.IsParent(archive_path)) { - install_list->AddMoveTreeWorkItem(archive_path.value(), - archive_dst.value(), - temp_path.value(), - WorkItem::ALWAYS_MOVE); - } else { - // This may occur when setup is run out of an existing installation - // directory. For example, when quick-enabling user-level App Launcher - // from system-level Binaries. We can't (and don't want to) remove the - // system-level archive. - install_list->AddCopyTreeWorkItem(archive_path.value(), - archive_dst.value(), - temp_path.value(), - WorkItem::ALWAYS); - } + base::FilePath archive_dst(installer_dir.Append(archive_path.BaseName())); + if (archive_path != archive_dst) { + // In the past, we copied rather than moved for system level installs so + // that the permissions of %ProgramFiles% would be picked up. Now that + // |temp_path| is in %ProgramFiles% for system level installs (and in + // %LOCALAPPDATA% otherwise), there is no need to do this for the archive. + // Setup.exe, on the other hand, is created elsewhere so it must always be + // copied. + if (temp_path.IsParent(archive_path)) { + install_list->AddMoveTreeWorkItem(archive_path.value(), + archive_dst.value(), + temp_path.value(), + WorkItem::ALWAYS_MOVE); + } else { + // This may occur when setup is run out of an existing installation + // directory. We cannot remove the system-level archive. + install_list->AddCopyTreeWorkItem(archive_path.value(), + archive_dst.value(), + temp_path.value(), + WorkItem::ALWAYS); } } } @@ -232,18 +219,6 @@ void AddCommandWithParameterWorkItems(const InstallerState& installer_state, } } -void AddLegacyAppCommandRemovalItem(const InstallerState& installer_state, - const AppRegistrationData& reg_data, - const wchar_t* name, - WorkItemList* work_item_list) { - // These failures are ignored because this is a clean-up operation that - // shouldn't block an install or update on failing. - work_item_list->AddDeleteRegKeyWorkItem( - installer_state.root_key(), - GetRegistrationDataCommandKey(reg_data, name), - KEY_WOW64_32KEY)->set_ignore_failure(true); -} - // A callback invoked by |work_item| that adds firewall rules for Chrome. Rules // are left in-place on rollback unless |remove_on_rollback| is true. This is // the case for new installs only. Updates and overinstalls leave the rule @@ -292,95 +267,12 @@ void AddFirewallRulesWorkItems(const InstallerState& installer_state, is_new_install)); } -// Returns the basic CommandLine to setup.exe for a quick-enable operation on -// the binaries. This will unconditionally include --multi-install as well as -// --verbose-logging if the current installation was launched with -// --verbose-logging. |setup_path| and |new_version| are optional only when -// the operation is an uninstall. -base::CommandLine GetGenericQuickEnableCommand( - const InstallerState& installer_state, - const InstallationState& machine_state, - const base::FilePath& setup_path, - const Version& new_version) { - // Only valid for multi-install operations. - DCHECK(installer_state.is_multi_install()); - // Only valid when Chrome Binaries aren't being uninstalled. - DCHECK(installer_state.operation() != InstallerState::UNINSTALL || - !installer_state.FindProduct(BrowserDistribution::CHROME_BINARIES)); - // setup_path and new_version are required when not uninstalling. - DCHECK(installer_state.operation() == InstallerState::UNINSTALL || - (!setup_path.empty() && new_version.IsValid())); - - // The path to setup.exe contains the version of the Chrome Binaries, so it - // takes a little work to get it right. - base::FilePath binaries_setup_path; - if (installer_state.operation() == InstallerState::UNINSTALL) { - // One or more products are being uninstalled, but not Chrome Binaries. - // Use the path to the currently installed Chrome Binaries' setup.exe. - const ProductState* product_state = machine_state.GetProductState( - installer_state.system_install(), - BrowserDistribution::CHROME_BINARIES); - DCHECK(product_state); - binaries_setup_path = product_state->uninstall_command().GetProgram(); - } else { - // Chrome Binaries are being installed, updated, or otherwise operated on. - // Use the path to the given |setup_path| in the normal location of - // multi-install Chrome Binaries of the given |version|. - binaries_setup_path = installer_state.GetInstallerDirectory(new_version) - .Append(setup_path.BaseName()); - } - DCHECK(!binaries_setup_path.empty()); - - base::CommandLine cmd_line(binaries_setup_path); - cmd_line.AppendSwitch(switches::kMultiInstall); - if (installer_state.verbose_logging()) - cmd_line.AppendSwitch(switches::kVerboseLogging); - return cmd_line; -} - -// Adds work items to add the "quick-enable-application-host" command to the -// multi-installer binaries' version key on the basis of the current operation -// (represented in |installer_state|) and the pre-existing machine configuration -// (represented in |machine_state|). -void AddQuickEnableApplicationLauncherWorkItems( - const InstallerState& installer_state, - const InstallationState& machine_state, - const base::FilePath& setup_path, - const Version& new_version, - WorkItemList* work_item_list) { - DCHECK(work_item_list); - - bool will_have_chrome_binaries = - WillProductBePresentAfterSetup(installer_state, machine_state, - BrowserDistribution::CHROME_BINARIES); - - // For system-level binaries there is no way to keep the command state in sync - // with the installation/uninstallation of the Application Launcher (which is - // always at user-level). So we do not try to remove the command, i.e., it - // will always be installed if the Chrome Binaries are installed. - if (will_have_chrome_binaries) { - base::string16 cmd_key( - GetRegCommandKey(BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_BINARIES), - kCmdQuickEnableApplicationHost)); - base::CommandLine cmd_line(GetGenericQuickEnableCommand( - installer_state, machine_state, setup_path, new_version)); - // kMultiInstall and kVerboseLogging were processed above. - cmd_line.AppendSwitch(switches::kChromeAppLauncher); - cmd_line.AppendSwitch(switches::kEnsureGoogleUpdatePresent); - AppCommand cmd(cmd_line.GetCommandLineString()); - cmd.set_sends_pings(true); - cmd.set_is_web_accessible(true); - cmd.set_is_run_as_user(true); - cmd.AddWorkItems(installer_state.root_key(), cmd_key, work_item_list); - } -} - void AddProductSpecificWorkItems(const InstallationState& original_state, const InstallerState& installer_state, const base::FilePath& setup_path, const Version& new_version, bool is_new_install, + bool add_language_identifier, WorkItemList* list) { const Products& products = installer_state.products(); for (Products::const_iterator it = products.begin(); it < products.end(); @@ -391,28 +283,18 @@ void AddProductSpecificWorkItems(const InstallationState& original_state, list); AddFirewallRulesWorkItems( installer_state, p.distribution(), is_new_install, list); - AddLegacyAppCommandRemovalItem( - installer_state, - p.distribution()->GetAppRegistrationData(), - kLegacyCmdInstallExtension, - list); - - if (p.distribution()->AppHostIsSupported()) { - // Unconditionally remove the "install-application" command from the app - // hosts's key. - UpdatingAppRegistrationData app_launcher_reg_data( - installer::kAppLauncherGuid); - AddLegacyAppCommandRemovalItem(installer_state, app_launcher_reg_data, - kLegacyCmdInstallApp, list); + +#if defined(GOOGLE_CHROME_BUILD) + if (!InstallUtil::IsChromeSxSProcess()) { + // Add items to set up the App Launcher's version key if Google Chrome + // is being installed or updated. + AddAppLauncherVersionKeyWorkItems(installer_state.root_key(), + new_version, add_language_identifier, list); } +#endif // GOOGLE_CHROME_BUILD } - if (p.is_chrome_binaries()) { - AddQueryEULAAcceptanceWorkItems( - installer_state, setup_path, new_version, p, list); + if (p.is_chrome_binaries()) AddQuickEnableChromeFrameWorkItems(installer_state, list); - AddQuickEnableApplicationLauncherWorkItems( - installer_state, original_state, setup_path, new_version, list); - } } } @@ -1269,14 +1151,11 @@ void AddInstallWorkItems(const InstallationState& original_state, install_list); } - if (installer_state.FindProduct(BrowserDistribution::CHROME_APP_HOST)) { - install_list->AddCopyTreeWorkItem( - src_path.Append(installer::kChromeAppHostExe).value(), - target_path.Append(installer::kChromeAppHostExe).value(), - temp_path.value(), - WorkItem::ALWAYS, - L""); - } +#if defined(GOOGLE_CHROME_BUILD) + // For Chrome, unconditionally remove the legacy app_host.exe. + if (!InstallUtil::IsChromeSxSProcess()) + AddRemoveLegacyAppHostExeWorkItems(target_path, temp_path, install_list); +#endif // GOOGLE_CHROME_BUILD // Copy installer in install directory AddInstallerCopyTasks(installer_state, setup_path, archive_path, temp_path, @@ -1310,24 +1189,10 @@ void AddInstallWorkItems(const InstallationState& original_state, install_list); } - // TODO(huangs): Implement actual migration code and remove the hack below. - // If installing Chrome without the legacy stand-alone App Launcher (to be - // handled later), add "shadow" App Launcher registry keys so Google Update - // would recognize the "dr" value in the App Launcher ClientState key. - // Checking .is_multi_install() excludes Chrome Canary and stand-alone Chrome. - if (installer_state.is_multi_install() && - installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER) && - !installer_state.FindProduct(BrowserDistribution::CHROME_APP_HOST)) { - BrowserDistribution* shadow_app_launcher_dist = - BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_APP_HOST); - AddVersionKeyWorkItems(root, - shadow_app_launcher_dist->GetVersionKey(), - shadow_app_launcher_dist->GetDisplayName(), - new_version, - add_language_identifier, - install_list); - } +#if defined(GOOGLE_CHROME_BUILD) + if (!InstallUtil::IsChromeSxSProcess()) + AddRemoveLegacyAppCommandsWorkItems(installer_state, install_list); +#endif // GOOGLE_CHROME_BUILD // Add any remaining work items that involve special settings for // each product. @@ -1336,6 +1201,7 @@ void AddInstallWorkItems(const InstallationState& original_state, setup_path, new_version, current_version == NULL, + add_language_identifier, install_list); // Copy over brand, usagestats, and other values. @@ -1612,33 +1478,6 @@ void AddOsUpgradeWorkItems(const InstallerState& installer_state, } } -void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state, - const base::FilePath& setup_path, - const Version& new_version, - const Product& product, - WorkItemList* work_item_list) { - const HKEY root_key = installer_state.root_key(); - base::string16 cmd_key( - GetRegCommandKey(product.distribution(), kCmdQueryEULAAcceptance)); - if (installer_state.operation() == InstallerState::UNINSTALL) { - work_item_list->AddDeleteRegKeyWorkItem(root_key, cmd_key, KEY_WOW64_32KEY) - ->set_log_message("Removing query EULA acceptance command"); - } else { - base::CommandLine cmd_line( - installer_state.GetInstallerDirectory(new_version) - .Append(setup_path.BaseName())); - cmd_line.AppendSwitch(switches::kQueryEULAAcceptance); - if (installer_state.system_install()) - cmd_line.AppendSwitch(installer::switches::kSystemLevel); - if (installer_state.verbose_logging()) - cmd_line.AppendSwitch(installer::switches::kVerboseLogging); - AppCommand cmd(cmd_line.GetCommandLineString()); - cmd.set_is_web_accessible(true); - cmd.set_is_run_as_user(true); - cmd.AddWorkItems(installer_state.root_key(), cmd_key, work_item_list); - } -} - void AddQuickEnableChromeFrameWorkItems(const InstallerState& installer_state, WorkItemList* work_item_list) { DCHECK(work_item_list); diff --git a/chrome/installer/setup/install_worker.h b/chrome/installer/setup/install_worker.h index aadd588..d4aa130 100644 --- a/chrome/installer/setup/install_worker.h +++ b/chrome/installer/setup/install_worker.h @@ -179,16 +179,6 @@ void AddOsUpgradeWorkItems(const InstallerState& installer_state, const Product& product, WorkItemList* install_list); -// Adds work items to add or remove the "query-eula-acceptance" command to -// |product|'s version key on the basis of the current operation (represented -// in |installer_state|). |new_version| is the version of the product(s) -// currently being installed -- can be empty on uninstall. -void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state, - const base::FilePath& setup_path, - const base::Version& new_version, - const Product& product, - WorkItemList* work_item_list); - // Adds work items to remove "quick-enable-cf" from the multi-installer // binaries' version key. void AddQuickEnableChromeFrameWorkItems(const InstallerState& installer_state, diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc index 9017b33..ce494ff 100644 --- a/chrome/installer/setup/setup_main.cc +++ b/chrome/installer/setup/setup_main.cc @@ -47,7 +47,6 @@ #include "chrome/installer/util/channel_info.h" #include "chrome/installer/util/delete_after_reboot_helper.h" #include "chrome/installer/util/delete_tree_work_item.h" -#include "chrome/installer/util/eula_util.h" #include "chrome/installer/util/google_update_constants.h" #include "chrome/installer/util/google_update_settings.h" #include "chrome/installer/util/google_update_util.h" @@ -381,8 +380,6 @@ bool CheckMultiInstallConditions(const InstallationState& original_state, if (installer_state->is_multi_install()) { const Product* chrome = installer_state->FindProduct(BrowserDistribution::CHROME_BROWSER); - const Product* app_host = - installer_state->FindProduct(BrowserDistribution::CHROME_APP_HOST); const Product* binaries = installer_state->FindProduct(BrowserDistribution::CHROME_BINARIES); const ProductState* chrome_state = @@ -402,39 +399,7 @@ bool CheckMultiInstallConditions(const InstallationState& original_state, return false; } } else { - // This will only be hit if --multi-install is given with no products, or - // if the app host is being installed and doesn't need the binaries at - // user-level. - // The former case might be due to a request by an orphaned Application - // Host to re-install the binaries. Thus we add them to the installation. - // The latter case is fine and we let it be. - // If this is not an app host install and the binaries are not already - // present, the installation will fail later due to a lack of products to - // install. - if (app_host && !chrome && !chrome_state) { - DCHECK(!system_level); - // App Host may use Chrome/Chrome binaries at system-level. - if (original_state.GetProductState( - true, // system - BrowserDistribution::CHROME_BROWSER) || - original_state.GetProductState( - true, // system - BrowserDistribution::CHROME_BINARIES)) { - VLOG(1) << "Installing/updating App Launcher without binaries."; - } else { - // Somehow the binaries were present when the quick-enable app host - // command was run, but now they appear to be missing. - // Force binaries to be installed/updated. - scoped_ptr<Product> binaries_to_add(new Product( - BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_BINARIES))); - binaries_to_add->SetOption(installer::kOptionMultiInstall, true); - binaries = installer_state->AddProduct(&binaries_to_add); - VLOG(1) << - "Adding binaries for pre-existing App Launcher installation."; - } - } - + // This will only be hit if --multi-install is given with no products. return true; } @@ -472,34 +437,6 @@ bool CheckMultiInstallConditions(const InstallationState& original_state, return true; } -// Checks app host pre-install conditions, specifically that this is a -// user-level multi-install. When the pre-install conditions are not -// satisfied, the result is written to the registry (via WriteInstallerResult), -// |status| is set appropriately, and false is returned. -bool CheckAppHostPreconditions(const InstallationState& original_state, - InstallerState* installer_state, - installer::InstallStatus* status) { - if (installer_state->FindProduct(BrowserDistribution::CHROME_APP_HOST)) { - if (!installer_state->is_multi_install()) { - LOG(DFATAL) << "App Launcher requires multi install"; - *status = installer::APP_HOST_REQUIRES_MULTI_INSTALL; - // No message string since there is nothing a user can do. - installer_state->WriteInstallerResult(*status, 0, NULL); - return false; - } - - if (installer_state->system_install()) { - LOG(DFATAL) << "App Launcher may only be installed at user-level."; - *status = installer::APP_HOST_REQUIRES_USER_LEVEL; - // No message string since there is nothing a user can do. - installer_state->WriteInstallerResult(*status, 0, NULL); - return false; - } - } - - return true; -} - // Checks for compatibility between the current state of the system and the // desired operation. Also applies policy that mutates the desired operation; // specifically, the |installer_state| object. @@ -512,11 +449,6 @@ bool CheckAppHostPreconditions(const InstallationState& original_state, bool CheckPreInstallConditions(const InstallationState& original_state, InstallerState* installer_state, installer::InstallStatus* status) { - if (!CheckAppHostPreconditions(original_state, installer_state, status)) { - DCHECK_NE(*status, installer::UNKNOWN_STATUS); - return false; - } - // See what products are already installed in multi mode. When we do multi // installs, we must upgrade all installations since they share the binaries. AddExistingMultiInstalls(original_state, installer_state); @@ -597,18 +529,6 @@ bool CheckPreInstallConditions(const InstallationState& original_state, return false; } } - - } else { // System-level install. - // --ensure-google-update-present is supported for user-level only. - // The flag is generic, but its primary use case involves App Host. - if (installer_state->ensure_google_update_present()) { - LOG(DFATAL) << "--" << installer::switches::kEnsureGoogleUpdatePresent - << " is supported for user-level only."; - *status = installer::APP_HOST_REQUIRES_USER_LEVEL; - // No message string since there is nothing a user can do. - installer_state->WriteInstallerResult(*status, 0, NULL); - return false; - } } return true; @@ -1141,8 +1061,6 @@ bool HandleNonInstallCmdLineOptions(const InstallationState& original_state, LOG(DFATAL) << "Chrome product not found."; } *exit_code = InstallUtil::GetInstallReturnCode(status); - } else if (cmd_line.HasSwitch(installer::switches::kQueryEULAAcceptance)) { - *exit_code = installer::IsEULAAccepted(installer_state->system_install()); } else if (cmd_line.HasSwitch(installer::switches::kInactiveUserToast)) { // Launch the inactive user toast experiment. int flavor = -1; @@ -1520,22 +1438,11 @@ InstallStatus InstallProductsHelper(const InstallationState& original_state, } if (higher_products != 0) { - COMPILE_ASSERT(BrowserDistribution::NUM_TYPES == 4, + COMPILE_ASSERT(BrowserDistribution::NUM_TYPES == 3, add_support_for_new_products_here_); - const uint32 kBrowserBit = 1 << BrowserDistribution::CHROME_BROWSER; - int message_id = 0; - + int message_id = IDS_INSTALL_HIGHER_VERSION_BASE; proceed_with_installation = false; install_status = HIGHER_VERSION_EXISTS; - switch (higher_products) { - case kBrowserBit: - message_id = IDS_INSTALL_HIGHER_VERSION_BASE; - break; - default: - message_id = IDS_INSTALL_HIGHER_VERSION_APP_LAUNCHER_BASE; - break; - } - installer_state.WriteInstallerResult(install_status, message_id, NULL); } @@ -1545,22 +1452,6 @@ InstallStatus InstallProductsHelper(const InstallationState& original_state, *installer_version, &install_status); if (proceed_with_installation) { - // If Google Update is absent at user-level, install it using the - // Google Update installer from an existing system-level installation. - // This is for quick-enable App Host install from a system-level - // Chrome Binaries installation. - if (!system_install && installer_state.ensure_google_update_present()) { - if (!google_update::EnsureUserLevelGoogleUpdatePresent()) { - LOG(ERROR) << "Failed to install Google Update"; - proceed_with_installation = false; - install_status = INSTALL_OF_GOOGLE_UPDATE_FAILED; - installer_state.WriteInstallerResult(install_status, 0, NULL); - } - } - - } - - if (proceed_with_installation) { base::FilePath prefs_source_path(cmd_line.GetSwitchValueNative( switches::kInstallerData)); install_status = InstallOrUpdateProduct( diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc index ba25f7e..99ea3f5 100644 --- a/chrome/installer/setup/setup_util.cc +++ b/chrome/installer/setup/setup_util.cc @@ -444,6 +444,9 @@ bool ContainsUnsupportedSwitch(const base::CommandLine& cmd_line) { // Installation of Chrome Frame. "chrome-frame", "migrate-chrome-frame", + // Stand-alone App Launcher. + "app-host", + "app-launcher", }; for (size_t i = 0; i < arraysize(kLegacySwitches); ++i) { if (cmd_line.HasSwitch(kLegacySwitches[i])) diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc index 3df4ea8..4ba72dc 100644 --- a/chrome/installer/setup/uninstall.cc +++ b/chrome/installer/setup/uninstall.cc @@ -26,6 +26,7 @@ #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_result_codes.h" +#include "chrome/installer/setup/app_launcher_installer.h" #include "chrome/installer/setup/install.h" #include "chrome/installer/setup/install_worker.h" #include "chrome/installer/setup/setup_constants.h" @@ -185,20 +186,14 @@ void ClearRlzProductState() { } } -// Decides whether setup.exe and the installer archive should be removed based -// on the original and installer states: -// * non-multi product being uninstalled: remove both -// * any multi product left besides App Host: keep both -// * only App Host left: keep setup.exe -void CheckShouldRemoveSetupAndArchive(const InstallationState& original_state, - const InstallerState& installer_state, - bool* remove_setup, - bool* remove_archive) { - *remove_setup = true; - *remove_archive = true; - - // If any multi-install product is left (other than App Host) we must leave - // the installer and archive. For the App Host, we only leave the installer. +// Returns whether setup.exe should be removed based on the original and +// installer states: +// * non-multi product being uninstalled: remove setup.exe +// * any multi product left: keep setup.exe +bool CheckShouldRemoveSetup(const InstallationState& original_state, + const InstallerState& installer_state) { + // If any multi-install product is left we must leave the installer and + // archive. if (!installer_state.is_multi_install()) { VLOG(1) << "Removing all installer files for a non-multi installation."; } else { @@ -214,23 +209,14 @@ void CheckShouldRemoveSetupAndArchive(const InstallationState& original_state, !installer_state.FindProduct(dist_type)) { // setup.exe will not be removed as there is a remaining multi-install // product. - *remove_setup = false; - // As a special case, we can still remove the actual archive if the - // only remaining product is the App Host. - if (dist_type != BrowserDistribution::CHROME_APP_HOST) { - VLOG(1) << "Keeping all installer files due to a remaining " - << "multi-install product."; - *remove_archive = false; - return; - } - VLOG(1) << "Keeping setup.exe due to a remaining " - << "app-host installation."; + VLOG(1) << "Keeping all installer files due to a remaining " + << "multi-install product."; + return false; } } - VLOG(1) << "Removing the installer archive."; - if (remove_setup) - VLOG(1) << "Removing setup.exe."; + VLOG(1) << "Removing all installer files."; } + return true; } // Removes all files from the installer directory, leaving setup.exe iff @@ -513,28 +499,6 @@ bool MoveSetupOutOfInstallFolder(const InstallerState& installer_state, return true; } -DeleteResult DeleteAppHostFilesAndFolders(const InstallerState& installer_state, - const Version& installed_version) { - const base::FilePath& target_path = installer_state.target_path(); - if (target_path.empty()) { - LOG(ERROR) << "DeleteAppHostFilesAndFolders: no installation destination " - << "path."; - return DELETE_FAILED; // Nothing else we can do to uninstall, so we return. - } - - DeleteInstallTempDir(target_path); - - DeleteResult result = DELETE_SUCCEEDED; - - base::FilePath app_host_exe(target_path.Append(installer::kChromeAppHostExe)); - if (!base::DeleteFile(app_host_exe, false)) { - result = DELETE_FAILED; - LOG(ERROR) << "Failed to delete path: " << app_host_exe.value(); - } - - return result; -} - DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state, const base::FilePath& setup_exe) { const base::FilePath& target_path = installer_state.target_path(); @@ -561,8 +525,6 @@ DeleteResult DeleteChromeFilesAndFolders(const InstallerState& installer_state, base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES); for (base::FilePath to_delete = file_enumerator.Next(); !to_delete.empty(); to_delete = file_enumerator.Next()) { - if (to_delete.BaseName().value() == installer::kChromeAppHostExe) - continue; if (!installer_directory.empty() && (to_delete == installer_directory || installer_directory.IsParent(to_delete) || @@ -1219,6 +1181,11 @@ InstallStatus UninstallProduct(const InstallationState& original_state, DeleteChromeRegistrationKeys(installer_state, browser_dist, HKEY_CURRENT_USER, suffix, &ret); +#if defined(GOOGLE_CHROME_BUILD) + if (!InstallUtil::IsChromeSxSProcess()) + RemoveAppLauncherVersionKey(reg_root); +#endif // GOOGLE_CHROME_BUILD + // If the user's Chrome is registered with a suffix: it is possible that old // unsuffixed registrations were left in HKCU (e.g. if this install was // previously installed with no suffix in HKCU (old suffix rules if the user @@ -1277,22 +1244,6 @@ InstallStatus UninstallProduct(const InstallationState& original_state, // Notify the shell that associations have changed since Chrome was likely // unregistered. SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); - - // TODO(huangs): Implement actual migration code and remove the hack below. - // Remove the "shadow" App Launcher registry keys. - // TODO(hunags): Management of this key should not be conditional on - // multi-install since the app list feature is available regardless of how - // chrome is installed. - if (installer_state.is_multi_install()) { - // Delete the "shadow" keys. - BrowserDistribution* shadow_app_launcher_dist = - BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_APP_HOST); - InstallUtil::DeleteRegistryKey( - reg_root, - shadow_app_launcher_dist->GetVersionKey(), - KEY_WOW64_32KEY); - } } if (installer_state.is_multi_install()) @@ -1369,10 +1320,7 @@ InstallStatus UninstallProduct(const InstallationState& original_state, delete_profile = false; } - if (product.is_chrome_app_host()) { - DeleteAppHostFilesAndFolders(installer_state, product_state->version()); - } else if (!installer_state.is_multi_install() || - product.is_chrome_binaries()) { + if (!installer_state.is_multi_install() || product.is_chrome_binaries()) { DeleteResult delete_result = DeleteChromeFilesAndFolders( installer_state, base::MakeAbsoluteFilePath(setup_exe)); if (delete_result == DELETE_FAILED) { @@ -1420,12 +1368,7 @@ void CleanUpInstallationDirectoryAfterUninstall( } base::FilePath install_directory(setup_exe.DirName()); - bool remove_setup = true; - bool remove_archive = true; - CheckShouldRemoveSetupAndArchive(original_state, installer_state, - &remove_setup, &remove_archive); - if (!remove_archive) - return; + bool remove_setup = CheckShouldRemoveSetup(original_state, installer_state); if (remove_setup) { // In order to be able to remove the folder in which we're running, we diff --git a/chrome/installer/util/BUILD.gn b/chrome/installer/util/BUILD.gn index 5695469..a73f920 100644 --- a/chrome/installer/util/BUILD.gn +++ b/chrome/installer/util/BUILD.gn @@ -16,8 +16,6 @@ static_library("util") { # name ("installer_util_minimal"?) since it's not strictly the 64-bit build # of that target. sources = [ - "chrome_app_host_operations.cc", - "chrome_app_host_operations.h", "chrome_binaries_operations.cc", "chrome_binaries_operations.h", "chrome_browser_operations.cc", @@ -30,8 +28,6 @@ static_library("util") { "compat_checks.h", "delete_after_reboot_helper.cc", "delete_after_reboot_helper.h", - "eula_util.cc", - "eula_util.h", "google_chrome_distribution.cc", "google_chrome_distribution.h", "html_dialog.h", @@ -89,8 +85,6 @@ static_library("util") { "callback_work_item.h", "channel_info.cc", "channel_info.h", - "chrome_app_host_distribution.cc", - "chrome_app_host_distribution.h", "chrome_frame_distribution.cc", "chrome_frame_distribution.h", "chromium_binaries_distribution.cc", diff --git a/chrome/installer/util/browser_distribution.cc b/chrome/installer/util/browser_distribution.cc index 77b119f..dd7918d 100644 --- a/chrome/installer/util/browser_distribution.cc +++ b/chrome/installer/util/browser_distribution.cc @@ -18,7 +18,6 @@ #include "chrome/common/chrome_icon_resources_win.h" #include "chrome/common/env_vars.h" #include "chrome/installer/util/app_registration_data.h" -#include "chrome/installer/util/chrome_app_host_distribution.h" #include "chrome/installer/util/chrome_frame_distribution.h" #include "chrome/installer/util/chromium_binaries_distribution.h" #include "chrome/installer/util/google_chrome_binaries_distribution.h" @@ -45,15 +44,12 @@ const wchar_t kCommandExecuteImplUuid[] = BrowserDistribution* g_browser_distribution = NULL; BrowserDistribution* g_chrome_frame_distribution = NULL; BrowserDistribution* g_binaries_distribution = NULL; -BrowserDistribution* g_chrome_app_host_distribution = NULL; BrowserDistribution::Type GetCurrentDistributionType() { - // TODO(erikwright): If the app host is installed, but not Chrome, perhaps - // this should return CHROME_APP_HOST. return BrowserDistribution::CHROME_BROWSER; } -} // end namespace +} // namespace BrowserDistribution::BrowserDistribution() : type_(CHROME_BROWSER), @@ -112,11 +108,6 @@ BrowserDistribution* BrowserDistribution::GetSpecificDistribution( &g_chrome_frame_distribution); break; - case CHROME_APP_HOST: - dist = GetOrCreateBrowserDistribution<ChromeAppHostDistribution>( - &g_chrome_app_host_distribution); - break; - default: DCHECK_EQ(CHROME_BINARIES, type); #if defined(GOOGLE_CHROME_BUILD) @@ -282,10 +273,6 @@ bool BrowserDistribution::GetCommandExecuteImplClsid( return true; } -bool BrowserDistribution::AppHostIsSupported() { - return false; -} - void BrowserDistribution::UpdateInstallStatus(bool system_install, installer::ArchiveType archive_type, installer::InstallStatus install_status) { diff --git a/chrome/installer/util/browser_distribution.h b/chrome/installer/util/browser_distribution.h index 7f41d15..46fc4b9 100644 --- a/chrome/installer/util/browser_distribution.h +++ b/chrome/installer/util/browser_distribution.h @@ -28,7 +28,6 @@ class BrowserDistribution { CHROME_BROWSER, CHROME_FRAME, CHROME_BINARIES, - CHROME_APP_HOST, NUM_TYPES }; @@ -150,9 +149,6 @@ class BrowserDistribution { // non-NULL. virtual bool GetCommandExecuteImplClsid(base::string16* handler_class_uuid); - // Returns true if this distribution uses app_host.exe to run platform apps. - virtual bool AppHostIsSupported(); - virtual void UpdateInstallStatus(bool system_install, installer::ArchiveType archive_type, installer::InstallStatus install_status); diff --git a/chrome/installer/util/channel_info.cc b/chrome/installer/util/channel_info.cc index cdf264b..5180fcf 100644 --- a/chrome/installer/util/channel_info.cc +++ b/chrome/installer/util/channel_info.cc @@ -15,9 +15,8 @@ namespace { const wchar_t kModChrome[] = L"-chrome"; const wchar_t kModChromeFrame[] = L"-chromeframe"; -// TODO(huangs): Remove by M27. const wchar_t kModAppHostDeprecated[] = L"-apphost"; -const wchar_t kModAppLauncher[] = L"-applauncher"; +const wchar_t kModAppLauncherDeprecated[] = L"-applauncher"; const wchar_t kModMultiInstall[] = L"-multi"; const wchar_t kModReadyMode[] = L"-readymode"; const wchar_t kModStage[] = L"-stage:"; @@ -36,8 +35,8 @@ const wchar_t* const kModifiers[] = { kModMultiInstall, kModChrome, kModChromeFrame, - kModAppHostDeprecated, // TODO(huangs): Remove by M27. - kModAppLauncher, + kModAppHostDeprecated, + kModAppLauncherDeprecated, kModReadyMode, kSfxMultiFail, kSfxMigrating, @@ -49,8 +48,8 @@ enum ModifierIndex { MOD_MULTI_INSTALL, MOD_CHROME, MOD_CHROME_FRAME, - MOD_APP_HOST_DEPRECATED, // TODO(huangs): Remove by M27. - MOD_APP_LAUNCHER, + MOD_APP_HOST_DEPRECATED, + MOD_APP_LAUNCHER_DEPRECATED, MOD_READY_MODE, SFX_MULTI_FAIL, SFX_MIGRATING, @@ -65,47 +64,47 @@ COMPILE_ASSERT(NUM_MODIFIERS == arraysize(kModifiers), // location at which the modifier was found. The number of characters in the // modifier is returned in |length|, if non-NULL. bool FindModifier(ModifierIndex index, - const std::wstring& ap_value, - std::wstring::size_type* position, - std::wstring::size_type* length) { + const base::string16& ap_value, + base::string16::size_type* position, + base::string16::size_type* length) { DCHECK(position != NULL); - std::wstring::size_type mod_position = std::wstring::npos; - std::wstring::size_type mod_length = - std::wstring::traits_type::length(kModifiers[index]); + base::string16::size_type mod_position = base::string16::npos; + base::string16::size_type mod_length = + base::string16::traits_type::length(kModifiers[index]); const bool mod_takes_arg = (kModifiers[index][mod_length - 1] == L':'); - std::wstring::size_type pos = 0; + base::string16::size_type pos = 0; do { mod_position = ap_value.find(kModifiers[index], pos, mod_length); - if (mod_position == std::wstring::npos) + if (mod_position == base::string16::npos) return false; // Modifier not found. pos = mod_position + mod_length; // Modifiers that take an argument gobble up to the next separator or to the // end. if (mod_takes_arg) { pos = ap_value.find(L'-', pos); - if (pos == std::wstring::npos) + if (pos == base::string16::npos) pos = ap_value.size(); break; } // Regular modifiers must be followed by '-' or the end of the string. } while (pos != ap_value.size() && ap_value[pos] != L'-'); - DCHECK_NE(mod_position, std::wstring::npos); + DCHECK_NE(mod_position, base::string16::npos); *position = mod_position; if (length != NULL) *length = pos - mod_position; return true; } -bool HasModifier(ModifierIndex index, const std::wstring& ap_value) { +bool HasModifier(ModifierIndex index, const base::string16& ap_value) { DCHECK(index >= 0 && index < NUM_MODIFIERS); - std::wstring::size_type position; + base::string16::size_type position; return FindModifier(index, ap_value, &position, NULL); } -std::wstring::size_type FindInsertionPoint(ModifierIndex index, - const std::wstring& ap_value) { +base::string16::size_type FindInsertionPoint(ModifierIndex index, + const base::string16& ap_value) { // Return the location of the next modifier. - std::wstring::size_type result; + base::string16::size_type result; for (int scan = index + 1; scan < NUM_MODIFIERS; ++scan) { if (FindModifier(static_cast<ModifierIndex>(scan), ap_value, &result, NULL)) @@ -116,11 +115,11 @@ std::wstring::size_type FindInsertionPoint(ModifierIndex index, } // Returns true if |ap_value| is modified. -bool SetModifier(ModifierIndex index, bool set, std::wstring* ap_value) { +bool SetModifier(ModifierIndex index, bool set, base::string16* ap_value) { DCHECK(index >= 0 && index < NUM_MODIFIERS); DCHECK(ap_value); - std::wstring::size_type position; - std::wstring::size_type length; + base::string16::size_type position; + base::string16::size_type length; bool have_modifier = FindModifier(index, *ap_value, &position, &length); if (set) { if (!have_modifier) { @@ -143,7 +142,7 @@ namespace installer { bool ChannelInfo::Initialize(const RegKey& key) { LONG result = key.ReadValue(google_update::kRegApField, &value_); return result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND || - result == ERROR_INVALID_HANDLE; + result == ERROR_INVALID_HANDLE; } bool ChannelInfo::Write(RegKey* key) const { @@ -159,7 +158,7 @@ bool ChannelInfo::Write(RegKey* key) const { return true; } -bool ChannelInfo::GetChannelName(std::wstring* channel_name) const { +bool ChannelInfo::GetChannelName(base::string16* channel_name) const { DCHECK(channel_name); if (value_.empty()) { channel_name->erase(); @@ -168,7 +167,7 @@ bool ChannelInfo::GetChannelName(std::wstring* channel_name) const { for (const wchar_t* const* scan = &kChannels[0], *const* end = &kChannels[arraysize(kChannels)]; scan != end; ++scan) { - if (value_.find(*scan) != std::wstring::npos) { + if (value_.find(*scan) != base::string16::npos) { // Report channels with "stable" in them as stable (empty string). if (*scan == installer::kChromeChannelStableExplicit) channel_name->erase(); @@ -179,7 +178,7 @@ bool ChannelInfo::GetChannelName(std::wstring* channel_name) const { } // There may be modifiers present. Strip them off and see if we're left // with the empty string (stable channel). - std::wstring tmp_value = value_; + base::string16 tmp_value = value_; for (int i = 0; i != NUM_MODIFIERS; ++i) { SetModifier(static_cast<ModifierIndex>(i), false, &tmp_value); } @@ -209,13 +208,15 @@ bool ChannelInfo::SetChromeFrame(bool value) { } bool ChannelInfo::IsAppLauncher() const { - return HasModifier(MOD_APP_LAUNCHER, value_); + return HasModifier(MOD_APP_LAUNCHER_DEPRECATED, value_); } bool ChannelInfo::SetAppLauncher(bool value) { - // Unconditionally remove -apphost since it has been deprecated. + // Unconditionally remove -apphost since it has been long deprecated. bool changed_app_host = SetModifier(MOD_APP_HOST_DEPRECATED, false, &value_); - bool changed_app_launcher = SetModifier(MOD_APP_LAUNCHER, value, &value_); + // Set value for -applauncher, relying on caller for policy. + bool changed_app_launcher = + SetModifier(MOD_APP_LAUNCHER_DEPRECATED, value, &value_); return changed_app_host || changed_app_launcher; } @@ -236,11 +237,11 @@ bool ChannelInfo::SetReadyMode(bool value) { } bool ChannelInfo::SetStage(const wchar_t* stage) { - std::wstring::size_type position; - std::wstring::size_type length; + base::string16::size_type position; + base::string16::size_type length; bool have_modifier = FindModifier(MOD_STAGE, value_, &position, &length); if (stage != NULL && *stage != L'\0') { - std::wstring stage_str(kModStage); + base::string16 stage_str(kModStage); stage_str.append(stage); if (!have_modifier) { value_.insert(FindInsertionPoint(MOD_STAGE, value_), stage_str); @@ -259,18 +260,18 @@ bool ChannelInfo::SetStage(const wchar_t* stage) { return false; } -std::wstring ChannelInfo::GetStage() const { - std::wstring::size_type position; - std::wstring::size_type length; +base::string16 ChannelInfo::GetStage() const { + base::string16::size_type position; + base::string16::size_type length; if (FindModifier(MOD_STAGE, value_, &position, &length)) { // Return the portion after the prefix. - std::wstring::size_type pfx_length = - std::wstring::traits_type::length(kModStage); + base::string16::size_type pfx_length = + base::string16::traits_type::length(kModStage); DCHECK_LE(pfx_length, length); return value_.substr(position + pfx_length, length - pfx_length); } - return std::wstring(); + return base::string16(); } bool ChannelInfo::HasFullSuffix() const { diff --git a/chrome/installer/util/channel_info.h b/chrome/installer/util/channel_info.h index f148113..60722b5 100644 --- a/chrome/installer/util/channel_info.h +++ b/chrome/installer/util/channel_info.h @@ -5,7 +5,7 @@ #ifndef CHROME_INSTALLER_UTIL_CHANNEL_INFO_H_ #define CHROME_INSTALLER_UTIL_CHANNEL_INFO_H_ -#include <string> +#include "base/strings/string16.h" namespace base { namespace win { @@ -31,8 +31,8 @@ class ChannelInfo { // Returns false if the value could not be written to the registry. bool Write(base::win::RegKey* key) const; - const std::wstring& value() const { return value_; } - void set_value(const std::wstring& value) { value_ = value; } + const base::string16& value() const { return value_; } + void set_value(const base::string16& value) { value_ = value; } bool Equals(const ChannelInfo& other) const { return value_ == other.value_; } @@ -41,7 +41,7 @@ class ChannelInfo { // results are the empty string (stable channel), "beta", and "dev". Returns // false (without modifying |channel_name|) if the channel could not be // determined. - bool GetChannelName(std::wstring* channel_name) const; + bool GetChannelName(base::string16* channel_name) const; // Returns true if the -chrome modifier is present in the value. bool IsChrome() const; @@ -57,11 +57,12 @@ class ChannelInfo { // modified. bool SetChromeFrame(bool value); - // Returns true if the -applauncher modifier is present in the value. + // (Deprecated) Returns true if the -applauncher modifier is present in the + // value. bool IsAppLauncher() const; - // Adds or removes the -applauncher modifier, returning true if the value is - // modified. + // (Deprecated) Adds or removes the -applauncher modifier, returning true if + // the value is modified. bool SetAppLauncher(bool value); // Returns true if the -multi modifier is present in the value. @@ -85,7 +86,7 @@ class ChannelInfo { // Returns the string identifying the current stage, or an empty string if the // -stage: modifier is not present in the value. - std::wstring GetStage() const; + base::string16 GetStage() const; // Returns true if the -full suffix is present in the value. bool HasFullSuffix() const; @@ -113,7 +114,7 @@ class ChannelInfo { bool RemoveAllModifiersAndSuffixes(); private: - std::wstring value_; + base::string16 value_; }; // class ChannelInfo } // namespace installer diff --git a/chrome/installer/util/channel_info_unittest.cc b/chrome/installer/util/channel_info_unittest.cc index 71d908b..dd50c38 100644 --- a/chrome/installer/util/channel_info_unittest.cc +++ b/chrome/installer/util/channel_info_unittest.cc @@ -2,10 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/installer/util/channel_info.h" + #include <utility> #include "base/basictypes.h" -#include "chrome/installer/util/channel_info.h" #include "chrome/installer/util/util_constants.h" #include "testing/gtest/include/gtest/gtest.h" @@ -13,15 +14,15 @@ using installer::ChannelInfo; namespace { -const std::wstring kChannelStable(installer::kChromeChannelStable); -const std::wstring kChannelBeta(installer::kChromeChannelBeta); -const std::wstring kChannelDev(installer::kChromeChannelDev); +const base::string16 kChannelStable(installer::kChromeChannelStable); +const base::string16 kChannelBeta(installer::kChromeChannelBeta); +const base::string16 kChannelDev(installer::kChromeChannelDev); } // namespace TEST(ChannelInfoTest, Channels) { ChannelInfo ci; - std::wstring channel; + base::string16 channel; ci.set_value(L""); EXPECT_TRUE(ci.GetChannelName(&channel)); diff --git a/chrome/installer/util/chrome_app_host_distribution.cc b/chrome/installer/util/chrome_app_host_distribution.cc deleted file mode 100644 index 2f94f01..0000000 --- a/chrome/installer/util/chrome_app_host_distribution.cc +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2012 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. -// -// This file defines a specific implementation of BrowserDistribution class for -// Chrome App Host. It overrides the bare minimum of methods necessary to get a -// Chrome App Host installer that does not interact with Google Chrome or -// Chromium installations. - -#include "chrome/installer/util/chrome_app_host_distribution.h" - -#include "base/strings/string_util.h" -#include "chrome/common/net/test_server_locations.h" -#include "chrome/installer/util/channel_info.h" -#include "chrome/installer/util/google_update_constants.h" -#include "chrome/installer/util/google_update_settings.h" -#include "chrome/installer/util/helper.h" -#include "chrome/installer/util/install_util.h" -#include "chrome/installer/util/l10n_string_util.h" -#include "chrome/installer/util/updating_app_registration_data.h" - -#include "installer_util_strings.h" // NOLINT - -ChromeAppHostDistribution::ChromeAppHostDistribution() - : BrowserDistribution( - CHROME_APP_HOST, - scoped_ptr<AppRegistrationData>( - new UpdatingAppRegistrationData(installer::kAppLauncherGuid))) { -} - -base::string16 ChromeAppHostDistribution::GetBaseAppName() { - return L"Google Chrome App Launcher"; -} - -base::string16 ChromeAppHostDistribution::GetBrowserProgIdPrefix() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromeAppHostDistribution::GetBrowserProgIdDesc() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromeAppHostDistribution::GetDisplayName() { - return GetShortcutName(SHORTCUT_APP_LAUNCHER); -} - -base::string16 ChromeAppHostDistribution::GetShortcutName( - ShortcutType shortcut_type) { - DCHECK_EQ(shortcut_type, SHORTCUT_APP_LAUNCHER); - return installer::GetLocalizedString(IDS_PRODUCT_APP_LAUNCHER_NAME_BASE); -} - -base::string16 ChromeAppHostDistribution::GetBaseAppId() { - // Should be same as AppListController::GetAppModelId(). - return L"ChromeAppList"; -} - -base::string16 ChromeAppHostDistribution::GetInstallSubDir() { - return BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_BINARIES)->GetInstallSubDir(); -} - -base::string16 ChromeAppHostDistribution::GetPublisherName() { - const base::string16& publisher_name = - installer::GetLocalizedString(IDS_ABOUT_VERSION_COMPANY_NAME_BASE); - return publisher_name; -} - -base::string16 ChromeAppHostDistribution::GetAppDescription() { - const base::string16& app_description = - installer::GetLocalizedString(IDS_APP_LAUNCHER_SHORTCUT_TOOLTIP_BASE); - return app_description; -} - -base::string16 ChromeAppHostDistribution::GetLongAppDescription() { - const base::string16& app_description = - installer::GetLocalizedString(IDS_APP_LAUNCHER_PRODUCT_DESCRIPTION_BASE); - return app_description; -} - -std::string ChromeAppHostDistribution::GetSafeBrowsingName() { - return "googlechromeapphost"; -} - -std::string ChromeAppHostDistribution::GetNetworkStatsServer() const { - return chrome_common_net::kEchoTestServerLocation; -} - -base::string16 ChromeAppHostDistribution::GetUninstallLinkName() { - const base::string16& link_name = - installer::GetLocalizedString(IDS_UNINSTALL_APP_LAUNCHER_BASE); - return link_name; -} - -base::string16 ChromeAppHostDistribution::GetUninstallRegPath() { - return L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" - L"Google Chrome App Launcher"; -} - -BrowserDistribution::DefaultBrowserControlPolicy - ChromeAppHostDistribution::GetDefaultBrowserControlPolicy() { - return DEFAULT_BROWSER_UNSUPPORTED; -} - -bool ChromeAppHostDistribution::CanCreateDesktopShortcuts() { - return true; -} - -base::string16 ChromeAppHostDistribution::GetIconFilename() { - return installer::kChromeAppHostExe; -} - -bool ChromeAppHostDistribution::GetCommandExecuteImplClsid( - base::string16* handler_class_uuid) { - return false; -} - -void ChromeAppHostDistribution::UpdateInstallStatus(bool system_install, - installer::ArchiveType archive_type, - installer::InstallStatus install_status) { -#if defined(GOOGLE_CHROME_BUILD) - GoogleUpdateSettings::UpdateInstallStatus( - system_install, - archive_type, - InstallUtil::GetInstallReturnCode(install_status), - installer::kAppLauncherGuid); -#endif -} diff --git a/chrome/installer/util/chrome_app_host_distribution.h b/chrome/installer/util/chrome_app_host_distribution.h deleted file mode 100644 index 9c28fe5..0000000 --- a/chrome/installer/util/chrome_app_host_distribution.h +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2012 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. -// -// This file extends the browser distribution with a specific implementation -// for Chrome AppHost. - -#ifndef CHROME_INSTALLER_UTIL_CHROME_APP_HOST_DISTRIBUTION_H_ -#define CHROME_INSTALLER_UTIL_CHROME_APP_HOST_DISTRIBUTION_H_ - -#include "chrome/installer/util/browser_distribution.h" -#include "chrome/installer/util/util_constants.h" - -class ChromeAppHostDistribution : public BrowserDistribution { - public: - virtual base::string16 GetDisplayName() override; - - virtual base::string16 GetBrowserProgIdPrefix() override; - - virtual base::string16 GetBrowserProgIdDesc() override; - - // This can only be called with SHORTCUT_APP_LAUNCHER for |shortcut_type|. - virtual base::string16 GetShortcutName(ShortcutType shortcut_type) override; - - virtual base::string16 GetIconFilename() override; - - virtual base::string16 GetBaseAppName() override; - - virtual base::string16 GetBaseAppId() override; - - virtual base::string16 GetInstallSubDir() override; - - virtual base::string16 GetPublisherName() override; - - virtual base::string16 GetAppDescription() override; - - virtual base::string16 GetLongAppDescription() override; - - virtual std::string GetSafeBrowsingName() override; - - virtual std::string GetNetworkStatsServer() const override; - - virtual base::string16 GetUninstallLinkName() override; - - virtual base::string16 GetUninstallRegPath() override; - - virtual DefaultBrowserControlPolicy GetDefaultBrowserControlPolicy() override; - - virtual bool CanCreateDesktopShortcuts() override; - - virtual bool GetCommandExecuteImplClsid( - base::string16* handler_class_uuid) override; - - virtual void UpdateInstallStatus(bool system_install, - installer::ArchiveType archive_type, - installer::InstallStatus install_status) override; - - protected: - friend class BrowserDistribution; - - // Disallow construction from non-friends. - ChromeAppHostDistribution(); -}; - -#endif // CHROME_INSTALLER_UTIL_CHROME_APP_HOST_DISTRIBUTION_H_ diff --git a/chrome/installer/util/chrome_app_host_operations.cc b/chrome/installer/util/chrome_app_host_operations.cc deleted file mode 100644 index 6130d41..0000000 --- a/chrome/installer/util/chrome_app_host_operations.cc +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) 2012 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/chrome_app_host_operations.h" - -#include "base/command_line.h" -#include "base/files/file_path.h" -#include "base/logging.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/installer/util/browser_distribution.h" -#include "chrome/installer/util/channel_info.h" -#include "chrome/installer/util/helper.h" -#include "chrome/installer/util/master_preferences.h" -#include "chrome/installer/util/master_preferences_constants.h" -#include "chrome/installer/util/shell_util.h" -#include "chrome/installer/util/util_constants.h" - -namespace installer { - -void ChromeAppHostOperations::ReadOptions(const MasterPreferences& prefs, - std::set<base::string16>* options) - const { - DCHECK(options); - - bool pref_value; - if (prefs.GetBool(master_preferences::kMultiInstall, &pref_value) && - pref_value) { - options->insert(kOptionMultiInstall); - } -} - -void ChromeAppHostOperations::ReadOptions( - const base::CommandLine& uninstall_command, - std::set<base::string16>* options) const { - DCHECK(options); - - if (uninstall_command.HasSwitch(switches::kMultiInstall)) - options->insert(kOptionMultiInstall); -} - -void ChromeAppHostOperations::AddKeyFiles( - const std::set<base::string16>& options, - std::vector<base::FilePath>* key_files) const { -} - -void ChromeAppHostOperations::AddComDllList( - const std::set<base::string16>& options, - std::vector<base::FilePath>* com_dll_list) const { -} - -void ChromeAppHostOperations::AppendProductFlags( - const std::set<base::string16>& options, - base::CommandLine* cmd_line) const { - DCHECK(cmd_line); - bool is_multi_install = options.find(kOptionMultiInstall) != options.end(); - - // Non-multi-install not supported for the app host. - DCHECK(is_multi_install); - - // Add --multi-install if it isn't already there. - if (is_multi_install && !cmd_line->HasSwitch(switches::kMultiInstall)) - cmd_line->AppendSwitch(switches::kMultiInstall); - - // Add --app-launcher. - cmd_line->AppendSwitch(switches::kChromeAppLauncher); -} - -void ChromeAppHostOperations::AppendRenameFlags( - const std::set<base::string16>& options, - base::CommandLine* cmd_line) const { - DCHECK(cmd_line); - bool is_multi_install = options.find(kOptionMultiInstall) != options.end(); - - // Non-multi-install not supported for the app host. - DCHECK(is_multi_install); - - // Add --multi-install if it isn't already there. - if (is_multi_install && !cmd_line->HasSwitch(switches::kMultiInstall)) - cmd_line->AppendSwitch(switches::kMultiInstall); -} - -bool ChromeAppHostOperations::SetChannelFlags( - const std::set<base::string16>& options, - bool set, - ChannelInfo* channel_info) const { -#if defined(GOOGLE_CHROME_BUILD) - DCHECK(channel_info); - return channel_info->SetAppLauncher(set); -#else - return false; -#endif -} - -bool ChromeAppHostOperations::ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const { - return true; -} - -void ChromeAppHostOperations::AddDefaultShortcutProperties( - BrowserDistribution* dist, - const base::FilePath& target_exe, - ShellUtil::ShortcutProperties* properties) const { - if (!properties->has_target()) - properties->set_target(target_exe); - - if (!properties->has_arguments()) { - base::CommandLine app_host_args(base::CommandLine::NO_PROGRAM); - app_host_args.AppendSwitch(::switches::kShowAppList); - properties->set_arguments(app_host_args.GetCommandLineString()); - } - - if (!properties->has_icon()) - properties->set_icon(target_exe, - dist->GetIconIndex(BrowserDistribution::SHORTCUT_APP_LAUNCHER)); - - if (!properties->has_app_id()) { - std::vector<base::string16> components; - components.push_back(dist->GetBaseAppId()); - properties->set_app_id(ShellUtil::BuildAppModelId(components)); - } -} - -void ChromeAppHostOperations::LaunchUserExperiment( - const base::FilePath& setup_path, - const std::set<base::string16>& options, - InstallStatus status, - bool system_level) const { - // No experiments yet. If adding some in the future, need to have - // ChromeAppHostDistribution::HasUserExperiments() return true. - NOTREACHED(); -} - -} // namespace installer diff --git a/chrome/installer/util/chrome_app_host_operations.h b/chrome/installer/util/chrome_app_host_operations.h deleted file mode 100644 index dc9f098..0000000 --- a/chrome/installer/util/chrome_app_host_operations.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2012 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_INSTALLER_UTIL_CHROME_APP_HOST_OPERATIONS_H_ -#define CHROME_INSTALLER_UTIL_CHROME_APP_HOST_OPERATIONS_H_ - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "chrome/installer/util/product_operations.h" - -namespace installer { - -// Operations specific to Chrome App Host; see ProductOperations for general -// info. -class ChromeAppHostOperations : public ProductOperations { - public: - ChromeAppHostOperations() {} - - virtual void ReadOptions(const MasterPreferences& prefs, - std::set<base::string16>* options) const override; - - virtual void ReadOptions(const base::CommandLine& uninstall_command, - std::set<base::string16>* options) const override; - - virtual void AddKeyFiles( - const std::set<base::string16>& options, - std::vector<base::FilePath>* key_files) const override; - - virtual void AddComDllList( - const std::set<base::string16>& options, - std::vector<base::FilePath>* com_dll_list) const override; - - virtual void AppendProductFlags(const std::set<base::string16>& options, - base::CommandLine* cmd_line) const override; - - virtual void AppendRenameFlags(const std::set<base::string16>& options, - base::CommandLine* cmd_line) const override; - - virtual bool SetChannelFlags(const std::set<base::string16>& options, - bool set, - ChannelInfo* channel_info) const override; - - virtual bool ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const override; - - virtual void AddDefaultShortcutProperties( - BrowserDistribution* dist, - const base::FilePath& target_exe, - ShellUtil::ShortcutProperties* properties) const override; - - virtual void LaunchUserExperiment(const base::FilePath& setup_path, - const std::set<base::string16>& options, - InstallStatus status, - bool system_level) const override; - - private: - DISALLOW_COPY_AND_ASSIGN(ChromeAppHostOperations); -}; - -} // namespace installer - -#endif // CHROME_INSTALLER_UTIL_CHROME_APP_HOST_OPERATIONS_H_ diff --git a/chrome/installer/util/chrome_browser_operations.cc b/chrome/installer/util/chrome_browser_operations.cc index 431b2e1..133fa9f 100644 --- a/chrome/installer/util/chrome_browser_operations.cc +++ b/chrome/installer/util/chrome_browser_operations.cc @@ -88,7 +88,11 @@ bool ChromeBrowserOperations::SetChannelFlags( ChannelInfo* channel_info) const { #if defined(GOOGLE_CHROME_BUILD) DCHECK(channel_info); - return channel_info->SetChrome(set); + bool chrome_changed = channel_info->SetChrome(set); + // Remove App Launcher's channel flags, since App Launcher does not exist as + // an independent product, and is a part of Chrome. + bool app_launcher_changed = channel_info->SetAppLauncher(false); + return chrome_changed || app_launcher_changed; #else return false; #endif diff --git a/chrome/installer/util/eula_util.cc b/chrome/installer/util/eula_util.cc deleted file mode 100644 index 12e0bf2..0000000 --- a/chrome/installer/util/eula_util.cc +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2013 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/eula_util.h" - -#include "base/files/file_util.h" -#include "base/memory/scoped_ptr.h" -#include "chrome/installer/util/browser_distribution.h" -#include "chrome/installer/util/install_util.h" -#include "chrome/installer/util/installation_state.h" -#include "chrome/installer/util/master_preferences.h" -#include "chrome/installer/util/master_preferences_constants.h" - -namespace installer { - -namespace { - -bool IsEULAAcceptanceFlagged(BrowserDistribution* dist) { - // Chrome creates the EULA sentinel after the EULA has been accepted when - // doing so is required by master_preferences. Assume the EULA has not been - // accepted if the path to the sentinel cannot be determined. - base::FilePath eula_sentinel; - return InstallUtil::GetEULASentinelFilePath(&eula_sentinel) && - base::PathExists(eula_sentinel); -} - -scoped_ptr<MasterPreferences> GetMasterPrefs(const ProductState& prod_state) { - // The standard location of the master prefs is next to the chrome binary. - base::FilePath master_prefs_path( - prod_state.GetSetupPath().DirName().DirName().DirName()); - scoped_ptr<MasterPreferences> install_prefs(new MasterPreferences( - master_prefs_path.AppendASCII(kDefaultMasterPrefs))); - if (install_prefs && install_prefs->read_from_file()) - return install_prefs.Pass(); - - return scoped_ptr<MasterPreferences>(); -} - -// Attempts to initialize |state| with any Chrome-related product. -// Returns true if any of these product are installed, otherwise false. -bool GetAnyChromeProductState(bool system_level, ProductState* state) { - return state->Initialize(system_level, BrowserDistribution::CHROME_BROWSER) - || state->Initialize(system_level, BrowserDistribution::CHROME_FRAME) - || state->Initialize(system_level, BrowserDistribution::CHROME_APP_HOST); -} - -} // namespace - -EULAAcceptanceResponse IsEULAAccepted(bool system_level) { - ProductState prod_state; - - if (!system_level) { // User-level case has seprate flow. - // Do not simply check Chrome binaries. Instead, check whether or not - // any Chrome-related products is installed, because the presence of any of - // these products at user-level implies that the EULA has been accepted. - return GetAnyChromeProductState(false, &prod_state) - ? QUERY_EULA_ACCEPTED : QUERY_EULA_NOT_ACCEPTED; - } - - // System-level. Try to use Chrome binaries product state. - if (!prod_state.Initialize(true, BrowserDistribution::CHROME_BINARIES)) { - // Fall back to Chrome Browser product state only. - if (!prod_state.Initialize(true, BrowserDistribution::CHROME_BROWSER)) - return QUERY_EULA_FAIL; - - LOG_IF(DFATAL, prod_state.is_multi_install()) - << "Binaries are not installed, but Chrome is multi-install."; - } - BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_BROWSER); - - // Is Google Update waiting for Chrome's EULA to be accepted? - DWORD eula_accepted = 0; - if (prod_state.GetEulaAccepted(&eula_accepted) && !eula_accepted) - return QUERY_EULA_NOT_ACCEPTED; - - if (InstallUtil::IsFirstRunSentinelPresent() || IsEULAAcceptanceFlagged(dist)) - return QUERY_EULA_ACCEPTED; - - // EULA acceptance not flagged. Now see if it is required. - scoped_ptr<MasterPreferences> install_prefs(GetMasterPrefs(prod_state)); - // If we fail to get master preferences, assume that EULA is not required. - if (!install_prefs) - return QUERY_EULA_ACCEPTED; - - bool eula_required = false; - // If kRequireEula value is absent, assume EULA is not required. - if (!install_prefs->GetBool(master_preferences::kRequireEula, &eula_required)) - return QUERY_EULA_ACCEPTED; - - return eula_required ? QUERY_EULA_NOT_ACCEPTED : QUERY_EULA_ACCEPTED; -} - -} // namespace installer diff --git a/chrome/installer/util/eula_util.h b/chrome/installer/util/eula_util.h deleted file mode 100644 index 7888c09..0000000 --- a/chrome/installer/util/eula_util.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2013 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. -// -// This file contains helper functions to read the Chrome EULA. - -#ifndef CHROME_INSTALLER_UTIL_EULA_UTIL_H_ -#define CHROME_INSTALLER_UTIL_EULA_UTIL_H_ - -namespace installer { - -enum EULAAcceptanceResponse{ - QUERY_EULA_FAIL = -1, - QUERY_EULA_NOT_ACCEPTED = 0, - QUERY_EULA_ACCEPTED = 1, -}; - -// Performs a comprehensive test on EULA acceptance in Chrome. -// This is mostly intended for system-level Chrome, although it also supports -// user-level Chrome (should return QUERY_EULA_ACCEPTED). -EULAAcceptanceResponse IsEULAAccepted(bool system_level); - -} // namespace installer - -#endif // CHROME_INSTALLER_UTIL_EULA_UTIL_H_ diff --git a/chrome/installer/util/google_chrome_distribution.cc b/chrome/installer/util/google_chrome_distribution.cc index 12b1268..102f163 100644 --- a/chrome/installer/util/google_chrome_distribution.cc +++ b/chrome/installer/util/google_chrome_distribution.cc @@ -256,10 +256,6 @@ bool GoogleChromeDistribution::GetCommandExecuteImplClsid( return true; } -bool GoogleChromeDistribution::AppHostIsSupported() { - return true; -} - // This method checks if we need to change "ap" key in Google Update to try // full installer as fall back method in case incremental installer fails. // - If incremental installer fails we append a magic string ("-full"), if diff --git a/chrome/installer/util/google_chrome_distribution.h b/chrome/installer/util/google_chrome_distribution.h index c63e135..d6611ba 100644 --- a/chrome/installer/util/google_chrome_distribution.h +++ b/chrome/installer/util/google_chrome_distribution.h @@ -72,8 +72,6 @@ class GoogleChromeDistribution : public BrowserDistribution { virtual bool GetCommandExecuteImplClsid( base::string16* handler_class_uuid) override; - virtual bool AppHostIsSupported() override; - virtual void UpdateInstallStatus( bool system_install, installer::ArchiveType archive_type, diff --git a/chrome/installer/util/google_chrome_distribution_dummy.cc b/chrome/installer/util/google_chrome_distribution_dummy.cc index 86016bd1..126eeff 100644 --- a/chrome/installer/util/google_chrome_distribution_dummy.cc +++ b/chrome/installer/util/google_chrome_distribution_dummy.cc @@ -106,10 +106,6 @@ bool GoogleChromeDistribution::GetCommandExecuteImplClsid( return false; } -bool GoogleChromeDistribution::AppHostIsSupported() { - return false; -} - void GoogleChromeDistribution::UpdateInstallStatus(bool system_install, installer::ArchiveType archive_type, installer::InstallStatus install_status) { diff --git a/chrome/installer/util/google_chrome_sxs_distribution.cc b/chrome/installer/util/google_chrome_sxs_distribution.cc index cd61cbd..f4a3c3b 100644 --- a/chrome/installer/util/google_chrome_sxs_distribution.cc +++ b/chrome/installer/util/google_chrome_sxs_distribution.cc @@ -110,10 +110,6 @@ bool GoogleChromeSxSDistribution::GetCommandExecuteImplClsid( return true; } -bool GoogleChromeSxSDistribution::AppHostIsSupported() { - return false; -} - bool GoogleChromeSxSDistribution::ShouldSetExperimentLabels() { return true; } diff --git a/chrome/installer/util/google_chrome_sxs_distribution.h b/chrome/installer/util/google_chrome_sxs_distribution.h index 94d7b60..c1be524 100644 --- a/chrome/installer/util/google_chrome_sxs_distribution.h +++ b/chrome/installer/util/google_chrome_sxs_distribution.h @@ -33,7 +33,6 @@ class GoogleChromeSxSDistribution : public GoogleChromeDistribution { virtual bool GetChromeChannel(base::string16* channel) override; virtual bool GetCommandExecuteImplClsid( base::string16* handler_class_uuid) override; - virtual bool AppHostIsSupported() override; virtual bool ShouldSetExperimentLabels() override; virtual bool HasUserExperiments() override; // returns the channel name for GoogleChromeSxSDistribution diff --git a/chrome/installer/util/installation_state.cc b/chrome/installer/util/installation_state.cc index 3c62306..645738d 100644 --- a/chrome/installer/util/installation_state.cc +++ b/chrome/installer/util/installation_state.cc @@ -227,12 +227,9 @@ int InstallationState::IndexFromDistType(BrowserDistribution::Type type) { unexpected_chrome_frame_distribution_value_); COMPILE_ASSERT(BrowserDistribution::CHROME_BINARIES == CHROME_BINARIES_INDEX, unexpected_chrome_frame_distribution_value_); - COMPILE_ASSERT(BrowserDistribution::CHROME_APP_HOST == CHROME_APP_HOST_INDEX, - unexpected_chrome_frame_distribution_value_); DCHECK(type == BrowserDistribution::CHROME_BROWSER || type == BrowserDistribution::CHROME_FRAME || - type == BrowserDistribution::CHROME_BINARIES || - type == BrowserDistribution::CHROME_APP_HOST); + type == BrowserDistribution::CHROME_BINARIES); return type; } @@ -253,11 +250,6 @@ void InstallationState::Initialize() { BrowserDistribution::CHROME_BINARIES); user_products_[CHROME_BINARIES_INDEX].Initialize(false, distribution); system_products_[CHROME_BINARIES_INDEX].Initialize(true, distribution); - - distribution = BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_APP_HOST); - user_products_[CHROME_APP_HOST_INDEX].Initialize(false, distribution); - system_products_[CHROME_APP_HOST_INDEX].Initialize(true, distribution); } const ProductState* InstallationState::GetNonVersionedProductState( diff --git a/chrome/installer/util/installation_state.h b/chrome/installer/util/installation_state.h index 28630cc..85cefb0 100644 --- a/chrome/installer/util/installation_state.h +++ b/chrome/installer/util/installation_state.h @@ -154,7 +154,6 @@ class InstallationState { CHROME_BROWSER_INDEX, CHROME_FRAME_INDEX, CHROME_BINARIES_INDEX, - CHROME_APP_HOST_INDEX, NUM_PRODUCTS }; diff --git a/chrome/installer/util/installation_validator.cc b/chrome/installer/util/installation_validator.cc index b8812d3..5c0e25f 100644 --- a/chrome/installer/util/installation_validator.cc +++ b/chrome/installer/util/installation_validator.cc @@ -87,38 +87,6 @@ bool InstallationValidator::ChromeFrameRules::UsageStatsAllowed( } BrowserDistribution::Type - InstallationValidator::ChromeAppHostRules::distribution_type() const { - return BrowserDistribution::CHROME_APP_HOST; -} - -void InstallationValidator::ChromeAppHostRules::AddUninstallSwitchExpectations( - const ProductContext& ctx, - SwitchExpectations* expectations) const { - // --app-launcher must be present. - expectations->push_back( - std::make_pair(std::string(switches::kChromeAppLauncher), true)); - - // --chrome must not be present. - expectations->push_back(std::make_pair(std::string(switches::kChrome), - false)); - // --chrome-frame must not be present. - expectations->push_back(std::make_pair(std::string(switches::kChromeFrame), - false)); -} - -void InstallationValidator::ChromeAppHostRules::AddRenameSwitchExpectations( - const ProductContext& ctx, - SwitchExpectations* expectations) const { - // TODO(erikwright): I guess there will be none? -} - -bool InstallationValidator::ChromeAppHostRules::UsageStatsAllowed( - const ProductContext& ctx) const { - // App Host doesn't manage usage stats. The Chrome Binaries will. - return false; -} - -BrowserDistribution::Type InstallationValidator::ChromeBinariesRules::distribution_type() const { return BrowserDistribution::CHROME_BINARIES; } @@ -152,12 +120,6 @@ const InstallationValidator::InstallationType CHROME_FRAME_SINGLE_CHROME_MULTI, CHROME_FRAME_MULTI, CHROME_FRAME_MULTI_CHROME_MULTI, - CHROME_APP_HOST, - CHROME_APP_HOST_CHROME_FRAME_SINGLE, - CHROME_APP_HOST_CHROME_FRAME_SINGLE_CHROME_MULTI, - CHROME_APP_HOST_CHROME_FRAME_MULTI, - CHROME_APP_HOST_CHROME_FRAME_MULTI_CHROME_MULTI, - CHROME_APP_HOST_CHROME_MULTI, }; void InstallationValidator::ValidateAppCommandFlags( @@ -225,66 +187,6 @@ void InstallationValidator::ValidateOnOsUpgradeCommand( ValidateAppCommandFlags(ctx, app_cmd, flags_exp, name, is_valid); } -// Validates the "query-eula-acceptance" Google Update product command. -void InstallationValidator::ValidateQueryEULAAcceptanceCommand( - const ProductContext& ctx, - const AppCommand& app_cmd, - bool* is_valid) { - DCHECK(is_valid); - - base::CommandLine cmd_line( - base::CommandLine::FromString(app_cmd.command_line())); - base::string16 name(kCmdQueryEULAAcceptance); - - ValidateSetupPath(ctx, cmd_line.GetProgram(), name, is_valid); - - SwitchExpectations expected; - expected.push_back(std::make_pair(std::string(switches::kQueryEULAAcceptance), - true)); - expected.push_back(std::make_pair(std::string(switches::kSystemLevel), - ctx.system_install)); - - ValidateCommandExpectations(ctx, cmd_line, expected, name, is_valid); - - std::set<base::string16> flags_exp; - flags_exp.insert(google_update::kRegWebAccessibleField); - flags_exp.insert(google_update::kRegRunAsUserField); - ValidateAppCommandFlags(ctx, app_cmd, flags_exp, name, is_valid); -} - -// Validates the "quick-enable-application-host" Google Update product command. -void InstallationValidator::ValidateQuickEnableApplicationHostCommand( - const ProductContext& ctx, - const AppCommand& app_cmd, - bool* is_valid) { - DCHECK(is_valid); - - base::CommandLine cmd_line( - base::CommandLine::FromString(app_cmd.command_line())); - base::string16 name(kCmdQuickEnableApplicationHost); - - ValidateSetupPath(ctx, cmd_line.GetProgram(), name, is_valid); - - SwitchExpectations expected; - - expected.push_back(std::make_pair( - std::string(switches::kChromeAppLauncher), true)); - expected.push_back(std::make_pair( - std::string(switches::kSystemLevel), false)); - expected.push_back(std::make_pair( - std::string(switches::kMultiInstall), true)); - expected.push_back(std::make_pair( - std::string(switches::kEnsureGoogleUpdatePresent), true)); - - ValidateCommandExpectations(ctx, cmd_line, expected, name, is_valid); - - std::set<base::string16> flags_exp; - flags_exp.insert(google_update::kRegSendsPingsField); - flags_exp.insert(google_update::kRegWebAccessibleField); - flags_exp.insert(google_update::kRegRunAsUserField); - ValidateAppCommandFlags(ctx, app_cmd, flags_exp, name, is_valid); -} - // Validates a product's set of Google Update product commands against a // collection of expectations. void InstallationValidator::ValidateAppCommandExpectations( @@ -325,27 +227,6 @@ void InstallationValidator::ValidateAppCommandExpectations( } } -// Validates the multi-install binaries' Google Update commands. -void InstallationValidator::ValidateBinariesCommands( - const ProductContext& ctx, - bool* is_valid) { - DCHECK(is_valid); - - const ProductState* binaries_state = ctx.machine_state.GetProductState( - ctx.system_install, BrowserDistribution::CHROME_BINARIES); - - CommandExpectations expectations; - - if (binaries_state != NULL) { - expectations[kCmdQuickEnableApplicationHost] = - &ValidateQuickEnableApplicationHostCommand; - - expectations[kCmdQueryEULAAcceptance] = &ValidateQueryEULAAcceptanceCommand; - } - - ValidateAppCommandExpectations(ctx, expectations, is_valid); -} - // Validates the multi-install binaries at level |system_level|. void InstallationValidator::ValidateBinaries( const InstallationState& machine_state, @@ -392,32 +273,13 @@ void InstallationValidator::ValidateBinaries( << "\""; } - // ap must have -applauncher iff Chrome App Launcher is installed multi - const ProductState* app_host_state = machine_state.GetProductState( - system_install, BrowserDistribution::CHROME_APP_HOST); - if (app_host_state != NULL) { - if (!app_host_state->is_multi_install()) { - *is_valid = false; - LOG(ERROR) << "Chrome App Launcher is installed in non-multi mode."; - } - if (!channel.IsAppLauncher()) { - *is_valid = false; - LOG(ERROR) << "Chrome Binaries are missing \"-applauncher\" in channel" - " name: \"" << channel.value() << "\""; - } - } else if (channel.IsAppLauncher()) { - *is_valid = false; - LOG(ERROR) << "Chrome Binaries have \"-applauncher\" in channel name, yet " - "Chrome App Launcher is not installed: \"" << channel.value() - << "\""; - } - - // Chrome, Chrome Frame, or App Host must be present - if (chrome_state == NULL && cf_state == NULL && app_host_state == NULL) { + // Chrome or Chrome Frame must be present + if (chrome_state == NULL && cf_state == NULL) { *is_valid = false; LOG(ERROR) << "Chrome Binaries are present with no other products."; } + // Chrome must be multi-install if present. if (chrome_state != NULL && !chrome_state->is_multi_install()) { *is_valid = false; @@ -425,20 +287,18 @@ void InstallationValidator::ValidateBinaries( << "Chrome Binaries are present yet Chrome is not multi-install."; } - // Chrome Frame must be multi-install if Chrome & App Host are not present. - if (cf_state != NULL && app_host_state == NULL && chrome_state == NULL && + // Chrome Frame must be multi-install if Chrome is not present. + if (cf_state != NULL && chrome_state == NULL && !cf_state->is_multi_install()) { *is_valid = false; - LOG(ERROR) << "Chrome Binaries are present without Chrome nor App Launcher " - << "yet Chrome Frame is not multi-install."; + LOG(ERROR) << "Chrome Binaries are present without Chrome, yet Chrome Frame" + << " is not multi-install."; } ChromeBinariesRules binaries_rules; ProductContext ctx(machine_state, system_install, binaries_state, binaries_rules); - ValidateBinariesCommands(ctx, is_valid); - ValidateUsageStats(ctx, is_valid); } @@ -578,25 +438,10 @@ void InstallationValidator::ValidateMultiInstallProduct( ctx.machine_state.GetProductState(ctx.system_install, BrowserDistribution::CHROME_BINARIES); if (!binaries) { - if (ctx.dist->GetType() == BrowserDistribution::CHROME_APP_HOST) { - if (!ctx.machine_state.GetProductState( - true, // system-level - BrowserDistribution::CHROME_BINARIES) && - !ctx.machine_state.GetProductState( - true, // system-level - BrowserDistribution::CHROME_BROWSER)) { - *is_valid = false; - LOG(ERROR) << ctx.dist->GetDisplayName() - << " (" << ctx.state.version().GetString() << ") is " - << "installed without Chrome Binaries or a system-level " - << "Chrome."; - } - } else { - *is_valid = false; - LOG(ERROR) << ctx.dist->GetDisplayName() - << " (" << ctx.state.version().GetString() << ") is installed " - << "without Chrome Binaries."; - } + *is_valid = false; + LOG(ERROR) << ctx.dist->GetDisplayName() + << " (" << ctx.state.version().GetString() << ") is installed " + << "without Chrome Binaries."; } else { // Version must match that of binaries. if (ctx.state.version().CompareTo(binaries->version()) != 0) { @@ -721,21 +566,6 @@ bool InstallationValidator::ValidateInstallationTypeForState( *type = static_cast<InstallationType>(*type | cf_bit); } - // Is Chrome App Host installed? - product_state = - machine_state.GetProductState(system_level, - BrowserDistribution::CHROME_APP_HOST); - if (product_state != NULL) { - ChromeAppHostRules chrome_app_host_rules; - ValidateProduct(machine_state, system_level, *product_state, - chrome_app_host_rules, &rock_on); - *type = static_cast<InstallationType>(*type | ProductBits::CHROME_APP_HOST); - if (!product_state->is_multi_install()) { - LOG(ERROR) << "Chrome App Launcher must always be multi-install."; - rock_on = false; - } - } - DCHECK_NE(std::find(&kInstallationTypes[0], &kInstallationTypes[arraysize(kInstallationTypes)], *type), diff --git a/chrome/installer/util/installation_validator.h b/chrome/installer/util/installation_validator.h index 087824a..28e7a83 100644 --- a/chrome/installer/util/installation_validator.h +++ b/chrome/installer/util/installation_validator.h @@ -38,7 +38,6 @@ class InstallationValidator { CHROME_MULTI = 0x02, CHROME_FRAME_SINGLE = 0x04, CHROME_FRAME_MULTI = 0x08, - CHROME_APP_HOST = 0x10, }; }; // class ProductBits @@ -59,20 +58,6 @@ class InstallationValidator { ProductBits::CHROME_FRAME_MULTI, CHROME_FRAME_MULTI_CHROME_MULTI = ProductBits::CHROME_FRAME_MULTI | ProductBits::CHROME_MULTI, - CHROME_APP_HOST = - ProductBits::CHROME_APP_HOST, - CHROME_APP_HOST_CHROME_FRAME_SINGLE = - ProductBits::CHROME_APP_HOST | ProductBits::CHROME_FRAME_SINGLE, - CHROME_APP_HOST_CHROME_FRAME_SINGLE_CHROME_MULTI = - ProductBits::CHROME_APP_HOST | ProductBits::CHROME_FRAME_SINGLE | - ProductBits::CHROME_MULTI, - CHROME_APP_HOST_CHROME_FRAME_MULTI = - ProductBits::CHROME_APP_HOST | ProductBits::CHROME_FRAME_MULTI, - CHROME_APP_HOST_CHROME_FRAME_MULTI_CHROME_MULTI = - ProductBits::CHROME_APP_HOST | ProductBits::CHROME_FRAME_MULTI | - ProductBits::CHROME_MULTI, - CHROME_APP_HOST_CHROME_MULTI = - ProductBits::CHROME_APP_HOST | ProductBits::CHROME_MULTI, }; // Validates |machine_state| at user or system level, returning true if valid. @@ -137,19 +122,6 @@ class InstallationValidator { virtual bool UsageStatsAllowed(const ProductContext& ctx) const override; }; - // Validation rules for Chrome App Host. - class ChromeAppHostRules : public ProductRules { - public: - virtual BrowserDistribution::Type distribution_type() const override; - virtual void AddUninstallSwitchExpectations( - const ProductContext& ctx, - SwitchExpectations* expectations) const override; - virtual void AddRenameSwitchExpectations( - const ProductContext& ctx, - SwitchExpectations* expectations) const override; - virtual bool UsageStatsAllowed(const ProductContext& ctx) const override; - }; - // Validation rules for the multi-install Chrome binaries. class ChromeBinariesRules : public ProductRules { public: @@ -195,20 +167,10 @@ class InstallationValidator { static void ValidateOnOsUpgradeCommand(const ProductContext& ctx, const AppCommand& app_cmd, bool* is_valid); - static void ValidateQueryEULAAcceptanceCommand(const ProductContext& ctx, - const AppCommand& app_cmd, - bool* is_valid); - static void ValidateQuickEnableApplicationHostCommand( - const ProductContext& ctx, - const AppCommand& app_cmd, - bool* is_valid); - static void ValidateAppCommandExpectations( const ProductContext& ctx, const CommandExpectations& expectations, bool* is_valid); - static void ValidateBinariesCommands(const ProductContext& ctx, - bool* is_valid); static void ValidateBinaries(const InstallationState& machine_state, bool system_install, const ProductState& binaries_state, diff --git a/chrome/installer/util/installation_validator_unittest.cc b/chrome/installer/util/installation_validator_unittest.cc index ca12e2d..ae015ff 100644 --- a/chrome/installer/util/installation_validator_unittest.cc +++ b/chrome/installer/util/installation_validator_unittest.cc @@ -82,14 +82,6 @@ class FakeProductState : public ProductState { Level install_level, const char* version, int channel_modifiers); - void AddQueryEULAAcceptanceCommand(BrowserDistribution::Type dist_type, - Level install_level, - const char* version, - int channel_modifiers); - void AddQuickEnableApplicationHostCommand(BrowserDistribution::Type dist_type, - Level install_level, - const char* version, - int channel_modifiers); void set_multi_install(bool is_multi_install) { multi_install_ = is_multi_install; } @@ -229,47 +221,6 @@ void FakeProductState::AddOsUpgradeCommand(BrowserDistribution::Type dist_type, commands_.Set(installer::kCmdOnOsUpgrade, app_cmd); } -// Adds the "query-eula-acceptance" Google Update product command. -void FakeProductState::AddQueryEULAAcceptanceCommand( - BrowserDistribution::Type dist_type, - Level install_level, - const char* version, - int channel_modifiers) { - DCHECK_EQ(dist_type, BrowserDistribution::CHROME_BINARIES); - - base::CommandLine cmd_line( - GetSetupExePath(dist_type, install_level, version, channel_modifiers)); - cmd_line.AppendSwitch(installer::switches::kQueryEULAAcceptance); - if (install_level == SYSTEM_LEVEL) - cmd_line.AppendSwitch(installer::switches::kSystemLevel); - cmd_line.AppendSwitch(installer::switches::kVerboseLogging); - AppCommand app_cmd(cmd_line.GetCommandLineString()); - app_cmd.set_is_web_accessible(true); - app_cmd.set_is_run_as_user(true); - commands_.Set(installer::kCmdQueryEULAAcceptance, app_cmd); -} - -// Adds the "quick-enable-application-host" Google Update product command. -void FakeProductState::AddQuickEnableApplicationHostCommand( - BrowserDistribution::Type dist_type, - Level install_level, - const char* version, - int channel_modifiers) { - DCHECK_EQ(dist_type, BrowserDistribution::CHROME_BINARIES); - DCHECK_NE(channel_modifiers & CM_MULTI, 0); - - base::CommandLine cmd_line( - GetSetupExePath(dist_type, install_level, version, channel_modifiers)); - cmd_line.AppendSwitch(installer::switches::kMultiInstall); - cmd_line.AppendSwitch(installer::switches::kChromeAppLauncher); - cmd_line.AppendSwitch(installer::switches::kEnsureGoogleUpdatePresent); - AppCommand app_cmd(cmd_line.GetCommandLineString()); - app_cmd.set_sends_pings(true); - app_cmd.set_is_web_accessible(true); - app_cmd.set_is_run_as_user(true); - commands_.Set(installer::kCmdQuickEnableApplicationHost, app_cmd); -} - } // namespace // Fixture for testing the InstallationValidator. Errors logged by the @@ -451,18 +402,6 @@ void InstallationValidatorTest::MakeProductState( state->SetUninstallCommand(prod_type, install_level, chrome::kChromeVersion, channel_modifiers, vehicle); state->set_multi_install(is_multi_install); - if (prod_type == BrowserDistribution::CHROME_BINARIES) { - state->AddQueryEULAAcceptanceCommand(prod_type, - install_level, - chrome::kChromeVersion, - channel_modifiers); - } - if (prod_type == BrowserDistribution::CHROME_BINARIES) { - state->AddQuickEnableApplicationHostCommand(prod_type, - install_level, - chrome::kChromeVersion, - channel_modifiers); - } if (prod_type == BrowserDistribution::CHROME_BROWSER) { state->AddOsUpgradeCommand(prod_type, install_level, diff --git a/chrome/installer/util/installer_state.cc b/chrome/installer/util/installer_state.cc index 520fd58..5488d83 100644 --- a/chrome/installer/util/installer_state.cc +++ b/chrome/installer/util/installer_state.cc @@ -70,8 +70,7 @@ InstallerState::InstallerState() package_type_(UNKNOWN_PACKAGE_TYPE), root_key_(NULL), msi_(false), - verbose_logging_(false), - ensure_google_update_present_(false) { + verbose_logging_(false) { } InstallerState::InstallerState(Level level) @@ -82,8 +81,7 @@ InstallerState::InstallerState(Level level) package_type_(UNKNOWN_PACKAGE_TYPE), root_key_(NULL), msi_(false), - verbose_logging_(false), - ensure_google_update_present_(false) { + verbose_logging_(false) { // Use set_level() so that root_key_ is updated properly. set_level(level); } @@ -108,9 +106,6 @@ void InstallerState::Initialize(const base::CommandLine& command_line, if (!prefs.GetBool(master_preferences::kMsi, &msi_)) msi_ = false; - ensure_google_update_present_ = - command_line.HasSwitch(installer::switches::kEnsureGoogleUpdatePresent); - const bool is_uninstall = command_line.HasSwitch(switches::kUninstall); if (prefs.install_chrome()) { @@ -120,141 +115,15 @@ void InstallerState::Initialize(const base::CommandLine& command_line, << " distribution: " << p->distribution()->GetDisplayName(); } - if (prefs.install_chrome_app_launcher()) { + // Binaries are only used by Chrome. + if (is_multi_install() && + FindProduct(BrowserDistribution::CHROME_BROWSER)) { Product* p = AddProductFromPreferences( - BrowserDistribution::CHROME_APP_HOST, prefs, machine_state); + BrowserDistribution::CHROME_BINARIES, prefs, machine_state); VLOG(1) << (is_uninstall ? "Uninstall" : "Install") << " distribution: " << p->distribution()->GetDisplayName(); } - if (!is_uninstall && is_multi_install()) { - bool need_binaries = false; - if (FindProduct(BrowserDistribution::CHROME_APP_HOST)) { - // App Host will happily use Chrome at system level, or binaries at system - // level, even if app host is user level. - const ProductState* chrome_state = machine_state.GetProductState( - true, // system level - BrowserDistribution::CHROME_BROWSER); - // If Chrome is at system-level, multi- or otherwise. We'll use it. - if (!chrome_state) { - const ProductState* binaries_state = machine_state.GetProductState( - true, // system level - BrowserDistribution::CHROME_BINARIES); - if (!binaries_state) - need_binaries = true; - } - } - - // Chrome multi needs Binaries at its own level. - if (FindProduct(BrowserDistribution::CHROME_BROWSER)) - need_binaries = true; - - if (need_binaries && !FindProduct(BrowserDistribution::CHROME_BINARIES)) { - // Force binaries to be installed/updated. - Product* p = AddProductFromPreferences( - BrowserDistribution::CHROME_BINARIES, prefs, machine_state); - VLOG(1) << "Install distribution: " - << p->distribution()->GetDisplayName(); - } - } - - if (is_uninstall && prefs.is_multi_install()) { - if (FindProduct(BrowserDistribution::CHROME_BROWSER)) { - // Uninstall each product of type |type| listed below based on the - // presence or absence of |switch_name| in that product's uninstall - // command. - const struct { - BrowserDistribution::Type type; - const char* switch_name; - bool switch_expected; - } conditional_additions[] = { - // If the App Host is installed, but not the App Launcher, remove it - // with Chrome. Note however that for system-level Chrome uninstalls, - // any installed user-level App Host will remain even if there is no - // App Launcher present (the orphaned app_host.exe will prompt the user - // for further action when executed). - { BrowserDistribution::CHROME_APP_HOST, - switches::kChromeAppLauncher, - false }, - }; - - for (size_t i = 0; i < arraysize(conditional_additions); ++i) { - const ProductState* product_state = machine_state.GetProductState( - system_install(), conditional_additions[i].type); - if (product_state != NULL && - product_state->uninstall_command().HasSwitch( - conditional_additions[i].switch_name) == - conditional_additions[i].switch_expected && - !FindProduct(conditional_additions[i].type)) { - Product* p = AddProductFromPreferences( - conditional_additions[i].type, prefs, machine_state); - VLOG(1) << "Uninstall distribution: " - << p->distribution()->GetDisplayName(); - } - } - } - - bool keep_binaries = false; - // Look for a multi-install product that is not the binaries and that is not - // being uninstalled. If not found, binaries are uninstalled too. - for (size_t i = 0; i < BrowserDistribution::NUM_TYPES; ++i) { - BrowserDistribution::Type type = - static_cast<BrowserDistribution::Type>(i); - - if (type == BrowserDistribution::CHROME_BINARIES) - continue; - - const ProductState* product_state = - machine_state.GetProductState(system_install(), type); - if (product_state == NULL) { - // The product is not installed. - continue; - } - - if (!product_state->is_multi_install() && - type != BrowserDistribution::CHROME_BROWSER) { - // The product is not sharing the binaries. It is ordinarily impossible - // for single-install Chrome to be installed along with any - // multi-install product. Treat single-install Chrome the same as any - // multi-install product just in case the impossible happens. - continue; - } - - // The product is installed. - - if (!FindProduct(type)) { - // The product is not being uninstalled. - if (type != BrowserDistribution::CHROME_APP_HOST) { - keep_binaries = true; - break; - } else { - // If binaries/chrome are at system-level, we can discard them at - // user-level... - if (!machine_state.GetProductState( - true, // system-level - BrowserDistribution::CHROME_BROWSER) && - !machine_state.GetProductState( - true, // system-level - BrowserDistribution::CHROME_BINARIES)) { - // ... otherwise keep them. - keep_binaries = true; - break; - } - } - } - - // The product is being uninstalled. - } - if (!keep_binaries && - machine_state.GetProductState(system_install(), - BrowserDistribution::CHROME_BINARIES)) { - Product* p = AddProductFromPreferences( - BrowserDistribution::CHROME_BINARIES, prefs, machine_state); - VLOG(1) << (is_uninstall ? "Uninstall" : "Install") - << " distribution: " << p->distribution()->GetDisplayName(); - } - } - BrowserDistribution* operand = NULL; if (is_uninstall) { @@ -272,18 +141,13 @@ void InstallerState::Initialize(const base::CommandLine& command_line, operation_ = MULTI_INSTALL; } - // Initial, over, and un-installs will take place under one of the product app - // guids (Chrome, App Host, or Binaries, in order of preference). + // Initial, over, and un-installs will take place under Chrome or Binaries + // app guid. if (operand == NULL) { - BrowserDistribution::Type operand_distribution_type = - BrowserDistribution::CHROME_BINARIES; - if (prefs.install_chrome()) - operand_distribution_type = BrowserDistribution::CHROME_BROWSER; - else if (prefs.install_chrome_app_launcher()) - operand_distribution_type = BrowserDistribution::CHROME_APP_HOST; - operand = BrowserDistribution::GetSpecificDistribution( - operand_distribution_type); + prefs.install_chrome() ? + BrowserDistribution::CHROME_BROWSER : + BrowserDistribution::CHROME_BINARIES); } state_key_ = operand->GetStateKey(); @@ -606,7 +470,6 @@ void InstallerState::Clear() { root_key_ = NULL; msi_ = false; verbose_logging_ = false; - ensure_google_update_present_ = false; } bool InstallerState::AnyExistsAndIsInUse( diff --git a/chrome/installer/util/installer_state.h b/chrome/installer/util/installer_state.h index 7b22cf6..e9306d8 100644 --- a/chrome/installer/util/installer_state.h +++ b/chrome/installer/util/installer_state.h @@ -113,12 +113,6 @@ class InstallerState { // TODO(grt): Eradicate the bool in favor of the enum. bool is_multi_install() const; - // A convenient method returning the presence of the - // --ensure-google-update-present switch. - bool ensure_google_update_present() const { - return ensure_google_update_present_; - } - // The full path to the place where the operand resides. const base::FilePath& target_path() const { return target_path_; } @@ -274,7 +268,6 @@ class InstallerState { #endif bool msi_; bool verbose_logging_; - bool ensure_google_update_present_; private: DISALLOW_COPY_AND_ASSIGN(InstallerState); diff --git a/chrome/installer/util/master_preferences.cc b/chrome/installer/util/master_preferences.cc index 7bf5c2f7..2c08b1f 100644 --- a/chrome/installer/util/master_preferences.cc +++ b/chrome/installer/util/master_preferences.cc @@ -73,7 +73,6 @@ namespace installer { MasterPreferences::MasterPreferences() : distribution_(NULL), preferences_read_from_file_(false), chrome_(true), - chrome_app_launcher_(false), multi_install_(false) { InitializeFromCommandLine(*base::CommandLine::ForCurrentProcess()); } @@ -82,7 +81,6 @@ MasterPreferences::MasterPreferences(const base::CommandLine& cmd_line) : distribution_(NULL), preferences_read_from_file_(false), chrome_(true), - chrome_app_launcher_(false), multi_install_(false) { InitializeFromCommandLine(cmd_line); } @@ -91,7 +89,6 @@ MasterPreferences::MasterPreferences(const base::FilePath& prefs_path) : distribution_(NULL), preferences_read_from_file_(false), chrome_(true), - chrome_app_launcher_(false), multi_install_(false) { std::string json_data; // Failure to read the file is ignored as |json_data| will be the empty string @@ -109,7 +106,6 @@ MasterPreferences::MasterPreferences(const std::string& prefs) : distribution_(NULL), preferences_read_from_file_(false), chrome_(true), - chrome_app_launcher_(false), multi_install_(false) { InitializeFromString(prefs); } @@ -139,10 +135,6 @@ void MasterPreferences::InitializeFromCommandLine( } translate_switches[] = { { installer::switches::kAutoLaunchChrome, installer::master_preferences::kAutoLaunchChrome }, - { installer::switches::kChromeAppHostDeprecated, - installer::master_preferences::kChromeAppHostDeprecated }, - { installer::switches::kChromeAppLauncher, - installer::master_preferences::kChromeAppLauncher }, { installer::switches::kChrome, installer::master_preferences::kChrome }, { installer::switches::kDisableLogging, @@ -225,20 +217,10 @@ bool MasterPreferences::InitializeFromString(const std::string& json_data) { void MasterPreferences::InitializeProductFlags() { // Make sure we start out with the correct defaults. multi_install_ = false; - chrome_app_launcher_ = false; chrome_ = true; GetBool(installer::master_preferences::kMultiInstall, &multi_install_); - GetBool(installer::master_preferences::kChromeAppLauncher, - &chrome_app_launcher_); - - // The deprecated switch --app-host behaves like --app-launcher. - bool chrome_app_host = false; - GetBool(installer::master_preferences::kChromeAppHostDeprecated, - &chrome_app_host); - chrome_app_launcher_ = chrome_app_launcher_ || chrome_app_host; - // When multi-install is specified, the checks are pretty simple (in theory): // In order to be installed/uninstalled, each product must have its switch // present on the command line. diff --git a/chrome/installer/util/master_preferences.h b/chrome/installer/util/master_preferences.h index 83f1150..9a7355e 100644 --- a/chrome/installer/util/master_preferences.h +++ b/chrome/installer/util/master_preferences.h @@ -171,10 +171,6 @@ class MasterPreferences { return chrome_; } - bool install_chrome_app_launcher() const { - return chrome_app_launcher_; - } - bool is_multi_install() const { return multi_install_; } @@ -212,7 +208,6 @@ class MasterPreferences { base::DictionaryValue* distribution_; bool preferences_read_from_file_; bool chrome_; - bool chrome_app_launcher_; bool multi_install_; private: diff --git a/chrome/installer/util/master_preferences_constants.cc b/chrome/installer/util/master_preferences_constants.cc index 1676d21..3baacc1 100644 --- a/chrome/installer/util/master_preferences_constants.cc +++ b/chrome/installer/util/master_preferences_constants.cc @@ -9,9 +9,6 @@ namespace master_preferences { const char kAltShortcutText[] = "alternate_shortcut_text"; const char kAutoLaunchChrome[] = "auto_launch_chrome"; const char kChrome[] = "chrome"; - // TODO(huangs): Remove by M27. - const char kChromeAppHostDeprecated[] = "app_host"; - const char kChromeAppLauncher[] = "app_launcher"; const char kChromeShortcutIconIndex[] = "chrome_shortcut_icon_index"; const char kCreateAllShortcuts[] = "create_all_shortcuts"; const char kDisableLogging[] = "disable_logging"; diff --git a/chrome/installer/util/master_preferences_constants.h b/chrome/installer/util/master_preferences_constants.h index 8b03d12..a8ebd48 100644 --- a/chrome/installer/util/master_preferences_constants.h +++ b/chrome/installer/util/master_preferences_constants.h @@ -22,10 +22,6 @@ extern const char kAltShortcutText[]; extern const char kAutoLaunchChrome[]; // Boolean. This is to be a Chrome install. (When using MultiInstall) extern const char kChrome[]; -// Boolean. This is to be a Chrome App Host install. -extern const char kChromeAppHostDeprecated[]; // TODO(huangs): Remove by M27. -// Boolean. This is to be a Chrome App Launcher install. -extern const char kChromeAppLauncher[]; // Integer. Icon index from chrome.exe to use for shortcuts. extern const char kChromeShortcutIconIndex[]; // Boolean. This is a legacy preference and should no longer be used; it is diff --git a/chrome/installer/util/prebuild/create_string_rc.py b/chrome/installer/util/prebuild/create_string_rc.py index 96ca2ab..8c4bf22 100755 --- a/chrome/installer/util/prebuild/create_string_rc.py +++ b/chrome/installer/util/prebuild/create_string_rc.py @@ -47,13 +47,12 @@ from grit.extern import tclib STRING_IDS = [ 'IDS_PRODUCT_NAME', 'IDS_SXS_SHORTCUT_NAME', - 'IDS_PRODUCT_APP_LAUNCHER_NAME', + 'IDS_PRODUCT_APP_LAUNCHER_NAME', # Used in App Launcher registry. 'IDS_PRODUCT_BINARIES_NAME', 'IDS_PRODUCT_DESCRIPTION', 'IDS_UNINSTALL_CHROME', 'IDS_ABOUT_VERSION_COMPANY_NAME', 'IDS_INSTALL_HIGHER_VERSION', - 'IDS_INSTALL_HIGHER_VERSION_APP_LAUNCHER', 'IDS_INSTALL_FAILED', 'IDS_SAME_VERSION_REPAIR_FAILED', 'IDS_SETUP_PATCH_FAILED', @@ -69,9 +68,6 @@ STRING_IDS = [ 'IDS_OEM_MAIN_SHORTCUT_NAME', 'IDS_SHORTCUT_TOOLTIP', 'IDS_SHORTCUT_NEW_WINDOW', - 'IDS_APP_LAUNCHER_PRODUCT_DESCRIPTION', - 'IDS_APP_LAUNCHER_SHORTCUT_TOOLTIP', - 'IDS_UNINSTALL_APP_LAUNCHER', 'IDS_APP_LIST_SHORTCUT_NAME', 'IDS_APP_LIST_SHORTCUT_NAME_CANARY', 'IDS_APP_SHORTCUTS_SUBDIR_NAME', diff --git a/chrome/installer/util/product.cc b/chrome/installer/util/product.cc index 89486a8..bd0b268 100644 --- a/chrome/installer/util/product.cc +++ b/chrome/installer/util/product.cc @@ -10,7 +10,6 @@ #include "base/logging.h" #include "base/process/launch.h" #include "base/win/registry.h" -#include "chrome/installer/util/chrome_app_host_operations.h" #include "chrome/installer/util/chrome_binaries_operations.h" #include "chrome/installer/util/chrome_browser_operations.h" #include "chrome/installer/util/chrome_browser_sxs_operations.h" @@ -38,9 +37,6 @@ Product::Product(BrowserDistribution* distribution) case BrowserDistribution::CHROME_FRAME: operations_.reset(new ChromeFrameOperations()); break; - case BrowserDistribution::CHROME_APP_HOST: - operations_.reset(new ChromeAppHostOperations()); - break; case BrowserDistribution::CHROME_BINARIES: operations_.reset(new ChromeBinariesOperations()); break; diff --git a/chrome/installer/util/product.h b/chrome/installer/util/product.h index a815fb2..e810139 100644 --- a/chrome/installer/util/product.h +++ b/chrome/installer/util/product.h @@ -61,10 +61,6 @@ class Product { return distribution_->GetType() == BrowserDistribution::CHROME_FRAME; } - bool is_chrome_app_host() const { - return distribution_->GetType() == BrowserDistribution::CHROME_APP_HOST; - } - bool is_chrome_binaries() const { return distribution_->GetType() == BrowserDistribution::CHROME_BINARIES; } diff --git a/chrome/installer/util/util_constants.cc b/chrome/installer/util/util_constants.cc index 9a65857..6975262 100644 --- a/chrome/installer/util/util_constants.cc +++ b/chrome/installer/util/util_constants.cc @@ -15,15 +15,6 @@ const char kAutoLaunchChrome[] = "auto-launch-chrome"; // Currently this is only required when used in combination with kMultiInstall. const char kChrome[] = "chrome"; -// Install Chrome App Host. This is now interpreted as kChromeAppLauncher. -// TODO(huangs): Remove by M27. -const char kChromeAppHostDeprecated[] = "app-host"; - -// Install Chrome App Launcher, which subsumes Chrome App Host, i.e., -// App Launcher install converts App Host to App Launcher, and all subsequent -// App Host updates/uninstalls become App Launcher updates/uninstalls. -const char kChromeAppLauncher[] = "app-launcher"; - // Install Chrome Frame. const char kChromeFrame[] = "chrome-frame"; @@ -63,9 +54,6 @@ const char kDoNotRemoveSharedItems[] = "do-not-remove-shared-items"; // Enable logging at the error level. This is the default behavior. const char kEnableLogging[] = "enable-logging"; -// Ensures that Google Update is present at the current level of installation. -const char kEnsureGoogleUpdatePresent[] = "ensure-google-update-present"; - // Same as kConfigureUserSettings above; except the checks to know whether // first run already occured are bypassed and shortcuts are created either way // (kConfigureUserSettings also needs to be on the command-line for this to have @@ -108,10 +96,6 @@ const char kNewSetupExe[] = "new-setup-exe"; // Notify the installer that the OS has been upgraded. const char kOnOsUpgrade[] = "on-os-upgrade"; -// Determines whether or not EULA has been accepted at some point. Returns via -// exit code: 0 if EULA not accepted, 1 if EULA accepted, and E_FAIL on error. -const char kQueryEULAAcceptance[] = "query-eula-acceptance"; - // Requests that setup attempt to reenable autoupdates for Chrome. const char kReenableAutoupdates[] = "reenable-autoupdates"; @@ -213,7 +197,6 @@ const char kOutputFile[] = "output-file"; // Active Setup. const wchar_t kActiveSetupExe[] = L"chrmstp.exe"; const wchar_t kAppLauncherGuid[] = L"{FDA71E6F-AC4C-4a00-8B70-9958A68906BF}"; -const wchar_t kChromeAppHostExe[] = L"app_host.exe"; const wchar_t kChromeDll[] = L"chrome.dll"; const wchar_t kChromeChildDll[] = L"chrome_child.dll"; const wchar_t kChromeExe[] = L"chrome.exe"; @@ -226,9 +209,6 @@ const wchar_t kChromeMetroDll[] = L"metro_driver.dll"; const wchar_t kChromeNewExe[] = L"new_chrome.exe"; const wchar_t kChromeOldExe[] = L"old_chrome.exe"; const wchar_t kCmdOnOsUpgrade[] = L"on-os-upgrade"; -const wchar_t kCmdQueryEULAAcceptance[] = L"query-eula-acceptance"; -const wchar_t kCmdQuickEnableApplicationHost[] = - L"quick-enable-application-host"; const wchar_t kCmdQuickEnableCf[] = L"quick-enable-cf"; const wchar_t kDelegateExecuteExe[] = L"delegate_execute.exe"; const wchar_t kEULASentinelFile[] = L"EULA Accepted"; diff --git a/chrome/installer/util/util_constants.h b/chrome/installer/util/util_constants.h index 301f26f..d4dc6862 100644 --- a/chrome/installer/util/util_constants.h +++ b/chrome/installer/util/util_constants.h @@ -148,8 +148,6 @@ namespace switches { extern const char kAutoLaunchChrome[]; extern const char kChrome[]; -extern const char kChromeAppHostDeprecated[]; // TODO(huangs): Remove by M27. -extern const char kChromeAppLauncher[]; extern const char kChromeFrame[]; extern const char kChromeSxS[]; extern const char kConfigureUserSettings[]; @@ -160,7 +158,6 @@ extern const char kDoNotLaunchChrome[]; extern const char kDoNotRegisterForUpdateLaunch[]; extern const char kDoNotRemoveSharedItems[]; extern const char kEnableLogging[]; -extern const char kEnsureGoogleUpdatePresent[]; extern const char kForceConfigureUserSettings[]; extern const char kForceUninstall[]; extern const char kInstallArchive[]; @@ -171,7 +168,6 @@ extern const char kMsi[]; extern const char kMultiInstall[]; extern const char kNewSetupExe[]; extern const char kOnOsUpgrade[]; -extern const char kQueryEULAAcceptance[]; extern const char kReenableAutoupdates[]; extern const char kRegisterChromeBrowser[]; extern const char kRegisterChromeBrowserSuffix[]; @@ -202,7 +198,6 @@ extern const char kOutputFile[]; extern const wchar_t kActiveSetupExe[]; extern const wchar_t kAppLauncherGuid[]; -extern const wchar_t kChromeAppHostExe[]; extern const wchar_t kChromeDll[]; extern const wchar_t kChromeChildDll[]; extern const wchar_t kChromeExe[]; @@ -215,8 +210,6 @@ extern const wchar_t kChromeMetroDll[]; extern const wchar_t kChromeNewExe[]; extern const wchar_t kChromeOldExe[]; extern const wchar_t kCmdOnOsUpgrade[]; -extern const wchar_t kCmdQueryEULAAcceptance[]; -extern const wchar_t kCmdQuickEnableApplicationHost[]; extern const wchar_t kCmdQuickEnableCf[]; extern const wchar_t kDelegateExecuteExe[]; extern const wchar_t kEULASentinelFile[]; |