| Index: chrome/installer/util/google_update_settings_unittest.cc
|
| diff --git a/chrome/installer/util/google_update_settings_unittest.cc b/chrome/installer/util/google_update_settings_unittest.cc
|
| index 15cc107c6280e895066e7765eaec188434ecdc05..6f2e37a4f45ad0692b1df4c27adf95f540b27563 100644
|
| --- a/chrome/installer/util/google_update_settings_unittest.cc
|
| +++ b/chrome/installer/util/google_update_settings_unittest.cc
|
| @@ -24,6 +24,7 @@
|
| #include "chrome/installer/util/channel_info.h"
|
| #include "chrome/installer/util/fake_installation_state.h"
|
| #include "chrome/installer/util/google_update_constants.h"
|
| +#include "chrome/installer/util/helper.h"
|
| #include "chrome/installer/util/util_constants.h"
|
| #include "chrome/installer/util/work_item_list.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -67,37 +68,6 @@ class GoogleUpdateSettingsTest : public testing::Test {
|
| ASSERT_EQ(ERROR_SUCCESS, update_key.WriteValue(L"ap", value));
|
| }
|
|
|
| - // Sets the "ap" field for a multi-install product (both the product and
|
| - // the binaries).
|
| - void SetMultiApField(SystemUserInstall is_system, const wchar_t* value) {
|
| - // Caller must specify a multi-install ap value.
|
| - ASSERT_NE(base::string16::npos, base::string16(value).find(L"-multi"));
|
| - HKEY root = is_system == SYSTEM_INSTALL ?
|
| - HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
|
| - RegKey update_key;
|
| -
|
| - // Write the ap value for both the product and the binaries.
|
| - BrowserDistribution* const kDists[] = {
|
| - BrowserDistribution::GetDistribution(),
|
| - BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BINARIES)
|
| - };
|
| - for (size_t i = 0; i < arraysize(kDists); ++i) {
|
| - base::string16 path = kDists[i]->GetStateKey();
|
| - ASSERT_EQ(ERROR_SUCCESS, update_key.Create(root, path.c_str(),
|
| - KEY_WRITE));
|
| - ASSERT_EQ(ERROR_SUCCESS, update_key.WriteValue(L"ap", value));
|
| - }
|
| -
|
| - // Make the product technically multi-install.
|
| - BrowserDistribution* dist = BrowserDistribution::GetDistribution();
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - update_key.Create(root, dist->GetStateKey().c_str(), KEY_WRITE));
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - update_key.WriteValue(installer::kUninstallArgumentsField,
|
| - L"--multi-install"));
|
| - }
|
| -
|
| // Tests setting the ap= value to various combinations of values with
|
| // suffixes, while asserting on the correct channel value.
|
| // Note that ap= value has to match "^2.0-d.*" or ".*x64-dev.*" and "^1.1-.*"
|
| @@ -135,10 +105,8 @@ class GoogleUpdateSettingsTest : public testing::Test {
|
| const wchar_t* channel = expectation.channel;
|
|
|
| SetApField(install, ap.c_str());
|
| - base::string16 ret_channel;
|
| -
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(
|
| - is_system, &ret_channel));
|
| + const base::string16 ret_channel =
|
| + GoogleUpdateSettings::GetChromeChannel(is_system);
|
|
|
| // If prefixes are not supported for a channel, we expect the channel
|
| // to be "unknown" if a non-empty prefix is present in ap_value.
|
| @@ -332,13 +300,11 @@ class GoogleUpdateSettingsTest : public testing::Test {
|
| TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelAbsent) {
|
| // Per-system first.
|
| base::string16 channel;
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(true,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| EXPECT_STREQ(L"", channel.c_str());
|
|
|
| // Then per-user.
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| EXPECT_STREQ(L"", channel.c_str());
|
| }
|
|
|
| @@ -346,13 +312,11 @@ TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelAbsent) {
|
| TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelEmptySystem) {
|
| SetApField(SYSTEM_INSTALL, L"");
|
| base::string16 channel;
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(true,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| EXPECT_STREQ(L"", channel.c_str());
|
|
|
| // Per-user lookups still succeed and return empty string.
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| EXPECT_STREQ(L"", channel.c_str());
|
| }
|
|
|
| @@ -360,39 +324,14 @@ TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelEmptyUser) {
|
| SetApField(USER_INSTALL, L"");
|
| // Per-system lookups still succeed and return empty string.
|
| base::string16 channel;
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(true,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| EXPECT_STREQ(L"", channel.c_str());
|
|
|
| // Per-user lookup should succeed.
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| + channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| EXPECT_STREQ(L"", channel.c_str());
|
| }
|
|
|
| -// Test that the channel is pulled from the binaries for multi-install products.
|
| -TEST_F(GoogleUpdateSettingsTest, MultiInstallChannelFromBinaries) {
|
| - SetMultiApField(USER_INSTALL, L"2.0-dev-multi-chrome");
|
| - base::string16 channel;
|
| -
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| - EXPECT_STREQ(L"dev-m", channel.c_str());
|
| -
|
| - // See if the same happens if the product's ap is cleared.
|
| - SetApField(USER_INSTALL, L"");
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| - EXPECT_STREQ(L"dev-m", channel.c_str());
|
| -
|
| - // Test the converse (binaries are stable, Chrome is other).
|
| - SetMultiApField(USER_INSTALL, L"-multi-chrome");
|
| - SetApField(USER_INSTALL, L"2.0-dev-multi-chrome");
|
| - EXPECT_TRUE(GoogleUpdateSettings::GetChromeChannelAndModifiers(false,
|
| - &channel));
|
| - EXPECT_STREQ(L"m", channel.c_str());
|
| -}
|
| -
|
| TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesSystem) {
|
| TestCurrentChromeChannelWithVariousApValues(SYSTEM_INSTALL);
|
| }
|
| @@ -401,9 +340,9 @@ TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesUser) {
|
| TestCurrentChromeChannelWithVariousApValues(USER_INSTALL);
|
| }
|
|
|
| -// Run through all combinations of diff vs. full install, single vs. multi
|
| -// install, success and failure results, and a fistful of initial "ap" values
|
| -// checking that the expected final "ap" value is generated by
|
| +// Run through all combinations of diff vs. full install, success and failure
|
| +// results, and a fistful of initial "ap" values checking that the expected
|
| +// final "ap" value is generated by
|
| // GoogleUpdateSettings::UpdateGoogleUpdateApKey.
|
| TEST_F(GoogleUpdateSettingsTest, UpdateGoogleUpdateApKey) {
|
| const installer::ArchiveType archive_types[] = {
|
| @@ -908,14 +847,9 @@ TEST_F(GoogleUpdateSettingsTest, PerAppUpdatesEnabledWithGlobalDisabled) {
|
| // Disable updates globally but enable them for Chrome (the app-specific
|
| // setting should take precedence).
|
| BrowserDistribution* dist = BrowserDistribution::GetDistribution();
|
| - BrowserDistribution* binaries = BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BINARIES);
|
| EXPECT_TRUE(
|
| SetUpdatePolicyForAppGuid(dist->GetAppGuid(),
|
| GoogleUpdateSettings::AUTOMATIC_UPDATES));
|
| - EXPECT_TRUE(
|
| - SetUpdatePolicyForAppGuid(binaries->GetAppGuid(),
|
| - GoogleUpdateSettings::AUTOMATIC_UPDATES));
|
| EXPECT_TRUE(SetGlobalUpdatePolicy(GoogleUpdateSettings::UPDATES_DISABLED));
|
|
|
| // Make sure we read this as still having updates enabled.
|
| @@ -925,8 +859,6 @@ TEST_F(GoogleUpdateSettingsTest, PerAppUpdatesEnabledWithGlobalDisabled) {
|
| EXPECT_TRUE(GoogleUpdateSettings::ReenableAutoupdates());
|
| EXPECT_EQ(GoogleUpdateSettings::AUTOMATIC_UPDATES,
|
| GetUpdatePolicyForAppGuid(dist->GetAppGuid()));
|
| - EXPECT_EQ(GoogleUpdateSettings::AUTOMATIC_UPDATES,
|
| - GetUpdatePolicyForAppGuid(binaries->GetAppGuid()));
|
| EXPECT_EQ(GoogleUpdateSettings::UPDATES_DISABLED, GetGlobalUpdatePolicy());
|
| }
|
|
|
| @@ -1189,10 +1121,6 @@ INSTANTIATE_TEST_CASE_P(GetGoogleUpdateVersionAtLevel, GetGoogleUpdateVersion,
|
| // Test values for use by the CollectStatsConsent test fixture.
|
| class StatsState {
|
| public:
|
| - enum InstallType {
|
| - SINGLE_INSTALL,
|
| - MULTI_INSTALL,
|
| - };
|
| enum StateSetting {
|
| NO_SETTING,
|
| FALSE_SETTING,
|
| @@ -1204,24 +1132,19 @@ class StatsState {
|
| static const SystemLevelState kSystemLevel;
|
|
|
| StatsState(const UserLevelState&,
|
| - InstallType install_type,
|
| StateSetting state_value)
|
| : system_level_(false),
|
| - multi_install_(install_type == MULTI_INSTALL),
|
| state_value_(state_value),
|
| state_medium_value_(NO_SETTING) {
|
| }
|
| StatsState(const SystemLevelState&,
|
| - InstallType install_type,
|
| StateSetting state_value,
|
| StateSetting state_medium_value)
|
| : system_level_(true),
|
| - multi_install_(install_type == MULTI_INSTALL),
|
| state_value_(state_value),
|
| state_medium_value_(state_medium_value) {
|
| }
|
| bool system_level() const { return system_level_; }
|
| - bool multi_install() const { return multi_install_; }
|
| HKEY root_key() const {
|
| return system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
|
| }
|
| @@ -1237,7 +1160,6 @@ class StatsState {
|
|
|
| private:
|
| bool system_level_;
|
| - bool multi_install_;
|
| StateSetting state_value_;
|
| StateSetting state_medium_value_;
|
| };
|
| @@ -1252,24 +1174,20 @@ class CollectStatsConsent : public ::testing::TestWithParam<StatsState> {
|
| static void TearDownTestCase();
|
| protected:
|
| void SetUp() override;
|
| - static void MakeChromeMultiInstall(HKEY root_key);
|
| static void ApplySetting(StatsState::StateSetting setting,
|
| HKEY root_key,
|
| const base::string16& reg_key);
|
|
|
| + // TODO(grt): Get rid of these statics and SetUpTestCase.
|
| static base::string16* chrome_version_key_;
|
| static base::string16* chrome_state_key_;
|
| static base::string16* chrome_state_medium_key_;
|
| - static base::string16* binaries_state_key_;
|
| - static base::string16* binaries_state_medium_key_;
|
| registry_util::RegistryOverrideManager override_manager_;
|
| };
|
|
|
| base::string16* CollectStatsConsent::chrome_version_key_;
|
| base::string16* CollectStatsConsent::chrome_state_key_;
|
| base::string16* CollectStatsConsent::chrome_state_medium_key_;
|
| -base::string16* CollectStatsConsent::binaries_state_key_;
|
| -base::string16* CollectStatsConsent::binaries_state_medium_key_;
|
|
|
| void CollectStatsConsent::SetUpTestCase() {
|
| BrowserDistribution* dist =
|
| @@ -1278,19 +1196,12 @@ void CollectStatsConsent::SetUpTestCase() {
|
| chrome_version_key_ = new base::string16(dist->GetVersionKey());
|
| chrome_state_key_ = new base::string16(dist->GetStateKey());
|
| chrome_state_medium_key_ = new base::string16(dist->GetStateMediumKey());
|
| -
|
| - dist = BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BINARIES);
|
| - binaries_state_key_ = new base::string16(dist->GetStateKey());
|
| - binaries_state_medium_key_ = new base::string16(dist->GetStateMediumKey());
|
| }
|
|
|
| void CollectStatsConsent::TearDownTestCase() {
|
| delete chrome_version_key_;
|
| delete chrome_state_key_;
|
| delete chrome_state_medium_key_;
|
| - delete binaries_state_key_;
|
| - delete binaries_state_medium_key_;
|
| }
|
|
|
| // Install the registry override and apply the settings to the registry.
|
| @@ -1301,31 +1212,9 @@ void CollectStatsConsent::SetUp() {
|
|
|
| const StatsState& stats_state = GetParam();
|
| const HKEY root_key = stats_state.root_key();
|
| - if (stats_state.multi_install()) {
|
| - MakeChromeMultiInstall(root_key);
|
| - ApplySetting(stats_state.state_value(), root_key, *binaries_state_key_);
|
| - ApplySetting(stats_state.state_medium_value(), root_key,
|
| - *binaries_state_medium_key_);
|
| - } else {
|
| - ApplySetting(stats_state.state_value(), root_key, *chrome_state_key_);
|
| - ApplySetting(stats_state.state_medium_value(), root_key,
|
| - *chrome_state_medium_key_);
|
| - }
|
| -}
|
| -
|
| -// Write values into the registry so that Chrome is considered to be installed
|
| -// as multi-install.
|
| -void CollectStatsConsent::MakeChromeMultiInstall(HKEY root_key) {
|
| - ASSERT_EQ(
|
| - ERROR_SUCCESS,
|
| - RegKey(root_key, chrome_version_key_->c_str(),
|
| - KEY_SET_VALUE).WriteValue(google_update::kRegVersionField,
|
| - L"1.2.3.4"));
|
| - ASSERT_EQ(
|
| - ERROR_SUCCESS,
|
| - RegKey(root_key, chrome_state_key_->c_str(),
|
| - KEY_SET_VALUE).WriteValue(installer::kUninstallArgumentsField,
|
| - L"--multi-install"));
|
| + ApplySetting(stats_state.state_value(), root_key, *chrome_state_key_);
|
| + ApplySetting(stats_state.state_medium_value(), root_key,
|
| + *chrome_state_medium_key_);
|
| }
|
|
|
| // Write the correct value to represent |setting| in the registry.
|
| @@ -1370,15 +1259,9 @@ TEST_P(CollectStatsConsent, SetCollectStatsConsentAtLevel) {
|
| GetParam().system_level(),
|
| !GetParam().is_consent_granted()));
|
|
|
| - const base::string16* const reg_keys[] = {
|
| - chrome_state_key_,
|
| - chrome_state_medium_key_,
|
| - binaries_state_key_,
|
| - binaries_state_medium_key_,
|
| - };
|
| - int key_index = ((GetParam().system_level() ? 1 : 0) +
|
| - (GetParam().multi_install() ? 2 : 0));
|
| - const base::string16& reg_key = *reg_keys[key_index];
|
| + const base::string16& reg_key = GetParam().system_level()
|
| + ? *chrome_state_medium_key_
|
| + : *chrome_state_key_;
|
| DWORD value = 0;
|
| EXPECT_EQ(
|
| ERROR_SUCCESS,
|
| @@ -1399,66 +1282,39 @@ TEST_P(CollectStatsConsent, SetCollectStatsConsentAtLevel) {
|
| }
|
|
|
| INSTANTIATE_TEST_CASE_P(
|
| - UserLevelSingleInstall,
|
| - CollectStatsConsent,
|
| - ::testing::Values(
|
| - StatsState(StatsState::kUserLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::NO_SETTING),
|
| - StatsState(StatsState::kUserLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kUserLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::TRUE_SETTING)));
|
| -INSTANTIATE_TEST_CASE_P(
|
| - UserLevelMultiInstall,
|
| + UserLevel,
|
| CollectStatsConsent,
|
| ::testing::Values(
|
| - StatsState(StatsState::kUserLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::NO_SETTING),
|
| - StatsState(StatsState::kUserLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kUserLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::TRUE_SETTING)));
|
| + StatsState(StatsState::kUserLevel, StatsState::NO_SETTING),
|
| + StatsState(StatsState::kUserLevel, StatsState::FALSE_SETTING),
|
| + StatsState(StatsState::kUserLevel, StatsState::TRUE_SETTING)));
|
| INSTANTIATE_TEST_CASE_P(
|
| - SystemLevelSingleInstall,
|
| + SystemLevel,
|
| CollectStatsConsent,
|
| - ::testing::Values(
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::TRUE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::TRUE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::SINGLE_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::TRUE_SETTING)));
|
| -INSTANTIATE_TEST_CASE_P(
|
| - SystemLevelMultiInstall,
|
| - CollectStatsConsent,
|
| - ::testing::Values(
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::NO_SETTING, StatsState::TRUE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::FALSE_SETTING, StatsState::TRUE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::NO_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::FALSE_SETTING),
|
| - StatsState(StatsState::kSystemLevel, StatsState::MULTI_INSTALL,
|
| - StatsState::TRUE_SETTING, StatsState::TRUE_SETTING)));
|
| + ::testing::Values(StatsState(StatsState::kSystemLevel,
|
| + StatsState::NO_SETTING,
|
| + StatsState::NO_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::NO_SETTING,
|
| + StatsState::FALSE_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::NO_SETTING,
|
| + StatsState::TRUE_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::FALSE_SETTING,
|
| + StatsState::NO_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::FALSE_SETTING,
|
| + StatsState::FALSE_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::FALSE_SETTING,
|
| + StatsState::TRUE_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::TRUE_SETTING,
|
| + StatsState::NO_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::TRUE_SETTING,
|
| + StatsState::FALSE_SETTING),
|
| + StatsState(StatsState::kSystemLevel,
|
| + StatsState::TRUE_SETTING,
|
| + StatsState::TRUE_SETTING)));
|
|
|