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 |