summaryrefslogtreecommitdiffstats
path: root/chrome/installer/setup/install_worker_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/installer/setup/install_worker_unittest.cc')
-rw-r--r--chrome/installer/setup/install_worker_unittest.cc78
1 files changed, 74 insertions, 4 deletions
diff --git a/chrome/installer/setup/install_worker_unittest.cc b/chrome/installer/setup/install_worker_unittest.cc
index 5cdb3d6..4a99174 100644
--- a/chrome/installer/setup/install_worker_unittest.cc
+++ b/chrome/installer/setup/install_worker_unittest.cc
@@ -50,10 +50,9 @@ class MockWorkItemList : public WorkItemList {
MOCK_METHOD1(AddCreateDirWorkItem, WorkItem* (const FilePath&));
MOCK_METHOD2(AddCreateRegKeyWorkItem, WorkItem* (HKEY, const std::wstring&));
MOCK_METHOD2(AddDeleteRegKeyWorkItem, WorkItem* (HKEY, const std::wstring&));
- MOCK_METHOD4(AddDeleteRegValueWorkItem, WorkItem* (HKEY,
+ MOCK_METHOD3(AddDeleteRegValueWorkItem, WorkItem* (HKEY,
const std::wstring&,
- const std::wstring&,
- bool));
+ const std::wstring&));
MOCK_METHOD2(AddDeleteTreeWorkItem, WorkItem* (const FilePath&,
const std::vector<FilePath>&));
MOCK_METHOD1(AddDeleteTreeWorkItem, WorkItem* (const FilePath&));
@@ -94,6 +93,11 @@ class MockProductState : public ProductState {
void set_version(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_usagestats(DWORD usagestats) {
+ has_usagestats_ = true;
+ usagestats_ = usagestats;
+ }
+ void clear_usagestats() { has_usagestats_ = false; }
void SetUninstallProgram(const FilePath& setup_exe) {
uninstall_command_ = CommandLine(setup_exe);
}
@@ -265,7 +269,8 @@ class InstallWorkerTest : public testing::Test {
const ProductState* chrome =
machine_state.GetProductState(installer_state->system_install(),
BrowserDistribution::CHROME_BROWSER);
- if (chrome != NULL) {
+ if (chrome != NULL &&
+ chrome->is_multi_install() == installer_state->is_multi_install()) {
installer_state->AddProductFromState(BrowserDistribution::CHROME_BROWSER,
*chrome);
} else {
@@ -561,6 +566,71 @@ TEST_F(InstallWorkerTest, GoogleUpdateWorkItemsTest) {
&work_item_list);
}
+// Test that usagestats values are migrated properly.
+TEST_F(InstallWorkerTest, AddUsageStatsWorkItems) {
+ const bool system_level = true;
+ const bool multi_install = true;
+ MockWorkItemList work_item_list;
+
+ scoped_ptr<MockInstallationState> installation_state(
+ BuildChromeInstallationState(system_level, multi_install));
+
+ MockProductState chrome_state;
+ chrome_state.set_version(current_version_->Clone());
+ chrome_state.set_multi_install(false);
+ chrome_state.set_usagestats(1);
+
+ installation_state->SetProductState(system_level,
+ BrowserDistribution::CHROME_BROWSER, chrome_state);
+
+ scoped_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)),
+ _)).Times(1);
+
+ // Expect to see some values cleaned up from Chrome's keys.
+ BrowserDistribution* chrome_dist =
+ BrowserDistribution::GetSpecificDistribution(
+ BrowserDistribution::CHROME_BROWSER);
+ if (system_level) {
+ EXPECT_CALL(work_item_list,
+ AddDeleteRegValueWorkItem(
+ _,
+ StrEq(chrome_dist->GetStateMediumKey()),
+ StrEq(google_update::kRegUsageStatsField))).Times(1);
+ EXPECT_CALL(work_item_list,
+ AddDeleteRegValueWorkItem(
+ Eq(HKEY_CURRENT_USER),
+ StrEq(chrome_dist->GetStateKey()),
+ StrEq(google_update::kRegUsageStatsField))).Times(1);
+ }
+ EXPECT_CALL(work_item_list,
+ AddDeleteRegValueWorkItem(
+ Eq(installer_state->root_key()),
+ StrEq(chrome_dist->GetStateKey()),
+ StrEq(google_update::kRegUsageStatsField))).Times(1);
+
+ 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)