| 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/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/google/google_util.h" | 10 #include "chrome/browser/google/google_util.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 | 136 |
| 137 virtual bool SendFinancialPing(const std::string& brand, | 137 virtual bool SendFinancialPing(const std::string& brand, |
| 138 const base::string16& lang, | 138 const base::string16& lang, |
| 139 const base::string16& referral) OVERRIDE { | 139 const base::string16& referral) OVERRIDE { |
| 140 // Don't ping the server during tests, just pretend as if we did. | 140 // Don't ping the server during tests, just pretend as if we did. |
| 141 EXPECT_FALSE(brand.empty()); | 141 EXPECT_FALSE(brand.empty()); |
| 142 pinged_brands_.insert(brand); | 142 pinged_brands_.insert(brand); |
| 143 | 143 |
| 144 // Set new access points RLZ string, like the actual server ping would have | 144 // Set new access points RLZ string, like the actual server ping would have |
| 145 // done. | 145 // done. |
| 146 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, | 146 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), |
| 147 kNewOmniboxRlzString); | 147 kNewOmniboxRlzString); |
| 148 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, | 148 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), |
| 149 kNewHomepageRlzString); | 149 kNewHomepageRlzString); |
| 150 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_APP_LIST, | 150 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), |
| 151 kNewAppListRlzString); | 151 kNewAppListRlzString); |
| 152 return true; | 152 return true; |
| 153 } | 153 } |
| 154 | 154 |
| 155 std::set<std::string> pinged_brands_; | 155 std::set<std::string> pinged_brands_; |
| 156 bool assume_not_ui_thread_; | 156 bool assume_not_ui_thread_; |
| 157 | 157 |
| 158 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); | 158 DISALLOW_COPY_AND_ASSIGN(TestRLZTracker); |
| 159 }; | 159 }; |
| 160 | 160 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 const char kHomepageFirstSeach[] = "CBF"; | 345 const char kHomepageFirstSeach[] = "CBF"; |
| 346 | 346 |
| 347 const char kAppListInstall[] = "CCI"; | 347 const char kAppListInstall[] = "CCI"; |
| 348 const char kAppListSetToGoogle[] = "CCS"; | 348 const char kAppListSetToGoogle[] = "CCS"; |
| 349 const char kAppListFirstSearch[] = "CCF"; | 349 const char kAppListFirstSearch[] = "CCF"; |
| 350 #endif | 350 #endif |
| 351 | 351 |
| 352 const base::TimeDelta kDelay = base::TimeDelta::FromMilliseconds(20); | 352 const base::TimeDelta kDelay = base::TimeDelta::FromMilliseconds(20); |
| 353 | 353 |
| 354 TEST_F(RlzLibTest, RecordProductEvent) { | 354 TEST_F(RlzLibTest, RecordProductEvent) { |
| 355 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX, | 355 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), |
| 356 rlz_lib::FIRST_SEARCH); | 356 rlz_lib::FIRST_SEARCH); |
| 357 | 357 |
| 358 ExpectEventRecorded(kOmniboxFirstSearch, true); | 358 ExpectEventRecorded(kOmniboxFirstSearch, true); |
| 359 } | 359 } |
| 360 | 360 |
| 361 TEST_F(RlzLibTest, QuickStopAfterStart) { | 361 TEST_F(RlzLibTest, QuickStopAfterStart) { |
| 362 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, true); | 362 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, true); |
| 363 | 363 |
| 364 // Omnibox events. | 364 // Omnibox events. |
| 365 ExpectEventRecorded(kOmniboxInstall, false); | 365 ExpectEventRecorded(kOmniboxInstall, false); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 ExpectEventRecorded(kAppListInstall, true); | 463 ExpectEventRecorded(kAppListInstall, true); |
| 464 ExpectEventRecorded(kAppListSetToGoogle, false); | 464 ExpectEventRecorded(kAppListSetToGoogle, false); |
| 465 ExpectEventRecorded(kAppListFirstSearch, false); | 465 ExpectEventRecorded(kAppListFirstSearch, false); |
| 466 | 466 |
| 467 ExpectRlzPingSent(true); | 467 ExpectRlzPingSent(true); |
| 468 } | 468 } |
| 469 | 469 |
| 470 TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRun) { | 470 TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRun) { |
| 471 // Set some dummy RLZ strings to simulate that we already ran before and | 471 // Set some dummy RLZ strings to simulate that we already ran before and |
| 472 // performed a successful ping to the RLZ server. | 472 // performed a successful ping to the RLZ server. |
| 473 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString); | 473 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString); |
| 474 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, kHomepageRlzString); | 474 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString); |
| 475 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_APP_LIST, kAppListRlzString); | 475 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString); |
| 476 | 476 |
| 477 TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, true); | 477 TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, true); |
| 478 InvokeDelayedInit(); | 478 InvokeDelayedInit(); |
| 479 | 479 |
| 480 // Omnibox events. | 480 // Omnibox events. |
| 481 ExpectEventRecorded(kOmniboxInstall, true); | 481 ExpectEventRecorded(kOmniboxInstall, true); |
| 482 ExpectEventRecorded(kOmniboxSetToGoogle, false); | 482 ExpectEventRecorded(kOmniboxSetToGoogle, false); |
| 483 ExpectEventRecorded(kOmniboxFirstSearch, false); | 483 ExpectEventRecorded(kOmniboxFirstSearch, false); |
| 484 | 484 |
| 485 // Home page events. | 485 // Home page events. |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 // App list events. | 716 // App list events. |
| 717 ExpectEventRecorded(kAppListInstall, false); | 717 ExpectEventRecorded(kAppListInstall, false); |
| 718 ExpectEventRecorded(kAppListSetToGoogle, false); | 718 ExpectEventRecorded(kAppListSetToGoogle, false); |
| 719 ExpectEventRecorded(kAppListFirstSearch, true); | 719 ExpectEventRecorded(kAppListFirstSearch, true); |
| 720 | 720 |
| 721 ExpectRlzPingSent(false); | 721 ExpectRlzPingSent(false); |
| 722 } | 722 } |
| 723 | 723 |
| 724 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { | 724 TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) { |
| 725 // Set dummy RLZ string. | 725 // Set dummy RLZ string. |
| 726 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString); | 726 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString); |
| 727 | 727 |
| 728 base::string16 rlz; | 728 base::string16 rlz; |
| 729 | 729 |
| 730 tracker_.set_assume_not_ui_thread(true); | 730 tracker_.set_assume_not_ui_thread(true); |
| 731 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 731 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 732 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 732 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 733 } | 733 } |
| 734 | 734 |
| 735 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { | 735 TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) { |
| 736 // Set dummy RLZ string. | 736 // Set dummy RLZ string. |
| 737 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString); | 737 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString); |
| 738 | 738 |
| 739 base::string16 rlz; | 739 base::string16 rlz; |
| 740 | 740 |
| 741 tracker_.set_assume_not_ui_thread(false); | 741 tracker_.set_assume_not_ui_thread(false); |
| 742 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 742 EXPECT_FALSE( |
| 743 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 743 } | 744 } |
| 744 | 745 |
| 745 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { | 746 TEST_F(RlzLibTest, GetAccessPointRlzIsCached) { |
| 746 // Set dummy RLZ string. | 747 // Set dummy RLZ string. |
| 747 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString); | 748 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString); |
| 748 | 749 |
| 749 base::string16 rlz; | 750 base::string16 rlz; |
| 750 | 751 |
| 751 tracker_.set_assume_not_ui_thread(false); | 752 tracker_.set_assume_not_ui_thread(false); |
| 752 EXPECT_FALSE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 753 EXPECT_FALSE( |
| 754 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 753 | 755 |
| 754 tracker_.set_assume_not_ui_thread(true); | 756 tracker_.set_assume_not_ui_thread(true); |
| 755 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 757 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 756 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 758 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 757 | 759 |
| 758 tracker_.set_assume_not_ui_thread(false); | 760 tracker_.set_assume_not_ui_thread(false); |
| 759 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 761 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 760 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 762 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 761 } | 763 } |
| 762 | 764 |
| 763 TEST_F(RlzLibTest, PingUpdatesRlzCache) { | 765 TEST_F(RlzLibTest, PingUpdatesRlzCache) { |
| 764 // Set dummy RLZ string. | 766 // Set dummy RLZ string. |
| 765 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString); | 767 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString); |
| 766 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, kHomepageRlzString); | 768 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString); |
| 767 rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_APP_LIST, kAppListRlzString); | 769 rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString); |
| 768 | 770 |
| 769 base::string16 rlz; | 771 base::string16 rlz; |
| 770 | 772 |
| 771 // Prime the cache. | 773 // Prime the cache. |
| 772 tracker_.set_assume_not_ui_thread(true); | 774 tracker_.set_assume_not_ui_thread(true); |
| 773 | 775 |
| 774 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 776 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 775 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 777 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 776 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( | 778 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( |
| 777 RLZTracker::CHROME_HOME_PAGE, &rlz)); | 779 RLZTracker::ChromeHomePage(), &rlz)); |
| 778 EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); | 780 EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 779 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_APP_LIST, &rlz)); | 781 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz)); |
| 780 EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); | 782 EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 781 | 783 |
| 782 // Make sure cache is valid. | 784 // Make sure cache is valid. |
| 783 tracker_.set_assume_not_ui_thread(false); | 785 tracker_.set_assume_not_ui_thread(false); |
| 784 | 786 |
| 785 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 787 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 786 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 788 EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 787 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( | 789 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( |
| 788 RLZTracker::CHROME_HOME_PAGE, &rlz)); | 790 RLZTracker::ChromeHomePage(), &rlz)); |
| 789 EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); | 791 EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 790 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_APP_LIST, &rlz)); | 792 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz)); |
| 791 EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); | 793 EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 792 | 794 |
| 793 // Perform ping. | 795 // Perform ping. |
| 794 tracker_.set_assume_not_ui_thread(true); | 796 tracker_.set_assume_not_ui_thread(true); |
| 795 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false); | 797 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false); |
| 796 InvokeDelayedInit(); | 798 InvokeDelayedInit(); |
| 797 ExpectRlzPingSent(true); | 799 ExpectRlzPingSent(true); |
| 798 | 800 |
| 799 // Make sure cache is now updated. | 801 // Make sure cache is now updated. |
| 800 tracker_.set_assume_not_ui_thread(false); | 802 tracker_.set_assume_not_ui_thread(false); |
| 801 | 803 |
| 802 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz)); | 804 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz)); |
| 803 EXPECT_STREQ(kNewOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); | 805 EXPECT_STREQ(kNewOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 804 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( | 806 EXPECT_TRUE(RLZTracker::GetAccessPointRlz( |
| 805 RLZTracker::CHROME_HOME_PAGE, &rlz)); | 807 RLZTracker::ChromeHomePage(), &rlz)); |
| 806 EXPECT_STREQ(kNewHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); | 808 EXPECT_STREQ(kNewHomepageRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 807 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_APP_LIST, &rlz)); | 809 EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz)); |
| 808 EXPECT_STREQ(kNewAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); | 810 EXPECT_STREQ(kNewAppListRlzString, base::UTF16ToUTF8(rlz).c_str()); |
| 809 } | 811 } |
| 810 | 812 |
| 811 TEST_F(RlzLibTest, ObserveHandlesBadArgs) { | 813 TEST_F(RlzLibTest, ObserveHandlesBadArgs) { |
| 812 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); | 814 scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); |
| 813 entry->SetPageID(0); | 815 entry->SetPageID(0); |
| 814 entry->SetTransitionType(content::PAGE_TRANSITION_LINK); | 816 entry->SetTransitionType(content::PAGE_TRANSITION_LINK); |
| 815 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, | 817 tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING, |
| 816 content::NotificationService::AllSources(), | 818 content::NotificationService::AllSources(), |
| 817 content::Details<NavigationEntry>(NULL)); | 819 content::Details<NavigationEntry>(NULL)); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false); | 863 TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false); |
| 862 InvokeDelayedInit(); | 864 InvokeDelayedInit(); |
| 863 | 865 |
| 864 ExpectRlzPingSent(false); | 866 ExpectRlzPingSent(false); |
| 865 ExpectReactivationRlzPingSent(false); | 867 ExpectReactivationRlzPingSent(false); |
| 866 } | 868 } |
| 867 #endif // defined(OS_WIN) | 869 #endif // defined(OS_WIN) |
| 868 | 870 |
| 869 #if defined(OS_CHROMEOS) | 871 #if defined(OS_CHROMEOS) |
| 870 TEST_F(RlzLibTest, ClearRlzState) { | 872 TEST_F(RlzLibTest, ClearRlzState) { |
| 871 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX, | 873 RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), |
| 872 rlz_lib::FIRST_SEARCH); | 874 rlz_lib::FIRST_SEARCH); |
| 873 | 875 |
| 874 ExpectEventRecorded(kOmniboxFirstSearch, true); | 876 ExpectEventRecorded(kOmniboxFirstSearch, true); |
| 875 | 877 |
| 876 RLZTracker::ClearRlzState(); | 878 RLZTracker::ClearRlzState(); |
| 877 | 879 |
| 878 ExpectEventRecorded(kOmniboxFirstSearch, false); | 880 ExpectEventRecorded(kOmniboxFirstSearch, false); |
| 879 } | 881 } |
| 880 #endif // defined(OS_CHROMEOS) | 882 #endif // defined(OS_CHROMEOS) |
| OLD | NEW |