| Index: chrome/test/mini_installer_test/installer_test_util.cc
|
| diff --git a/chrome/test/mini_installer_test/installer_test_util.cc b/chrome/test/mini_installer_test/installer_test_util.cc
|
| deleted file mode 100644
|
| index f8cbb399f4b9dc12cc464fda1dc704682d9df7d0..0000000000000000000000000000000000000000
|
| --- a/chrome/test/mini_installer_test/installer_test_util.cc
|
| +++ /dev/null
|
| @@ -1,300 +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/test/mini_installer_test/installer_test_util.h"
|
| -
|
| -#include "base/file_util.h"
|
| -#include "base/path_service.h"
|
| -#include "base/process/kill.h"
|
| -#include "base/process/launch.h"
|
| -#include "base/process/process.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/threading/platform_thread.h"
|
| -#include "chrome/common/chrome_result_codes.h"
|
| -#include "chrome/installer/util/google_update_constants.h"
|
| -#include "chrome/installer/util/helper.h"
|
| -#include "chrome/installer/util/install_util.h"
|
| -#include "chrome/installer/util/util_constants.h"
|
| -#include "chrome/test/mini_installer_test/mini_installer_test_constants.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using installer::InstallationValidator;
|
| -
|
| -namespace {
|
| -
|
| -BrowserDistribution::Type ToBrowserDistributionType(
|
| - InstallationValidator::InstallationType type) {
|
| - const int kChromeMask =
|
| - (InstallationValidator::ProductBits::CHROME_SINGLE |
|
| - InstallationValidator::ProductBits::CHROME_MULTI);
|
| - const int kChromeFrameMask =
|
| - (InstallationValidator::ProductBits::CHROME_FRAME_SINGLE |
|
| - InstallationValidator::ProductBits::CHROME_FRAME_MULTI);
|
| - const int kBinariesMask =
|
| - (InstallationValidator::ProductBits::CHROME_MULTI |
|
| - InstallationValidator::ProductBits::CHROME_FRAME_MULTI);
|
| - // Default return is CHROME_BINARIES.
|
| - BrowserDistribution::Type ret_value = BrowserDistribution::CHROME_BINARIES;
|
| - if (type & kChromeMask)
|
| - ret_value = BrowserDistribution::CHROME_BROWSER;
|
| - if (type & kChromeFrameMask)
|
| - ret_value = BrowserDistribution::CHROME_FRAME;
|
| - if (type & kBinariesMask)
|
| - ret_value = BrowserDistribution::CHROME_BINARIES;
|
| - return ret_value;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace installer_test {
|
| -
|
| -bool DeleteInstallDirectory(bool system_level,
|
| - InstallationValidator::InstallationType type) {
|
| - std::string version = GetVersion(type);
|
| - if (version.empty())
|
| - return false;
|
| - base::FilePath path;
|
| - bool has_install_dir = GetInstallDirectory(system_level,
|
| - ToBrowserDistributionType(type),
|
| - &path);
|
| - if (!has_install_dir || !base::PathExists(path))
|
| - return false;
|
| - path = path.AppendASCII(version);
|
| - return base::DeleteFile(path, true);
|
| -}
|
| -
|
| -bool DeleteRegistryKey(bool system_level,
|
| - InstallationValidator::InstallationType type,
|
| - REGSAM wow64_access) {
|
| - BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution(
|
| - ToBrowserDistributionType(type));
|
| - base::FilePath::StringType key(google_update::kRegPathClients);
|
| - key.push_back(base::FilePath::kSeparators[0]);
|
| - key.append(dist->GetAppGuid());
|
| - HKEY root = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
|
| - return InstallUtil::DeleteRegistryKey(root, key, wow64_access);
|
| -}
|
| -
|
| -bool GetChromeInstallDirectory(bool system_level, base::FilePath* path) {
|
| - return GetInstallDirectory(system_level,
|
| - BrowserDistribution::CHROME_BROWSER, path);
|
| -}
|
| -
|
| -bool GetInstallDirectory(bool system_level,
|
| - BrowserDistribution::Type type, base::FilePath* path) {
|
| - BrowserDistribution* dist =
|
| - BrowserDistribution::GetSpecificDistribution(type);
|
| - *path = installer::GetChromeInstallPath(system_level, dist);
|
| - base::FilePath parent;
|
| - if (system_level)
|
| - PathService::Get(base::DIR_PROGRAM_FILES, &parent);
|
| - else
|
| - PathService::Get(base::DIR_LOCAL_APP_DATA, &parent);
|
| - return parent.IsParent(*path);
|
| -}
|
| -
|
| -bool GetInstalledProducts(
|
| - std::vector<installer_test::InstalledProduct>* products) {
|
| - // Clear out the products list.
|
| - products->clear();
|
| - // Check user-level and system-level for products.
|
| - BrowserDistribution* current_dist;
|
| - installer_test::InstalledProduct current_prod;
|
| - for (int i = 0; i < 2; ++i) {
|
| - const bool system_level = (i != 0);
|
| - InstallationValidator::InstallationType type =
|
| - InstallationValidator::NO_PRODUCTS;
|
| - bool is_valid =
|
| - InstallationValidator::ValidateInstallationType(system_level, &type);
|
| - if (type != InstallationValidator::NO_PRODUCTS) {
|
| - current_dist = BrowserDistribution::GetSpecificDistribution(
|
| - ToBrowserDistributionType(type));
|
| - Version version;
|
| - InstallUtil::GetChromeVersion(current_dist, system_level, &version);
|
| - if (version.IsValid()) {
|
| - current_prod.type = type;
|
| - current_prod.version = version.GetString();
|
| - current_prod.system = system_level;
|
| - products->push_back(current_prod);
|
| - }
|
| - }
|
| - }
|
| - return !products->empty();
|
| -}
|
| -
|
| -bool ValidateInstall(bool system_level,
|
| - InstallationValidator::InstallationType expected,
|
| - const std::string& version) {
|
| - if (GetVersion(expected) != version)
|
| - return false;
|
| - InstallationValidator::InstallationType type;
|
| - InstallationValidator::ValidateInstallationType(system_level, &type);
|
| - if (type == InstallationValidator::NO_PRODUCTS) {
|
| - LOG(ERROR) << "No installed Chrome or Chrome Frame versions found.";
|
| - return false;
|
| - }
|
| - if ((type & expected) == 0) {
|
| - LOG(ERROR) << "Expected type: " << expected << "\n Actual type: " << type;
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -std::string GetVersion(InstallationValidator::InstallationType product) {
|
| - std::vector<installer_test::InstalledProduct> installed;
|
| - if (GetInstalledProducts(&installed)) {
|
| - for (size_t i = 0; i < installed.size(); ++i) {
|
| - if ((installed[i].type & product) != 0) {
|
| - return installed[i].version;
|
| - }
|
| - }
|
| - }
|
| - return "";
|
| -}
|
| -
|
| -bool Install(const base::FilePath& installer) {
|
| - if (!base::PathExists(installer)) {
|
| - LOG(ERROR) << "Installer does not exist: " << installer.MaybeAsASCII();
|
| - return false;
|
| - }
|
| - CommandLine command(installer);
|
| - LOG(INFO) << "Running installer command: "
|
| - << command.GetCommandLineString();
|
| - return installer_test::RunAndWaitForCommandToFinish(command);
|
| -}
|
| -
|
| -bool Install(const base::FilePath& installer, const SwitchBuilder& switches) {
|
| - if (!base::PathExists(installer)) {
|
| - LOG(ERROR) << "Installer does not exist: " << installer.MaybeAsASCII();
|
| - return false;
|
| - }
|
| - CommandLine command(installer);
|
| - command.AppendArguments(switches.GetSwitches(), false);
|
| - LOG(INFO) << "Running installer command: "
|
| - << command.GetCommandLineString();
|
| - return installer_test::RunAndWaitForCommandToFinish(command);
|
| -}
|
| -
|
| -bool LaunchChrome(bool close_after_launch, bool system_level) {
|
| - base::CleanupProcesses(installer::kChromeExe, base::TimeDelta(),
|
| - content::RESULT_CODE_HUNG, NULL);
|
| - base::FilePath install_path;
|
| - if (!GetChromeInstallDirectory(
|
| - system_level, &install_path)) {
|
| - LOG(ERROR) << "Could not find Chrome install directory";
|
| - return false;
|
| - }
|
| - install_path = install_path.Append(installer::kChromeExe);
|
| - CommandLine browser(install_path);
|
| -
|
| - base::FilePath exe = browser.GetProgram();
|
| - LOG(INFO) << "Browser launch command: " << browser.GetCommandLineString();
|
| - base::ProcessHandle chrome;
|
| - if (!base::LaunchProcess(browser, base::LaunchOptions(), &chrome)) {
|
| - LOG(ERROR) << "Could not launch process: " << exe.value();
|
| - return false;
|
| - }
|
| - if (close_after_launch) {
|
| - if (base::KillProcess(chrome, 0, true)) {
|
| - LOG(ERROR) << "Failed to close chrome.exe after launch.";
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool LaunchIE(const std::string& url) {
|
| - base::FilePath browser_path;
|
| - PathService::Get(base::DIR_PROGRAM_FILES, &browser_path);
|
| - browser_path = browser_path.Append(mini_installer_constants::kIELocation);
|
| - browser_path = browser_path.Append(mini_installer_constants::kIEProcessName);
|
| -
|
| - CommandLine cmd_line(browser_path);
|
| - cmd_line.AppendArg(url);
|
| - return base::LaunchProcess(cmd_line, base::LaunchOptions(), NULL);
|
| -}
|
| -
|
| -bool UninstallAll() {
|
| - base::CleanupProcesses(installer::kChromeExe, base::TimeDelta(),
|
| - content::RESULT_CODE_HUNG, NULL);
|
| - base::CleanupProcesses(installer::kChromeFrameHelperExe, base::TimeDelta(),
|
| - content::RESULT_CODE_HUNG, NULL);
|
| - std::vector<installer_test::InstalledProduct> installed;
|
| - if (!GetInstalledProducts(&installed)) {
|
| - LOG(WARNING) << "No installed products to uninstall.";
|
| - return false;
|
| - }
|
| - bool ret_val = false;
|
| - for (size_t i = 0; i < installed.size(); ++i) {
|
| - if (!Uninstall(installed[i].system, installed[i].type))
|
| - ret_val = false;
|
| - }
|
| - return ret_val;
|
| -}
|
| -
|
| -bool Uninstall(bool system_level,
|
| - InstallationValidator::InstallationType type) {
|
| - std::vector<BrowserDistribution::Type> products;
|
| - if (ToBrowserDistributionType(type) !=
|
| - BrowserDistribution::CHROME_BINARIES) {
|
| - products.push_back(ToBrowserDistributionType(type));
|
| - } else {
|
| - products.push_back(BrowserDistribution::CHROME_BROWSER);
|
| - products.push_back(BrowserDistribution::CHROME_FRAME);
|
| - }
|
| - bool ret_val = false;
|
| - for (size_t i = 0; i < products.size(); ++i) {
|
| - if (!Uninstall(system_level, products[i]))
|
| - ret_val = false;
|
| - }
|
| - return ret_val;
|
| -}
|
| -
|
| -bool Uninstall(bool system_level,
|
| - BrowserDistribution::Type product) {
|
| - static const int kMultiMask =
|
| - (InstallationValidator::ProductBits::CHROME_MULTI |
|
| - InstallationValidator::ProductBits::CHROME_FRAME_MULTI);
|
| - CommandLine uninstall_cmd(InstallUtil::GetChromeUninstallCmd(system_level,
|
| - product));
|
| - CommandLine::StringType archive =
|
| - uninstall_cmd.GetProgram().DirName().AppendASCII("chrome.7z").value();
|
| - uninstall_cmd.AppendSwitch(installer::switches::kUninstall);
|
| - uninstall_cmd.AppendSwitch(installer::switches::kForceUninstall);
|
| - uninstall_cmd.AppendSwitchNative(
|
| - installer::switches::kInstallArchive, archive);
|
| - if (system_level)
|
| - uninstall_cmd.AppendSwitch(installer::switches::kSystemLevel);
|
| - if ((product & kMultiMask) !=0)
|
| - uninstall_cmd.AppendSwitch(installer::switches::kMultiInstall);
|
| - LOG(INFO) << "Uninstall command: " << uninstall_cmd.GetCommandLineString();
|
| - bool ret_val = RunAndWaitForCommandToFinish(uninstall_cmd);
|
| - // Close IE notification when uninstalling Chrome Frame.
|
| - base::CleanupProcesses(mini_installer_constants::kIEProcessName,
|
| - base::TimeDelta(),
|
| - content::RESULT_CODE_HUNG, NULL);
|
| - return ret_val;
|
| -}
|
| -
|
| -
|
| -bool RunAndWaitForCommandToFinish(CommandLine command) {
|
| - if (!base::PathExists(command.GetProgram())) {
|
| - LOG(ERROR) << "Command executable does not exist: "
|
| - << command.GetProgram().MaybeAsASCII();
|
| - return false;
|
| - }
|
| - base::ProcessHandle process;
|
| - if (!base::LaunchProcess(command, base::LaunchOptions(), &process)) {
|
| - LOG(ERROR) << "Failed to launch command: "
|
| - << command.GetCommandLineString();
|
| - return false;
|
| - }
|
| - if (!base::WaitForSingleProcess(process, base::TimeDelta::FromMinutes(1))) {
|
| - LOG(ERROR) << "Launched process did not complete.";
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -} // namespace installer_test
|
|
|