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

Side by Side Diff: chrome/browser/safe_browsing/permission_reporter_unittest.cc

Issue 2075523002: Add SourceUI field to permission report (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 4 years, 5 months 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/safe_browsing/permission_reporter.h" 5 #include "chrome/browser/safe_browsing/permission_reporter.h"
6 6
7 #include "base/feature_list.h" 7 #include "base/feature_list.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/test/simple_test_clock.h" 10 #include "base/test/simple_test_clock.h"
(...skipping 15 matching lines...) Expand all
26 "http://safebrowsing.googleusercontent.com/safebrowsing/clientreport/" 26 "http://safebrowsing.googleusercontent.com/safebrowsing/clientreport/"
27 "permission-action"; 27 "permission-action";
28 28
29 const int kMaximumReportsPerOriginPerPermissionPerMinute = 5; 29 const int kMaximumReportsPerOriginPerPermissionPerMinute = 5;
30 30
31 const char kDummyOriginOne[] = "http://example.test/"; 31 const char kDummyOriginOne[] = "http://example.test/";
32 const char kDummyOriginTwo[] = "http://example2.test/"; 32 const char kDummyOriginTwo[] = "http://example2.test/";
33 const PermissionType kDummyPermissionOne = PermissionType::GEOLOCATION; 33 const PermissionType kDummyPermissionOne = PermissionType::GEOLOCATION;
34 const PermissionType kDummyPermissionTwo = PermissionType::NOTIFICATIONS; 34 const PermissionType kDummyPermissionTwo = PermissionType::NOTIFICATIONS;
35 const PermissionAction kDummyAction = GRANTED; 35 const PermissionAction kDummyAction = GRANTED;
36 const PermissionSourceUI kDummySourceUI = PermissionSourceUI::PROMPT;
36 37
37 const char kDummyTrialOne[] = "trial one"; 38 const char kDummyTrialOne[] = "trial one";
38 const char kDummyGroupOne[] = "group one"; 39 const char kDummyGroupOne[] = "group one";
39 const char kDummyTrialTwo[] = "trial two"; 40 const char kDummyTrialTwo[] = "trial two";
40 const char kDummyGroupTwo[] = "group two"; 41 const char kDummyGroupTwo[] = "group two";
41 42
42 const char kFeatureOnByDefaultName[] = "OnByDefault"; 43 const char kFeatureOnByDefaultName[] = "OnByDefault";
43 struct base::Feature kFeatureOnByDefault { 44 struct base::Feature kFeatureOnByDefault {
44 kFeatureOnByDefaultName, base::FEATURE_ENABLED_BY_DEFAULT 45 kFeatureOnByDefaultName, base::FEATURE_ENABLED_BY_DEFAULT
45 }; 46 };
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // Owned by |permission_reporter_|. 100 // Owned by |permission_reporter_|.
100 base::SimpleTestClock* clock_; 101 base::SimpleTestClock* clock_;
101 102
102 std::unique_ptr<PermissionReporter> permission_reporter_; 103 std::unique_ptr<PermissionReporter> permission_reporter_;
103 }; 104 };
104 105
105 // Test that PermissionReporter::SendReport sends a serialized report string to 106 // Test that PermissionReporter::SendReport sends a serialized report string to
106 // SafeBrowsing CSD servers. 107 // SafeBrowsing CSD servers.
107 TEST_F(PermissionReporterTest, SendReport) { 108 TEST_F(PermissionReporterTest, SendReport) {
108 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 109 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
109 kDummyAction); 110 kDummyAction, kDummySourceUI);
110 111
111 PermissionReport permission_report; 112 PermissionReport permission_report;
112 ASSERT_TRUE( 113 ASSERT_TRUE(
113 permission_report.ParseFromString(mock_report_sender_->latest_report())); 114 permission_report.ParseFromString(mock_report_sender_->latest_report()));
114 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); 115 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission());
115 EXPECT_EQ(PermissionReport::GRANTED, permission_report.action()); 116 EXPECT_EQ(PermissionReport::GRANTED, permission_report.action());
117 EXPECT_EQ(PermissionReport::PROMPT, permission_report.source_ui());
116 EXPECT_EQ(kDummyOriginOne, permission_report.origin()); 118 EXPECT_EQ(kDummyOriginOne, permission_report.origin());
117 #if defined(OS_ANDROID) 119 #if defined(OS_ANDROID)
118 EXPECT_EQ(PermissionReport::ANDROID_PLATFORM, 120 EXPECT_EQ(PermissionReport::ANDROID_PLATFORM,
119 permission_report.platform_type()); 121 permission_report.platform_type());
120 #elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_CHROMEOS) || \ 122 #elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_CHROMEOS) || \
121 defined(OS_LINUX) 123 defined(OS_LINUX)
122 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, 124 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM,
123 permission_report.platform_type()); 125 permission_report.platform_type());
124 #endif 126 #endif
125 127
(...skipping 26 matching lines...) Expand all
152 base::FeatureList::SetInstance(std::move(feature_list)); 154 base::FeatureList::SetInstance(std::move(feature_list));
153 155
154 // This is necessary to activate both field trials. 156 // This is necessary to activate both field trials.
155 base::FeatureList::IsEnabled(kFeatureOnByDefault); 157 base::FeatureList::IsEnabled(kFeatureOnByDefault);
156 base::FeatureList::IsEnabled(kFeatureOffByDefault); 158 base::FeatureList::IsEnabled(kFeatureOffByDefault);
157 159
158 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_one->trial_name())); 160 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_one->trial_name()));
159 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_two->trial_name())); 161 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_two->trial_name()));
160 162
161 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 163 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
162 kDummyAction); 164 kDummyAction, kDummySourceUI);
163 165
164 PermissionReport permission_report; 166 PermissionReport permission_report;
165 ASSERT_TRUE( 167 ASSERT_TRUE(
166 permission_report.ParseFromString(mock_report_sender_->latest_report())); 168 permission_report.ParseFromString(mock_report_sender_->latest_report()));
167 169
168 variations::ActiveGroupId field_trial_one = 170 variations::ActiveGroupId field_trial_one =
169 variations::MakeActiveGroupId(kDummyTrialOne, kDummyGroupOne); 171 variations::MakeActiveGroupId(kDummyTrialOne, kDummyGroupOne);
170 variations::ActiveGroupId field_trial_two = 172 variations::ActiveGroupId field_trial_two =
171 variations::MakeActiveGroupId(kDummyTrialTwo, kDummyGroupTwo); 173 variations::MakeActiveGroupId(kDummyTrialTwo, kDummyGroupTwo);
172 ActiveGroupIdSet expected_group_ids = {field_trial_one, field_trial_two}; 174 ActiveGroupIdSet expected_group_ids = {field_trial_one, field_trial_two};
173 175
174 EXPECT_EQ(2, permission_report.field_trials().size()); 176 EXPECT_EQ(2, permission_report.field_trials().size());
175 for (auto field_trial : permission_report.field_trials()) { 177 for (auto field_trial : permission_report.field_trials()) {
176 variations::ActiveGroupId group_id = {field_trial.name_id(), 178 variations::ActiveGroupId group_id = {field_trial.name_id(),
177 field_trial.group_id()}; 179 field_trial.group_id()};
178 EXPECT_EQ(1U, expected_group_ids.erase(group_id)); 180 EXPECT_EQ(1U, expected_group_ids.erase(group_id));
179 } 181 }
180 EXPECT_EQ(0U, expected_group_ids.size()); 182 EXPECT_EQ(0U, expected_group_ids.size());
181 } 183 }
182 184
183 // Test that PermissionReporter::IsReportThresholdExceeded returns false only 185 // Test that PermissionReporter::IsReportThresholdExceeded returns false only
184 // when the number of reports sent in the last one minute per origin per 186 // when the number of reports sent in the last one minute per origin per
185 // permission is under a threshold. 187 // permission is under a threshold.
186 TEST_F(PermissionReporterTest, IsReportThresholdExceeded) { 188 TEST_F(PermissionReporterTest, IsReportThresholdExceeded) {
187 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 189 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
188 190
189 int reports_to_send = kMaximumReportsPerOriginPerPermissionPerMinute; 191 int reports_to_send = kMaximumReportsPerOriginPerPermissionPerMinute;
190 while (reports_to_send--) 192 while (reports_to_send--)
191 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 193 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
192 kDummyAction); 194 kDummyAction, kDummySourceUI);
193 EXPECT_EQ(5, mock_report_sender_->GetAndResetNumberOfReportsSent()); 195 EXPECT_EQ(5, mock_report_sender_->GetAndResetNumberOfReportsSent());
194 196
195 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 197 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
196 kDummyAction); 198 kDummyAction, kDummySourceUI);
197 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 199 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
198 200
199 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionTwo, 201 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionTwo,
200 kDummyAction); 202 kDummyAction, kDummySourceUI);
201 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 203 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
202 204
203 permission_reporter_->SendReport(GURL(kDummyOriginTwo), kDummyPermissionOne, 205 permission_reporter_->SendReport(GURL(kDummyOriginTwo), kDummyPermissionOne,
204 kDummyAction); 206 kDummyAction, kDummySourceUI);
205 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 207 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
206 208
207 clock_->Advance(base::TimeDelta::FromMinutes(1)); 209 clock_->Advance(base::TimeDelta::FromMinutes(1));
208 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 210 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
209 kDummyAction); 211 kDummyAction, kDummySourceUI);
210 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 212 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
211 213
212 clock_->Advance(base::TimeDelta::FromMicroseconds(1)); 214 clock_->Advance(base::TimeDelta::FromMicroseconds(1));
213 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 215 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
214 kDummyAction); 216 kDummyAction, kDummySourceUI);
215 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 217 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
216 218
217 clock_->Advance(base::TimeDelta::FromMinutes(1)); 219 clock_->Advance(base::TimeDelta::FromMinutes(1));
218 reports_to_send = 12; 220 reports_to_send = 12;
219 while (reports_to_send--) { 221 while (reports_to_send--) {
220 clock_->Advance(base::TimeDelta::FromSeconds(5)); 222 clock_->Advance(base::TimeDelta::FromSeconds(5));
221 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 223 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
222 kDummyAction); 224 kDummyAction, kDummySourceUI);
223 } 225 }
224 EXPECT_EQ(kMaximumReportsPerOriginPerPermissionPerMinute, 226 EXPECT_EQ(kMaximumReportsPerOriginPerPermissionPerMinute,
225 mock_report_sender_->GetAndResetNumberOfReportsSent()); 227 mock_report_sender_->GetAndResetNumberOfReportsSent());
226 } 228 }
227 229
228 } // namespace safe_browsing 230 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/permission_reporter.cc ('k') | chrome/browser/safe_browsing/ping_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698