Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(508)

Side by Side Diff: chrome/browser/web_resource/promo_resource_service_unittest.cc

Issue 8363035: NTP4/Sync Promo: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged, fixed, unit tests and quick smoke test passing Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/json/json_reader.h" 5 #include "base/json/json_reader.h"
6 #include "base/string_number_conversions.h" 6 #include "base/string_number_conversions.h"
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 18 matching lines...) Expand all
29 web_resource_service_(new PromoResourceService(&profile_)) { 29 web_resource_service_(new PromoResourceService(&profile_)) {
30 } 30 }
31 31
32 protected: 32 protected:
33 TestingProfile profile_; 33 TestingProfile profile_;
34 ScopedTestingLocalState local_state_; 34 ScopedTestingLocalState local_state_;
35 scoped_refptr<PromoResourceService> web_resource_service_; 35 scoped_refptr<PromoResourceService> web_resource_service_;
36 MessageLoop loop_; 36 MessageLoop loop_;
37 }; 37 };
38 38
39 class SyncPromoTest : public PromoResourceServiceTest, 39 class NTPSignInPromoTest : public PromoResourceServiceTest,
40 public content::NotificationObserver { 40 public content::NotificationObserver {
41 public: 41 public:
42 SyncPromoTest() : PromoResourceServiceTest(), notifications_received_(0) { 42 NTPSignInPromoTest() : PromoResourceServiceTest(),
43 notifications_received_(0) {
43 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV); 44 web_resource_service_->set_channel(chrome::VersionInfo::CHANNEL_DEV);
44 registrar_.Add(this, 45 registrar_.Add(this,
45 chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED, 46 chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED,
46 content::NotificationService::AllSources()); 47 content::NotificationService::AllSources());
47 } 48 }
48 49
49 virtual void Observe(int type, 50 virtual void Observe(int type,
50 const content::NotificationSource& source, 51 const content::NotificationSource& source,
51 const content::NotificationDetails& details) { 52 const content::NotificationDetails& details) {
52 EXPECT_EQ(type, chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED); 53 EXPECT_EQ(type, chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED);
53 // Remember how many notifications we've received. 54 // Remember how many notifications we've received.
54 ++notifications_received_; 55 ++notifications_received_;
55 } 56 }
56 57
57 void reset_notification_count() { 58 void reset_notification_count() {
58 notifications_received_ = 0; 59 notifications_received_ = 0;
59 } 60 }
60 61
61 int notifications_received() const { 62 int notifications_received() const {
62 return notifications_received_; 63 return notifications_received_;
63 } 64 }
64 65
65 protected: 66 protected:
66 void ClearSyncPromoPrefs() { 67 void ClearNTPSignInPromoPrefs() {
67 PrefService* prefs = profile_.GetPrefs(); 68 PrefService* prefs = profile_.GetPrefs();
68 prefs->ClearPref(prefs::kNTPSyncPromoGroup); 69 prefs->ClearPref(prefs::kNTPSignInPromoGroup);
69 prefs->ClearPref(prefs::kNTPSyncPromoGroupMax); 70 prefs->ClearPref(prefs::kNTPSignInPromoGroupMax);
70 ASSERT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 71 ASSERT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
71 ASSERT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroupMax)); 72 ASSERT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroupMax));
72 } 73 }
73 74
74 void InvalidTestCase(const std::string& question) { 75 void InvalidTestCase(const std::string& question) {
75 PrefService* prefs = profile_.GetPrefs(); 76 PrefService* prefs = profile_.GetPrefs();
76 ASSERT_TRUE(prefs != NULL); 77 ASSERT_TRUE(prefs != NULL);
77 prefs->SetInteger(prefs::kNTPSyncPromoGroup, 50); 78 prefs->SetInteger(prefs::kNTPSignInPromoGroup, 50);
78 prefs->SetInteger(prefs::kNTPSyncPromoGroupMax, 75); 79 prefs->SetInteger(prefs::kNTPSignInPromoGroupMax, 75);
79 UnpackSyncPromo(question); 80 UnpackNTPSignInPromo(question);
80 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 81 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
81 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroupMax)); 82 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroupMax));
82 } 83 }
83 84
84 void SetupSyncPromoCase(int build, int max_group) { 85 void SetupNTPSignInPromoCase(int build, int max_group) {
85 std::string question = base::IntToString(build) + ":" + 86 std::string question = base::IntToString(build) + ":" +
86 base::IntToString(max_group); 87 base::IntToString(max_group);
87 UnpackSyncPromo(question); 88 UnpackNTPSignInPromo(question);
88 } 89 }
89 90
90 void UnpackSyncPromo(const std::string& question) { 91 void UnpackNTPSignInPromo(const std::string& question) {
91 std::string json_header = 92 std::string json_header =
92 "{ " 93 "{ "
93 " \"topic\": {" 94 " \"topic\": {"
94 " \"answers\": [" 95 " \"answers\": ["
95 " {" 96 " {"
96 " \"name\": \"sync_promo\"," 97 " \"name\": \"sign_in_promo\","
97 " \"question\": \""; 98 " \"question\": \"";
98 99
99 std::string json_footer = "\"" 100 std::string json_footer = "\""
100 " }" 101 " }"
101 " ]" 102 " ]"
102 " }" 103 " }"
103 "}"; 104 "}";
104 105
105 scoped_ptr<DictionaryValue> test_json(static_cast<DictionaryValue*>( 106 scoped_ptr<DictionaryValue> test_json(static_cast<DictionaryValue*>(
106 base::JSONReader::Read(json_header + question + json_footer, false))); 107 base::JSONReader::Read(json_header + question + json_footer, false)));
107 web_resource_service_->UnpackSyncPromoSignal(*(test_json.get())); 108 web_resource_service_->UnpackNTPSignInPromoSignal(*(test_json.get()));
108 } 109 }
109 110
110 private: 111 private:
111 int notifications_received_; 112 int notifications_received_;
112 content::NotificationRegistrar registrar_; 113 content::NotificationRegistrar registrar_;
113 }; 114 };
114 115
115 // Verifies that custom dates read from a web resource server are written to 116 // Verifies that custom dates read from a web resource server are written to
116 // the preferences file. 117 // the preferences file.
117 TEST_F(PromoResourceServiceTest, UnpackLogoSignal) { 118 TEST_F(PromoResourceServiceTest, UnpackLogoSignal) {
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 EXPECT_EQ(GURL("http://link.com"), actual_data.link); 743 EXPECT_EQ(GURL("http://link.com"), actual_data.link);
743 EXPECT_EQ("No thanks, hide this.", actual_data.expire); 744 EXPECT_EQ("No thanks, hide this.", actual_data.expire);
744 EXPECT_EQ(AppsPromo::USERS_NEW, actual_data.user_group); 745 EXPECT_EQ(AppsPromo::USERS_NEW, actual_data.user_group);
745 746
746 // Logos should be the default values because HTTP URLs are not valid. 747 // Logos should be the default values because HTTP URLs are not valid.
747 EXPECT_EQ(GURL("chrome://theme/IDR_WEBSTORE_ICON"), actual_data.logo); 748 EXPECT_EQ(GURL("chrome://theme/IDR_WEBSTORE_ICON"), actual_data.logo);
748 EXPECT_EQ(GURL(""), AppsPromo::GetSourcePromoLogoURL()); 749 EXPECT_EQ(GURL(""), AppsPromo::GetSourcePromoLogoURL());
749 } 750 }
750 751
751 // Don't run sync promo unpacking tests on ChromeOS as on that plaform 752 // Don't run sync promo unpacking tests on ChromeOS as on that plaform
752 // PromoResourceService::UnpackSyncPromoSignal() basically just no-ops. 753 // PromoResourceService::UnpackNTPSignInPromoSignal() basically just no-ops.
753 #if !defined(OS_CHROMEOS) 754 #if !defined(OS_CHROMEOS)
754 TEST_F(SyncPromoTest, UnpackSyncPromoSignal) { 755 TEST_F(NTPSignInPromoTest, UnpackNTPSignInPromoSignal) {
755 PrefService* prefs = profile_.GetPrefs(); 756 PrefService* prefs = profile_.GetPrefs();
756 ASSERT_TRUE(prefs != NULL); 757 ASSERT_TRUE(prefs != NULL);
757 758
758 // Test on by default (currently should be false). 759 // Test on by default (currently should be false).
759 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 760 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
760 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 761 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
761 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroupMax)); 762 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroupMax));
762 763
763 // Non-targeted build. 764 // Non-targeted build.
764 ClearSyncPromoPrefs(); 765 ClearNTPSignInPromoPrefs();
765 SetupSyncPromoCase(2, 50); 766 SetupNTPSignInPromoCase(2, 50);
766 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 767 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
767 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 768 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
768 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroupMax)); 769 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroupMax));
769 770
770 // Targeted build, doesn't create bucket and doesn't show promo because 771 // Targeted build, doesn't create bucket and doesn't show promo because
771 // groupMax < group. 772 // groupMax < group.
772 ClearSyncPromoPrefs(); 773 ClearNTPSignInPromoPrefs();
773 SetupSyncPromoCase(1, 0); 774 SetupNTPSignInPromoCase(1, 0);
774 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 775 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
775 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 0); 776 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 0);
776 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 777 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
777 778
778 // Targeted build, max_group = 50, ensure group pref created and within the 779 // Targeted build, max_group = 50, ensure group pref created and within the
779 // group bounds. 780 // group bounds.
780 ClearSyncPromoPrefs(); 781 ClearNTPSignInPromoPrefs();
781 SetupSyncPromoCase(1, 50); 782 SetupNTPSignInPromoCase(1, 50);
782 PromoResourceService::CanShowSyncPromo(&profile_); 783 PromoResourceService::CanShowNTPSignInPromo(&profile_);
783 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 50); 784 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 50);
784 EXPECT_TRUE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 785 EXPECT_TRUE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
785 EXPECT_GT(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 0); 786 EXPECT_GT(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 0);
786 EXPECT_LE(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 100); 787 EXPECT_LE(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 100);
787 788
788 // Set user group = 50, now shows promo. 789 // Set user group = 50, now shows promo.
789 prefs->SetInteger(prefs::kNTPSyncPromoGroup, 50); 790 prefs->SetInteger(prefs::kNTPSignInPromoGroup, 50);
790 EXPECT_TRUE(PromoResourceService::CanShowSyncPromo(&profile_)); 791 EXPECT_TRUE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
791 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 50); 792 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 50);
792 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 50); 793 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 50);
793 794
794 // Bump user group, ensure that we should not show promo. 795 // Bump user group, ensure that we should not show promo.
795 prefs->SetInteger(prefs::kNTPSyncPromoGroup, 51); 796 prefs->SetInteger(prefs::kNTPSignInPromoGroup, 51);
796 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 797 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
797 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 51); 798 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 51);
798 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 50); 799 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 50);
799 800
800 // If the max group gets bumped to the user's group (or above), it should 801 // If the max group gets bumped to the user's group (or above), it should
801 // show. 802 // show.
802 prefs->SetInteger(prefs::kNTPSyncPromoGroupMax, 51); 803 prefs->SetInteger(prefs::kNTPSignInPromoGroupMax, 51);
803 EXPECT_TRUE(PromoResourceService::CanShowSyncPromo(&profile_)); 804 EXPECT_TRUE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
804 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 51); 805 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 51);
805 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 51); 806 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 51);
806 807
807 // Reduce max group. 808 // Reduce max group.
808 prefs->SetInteger(prefs::kNTPSyncPromoGroupMax, 49); 809 prefs->SetInteger(prefs::kNTPSignInPromoGroupMax, 49);
809 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 810 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
810 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroup), 51); 811 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroup), 51);
811 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSyncPromoGroupMax), 49); 812 EXPECT_EQ(prefs->GetInteger(prefs::kNTPSignInPromoGroupMax), 49);
812 813
813 // Ignore non-targeted builds. 814 // Ignore non-targeted builds.
814 prefs->SetInteger(prefs::kNTPSyncPromoGroup, 50); 815 prefs->SetInteger(prefs::kNTPSignInPromoGroup, 50);
815 prefs->SetInteger(prefs::kNTPSyncPromoGroupMax, 75); 816 prefs->SetInteger(prefs::kNTPSignInPromoGroupMax, 75);
816 EXPECT_TRUE(PromoResourceService::CanShowSyncPromo(&profile_)); 817 EXPECT_TRUE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
817 SetupSyncPromoCase(2, 25); 818 SetupNTPSignInPromoCase(2, 25);
818 // Make sure the prefs are deleted. 819 // Make sure the prefs are deleted.
819 EXPECT_FALSE(PromoResourceService::CanShowSyncPromo(&profile_)); 820 EXPECT_FALSE(PromoResourceService::CanShowNTPSignInPromo(&profile_));
820 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroup)); 821 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroup));
821 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSyncPromoGroupMax)); 822 EXPECT_FALSE(prefs->HasPrefPath(prefs::kNTPSignInPromoGroupMax));
822 } 823 }
823 824
824 // Throw random stuff at UnpackSyncPromoSignal and make sure no segfaults or 825 // Throw random stuff at UnpackNTPSignInPromoSignal and make sure no segfaults
825 // other issues and that the prefs were cleared. 826 // or other issues and that the prefs were cleared.
826 TEST_F(SyncPromoTest, UnpackSyncPromoSignalInvalid) { 827 TEST_F(NTPSignInPromoTest, UnpackNTPSignInPromoSignalInvalid) {
827 // Empty. 828 // Empty.
828 InvalidTestCase(""); 829 InvalidTestCase("");
829 830
830 // Negative numbers. 831 // Negative numbers.
831 InvalidTestCase("-5:-6"); 832 InvalidTestCase("-5:-6");
832 833
833 // An extra field. 834 // An extra field.
834 InvalidTestCase("1:0:1"); 835 InvalidTestCase("1:0:1");
835 836
836 // A ton of separators. 837 // A ton of separators.
837 InvalidTestCase("::::::"); 838 InvalidTestCase("::::::");
838 839
839 // Really big numbers. 840 // Really big numbers.
840 InvalidTestCase("68719476737:68719476737"); 841 InvalidTestCase("68719476737:68719476737");
841 842
842 // UTF-8 chars. 843 // UTF-8 chars.
843 InvalidTestCase("だからって馬鹿に:してるの?怒る友人"); 844 InvalidTestCase("だからって馬鹿に:してるの?怒る友人");
844 } 845 }
845 846
846 TEST_F(SyncPromoTest, UnpackSyncPromoSignalNotify) { 847 TEST_F(NTPSignInPromoTest, UnpackNTPSignInPromoSignalNotify) {
847 // Clear prefs and ensure we're not triggering notifications every time we 848 // Clear prefs and ensure we're not triggering notifications every time we
848 // receive not-targeted or valid data (only when we need to turn off the 849 // receive not-targeted or valid data (only when we need to turn off the
849 // promo). 850 // promo).
850 ClearSyncPromoPrefs(); 851 ClearNTPSignInPromoPrefs();
851 reset_notification_count(); 852 reset_notification_count();
852 853
853 // Non-targeted build. 854 // Non-targeted build.
854 SetupSyncPromoCase(2, 50); 855 SetupNTPSignInPromoCase(2, 50);
855 856
856 // Targeted, but under any possible max group. 857 // Targeted, but under any possible max group.
857 SetupSyncPromoCase(1, 0); 858 SetupNTPSignInPromoCase(1, 0);
858 859
859 // Targeted for sure, but shouldn't send notification. 860 // Targeted for sure, but shouldn't send notification.
860 SetupSyncPromoCase(1, 100); 861 SetupNTPSignInPromoCase(1, 100);
861 862
862 // Expect this didn't trigger any notifications. 863 // Expect this didn't trigger any notifications.
863 EXPECT_EQ(notifications_received(), 0); 864 EXPECT_EQ(notifications_received(), 0);
864 865
865 // Expect notifications when the promo is disabled, as this is expected 866 // Expect notifications when the promo is disabled, as this is expected
866 // behavior. 867 // behavior.
867 SetupSyncPromoCase(2, 0); 868 SetupNTPSignInPromoCase(2, 0);
868 EXPECT_EQ(notifications_received(), 1); 869 EXPECT_EQ(notifications_received(), 1);
869 } 870 }
870 #endif // !defined(OS_CHROMEOS) 871 #endif // !defined(OS_CHROMEOS)
871 872
872 TEST_F(PromoResourceServiceTest, IsBuildTargetedTest) { 873 TEST_F(PromoResourceServiceTest, IsBuildTargetedTest) {
873 // canary 874 // canary
874 const chrome::VersionInfo::Channel canary = 875 const chrome::VersionInfo::Channel canary =
875 chrome::VersionInfo::CHANNEL_CANARY; 876 chrome::VersionInfo::CHANNEL_CANARY;
876 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 1)); 877 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 1));
877 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 3)); 878 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(canary, 3));
(...skipping 30 matching lines...) Expand all
908 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7)); 909 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 7));
909 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15)); 910 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 15));
910 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8)); 911 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 8));
911 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11)); 912 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, 11));
912 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12)); 913 EXPECT_TRUE(PromoResourceService::IsBuildTargeted(stable, 12));
913 914
914 // invalid 915 // invalid
915 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1)); 916 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, -1));
916 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX)); 917 EXPECT_FALSE(PromoResourceService::IsBuildTargeted(stable, INT_MAX));
917 } 918 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698