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

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

Issue 2153763002: Add user gesture field to permission report (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add-source-ui-to-permission-report
Patch Set: nit 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 // Owned by |permission_reporter_|. 100 // Owned by |permission_reporter_|.
101 base::SimpleTestClock* clock_; 101 base::SimpleTestClock* clock_;
102 102
103 std::unique_ptr<PermissionReporter> permission_reporter_; 103 std::unique_ptr<PermissionReporter> permission_reporter_;
104 }; 104 };
105 105
106 // Test that PermissionReporter::SendReport sends a serialized report string to 106 // Test that PermissionReporter::SendReport sends a serialized report string to
107 // SafeBrowsing CSD servers. 107 // SafeBrowsing CSD servers.
108 TEST_F(PermissionReporterTest, SendReport) { 108 TEST_F(PermissionReporterTest, SendReport) {
109 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 109 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
110 kDummyAction, kDummySourceUI); 110 kDummyAction, kDummySourceUI,
111 false /* user_gesture */);
111 112
112 PermissionReport permission_report; 113 PermissionReport permission_report;
113 ASSERT_TRUE( 114 ASSERT_TRUE(
114 permission_report.ParseFromString(mock_report_sender_->latest_report())); 115 permission_report.ParseFromString(mock_report_sender_->latest_report()));
115 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission()); 116 EXPECT_EQ(PermissionReport::GEOLOCATION, permission_report.permission());
116 EXPECT_EQ(PermissionReport::GRANTED, permission_report.action()); 117 EXPECT_EQ(PermissionReport::GRANTED, permission_report.action());
117 EXPECT_EQ(PermissionReport::PROMPT, permission_report.source_ui()); 118 EXPECT_EQ(PermissionReport::PROMPT, permission_report.source_ui());
118 EXPECT_EQ(kDummyOriginOne, permission_report.origin()); 119 EXPECT_EQ(kDummyOriginOne, permission_report.origin());
120 EXPECT_TRUE(permission_report.request_trigger().empty());
119 #if defined(OS_ANDROID) 121 #if defined(OS_ANDROID)
120 EXPECT_EQ(PermissionReport::ANDROID_PLATFORM, 122 EXPECT_EQ(PermissionReport::ANDROID_PLATFORM,
121 permission_report.platform_type()); 123 permission_report.platform_type());
122 #elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_CHROMEOS) || \ 124 #elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_CHROMEOS) || \
123 defined(OS_LINUX) 125 defined(OS_LINUX)
124 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM, 126 EXPECT_EQ(PermissionReport::DESKTOP_PLATFORM,
125 permission_report.platform_type()); 127 permission_report.platform_type());
126 #endif 128 #endif
127 129
128 EXPECT_EQ(GURL(kPermissionActionReportingUploadUrl), 130 EXPECT_EQ(GURL(kPermissionActionReportingUploadUrl),
129 mock_report_sender_->latest_report_uri()); 131 mock_report_sender_->latest_report_uri());
130 } 132 }
131 133
132 // Test that PermissionReporter::SendReport sends a serialized report string 134 // Test that PermissionReporter::SendReport sends a serialized report string
135 // with request trigger to SafeBrowsing CSD servers.
136 TEST_F(PermissionReporterTest, SendReportWithRequestTrigger) {
137 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
138 kDummyAction, kDummySourceUI,
139 true /* user_gesture */);
140
141 PermissionReport permission_report;
142 ASSERT_TRUE(
143 permission_report.ParseFromString(mock_report_sender_->latest_report()));
144 EXPECT_EQ(1, permission_report.request_trigger().size());
145 EXPECT_EQ(PermissionReport::AFTER_GESTURE,
146 static_cast<PermissionReport::RequestTrigger>(
147 permission_report.request_trigger(0)));
148 }
149
150 // Test that PermissionReporter::SendReport sends a serialized report string
133 // with field trials to SafeBrowsing CSD servers. 151 // with field trials to SafeBrowsing CSD servers.
134 TEST_F(PermissionReporterTest, SendReportWithFieldTrials) { 152 TEST_F(PermissionReporterTest, SendReportWithFieldTrials) {
135 typedef std::set<variations::ActiveGroupId, variations::ActiveGroupIdCompare> 153 typedef std::set<variations::ActiveGroupId, variations::ActiveGroupIdCompare>
136 ActiveGroupIdSet; 154 ActiveGroupIdSet;
137 155
138 // Add and activate dummy field trials. 156 // Add and activate dummy field trials.
139 base::FieldTrialList field_trial_list(nullptr); 157 base::FieldTrialList field_trial_list(nullptr);
140 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); 158 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
141 base::FieldTrial* trial_one = 159 base::FieldTrial* trial_one =
142 base::FieldTrialList::CreateFieldTrial(kDummyTrialOne, kDummyGroupOne); 160 base::FieldTrialList::CreateFieldTrial(kDummyTrialOne, kDummyGroupOne);
(...skipping 11 matching lines...) Expand all
154 base::FeatureList::SetInstance(std::move(feature_list)); 172 base::FeatureList::SetInstance(std::move(feature_list));
155 173
156 // This is necessary to activate both field trials. 174 // This is necessary to activate both field trials.
157 base::FeatureList::IsEnabled(kFeatureOnByDefault); 175 base::FeatureList::IsEnabled(kFeatureOnByDefault);
158 base::FeatureList::IsEnabled(kFeatureOffByDefault); 176 base::FeatureList::IsEnabled(kFeatureOffByDefault);
159 177
160 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_one->trial_name())); 178 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_one->trial_name()));
161 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_two->trial_name())); 179 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(trial_two->trial_name()));
162 180
163 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 181 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
164 kDummyAction, kDummySourceUI); 182 kDummyAction, kDummySourceUI,
183 false /* user_gesture */);
165 184
166 PermissionReport permission_report; 185 PermissionReport permission_report;
167 ASSERT_TRUE( 186 ASSERT_TRUE(
168 permission_report.ParseFromString(mock_report_sender_->latest_report())); 187 permission_report.ParseFromString(mock_report_sender_->latest_report()));
169 188
170 variations::ActiveGroupId field_trial_one = 189 variations::ActiveGroupId field_trial_one =
171 variations::MakeActiveGroupId(kDummyTrialOne, kDummyGroupOne); 190 variations::MakeActiveGroupId(kDummyTrialOne, kDummyGroupOne);
172 variations::ActiveGroupId field_trial_two = 191 variations::ActiveGroupId field_trial_two =
173 variations::MakeActiveGroupId(kDummyTrialTwo, kDummyGroupTwo); 192 variations::MakeActiveGroupId(kDummyTrialTwo, kDummyGroupTwo);
174 ActiveGroupIdSet expected_group_ids = {field_trial_one, field_trial_two}; 193 ActiveGroupIdSet expected_group_ids = {field_trial_one, field_trial_two};
175 194
176 EXPECT_EQ(2, permission_report.field_trials().size()); 195 EXPECT_EQ(2, permission_report.field_trials().size());
177 for (auto field_trial : permission_report.field_trials()) { 196 for (auto field_trial : permission_report.field_trials()) {
178 variations::ActiveGroupId group_id = {field_trial.name_id(), 197 variations::ActiveGroupId group_id = {field_trial.name_id(),
179 field_trial.group_id()}; 198 field_trial.group_id()};
180 EXPECT_EQ(1U, expected_group_ids.erase(group_id)); 199 EXPECT_EQ(1U, expected_group_ids.erase(group_id));
181 } 200 }
182 EXPECT_EQ(0U, expected_group_ids.size()); 201 EXPECT_EQ(0U, expected_group_ids.size());
183 } 202 }
184 203
185 // Test that PermissionReporter::IsReportThresholdExceeded returns false only 204 // Test that PermissionReporter::IsReportThresholdExceeded returns false only
186 // when the number of reports sent in the last one minute per origin per 205 // when the number of reports sent in the last one minute per origin per
187 // permission is under a threshold. 206 // permission is under a threshold.
188 TEST_F(PermissionReporterTest, IsReportThresholdExceeded) { 207 TEST_F(PermissionReporterTest, IsReportThresholdExceeded) {
189 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 208 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
190 209
191 int reports_to_send = kMaximumReportsPerOriginPerPermissionPerMinute; 210 int reports_to_send = kMaximumReportsPerOriginPerPermissionPerMinute;
192 while (reports_to_send--) 211 while (reports_to_send--)
193 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 212 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
194 kDummyAction, kDummySourceUI); 213 kDummyAction, kDummySourceUI,
214 false /* user_gesture */);
195 EXPECT_EQ(5, mock_report_sender_->GetAndResetNumberOfReportsSent()); 215 EXPECT_EQ(5, mock_report_sender_->GetAndResetNumberOfReportsSent());
196 216
197 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 217 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
198 kDummyAction, kDummySourceUI); 218 kDummyAction, kDummySourceUI,
219 false /* user_gesture */);
199 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 220 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
200 221
201 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionTwo, 222 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionTwo,
202 kDummyAction, kDummySourceUI); 223 kDummyAction, kDummySourceUI,
224 false /* user_gesture */);
203 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 225 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
204 226
205 permission_reporter_->SendReport(GURL(kDummyOriginTwo), kDummyPermissionOne, 227 permission_reporter_->SendReport(GURL(kDummyOriginTwo), kDummyPermissionOne,
206 kDummyAction, kDummySourceUI); 228 kDummyAction, kDummySourceUI,
229 false /* user_gesture */);
207 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 230 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
208 231
209 clock_->Advance(base::TimeDelta::FromMinutes(1)); 232 clock_->Advance(base::TimeDelta::FromMinutes(1));
210 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 233 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
211 kDummyAction, kDummySourceUI); 234 kDummyAction, kDummySourceUI,
235 false /* user_gesture */);
212 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent()); 236 EXPECT_EQ(0, mock_report_sender_->GetAndResetNumberOfReportsSent());
213 237
214 clock_->Advance(base::TimeDelta::FromMicroseconds(1)); 238 clock_->Advance(base::TimeDelta::FromMicroseconds(1));
215 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 239 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
216 kDummyAction, kDummySourceUI); 240 kDummyAction, kDummySourceUI,
241 false /* user_gesture */);
217 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent()); 242 EXPECT_EQ(1, mock_report_sender_->GetAndResetNumberOfReportsSent());
218 243
219 clock_->Advance(base::TimeDelta::FromMinutes(1)); 244 clock_->Advance(base::TimeDelta::FromMinutes(1));
220 reports_to_send = 12; 245 reports_to_send = 12;
221 while (reports_to_send--) { 246 while (reports_to_send--) {
222 clock_->Advance(base::TimeDelta::FromSeconds(5)); 247 clock_->Advance(base::TimeDelta::FromSeconds(5));
223 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne, 248 permission_reporter_->SendReport(GURL(kDummyOriginOne), kDummyPermissionOne,
224 kDummyAction, kDummySourceUI); 249 kDummyAction, kDummySourceUI,
250 false /* user_gesture */);
225 } 251 }
226 EXPECT_EQ(kMaximumReportsPerOriginPerPermissionPerMinute, 252 EXPECT_EQ(kMaximumReportsPerOriginPerPermissionPerMinute,
227 mock_report_sender_->GetAndResetNumberOfReportsSent()); 253 mock_report_sender_->GetAndResetNumberOfReportsSent());
228 } 254 }
229 255
230 } // namespace safe_browsing 256 } // 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