Chromium Code Reviews| Index: chrome/browser/rlz/rlz_unittest.cc |
| =================================================================== |
| --- chrome/browser/rlz/rlz_unittest.cc (revision 111916) |
| +++ chrome/browser/rlz/rlz_unittest.cc (working copy) |
| @@ -11,6 +11,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "base/win/registry.h" |
| #include "chrome/browser/autocomplete/autocomplete.h" |
| +#include "chrome/browser/google/google_util.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/chrome_notification_types.h" |
| #include "chrome/common/env_vars.h" |
| @@ -83,7 +84,7 @@ |
| using RLZTracker::DelayedInit; |
| using RLZTracker::Observe; |
| - TestRLZTracker() : pingnow_called_(false), assume_not_ui_thread_(false) { |
| + TestRLZTracker() : assume_not_ui_thread_(false) { |
| set_tracker(this); |
| } |
| @@ -91,8 +92,8 @@ |
| set_tracker(NULL); |
| } |
| - bool pingnow_called() const { |
| - return pingnow_called_; |
| + bool was_ping_sent_for_brand(const std::string& brand) const { |
| + return pinged_brands_.count(brand) > 0; |
| } |
| void set_assume_not_ui_thread(bool assume_not_ui_thread) { |
| @@ -118,8 +119,9 @@ |
| virtual bool SendFinancialPing(const std::string& brand, |
| const string16& lang, |
| const string16& referral) OVERRIDE { |
| - // Don't ping the server during tests. |
| - pingnow_called_ = true; |
| + // Don't ping the server during tests, just pretend as if we did. |
| + EXPECT_FALSE(brand.empty()); |
| + pinged_brands_.insert(brand); |
| // Set new access points RLZ string, like the actual server ping would have |
| // done. |
| @@ -129,7 +131,7 @@ |
| return true; |
| } |
| - bool pingnow_called_; |
| + std::set<std::string> pinged_brands_; |
| bool assume_not_ui_thread_; |
| DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); |
| @@ -140,12 +142,17 @@ |
| virtual void TearDown() OVERRIDE; |
| protected: |
| + void SetMainBrand(const char* brand); |
| + void SetReactivationBrand(const char* brand); |
| + void SetRegistryBrandValue(const wchar_t* name, const char* brand); |
| + |
| void SimulateOmniboxUsage(); |
| void SimulateHomepageUsage(); |
| void InvokeDelayedInit(); |
| void ExpectEventRecorded(const char* event_name, bool expected); |
| void ExpectRlzPingSent(bool expected); |
| + void ExpectReactivationRlzPingSent(bool expected); |
| TestRLZTracker tracker_; |
| RegistryOverrideManager override_manager_; |
| @@ -187,17 +194,36 @@ |
| // Make sure a non-organic brand code is set in the registry or the RLZTracker |
| // is pretty much a no-op. |
| - BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
| - string16 reg_path = dist->GetStateKey(); |
| - RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE); |
| - ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(google_update::kRegRLZBrandField, |
| - L"TEST")); |
| + SetMainBrand("TEST"); |
| + SetReactivationBrand(""); |
| } |
| void RlzLibTest::TearDown() { |
| testing::Test::TearDown(); |
| } |
| +void RlzLibTest::SetMainBrand(const char* brand) { |
| + SetRegistryBrandValue(google_update::kRegRLZBrandField, brand); |
|
Alexei Svitkine (slow)
2011/12/02 20:40:17
Can you add:
std::string check_brand;
google_util
Roger Tawa OOO till Jul 10th
2011/12/02 20:53:56
Done.
|
| +} |
| + |
| +void RlzLibTest::SetReactivationBrand(const char* brand) { |
| + SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand); |
|
Alexei Svitkine (slow)
2011/12/02 20:40:17
Can you add:
std::string check_brand;
google_util
Roger Tawa OOO till Jul 10th
2011/12/02 20:53:56
Done.
|
| +} |
| + |
| +void RlzLibTest::SetRegistryBrandValue(const wchar_t* name, |
| + const char* brand) { |
| + BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
| + string16 reg_path = dist->GetStateKey(); |
| + RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE); |
| + if (*brand == 0) { |
| + LONG result = key.DeleteValue(name); |
| + ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result); |
| + } else { |
| + string16 brand16 = ASCIIToWide(brand); |
| + ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str())); |
| + } |
| +} |
| + |
| void RlzLibTest::SimulateOmniboxUsage() { |
| tracker_.Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL, |
| content::NotificationService::AllSources(), |
| @@ -227,9 +253,17 @@ |
| } |
| void RlzLibTest::ExpectRlzPingSent(bool expected) { |
| - EXPECT_EQ(expected, tracker_.pingnow_called()); |
| + std::string brand; |
| + google_util::GetBrand(&brand); |
| + EXPECT_EQ(expected, tracker_.was_ping_sent_for_brand(brand.c_str())); |
| } |
| +void RlzLibTest::ExpectReactivationRlzPingSent(bool expected) { |
| + std::string brand; |
| + google_util::GetReactivationBrand(&brand); |
| + EXPECT_EQ(expected, tracker_.was_ping_sent_for_brand(brand.c_str())); |
| +} |
| + |
| TEST_F(RlzLibTest, RecordProductEvent) { |
| RLZTracker::RecordProductEvent(rlz_lib::CHROME, rlz_lib::CHROME_OMNIBOX, |
| rlz_lib::FIRST_SEARCH); |
| @@ -549,3 +583,47 @@ |
| content::NotificationService::AllSources(), |
| content::Details<NavigationEntry>(&entry)); |
| } |
| + |
| +TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) { |
| + SetReactivationBrand("REAC"); |
| + |
| + RLZTracker::InitRlzDelayed(true, 20, true, true); |
| + InvokeDelayedInit(); |
| + |
| + ExpectRlzPingSent(true); |
| + ExpectReactivationRlzPingSent(true); |
| +} |
| + |
| +TEST_F(RlzLibTest, ReactivationOrganicNonOrganic) { |
| + SetMainBrand("GGLS"); |
| + SetReactivationBrand("REAC"); |
| + |
| + RLZTracker::InitRlzDelayed(true, 20, true, true); |
| + InvokeDelayedInit(); |
| + |
| + ExpectRlzPingSent(false); |
| + ExpectReactivationRlzPingSent(true); |
| +} |
| + |
| +TEST_F(RlzLibTest, ReactivationNonOrganicOrganic) { |
| + SetMainBrand("TEST"); |
| + SetReactivationBrand("GGLS"); |
| + |
| + RLZTracker::InitRlzDelayed(true, 20, true, true); |
| + InvokeDelayedInit(); |
| + |
| + ExpectRlzPingSent(true); |
| + ExpectReactivationRlzPingSent(false); |
| +} |
| + |
| +TEST_F(RlzLibTest, ReactivationOrganicOrganic) { |
| + SetMainBrand("GGLS"); |
| + SetReactivationBrand("GGRS"); |
| + |
| + RLZTracker::InitRlzDelayed(true, 20, true, true); |
| + InvokeDelayedInit(); |
| + |
| + ExpectRlzPingSent(false); |
| + ExpectReactivationRlzPingSent(false); |
| +} |
| + |