| 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 17a93bf9d6bf2f5a507655a782367cd74fbc3dad..ea59e9989ec0775cda8a19e6fbb10b9797c52358 100644
|
| --- a/chrome/installer/util/google_update_settings_unittest.cc
|
| +++ b/chrome/installer/util/google_update_settings_unittest.cc
|
| @@ -12,6 +12,7 @@
|
|
|
| #include "base/base_paths.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/path_service.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/test/scoped_path_override.h"
|
| @@ -19,6 +20,7 @@
|
| #include "base/win/registry.h"
|
| #include "base/win/win_util.h"
|
| #include "chrome/common/chrome_constants.h"
|
| +#include "chrome/install_static/test/scoped_install_details.h"
|
| #include "chrome/installer/util/app_registration_data.h"
|
| #include "chrome/installer/util/browser_distribution.h"
|
| #include "chrome/installer/util/channel_info.h"
|
| @@ -61,76 +63,12 @@ class GoogleUpdateSettingsTest : public testing::Test {
|
| registry_overrides_.OverrideRegistry(HKEY_CURRENT_USER));
|
| }
|
|
|
| - void SetApField(SystemUserInstall is_system, const wchar_t* value) {
|
| - HKEY root = is_system == SYSTEM_INSTALL ?
|
| - HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
|
| -
|
| - RegKey update_key;
|
| - BrowserDistribution* dist = BrowserDistribution::GetDistribution();
|
| - base::string16 path = dist->GetStateKey();
|
| - ASSERT_EQ(ERROR_SUCCESS, update_key.Create(root, path.c_str(), KEY_WRITE));
|
| - ASSERT_EQ(ERROR_SUCCESS, update_key.WriteValue(L"ap", value));
|
| - }
|
| -
|
| - // 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-.*"
|
| - // or ".*x64-beta.*" for dev and beta channels respectively.
|
| - void TestCurrentChromeChannelWithVariousApValues(SystemUserInstall install) {
|
| - static struct Expectation {
|
| - const wchar_t* ap_value;
|
| - const wchar_t* channel;
|
| - bool supports_prefixes;
|
| - } expectations[] = {
|
| - { L"2.0-dev", installer::kChromeChannelDev, false},
|
| - { L"1.1-beta", installer::kChromeChannelBeta, false},
|
| - { L"x64-dev", installer::kChromeChannelDev, true},
|
| - { L"x64-beta", installer::kChromeChannelBeta, true},
|
| - { L"x64-stable", installer::kChromeChannelStable, true},
|
| - };
|
| - bool is_system = install == SYSTEM_INSTALL;
|
| - const wchar_t* prefixes[] = {
|
| - L"",
|
| - L"prefix",
|
| - L"prefix-with-dash",
|
| - };
|
| - const wchar_t* suffixes[] = {
|
| - L"",
|
| - L"suffix",
|
| - L"suffix-with-dash",
|
| - };
|
| -
|
| - for (const wchar_t* prefix : prefixes) {
|
| - for (const Expectation& expectation : expectations) {
|
| - for (const wchar_t* suffix : suffixes) {
|
| - base::string16 ap = prefix;
|
| - ap += expectation.ap_value;
|
| - ap += suffix;
|
| - const wchar_t* channel = expectation.channel;
|
| -
|
| - SetApField(install, ap.c_str());
|
| - 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.
|
| - if (!expectation.supports_prefixes && wcslen(prefix) > 0) {
|
| - EXPECT_STREQ(installer::kChromeChannelUnknown, ret_channel.c_str())
|
| - << "Expecting channel \"" << installer::kChromeChannelUnknown
|
| - << "\" for ap=\"" << ap << "\"";
|
| - } else {
|
| - EXPECT_STREQ(channel, ret_channel.c_str())
|
| - << "Expecting channel \"" << channel
|
| - << "\" for ap=\"" << ap << "\"";
|
| - }
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| // Test the writing and deleting functionality of the experiments label
|
| // helper.
|
| void TestExperimentsLabelHelper(SystemUserInstall install) {
|
| + // Install a basic InstallDetails instance.
|
| + install_static::ScopedInstallDetails details(install == SYSTEM_INSTALL);
|
| +
|
| BrowserDistribution* chrome = BrowserDistribution::GetDistribution();
|
| base::string16 value;
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| @@ -297,51 +235,6 @@ class GoogleUpdateSettingsTest : public testing::Test {
|
|
|
| } // namespace
|
|
|
| -// Verify that we return success on no registration (which means stable),
|
| -// whether per-system or per-user install.
|
| -TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelAbsent) {
|
| - // Per-system first.
|
| - base::string16 channel;
|
| - channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -
|
| - // Then per-user.
|
| - channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -}
|
| -
|
| -// Test an empty Ap key for system and user.
|
| -TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelEmptySystem) {
|
| - SetApField(SYSTEM_INSTALL, L"");
|
| - base::string16 channel;
|
| - channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -
|
| - // Per-user lookups still succeed and return empty string.
|
| - channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -}
|
| -
|
| -TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelEmptyUser) {
|
| - SetApField(USER_INSTALL, L"");
|
| - // Per-system lookups still succeed and return empty string.
|
| - base::string16 channel;
|
| - channel = GoogleUpdateSettings::GetChromeChannel(true);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -
|
| - // Per-user lookup should succeed.
|
| - channel = GoogleUpdateSettings::GetChromeChannel(false);
|
| - EXPECT_STREQ(L"", channel.c_str());
|
| -}
|
| -
|
| -TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesSystem) {
|
| - TestCurrentChromeChannelWithVariousApValues(SYSTEM_INSTALL);
|
| -}
|
| -
|
| -TEST_F(GoogleUpdateSettingsTest, CurrentChromeChannelVariousApValuesUser) {
|
| - TestCurrentChromeChannelWithVariousApValues(USER_INSTALL);
|
| -}
|
| -
|
| // 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
|
| @@ -579,18 +472,8 @@ TEST_F(GoogleUpdateSettingsTest, GetAppUpdatePolicyNoOverride) {
|
| }
|
|
|
| TEST_F(GoogleUpdateSettingsTest, UpdateProfileCountsSystemInstall) {
|
| - // Override FILE_MODULE and FILE_EXE with a path somewhere in the default
|
| - // system-level install location so that
|
| - // GoogleUpdateSettings::IsSystemInstall() returns true.
|
| - base::FilePath file_exe;
|
| - ASSERT_TRUE(PathService::Get(base::FILE_EXE, &file_exe));
|
| - base::FilePath install_dir(installer::GetChromeInstallPath(
|
| - true /* system_install */, BrowserDistribution::GetDistribution()));
|
| - file_exe = install_dir.Append(file_exe.BaseName());
|
| - base::ScopedPathOverride file_module_override(
|
| - base::FILE_MODULE, file_exe, true /* is_absolute */, false /* create */);
|
| - base::ScopedPathOverride file_exe_override(
|
| - base::FILE_EXE, file_exe, true /* is_absolute */, false /* create */);
|
| + // Set up a basic system-level InstallDetails.
|
| + install_static::ScopedInstallDetails details(true /* system_level */);
|
|
|
| // No profile count keys present yet.
|
| const base::string16& state_key = BrowserDistribution::GetDistribution()->
|
| @@ -1171,38 +1054,20 @@ const StatsState::SystemLevelState StatsState::kSystemLevel = {};
|
|
|
| // A value parameterized test for testing the stats collection consent setting.
|
| class CollectStatsConsent : public ::testing::TestWithParam<StatsState> {
|
| - public:
|
| - static void SetUpTestCase();
|
| - static void TearDownTestCase();
|
| protected:
|
| + CollectStatsConsent();
|
| void SetUp() override;
|
| - 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_;
|
| + void ApplySetting(StatsState::StateSetting setting,
|
| + HKEY root_key,
|
| + const base::string16& reg_key);
|
| +
|
| + BrowserDistribution* const dist_;
|
| registry_util::RegistryOverrideManager override_manager_;
|
| + std::unique_ptr<install_static::ScopedInstallDetails> scoped_install_details_;
|
| };
|
|
|
| -base::string16* CollectStatsConsent::chrome_version_key_;
|
| -base::string16* CollectStatsConsent::chrome_state_key_;
|
| -base::string16* CollectStatsConsent::chrome_state_medium_key_;
|
| -
|
| -void CollectStatsConsent::SetUpTestCase() {
|
| - BrowserDistribution* dist = BrowserDistribution::GetDistribution();
|
| - 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());
|
| -}
|
| -
|
| -void CollectStatsConsent::TearDownTestCase() {
|
| - delete chrome_version_key_;
|
| - delete chrome_state_key_;
|
| - delete chrome_state_medium_key_;
|
| -}
|
| +CollectStatsConsent::CollectStatsConsent()
|
| + : dist_(BrowserDistribution::GetDistribution()) {}
|
|
|
| // Install the registry override and apply the settings to the registry.
|
| void CollectStatsConsent::SetUp() {
|
| @@ -1213,10 +1078,14 @@ void CollectStatsConsent::SetUp() {
|
| override_manager_.OverrideRegistry(HKEY_CURRENT_USER));
|
|
|
| const StatsState& stats_state = GetParam();
|
| + scoped_install_details_ =
|
| + base::MakeUnique<install_static::ScopedInstallDetails>(
|
| + stats_state.system_level(), 0 /* install_mode_index */);
|
| const HKEY root_key = stats_state.root_key();
|
| - ApplySetting(stats_state.state_value(), root_key, *chrome_state_key_);
|
| - ApplySetting(stats_state.state_medium_value(), root_key,
|
| - *chrome_state_medium_key_);
|
| + ASSERT_NO_FATAL_FAILURE(
|
| + ApplySetting(stats_state.state_value(), root_key, dist_->GetStateKey()));
|
| + ASSERT_NO_FATAL_FAILURE(ApplySetting(stats_state.state_medium_value(),
|
| + root_key, dist_->GetStateMediumKey()));
|
| }
|
|
|
| // Write the correct value to represent |setting| in the registry.
|
| @@ -1261,9 +1130,9 @@ TEST_P(CollectStatsConsent, SetCollectStatsConsentAtLevel) {
|
| GetParam().system_level(),
|
| !GetParam().is_consent_granted()));
|
|
|
| - const base::string16& reg_key = GetParam().system_level()
|
| - ? *chrome_state_medium_key_
|
| - : *chrome_state_key_;
|
| + const base::string16 reg_key = GetParam().system_level()
|
| + ? dist_->GetStateMediumKey()
|
| + : dist_->GetStateKey();
|
| DWORD value = 0;
|
| EXPECT_EQ(
|
| ERROR_SUCCESS,
|
|
|