Chromium Code Reviews| Index: chrome/installer/setup/install_worker_unittest.cc |
| diff --git a/chrome/installer/setup/install_worker_unittest.cc b/chrome/installer/setup/install_worker_unittest.cc |
| index d7a06fd3bf8bf4f0614190737ffe545dc0b5a6e5..7a9307c63cb92492e62e2d4e9f82b809112205bf 100644 |
| --- a/chrome/installer/setup/install_worker_unittest.cc |
| +++ b/chrome/installer/setup/install_worker_unittest.cc |
| @@ -116,7 +116,6 @@ class MockProductState : public ProductState { |
| public: |
| // Takes ownership of |version|. |
| void set_version(base::Version* version) { version_.reset(version); } |
| - void set_multi_install(bool multi) { multi_install_ = multi; } |
| void set_brand(const std::wstring& brand) { brand_ = brand; } |
| void set_eula_accepted(DWORD eula_accepted) { |
| has_eula_accepted_ = true; |
| @@ -170,10 +169,6 @@ class MockInstallerState : public InstallerState { |
| void set_state_type(BrowserDistribution::Type state_type) { |
| state_type_ = state_type; |
| } |
| - |
| - void set_package_type(PackageType type) { |
| - InstallerState::set_package_type(type); |
| - } |
| }; |
| // The test fixture |
| @@ -201,45 +196,11 @@ class InstallWorkerTest : public testing::Test { |
| temp_dir_ = base::FilePath(L"C:\\UnlikelyPath\\Temp\\chrome_123"); |
| } |
| - void TearDown() override {} |
| - |
| - void MaybeAddBinariesToInstallationState( |
| - bool system_level, |
| - MockInstallationState* installation_state) { |
| - if (installation_state->GetProductState( |
| - system_level, BrowserDistribution::CHROME_BINARIES) == NULL) { |
| - MockProductState product_state; |
| - product_state.set_version(new base::Version(*current_version_)); |
| - product_state.set_brand(L"TEST"); |
| - product_state.set_multi_install(true); |
| - BrowserDistribution* dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_BINARIES); |
| - base::FilePath install_path = |
| - installer::GetChromeInstallPath(system_level, dist); |
| - product_state.SetUninstallProgram( |
| - install_path.AppendASCII(current_version_->GetString()) |
| - .Append(installer::kInstallerDir) |
| - .Append(installer::kSetupExe)); |
| - product_state.AddUninstallSwitch(installer::switches::kUninstall); |
| - product_state.AddUninstallSwitch(installer::switches::kMultiInstall); |
| - if (system_level) |
| - product_state.AddUninstallSwitch(installer::switches::kSystemLevel); |
| - installation_state->SetProductState(system_level, |
| - BrowserDistribution::CHROME_BINARIES, |
| - product_state); |
| - } |
| - } |
| - |
| void AddChromeToInstallationState( |
| bool system_level, |
| - bool multi_install, |
| MockInstallationState* installation_state) { |
| - if (multi_install) |
| - MaybeAddBinariesToInstallationState(system_level, installation_state); |
| MockProductState product_state; |
| product_state.set_version(new base::Version(*current_version_)); |
| - product_state.set_multi_install(multi_install); |
| product_state.set_brand(L"TEST"); |
| product_state.set_eula_accepted(1); |
| BrowserDistribution* dist = |
| @@ -254,59 +215,21 @@ class InstallWorkerTest : public testing::Test { |
| product_state.AddUninstallSwitch(installer::switches::kUninstall); |
| if (system_level) |
| product_state.AddUninstallSwitch(installer::switches::kSystemLevel); |
| - if (multi_install) { |
| - product_state.AddUninstallSwitch(installer::switches::kMultiInstall); |
| - product_state.AddUninstallSwitch(installer::switches::kChrome); |
| - } |
| installation_state->SetProductState(system_level, |
| BrowserDistribution::CHROME_BROWSER, |
| product_state); |
| } |
| - void AddChromeFrameToInstallationState( |
| - bool system_level, |
| - bool multi_install, |
| - MockInstallationState* installation_state) { |
| - if (multi_install) |
| - MaybeAddBinariesToInstallationState(system_level, installation_state); |
| - MockProductState product_state; |
| - product_state.set_version(new base::Version(*current_version_)); |
| - product_state.set_multi_install(multi_install); |
| - BrowserDistribution* dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - multi_install ? BrowserDistribution::CHROME_BINARIES : |
| - BrowserDistribution::CHROME_FRAME); |
| - base::FilePath install_path = |
| - installer::GetChromeInstallPath(system_level, dist); |
| - product_state.SetUninstallProgram( |
| - install_path.AppendASCII(current_version_->GetString()) |
| - .Append(installer::kInstallerDir) |
| - .Append(installer::kSetupExe)); |
| - product_state.AddUninstallSwitch(installer::switches::kUninstall); |
| - product_state.AddUninstallSwitch(installer::switches::kChromeFrame); |
| - if (system_level) |
| - product_state.AddUninstallSwitch(installer::switches::kSystemLevel); |
| - if (multi_install) |
| - product_state.AddUninstallSwitch(installer::switches::kMultiInstall); |
| - |
| - installation_state->SetProductState(system_level, |
| - BrowserDistribution::CHROME_FRAME, |
| - product_state); |
| - } |
| - |
| - MockInstallationState* BuildChromeInstallationState(bool system_level, |
| - bool multi_install) { |
| + MockInstallationState* BuildChromeInstallationState(bool system_level) { |
| std::unique_ptr<MockInstallationState> installation_state( |
| new MockInstallationState()); |
| - AddChromeToInstallationState(system_level, multi_install, |
| - installation_state.get()); |
| + AddChromeToInstallationState(system_level, installation_state.get()); |
| return installation_state.release(); |
| } |
| static MockInstallerState* BuildBasicInstallerState( |
| bool system_install, |
| - bool multi_install, |
| const InstallationState& machine_state, |
| InstallerState::Operation operation) { |
| std::unique_ptr<MockInstallerState> installer_state( |
| @@ -319,39 +242,9 @@ class InstallWorkerTest : public testing::Test { |
| // Hope this next one isn't checked for now. |
| installer_state->set_state_key(L"PROBABLY_INVALID_REG_PATH"); |
| installer_state->set_state_type(BrowserDistribution::CHROME_BROWSER); |
| - installer_state->set_package_type(multi_install ? |
| - InstallerState::MULTI_PACKAGE : |
| - InstallerState::SINGLE_PACKAGE); |
| return installer_state.release(); |
| } |
| - static void AddChromeBinariesToInstallerState( |
| - const InstallationState& machine_state, |
| - MockInstallerState* installer_state) { |
| - if (!installer_state->is_multi_install()) { |
| - NOTREACHED(); |
| - return; |
| - } |
| - if (installer_state->FindProduct(BrowserDistribution::CHROME_BINARIES)) |
| - return; |
| - |
| - // Fresh install or upgrade? |
| - const ProductState* chrome_binaries = |
| - machine_state.GetProductState(installer_state->system_install(), |
| - BrowserDistribution::CHROME_BINARIES); |
| - if (chrome_binaries != NULL) { |
| - installer_state->AddProductFromState(BrowserDistribution::CHROME_BINARIES, |
| - *chrome_binaries); |
| - } else { |
| - BrowserDistribution* dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_BINARIES); |
| - std::unique_ptr<Product> product(new Product(dist)); |
| - product->SetOption(installer::kOptionMultiInstall, true); |
| - installer_state->AddProduct(&product); |
| - } |
| - } |
| - |
| static void AddChromeToInstallerState( |
| const InstallationState& machine_state, |
| MockInstallerState* installer_state) { |
| @@ -359,8 +252,7 @@ class InstallWorkerTest : public testing::Test { |
| const ProductState* chrome = |
| machine_state.GetProductState(installer_state->system_install(), |
| BrowserDistribution::CHROME_BROWSER); |
| - if (chrome != NULL && |
| - chrome->is_multi_install() == installer_state->is_multi_install()) { |
| + if (chrome != NULL) { |
|
gab
2016/12/22 19:05:10
if (chrome)
grt (UTC plus 2)
2017/01/02 10:45:03
Done.
|
| installer_state->AddProductFromState(BrowserDistribution::CHROME_BROWSER, |
| *chrome); |
| } else { |
| @@ -368,70 +260,20 @@ class InstallWorkerTest : public testing::Test { |
| BrowserDistribution::GetSpecificDistribution( |
| BrowserDistribution::CHROME_BROWSER); |
| std::unique_ptr<Product> product(new Product(dist)); |
| - if (installer_state->is_multi_install()) |
| - product->SetOption(installer::kOptionMultiInstall, true); |
| - installer_state->AddProduct(&product); |
| - } |
| - } |
| - |
| - static void AddChromeFrameToInstallerState( |
| - const InstallationState& machine_state, |
| - MockInstallerState* installer_state) { |
| - // Fresh install or upgrade? |
| - const ProductState* cf = |
| - machine_state.GetProductState(installer_state->system_install(), |
| - BrowserDistribution::CHROME_FRAME); |
| - if (cf != NULL) { |
| - installer_state->AddProductFromState(BrowserDistribution::CHROME_FRAME, |
| - *cf); |
| - } else { |
| - BrowserDistribution* dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_FRAME); |
| - std::unique_ptr<Product> product(new Product(dist)); |
| - if (installer_state->is_multi_install()) |
| - product->SetOption(installer::kOptionMultiInstall, true); |
| installer_state->AddProduct(&product); |
| } |
| } |
| static MockInstallerState* BuildChromeInstallerState( |
| bool system_install, |
| - bool multi_install, |
| const InstallationState& machine_state, |
| InstallerState::Operation operation) { |
| std::unique_ptr<MockInstallerState> installer_state( |
| - BuildBasicInstallerState(system_install, multi_install, machine_state, |
| - operation)); |
| - if (multi_install) { |
| - // We don't want to include Chrome Binaries for uninstall if the machine |
| - // has other products. For simplicity, we check Chrome Frame only. |
| - bool machine_has_other_products = |
| - machine_state.GetProductState(system_install, |
| - BrowserDistribution::CHROME_FRAME) != NULL; |
| - if (operation != InstallerState::UNINSTALL || !machine_has_other_products) |
| - AddChromeBinariesToInstallerState(machine_state, installer_state.get()); |
| - } |
| + BuildBasicInstallerState(system_install, machine_state, operation)); |
| AddChromeToInstallerState(machine_state, installer_state.get()); |
| return installer_state.release(); |
| } |
| - static MockInstallerState* BuildChromeFrameInstallerState( |
| - bool system_install, |
| - bool multi_install, |
| - const InstallationState& machine_state, |
| - InstallerState::Operation operation) { |
| - // This method only works for installation/upgrade. |
| - DCHECK(operation != InstallerState::UNINSTALL); |
| - std::unique_ptr<MockInstallerState> installer_state( |
| - BuildBasicInstallerState(system_install, multi_install, machine_state, |
| - operation)); |
| - if (multi_install) |
| - AddChromeBinariesToInstallerState(machine_state, installer_state.get()); |
| - AddChromeFrameToInstallerState(machine_state, installer_state.get()); |
| - return installer_state.release(); |
| - } |
| - |
| protected: |
| std::unique_ptr<base::Version> current_version_; |
| std::unique_ptr<base::Version> new_version_; |
| @@ -445,9 +287,8 @@ class InstallWorkerTest : public testing::Test { |
| // Tests |
| //------------------------------------------------------------------------------ |
| -TEST_F(InstallWorkerTest, TestInstallChromeSingleSystem) { |
| +TEST_F(InstallWorkerTest, TestInstallChromeSystem) { |
| const bool system_level = true; |
| - const bool multi_install = false; |
| NiceMock<MockWorkItemList> work_item_list; |
| const HKEY kRegRoot = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| @@ -465,11 +306,11 @@ TEST_F(InstallWorkerTest, TestInstallChromeSingleSystem) { |
| WorkItem::kWow64Default)); |
| std::unique_ptr<InstallationState> installation_state( |
| - BuildChromeInstallationState(system_level, multi_install)); |
| + BuildChromeInstallationState(system_level)); |
| - std::unique_ptr<InstallerState> installer_state(BuildChromeInstallerState( |
| - system_level, multi_install, *installation_state, |
| - InstallerState::SINGLE_INSTALL_OR_UPDATE)); |
| + std::unique_ptr<InstallerState> installer_state( |
| + BuildChromeInstallerState(system_level, *installation_state, |
| + InstallerState::SINGLE_INSTALL_OR_UPDATE)); |
| // Set up some expectations. |
| // TODO(robertshield): Set up some real expectations. |
| @@ -494,337 +335,3 @@ TEST_F(InstallWorkerTest, TestInstallChromeSingleSystem) { |
| *new_version_.get(), |
| &work_item_list); |
| } |
| - |
| -namespace { |
| - |
| -const wchar_t old_elevation_key[] = |
| - L"SOFTWARE\\Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\" |
| - L"{6C288DD7-76FB-4721-B628-56FAC252E199}"; |
| - |
| -} // namespace |
| - |
| -// A test class for worker functions that manipulate the old IE low rights |
| -// policies. |
| -// Parameters: |
| -// bool : system_level_ |
| -// bool : multi_install_ |
| -class OldIELowRightsTests : public InstallWorkerTest, |
| - public ::testing::WithParamInterface<std::tr1::tuple<bool, bool> > { |
| - protected: |
| - void SetUp() override { |
| - InstallWorkerTest::SetUp(); |
| - |
| - const ParamType& param = GetParam(); |
| - system_level_ = std::tr1::get<0>(param); |
| - multi_install_ = std::tr1::get<1>(param); |
| - root_key_ = system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| - |
| - installation_state_.reset(new MockInstallationState()); |
| - AddChromeFrameToInstallationState(system_level_, multi_install_, |
| - installation_state_.get()); |
| - installer_state_.reset(BuildBasicInstallerState( |
| - system_level_, multi_install_, *installation_state_, |
| - multi_install_ ? InstallerState::MULTI_UPDATE : |
| - InstallerState::SINGLE_INSTALL_OR_UPDATE)); |
| - if (multi_install_) |
| - AddChromeBinariesToInstallerState(*installation_state_, |
| - installer_state_.get()); |
| - AddChromeFrameToInstallerState(*installation_state_, |
| - installer_state_.get()); |
| - } |
| - |
| - std::unique_ptr<MockInstallationState> installation_state_; |
| - std::unique_ptr<MockInstallerState> installer_state_; |
| - bool system_level_; |
| - bool multi_install_; |
| - HKEY root_key_; |
| -}; |
| - |
| -TEST_P(OldIELowRightsTests, AddDeleteOldIELowRightsPolicyWorkItems) { |
| - StrictMock<MockWorkItemList> work_item_list; |
| - |
| - EXPECT_CALL(work_item_list, |
| - AddDeleteRegKeyWorkItem(root_key_, StrEq(old_elevation_key), _)) |
| - .Times(1); |
| - |
| - AddDeleteOldIELowRightsPolicyWorkItems(*installer_state_.get(), |
| - &work_item_list); |
| -} |
| - |
| -INSTANTIATE_TEST_CASE_P(Variations, OldIELowRightsTests, |
| - Combine(Bool(), Bool())); |
| - |
| -TEST_F(InstallWorkerTest, GoogleUpdateWorkItemsTest) { |
| - const bool system_level = true; |
| - const bool multi_install = true; |
| - MockWorkItemList work_item_list; |
| - |
| - // Per-machine single-install Chrome is installed. |
| - std::unique_ptr<MockInstallationState> installation_state( |
| - BuildChromeInstallationState(system_level, false)); |
| - |
| - MockProductState cf_state; |
| - cf_state.set_version(new base::Version(*current_version_)); |
| - cf_state.set_multi_install(false); |
| - |
| - // Per-machine single-install Chrome Frame is installed. |
| - installation_state->SetProductState(system_level, |
| - BrowserDistribution::CHROME_FRAME, cf_state); |
| - |
| - // Prepare per-machine multi-install Chrome for installation. |
| - std::unique_ptr<MockInstallerState> installer_state(BuildChromeInstallerState( |
| - system_level, multi_install, *installation_state, |
| - InstallerState::MULTI_INSTALL)); |
| - |
| - // Expect the multi Client State key to be created for the binaries. |
| -#if defined(GOOGLE_CHROME_BUILD) |
| - BrowserDistribution* multi_dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_BINARIES); |
| - std::wstring multi_app_guid(multi_dist->GetAppGuid()); |
| - std::wstring multi_client_state_suffix(L"ClientState\\" + multi_app_guid); |
| - std::wstring multi_medium_suffix(L"ClientStateMedium\\" + multi_app_guid); |
| - |
| - // Expect ClientStateMedium to be created for system-level installs. |
| - EXPECT_CALL(work_item_list, |
| - AddCreateRegKeyWorkItem(_, HasSubstr(multi_medium_suffix), _)) |
| - .Times(system_level ? 1 : 0); |
| -#else |
| - std::wstring multi_client_state_suffix(L"Chromium Binaries"); |
| -#endif |
| - EXPECT_CALL(work_item_list, AddCreateRegKeyWorkItem( |
| - _, HasSubstr(multi_client_state_suffix), _)) |
| - .Times(AnyNumber()); |
| - |
| - // Expect to see a set value for the "TEST" brand code in the multi Client |
| - // State key. |
| - EXPECT_CALL(work_item_list, AddSetRegStringValueWorkItem( |
| - _, HasSubstr(multi_client_state_suffix), _, |
| - StrEq(google_update::kRegBrandField), |
| - StrEq(L"TEST"), _)).Times(1); |
| - |
| - // There may also be some calls to set 'ap' values. |
| - EXPECT_CALL(work_item_list, AddSetRegStringValueWorkItem( |
| - _, _, _, StrEq(google_update::kRegApField), _, |
| - _)).Times(AnyNumber()); |
| - |
| - // Expect "oeminstall" to be cleared. |
| - EXPECT_CALL(work_item_list, AddDeleteRegValueWorkItem( |
| - _, HasSubstr(multi_client_state_suffix), _, |
| - StrEq(google_update::kRegOemInstallField))) |
| - .Times(1); |
| - |
| - // Expect "eulaaccepted" to set. |
| - EXPECT_CALL(work_item_list, AddSetRegDwordValueWorkItem( |
| - _, HasSubstr(multi_client_state_suffix), _, |
| - StrEq(google_update::kRegEULAAceptedField), |
| - Eq(static_cast<DWORD>(1)), _)).Times(1); |
| - |
| - AddGoogleUpdateWorkItems(*installation_state.get(), |
| - *installer_state.get(), |
| - &work_item_list); |
| -} |
| - |
| -// Test that usagestats values are migrated properly. |
| -TEST_F(InstallWorkerTest, AddUsageStatsWorkItems) { |
|
gab
2016/12/22 19:05:10
This is still used (though moved to anonymous), is
grt (UTC plus 2)
2017/01/02 10:45:03
AddUsageStatsWorkItems was responsible for migrati
|
| - const bool system_level = true; |
| - const bool multi_install = true; |
| - MockWorkItemList work_item_list; |
| - |
| - std::unique_ptr<MockInstallationState> installation_state( |
| - BuildChromeInstallationState(system_level, multi_install)); |
| - |
| - MockProductState chrome_state; |
| - chrome_state.set_version(new base::Version(*current_version_)); |
| - chrome_state.set_multi_install(false); |
| - chrome_state.set_usagestats(1); |
| - |
| - installation_state->SetProductState(system_level, |
| - BrowserDistribution::CHROME_BROWSER, chrome_state); |
| - |
| - std::unique_ptr<MockInstallerState> installer_state(BuildChromeInstallerState( |
| - system_level, multi_install, *installation_state, |
| - InstallerState::MULTI_INSTALL)); |
| - |
| - // Expect the multi Client State key to be created. |
| - BrowserDistribution* multi_dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_BINARIES); |
| - std::wstring multi_app_guid(multi_dist->GetAppGuid()); |
| - EXPECT_CALL(work_item_list, AddCreateRegKeyWorkItem( |
| - _, HasSubstr(multi_app_guid), _)).Times(1); |
| - |
| - // Expect to see a set value for the usagestats in the multi Client State key. |
| - EXPECT_CALL(work_item_list, AddSetRegDwordValueWorkItem( |
| - _, HasSubstr(multi_app_guid), _, |
| - StrEq(google_update::kRegUsageStatsField), |
| - Eq(static_cast<DWORD>(1)), Eq(true))) |
| - .Times(1); |
| - |
| - // Expect to see some values cleaned up from Chrome's keys. |
| - BrowserDistribution* chrome_dist = |
| - BrowserDistribution::GetSpecificDistribution( |
| - BrowserDistribution::CHROME_BROWSER); |
| - if (system_level) { |
| -#if defined(GOOGLE_CHROME_BUILD) |
| - EXPECT_CALL(work_item_list, |
| - AddDeleteRegValueWorkItem( |
| - _, StrEq(chrome_dist->GetStateMediumKey()), _, |
| - StrEq(google_update::kRegUsageStatsField))).Times(1); |
| -#endif |
| - EXPECT_CALL(work_item_list, |
| - AddDeleteRegValueWorkItem( |
| - Eq(HKEY_CURRENT_USER), StrEq(chrome_dist->GetStateKey()), _, |
| - StrEq(google_update::kRegUsageStatsField))).Times(1); |
| - } |
| -#if defined(GOOGLE_CHROME_BUILD) |
| - const int kDeleteTimes = 1; |
| -#else |
| - // Expect two deletes to the same key name since ClientState and |
| - // ClientStateMedium are identical for Chromium. |
| - const int kDeleteTimes = 2; |
| -#endif |
| - EXPECT_CALL( |
| - work_item_list, |
| - AddDeleteRegValueWorkItem( |
| - Eq(installer_state->root_key()), StrEq(chrome_dist->GetStateKey()), _, |
| - StrEq(google_update::kRegUsageStatsField))).Times(kDeleteTimes); |
| - |
| - AddUsageStatsWorkItems(*installation_state.get(), |
| - *installer_state.get(), |
| - &work_item_list); |
| -} |
| - |
| -// The Quick Enable tests only make sense for the Google Chrome build as it |
| -// interacts with registry values that are specific to Google Update. |
| -#if defined(GOOGLE_CHROME_BUILD) |
| - |
| -// Test scenarios under which the quick-enable-cf command should not exist after |
| -// the run. We're permissive in that we allow the DeleteRegKeyWorkItem even if |
| -// it isn't strictly needed. |
| -class QuickEnableAbsentTest : public InstallWorkerTest { |
| - public: |
| - virtual void SetUp() { |
| - InstallWorkerTest::SetUp(); |
| - root_key_ = system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| - delete_reg_key_item_.reset(WorkItem::CreateDeleteRegKeyWorkItem( |
| - root_key_, kRegKeyPath, WorkItem::kWow64Default)); |
| - machine_state_.reset(new MockInstallationState()); |
| - EXPECT_CALL(work_item_list_, AddDeleteRegKeyWorkItem( |
| - Eq(root_key_), StrCaseEq(kRegKeyPath), _)) |
| - .Times(AtMost(1)) |
| - .WillRepeatedly(Return(delete_reg_key_item_.get())); |
| - } |
| - virtual void TearDown() { |
| - machine_state_.reset(); |
| - delete_reg_key_item_.reset(); |
| - root_key_ = NULL; |
| - InstallWorkerTest::TearDown(); |
| - } |
| - protected: |
| - static const bool system_level_ = false; |
| - static const wchar_t kRegKeyPath[]; |
| - HKEY root_key_; |
| - std::unique_ptr<DeleteRegKeyWorkItem> delete_reg_key_item_; |
| - std::unique_ptr<MockInstallationState> machine_state_; |
| - StrictMock<MockWorkItemList> work_item_list_; |
| -}; |
| - |
| -const wchar_t QuickEnableAbsentTest::kRegKeyPath[] = |
| - L"Software\\Google\\Update\\Clients\\" |
| - L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}\\Commands\\quick-enable-cf"; |
| - |
| -TEST_F(QuickEnableAbsentTest, CleanInstallSingleChrome) { |
| - // Install single Chrome on a clean system. |
| - std::unique_ptr<MockInstallerState> installer_state(BuildBasicInstallerState( |
| - system_level_, true, *machine_state_, InstallerState::MULTI_UPDATE)); |
| - AddQuickEnableChromeFrameWorkItems(*installer_state, &work_item_list_); |
| -} |
| - |
| -TEST_F(InstallWorkerTest, WillProductBePresentAfterSetup) { |
| - BrowserDistribution::Type prod_type_list[] = { |
| - BrowserDistribution::CHROME_BROWSER, |
| - BrowserDistribution::CHROME_FRAME, |
| - // Excluding BrowserDistribution::CHROME_BINARIES, since it is installed |
| - // along with other products. |
| - }; |
| - enum { // Index into prod_type_list[]. |
| - TYPE_BROWSER = 0, |
| - TYPE_CF, |
| - NUM_TYPE // This must appear last. |
| - }; |
| - DCHECK(arraysize(prod_type_list) == NUM_TYPE); |
| - InstallerState::Operation op_list[] = { |
| - InstallerState::UNINSTALL, |
| - InstallerState::SINGLE_INSTALL_OR_UPDATE |
| - }; |
| - |
| - const bool system_level = false; |
| - const bool multi_install = true; |
| - |
| - // Loop over machine states: {No product, Chrome, CF, Chrome + CF}. |
| - for (int i_mach = 0; i_mach < (1 << NUM_TYPE); ++i_mach) { |
| - // i_mach is the machine state before operation, as bit mask. |
| - std::unique_ptr<MockInstallationState> machine_state( |
| - new MockInstallationState()); |
| - if ((i_mach & (1 << TYPE_BROWSER)) != 0) { // Add Chrome. |
| - AddChromeToInstallationState(system_level, multi_install, |
| - machine_state.get()); |
| - } |
| - if ((i_mach & (1 << TYPE_CF)) != 0) { // Add Chrome Frame. |
| - AddChromeFrameToInstallationState(system_level, multi_install, |
| - machine_state.get()); |
| - } |
| - |
| - // Loop over operations: {uninstall, install/update}. |
| - for (InstallerState::Operation op : op_list) { |
| - |
| - // Loop over product types to operate on: {TYPE_BROWSER, TYPE_CF}. |
| - for (int i_type_op = 0; i_type_op < NUM_TYPE; ++i_type_op) { |
| - std::unique_ptr<InstallerState> installer_state; |
| - if (i_type_op == TYPE_BROWSER) { |
| - installer_state.reset(BuildChromeInstallerState( |
| - system_level, multi_install, *machine_state, op)); |
| - } else if (i_type_op == TYPE_CF) { |
| - // Skip the CF uninstall case due to limitations in |
| - // BuildChromeFrameInstallerState(). |
| - if (op == InstallerState::UNINSTALL) |
| - continue; |
| - |
| - installer_state.reset(BuildChromeFrameInstallerState( |
| - system_level, multi_install, *machine_state, op)); |
| - } else { |
| - NOTREACHED(); |
| - } |
| - |
| - // Calculate the machine state after operation, as bit mask. |
| - // If uninstall, remove product with bitwise AND; else add with OR. |
| - int mach_after = (op == InstallerState::UNINSTALL) |
| - ? i_mach & ~(1 << i_type_op) |
| - : i_mach | (1 << i_type_op); |
| - |
| - // Verify predicted presence of Chrome Binaries. |
| - bool bin_res = installer::WillProductBePresentAfterSetup( |
| - *installer_state, |
| - *machine_state, |
| - BrowserDistribution::CHROME_BINARIES); |
| - // Binaries are expected to be present iff any product is installed. |
| - bool bin_expect = mach_after != 0; |
| - EXPECT_EQ(bin_expect, bin_res); |
| - |
| - // Loop over product types to check: {TYPE_BROWSER, TYPE_CF}. |
| - for (int i_type_check = 0; i_type_check < NUM_TYPE; ++i_type_check) { |
| - // Verify predicted presence of product. |
| - bool prod_res = installer::WillProductBePresentAfterSetup( |
| - *installer_state, |
| - *machine_state, |
| - prod_type_list[i_type_check]); |
| - bool prod_expect = (mach_after & (1 << i_type_check)) != 0; |
| - EXPECT_EQ(prod_expect, prod_res); |
| - } |
| - } |
| - } |
| - } |
| -} |
| - |
| -#endif // defined(GOOGLE_CHROME_BUILD) |