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, |