Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/rlz/rlz.h" | 5 #include "chrome/browser/rlz/rlz.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "base/test/test_reg_util_win.h" | 10 #include "base/scoped_temp_dir.h" |
| 11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 12 #include "base/win/registry.h" | |
| 13 #include "chrome/browser/autocomplete/autocomplete.h" | 12 #include "chrome/browser/autocomplete/autocomplete.h" |
| 14 #include "chrome/browser/google/google_util.h" | 13 #include "chrome/browser/google/google_util.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/common/chrome_notification_types.h" | 15 #include "chrome/common/chrome_notification_types.h" |
| 17 #include "chrome/common/env_vars.h" | 16 #include "chrome/common/env_vars.h" |
| 18 #include "chrome/installer/util/browser_distribution.h" | 17 #include "chrome/installer/util/browser_distribution.h" |
| 19 #include "chrome/installer/util/google_update_constants.h" | 18 #include "chrome/installer/util/google_update_constants.h" |
| 20 #include "content/public/browser/navigation_entry.h" | 19 #include "content/public/browser/navigation_entry.h" |
| 21 #include "content/public/browser/notification_service.h" | 20 #include "content/public/browser/notification_service.h" |
| 22 #include "content/public/browser/notification_details.h" | 21 #include "content/public/browser/notification_details.h" |
| 23 #include "content/public/browser/notification_source.h" | 22 #include "content/public/browser/notification_source.h" |
| 24 #include "rlz/win/lib/rlz_lib.h" // InitializeTempHivesForTesting | |
| 25 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 26 | 24 |
| 27 using base::win::RegKey; | 25 #if defined(OS_WIN) |
| 26 #include "base/test/test_reg_util_win.h" | |
| 27 #include "base/win/registry.h" | |
| 28 #include "rlz/win/lib/rlz_lib.h" // InitializeTempHivesForTesting | |
| 29 #elif defined(OS_MACOSX) | |
| 30 #include "rlz/lib/rlz_value_store.h" // SetRlzStoreDirectory | |
| 31 #endif | |
| 32 | |
| 28 using content::NavigationEntry; | 33 using content::NavigationEntry; |
| 29 using registry_util::RegistryOverrideManager; | |
| 30 using testing::AssertionResult; | 34 using testing::AssertionResult; |
| 31 using testing::AssertionSuccess; | 35 using testing::AssertionSuccess; |
| 32 using testing::AssertionFailure; | 36 using testing::AssertionFailure; |
| 33 | 37 |
| 38 #if defined(OS_WIN) | |
| 39 using base::win::RegKey; | |
| 40 using registry_util::RegistryOverrideManager; | |
| 41 #endif | |
| 42 | |
| 34 namespace { | 43 namespace { |
| 35 | 44 |
| 45 #if defined(OS_WIN) | |
| 36 // Registry path to overridden hive. | 46 // Registry path to overridden hive. |
| 37 const wchar_t kRlzTempHkcu[] = L"rlz_hkcu"; | 47 const wchar_t kRlzTempHkcu[] = L"rlz_hkcu"; |
| 38 const wchar_t kRlzTempHklm[] = L"rlz_hklm"; | 48 const wchar_t kRlzTempHklm[] = L"rlz_hklm"; |
| 49 #endif | |
| 39 | 50 |
| 40 // Dummy RLZ string for the access points. | 51 // Dummy RLZ string for the access points. |
| 41 const char kOmniboxRlzString[] = "test_omnibox"; | 52 const char kOmniboxRlzString[] = "test_omnibox"; |
| 42 const char kHomepageRlzString[] = "test_homepage"; | 53 const char kHomepageRlzString[] = "test_homepage"; |
| 43 const char kNewOmniboxRlzString[] = "new_omnibox"; | 54 const char kNewOmniboxRlzString[] = "new_omnibox"; |
| 44 const char kNewHomepageRlzString[] = "new_homepage"; | 55 const char kNewHomepageRlzString[] = "new_homepage"; |
| 45 | 56 |
| 46 // Some helper macros to test it a string contains/does not contain a substring. | 57 // Some helper macros to test it a string contains/does not contain a substring. |
| 47 | 58 |
| 48 AssertionResult CmpHelperSTRC(const char* str_expression, | 59 AssertionResult CmpHelperSTRC(const char* str_expression, |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); | 150 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); |
| 140 }; | 151 }; |
| 141 | 152 |
| 142 class RlzLibTest : public testing::Test { | 153 class RlzLibTest : public testing::Test { |
| 143 virtual void SetUp() OVERRIDE; | 154 virtual void SetUp() OVERRIDE; |
| 144 virtual void TearDown() OVERRIDE; | 155 virtual void TearDown() OVERRIDE; |
| 145 | 156 |
| 146 protected: | 157 protected: |
| 147 void SetMainBrand(const char* brand); | 158 void SetMainBrand(const char* brand); |
| 148 void SetReactivationBrand(const char* brand); | 159 void SetReactivationBrand(const char* brand); |
| 160 #if defined(OS_WIN) | |
| 149 void SetRegistryBrandValue(const wchar_t* name, const char* brand); | 161 void SetRegistryBrandValue(const wchar_t* name, const char* brand); |
| 162 #endif | |
| 150 | 163 |
| 151 void SimulateOmniboxUsage(); | 164 void SimulateOmniboxUsage(); |
| 152 void SimulateHomepageUsage(); | 165 void SimulateHomepageUsage(); |
| 153 void InvokeDelayedInit(); | 166 void InvokeDelayedInit(); |
| 154 | 167 |
| 155 void ExpectEventRecorded(const char* event_name, bool expected); | 168 void ExpectEventRecorded(const char* event_name, bool expected); |
| 156 void ExpectRlzPingSent(bool expected); | 169 void ExpectRlzPingSent(bool expected); |
| 157 void ExpectReactivationRlzPingSent(bool expected); | 170 void ExpectReactivationRlzPingSent(bool expected); |
| 158 | 171 |
| 159 TestRLZTracker tracker_; | 172 TestRLZTracker tracker_; |
| 173 #if defined(OS_WIN) | |
| 160 RegistryOverrideManager override_manager_; | 174 RegistryOverrideManager override_manager_; |
| 175 #elif defined(OS_MACOSX) | |
| 176 ScopedTempDir temp_dir_; | |
| 177 scoped_ptr<google_util::BrandForTesting> brand_override_; | |
|
Roger Tawa OOO till Jul 10th
2012/03/26 18:52:38
just a question: is it possible to use BrandForTes
Nico
2012/03/26 20:26:57
I think so. (It would make the test more of a unit
| |
| 178 #endif | |
| 161 }; | 179 }; |
| 162 | 180 |
| 163 void RlzLibTest::SetUp() { | 181 void RlzLibTest::SetUp() { |
| 164 testing::Test::SetUp(); | 182 testing::Test::SetUp(); |
| 165 | 183 |
| 184 #if defined(OS_WIN) | |
| 166 // Before overriding HKLM for the tests, we need to set it up correctly | 185 // Before overriding HKLM for the tests, we need to set it up correctly |
| 167 // so that the rlz_lib calls work. This needs to be done before we do the | 186 // so that the rlz_lib calls work. This needs to be done before we do the |
| 168 // override. | 187 // override. |
| 169 | 188 |
| 170 string16 temp_hklm_path = base::StringPrintf( | 189 string16 temp_hklm_path = base::StringPrintf( |
| 171 L"%ls\\%ls", | 190 L"%ls\\%ls", |
| 172 RegistryOverrideManager::kTempTestKeyPath, | 191 RegistryOverrideManager::kTempTestKeyPath, |
| 173 kRlzTempHklm); | 192 kRlzTempHklm); |
| 174 | 193 |
| 175 base::win::RegKey hklm; | 194 base::win::RegKey hklm; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 186 ASSERT_EQ(ERROR_SUCCESS, hkcu.Create(HKEY_CURRENT_USER, | 205 ASSERT_EQ(ERROR_SUCCESS, hkcu.Create(HKEY_CURRENT_USER, |
| 187 temp_hkcu_path.c_str(), | 206 temp_hkcu_path.c_str(), |
| 188 KEY_READ)); | 207 KEY_READ)); |
| 189 | 208 |
| 190 rlz_lib::InitializeTempHivesForTesting(hklm, hkcu); | 209 rlz_lib::InitializeTempHivesForTesting(hklm, hkcu); |
| 191 | 210 |
| 192 // Its important to override HKLM before HKCU because of the registry | 211 // Its important to override HKLM before HKCU because of the registry |
| 193 // initialization performed above. | 212 // initialization performed above. |
| 194 override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, kRlzTempHklm); | 213 override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, kRlzTempHklm); |
| 195 override_manager_.OverrideRegistry(HKEY_CURRENT_USER, kRlzTempHkcu); | 214 override_manager_.OverrideRegistry(HKEY_CURRENT_USER, kRlzTempHkcu); |
| 215 #elif defined(OS_MACOSX) | |
| 216 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | |
| 217 rlz_lib::testing::SetRlzStoreDirectory(temp_dir_.path()); | |
| 218 #endif | |
| 196 | 219 |
| 197 // Make sure a non-organic brand code is set in the registry or the RLZTracker | 220 // Make sure a non-organic brand code is set in the registry or the RLZTracker |
| 198 // is pretty much a no-op. | 221 // is pretty much a no-op. |
| 199 SetMainBrand("TEST"); | 222 SetMainBrand("TEST"); |
| 200 SetReactivationBrand(""); | 223 SetReactivationBrand(""); |
| 201 } | 224 } |
| 202 | 225 |
| 203 void RlzLibTest::TearDown() { | 226 void RlzLibTest::TearDown() { |
| 227 #if defined(OS_MACOSX) | |
| 228 rlz_lib::testing::SetRlzStoreDirectory(FilePath()); | |
| 229 #endif | |
| 204 testing::Test::TearDown(); | 230 testing::Test::TearDown(); |
| 205 } | 231 } |
| 206 | 232 |
| 207 void RlzLibTest::SetMainBrand(const char* brand) { | 233 void RlzLibTest::SetMainBrand(const char* brand) { |
| 234 #if defined(OS_WIN) | |
| 208 SetRegistryBrandValue(google_update::kRegRLZBrandField, brand); | 235 SetRegistryBrandValue(google_update::kRegRLZBrandField, brand); |
| 236 #elif defined(OS_MACOSX) | |
| 237 brand_override_.reset(new google_util::BrandForTesting(brand)); | |
| 238 #endif | |
| 209 std::string check_brand; | 239 std::string check_brand; |
| 210 google_util::GetBrand(&check_brand); | 240 google_util::GetBrand(&check_brand); |
| 211 EXPECT_EQ(brand, check_brand); | 241 EXPECT_EQ(brand, check_brand); |
| 212 } | 242 } |
| 213 | 243 |
| 214 void RlzLibTest::SetReactivationBrand(const char* brand) { | 244 void RlzLibTest::SetReactivationBrand(const char* brand) { |
| 245 // TODO(thakis): Reactivation doesn't exist on Mac yet. | |
| 246 #if defined(OS_WIN) | |
| 215 SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand); | 247 SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand); |
| 216 std::string check_brand; | 248 std::string check_brand; |
| 217 google_util::GetReactivationBrand(&check_brand); | 249 google_util::GetReactivationBrand(&check_brand); |
| 218 EXPECT_EQ(brand, check_brand); | 250 EXPECT_EQ(brand, check_brand); |
| 251 #endif | |
| 219 } | 252 } |
| 220 | 253 |
| 254 #if defined(OS_WIN) | |
| 221 void RlzLibTest::SetRegistryBrandValue(const wchar_t* name, | 255 void RlzLibTest::SetRegistryBrandValue(const wchar_t* name, |
| 222 const char* brand) { | 256 const char* brand) { |
| 223 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); | 257 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
| 224 string16 reg_path = dist->GetStateKey(); | 258 string16 reg_path = dist->GetStateKey(); |
| 225 RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE); | 259 RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE); |
| 226 if (*brand == 0) { | 260 if (*brand == 0) { |
| 227 LONG result = key.DeleteValue(name); | 261 LONG result = key.DeleteValue(name); |
| 228 ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result); | 262 ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result); |
| 229 } else { | 263 } else { |
| 230 string16 brand16 = ASCIIToWide(brand); | 264 string16 brand16 = ASCIIToUTF16(brand); |
| 231 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str())); | 265 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str())); |
| 232 } | 266 } |
| 233 } | 267 } |
| 268 #endif | |
| 234 | 269 |
| 235 void RlzLibTest::SimulateOmniboxUsage() { | 270 void RlzLibTest::SimulateOmniboxUsage() { |
| 236 tracker_.Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL, | 271 tracker_.Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL, |
| 237 content::NotificationService::AllSources(), | 272 content::NotificationService::AllSources(), |
| 238 content::Details<AutocompleteLog>(NULL)); | 273 content::Details<AutocompleteLog>(NULL)); |
| 239 } | 274 } |
| 240 | 275 |
| 241 void RlzLibTest::SimulateHomepageUsage() { | 276 void RlzLibTest::SimulateHomepageUsage() { |
| 242 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); | 277 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); |
| 243 entry->SetPageID(0); | 278 entry->SetPageID(0); |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 506 } | 541 } |
| 507 | 542 |
| 508 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { | 543 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { |
| 509 // Set dummy RLZ string. | 544 // Set dummy RLZ string. |
| 510 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); | 545 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); |
| 511 | 546 |
| 512 string16 rlz; | 547 string16 rlz; |
| 513 | 548 |
| 514 tracker_.set_assume_not_ui_thread(true); | 549 tracker_.set_assume_not_ui_thread(true); |
| 515 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 550 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 516 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); | 551 EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 517 } | 552 } |
| 518 | 553 |
| 519 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { | 554 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { |
| 520 // Set dummy RLZ string. | 555 // Set dummy RLZ string. |
| 521 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); | 556 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); |
| 522 | 557 |
| 523 string16 rlz; | 558 string16 rlz; |
| 524 | 559 |
| 525 tracker_.set_assume_not_ui_thread(false); | 560 tracker_.set_assume_not_ui_thread(false); |
| 526 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 561 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 527 } | 562 } |
| 528 | 563 |
| 529 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { | 564 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { |
| 530 // Set dummy RLZ string. | 565 // Set dummy RLZ string. |
| 531 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); | 566 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); |
| 532 | 567 |
| 533 string16 rlz; | 568 string16 rlz; |
| 534 | 569 |
| 535 tracker_.set_assume_not_ui_thread(false); | 570 tracker_.set_assume_not_ui_thread(false); |
| 536 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 571 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 537 | 572 |
| 538 tracker_.set_assume_not_ui_thread(true); | 573 tracker_.set_assume_not_ui_thread(true); |
| 539 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 574 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 540 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); | 575 EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 541 | 576 |
| 542 tracker_.set_assume_not_ui_thread(false); | 577 tracker_.set_assume_not_ui_thread(false); |
| 543 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 578 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 544 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); | 579 EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 545 } | 580 } |
| 546 | 581 |
| 547 TEST_F(RlzLibTest, PingUpdatesRlzCache) { | 582 TEST_F(RlzLibTest, PingUpdatesRlzCache) { |
| 548 // Set dummy RLZ string. | 583 // Set dummy RLZ string. |
| 549 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); | 584 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, kOmniboxRlzString); |
| 550 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, kHomepageRlzString); | 585 rlz_lib::SetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, kHomepageRlzString); |
| 551 | 586 |
| 552 string16 rlz; | 587 string16 rlz; |
| 553 | 588 |
| 554 // Prime the cache. | 589 // Prime the cache. |
| 555 tracker_.set_assume_not_ui_thread(true); | 590 tracker_.set_assume_not_ui_thread(true); |
| 556 | 591 |
| 557 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 592 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 558 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); | 593 EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 559 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); | 594 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| 560 EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str()); | 595 EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| 561 | 596 |
| 562 // Make sure cache is valid. | 597 // Make sure cache is valid. |
| 563 tracker_.set_assume_not_ui_thread(false); | 598 tracker_.set_assume_not_ui_thread(false); |
| 564 | 599 |
| 565 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 600 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 566 EXPECT_STREQ(kOmniboxRlzString, WideToUTF8(rlz).c_str()); | 601 EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 567 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); | 602 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| 568 EXPECT_STREQ(kHomepageRlzString, WideToUTF8(rlz).c_str()); | 603 EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| 569 | 604 |
| 570 // Perform ping. | 605 // Perform ping. |
| 571 tracker_.set_assume_not_ui_thread(true); | 606 tracker_.set_assume_not_ui_thread(true); |
| 572 RLZTracker::InitRlzDelayed(true, 20, true, true); | 607 RLZTracker::InitRlzDelayed(true, 20, true, true); |
| 573 InvokeDelayedInit(); | 608 InvokeDelayedInit(); |
| 574 ExpectRlzPingSent(true); | 609 ExpectRlzPingSent(true); |
| 575 | 610 |
| 576 // Make sure cache is now updated. | 611 // Make sure cache is now updated. |
| 577 tracker_.set_assume_not_ui_thread(false); | 612 tracker_.set_assume_not_ui_thread(false); |
| 578 | 613 |
| 579 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); | 614 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz)); |
| 580 EXPECT_STREQ(kNewOmniboxRlzString, WideToUTF8(rlz).c_str()); | 615 EXPECT_STREQ(kNewOmniboxRlzString, UTF16ToUTF8(rlz).c_str()); |
| 581 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); | 616 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_HOME_PAGE, &rlz)); |
| 582 EXPECT_STREQ(kNewHomepageRlzString, WideToUTF8(rlz).c_str()); | 617 EXPECT_STREQ(kNewHomepageRlzString, UTF16ToUTF8(rlz).c_str()); |
| 583 } | 618 } |
| 584 | 619 |
| 585 TEST_F(RlzLibTest, ObserveHandlesBadArgs) { | 620 TEST_F(RlzLibTest, ObserveHandlesBadArgs) { |
| 586 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); | 621 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); |
| 587 entry->SetPageID(0); | 622 entry->SetPageID(0); |
| 588 entry->SetTransitionType(content::PAGE_TRANSITION_LINK); | 623 entry->SetTransitionType(content::PAGE_TRANSITION_LINK); |
| 589 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, | 624 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, |
| 590 content::NotificationService::AllSources(), | 625 content::NotificationService::AllSources(), |
| 591 content::Details<NavigationEntry>(NULL)); | 626 content::Details<NavigationEntry>(NULL)); |
| 592 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, | 627 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, |
| 593 content::NotificationService::AllSources(), | 628 content::NotificationService::AllSources(), |
| 594 content::Details<NavigationEntry>(entry.get())); | 629 content::Details<NavigationEntry>(entry.get())); |
| 595 } | 630 } |
| 596 | 631 |
| 632 // TODO(thakis): Reactivation doesn't exist on Mac yet. | |
| 633 #if defined(OS_WIN) | |
| 597 TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) { | 634 TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) { |
| 598 SetReactivationBrand("REAC"); | 635 SetReactivationBrand("REAC"); |
| 599 | 636 |
| 600 RLZTracker::InitRlzDelayed(true, 20, true, true); | 637 RLZTracker::InitRlzDelayed(true, 20, true, true); |
| 601 InvokeDelayedInit(); | 638 InvokeDelayedInit(); |
| 602 | 639 |
| 603 ExpectRlzPingSent(true); | 640 ExpectRlzPingSent(true); |
| 604 ExpectReactivationRlzPingSent(true); | 641 ExpectReactivationRlzPingSent(true); |
| 605 } | 642 } |
| 606 | 643 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 629 TEST_F(RlzLibTest, ReactivationOrganicOrganic) { | 666 TEST_F(RlzLibTest, ReactivationOrganicOrganic) { |
| 630 SetMainBrand("GGLS"); | 667 SetMainBrand("GGLS"); |
| 631 SetReactivationBrand("GGRS"); | 668 SetReactivationBrand("GGRS"); |
| 632 | 669 |
| 633 RLZTracker::InitRlzDelayed(true, 20, true, true); | 670 RLZTracker::InitRlzDelayed(true, 20, true, true); |
| 634 InvokeDelayedInit(); | 671 InvokeDelayedInit(); |
| 635 | 672 |
| 636 ExpectRlzPingSent(false); | 673 ExpectRlzPingSent(false); |
| 637 ExpectReactivationRlzPingSent(false); | 674 ExpectReactivationRlzPingSent(false); |
| 638 } | 675 } |
| 639 | 676 #endif // defined(OS_WIN) |
| OLD | NEW |