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

Side by Side Diff: chrome/browser/engagement/important_sites_util_unittest.cc

Issue 2393103002: [Durable] Updated Durable heuristic to use 'important sites' (Closed)
Patch Set: windows test fix Created 4 years, 2 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/android/preferences/important_sites_util.h" 5 #include "chrome/browser/engagement/important_sites_util.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/metrics/histogram_macros.h" 12 #include "base/metrics/histogram_macros.h"
13 #include "base/metrics/sample_vector.h" 13 #include "base/metrics/sample_vector.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/test/histogram_tester.h" 15 #include "base/test/histogram_tester.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 CROSSED_NOTIFICATIONS_AND_ENGAGEMENT = 3, 62 CROSSED_NOTIFICATIONS_AND_ENGAGEMENT = 3,
63 CROSSED_REASON_UNKNOWN = 7, 63 CROSSED_REASON_UNKNOWN = 7,
64 }; 64 };
65 65
66 } // namespace 66 } // namespace
67 67
68 class ImportantSitesUtilTest : public ChromeRenderViewHostTestHarness { 68 class ImportantSitesUtilTest : public ChromeRenderViewHostTestHarness {
69 public: 69 public:
70 void SetUp() override { 70 void SetUp() override {
71 ChromeRenderViewHostTestHarness::SetUp(); 71 ChromeRenderViewHostTestHarness::SetUp();
72 SiteEngagementScore::SetParamValuesForTesting();
72 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 73 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
73 g_temp_history_dir = temp_dir_.GetPath(); 74 g_temp_history_dir = temp_dir_.GetPath();
74 HistoryServiceFactory::GetInstance()->SetTestingFactory( 75 HistoryServiceFactory::GetInstance()->SetTestingFactory(
75 profile(), &BuildTestHistoryService); 76 profile(), &BuildTestHistoryService);
76 SiteEngagementScore::SetParamValuesForTesting();
77 } 77 }
78 78
79 void AddContentSetting(ContentSettingsType type, 79 void AddContentSetting(ContentSettingsType type,
80 ContentSetting setting, 80 ContentSetting setting,
81 const GURL& origin) { 81 const GURL& origin) {
82 HostContentSettingsMapFactory::GetForProfile(profile()) 82 HostContentSettingsMapFactory::GetForProfile(profile())
83 ->SetContentSettingCustomScope( 83 ->SetContentSettingCustomScope(
84 ContentSettingsPattern::FromURLNoWildcard(origin), 84 ContentSettingsPattern::FromURLNoWildcard(origin),
85 ContentSettingsPattern::Wildcard(), type, 85 ContentSettingsPattern::Wildcard(), type,
86 content_settings::ResourceIdentifier(), setting); 86 content_settings::ResourceIdentifier(), setting);
(...skipping 19 matching lines...) Expand all
106 const std::vector<GURL>& expected_sorted_origins, 106 const std::vector<GURL>& expected_sorted_origins,
107 const std::vector<ImportantDomainInfo>& important_sites) { 107 const std::vector<ImportantDomainInfo>& important_sites) {
108 ASSERT_EQ(domains.size(), important_sites.size()); 108 ASSERT_EQ(domains.size(), important_sites.size());
109 ASSERT_EQ(expected_sorted_origins.size(), important_sites.size()); 109 ASSERT_EQ(expected_sorted_origins.size(), important_sites.size());
110 for (size_t i = 0; i < important_sites.size(); i++) { 110 for (size_t i = 0; i < important_sites.size(); i++) {
111 EXPECT_EQ(domains[i], important_sites[i].registerable_domain); 111 EXPECT_EQ(domains[i], important_sites[i].registerable_domain);
112 EXPECT_EQ(expected_sorted_origins[i], important_sites[i].example_origin); 112 EXPECT_EQ(expected_sorted_origins[i], important_sites[i].example_origin);
113 } 113 }
114 } 114 }
115 115
116 void ExpectImportantResultsEqualUnordered(
117 const std::vector<std::string>& domains,
118 const std::vector<GURL>& expected_sorted_origins,
119 const std::vector<ImportantDomainInfo>& important_sites) {
120 ASSERT_EQ(domains.size(), important_sites.size());
121 ASSERT_EQ(expected_sorted_origins.size(), important_sites.size());
122
123 std::vector<std::string> actual_domains;
124 std::vector<GURL> actual_origins;
125 for (size_t i = 0; i < important_sites.size(); i++) {
126 actual_domains.push_back(important_sites[i].registerable_domain);
127 actual_origins.push_back(important_sites[i].example_origin);
128 }
129 EXPECT_THAT(actual_domains, testing::UnorderedElementsAreArray(domains));
130 EXPECT_THAT(actual_origins,
131 testing::UnorderedElementsAreArray(expected_sorted_origins));
132 }
133
116 private: 134 private:
117 base::ScopedTempDir temp_dir_; 135 base::ScopedTempDir temp_dir_;
118 BookmarkModel* model_ = nullptr; 136 BookmarkModel* model_ = nullptr;
119 }; 137 };
120 138
121 TEST_F(ImportantSitesUtilTest, TestNoImportantSites) { 139 TEST_F(ImportantSitesUtilTest, TestNoImportantSites) {
122 EXPECT_TRUE(ImportantSitesUtil::GetImportantRegisterableDomains( 140 EXPECT_TRUE(ImportantSitesUtil::GetImportantRegisterableDomains(
123 profile(), kNumImportantSites) 141 profile(), kNumImportantSites)
124 .empty()); 142 .empty());
125 } 143 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 EXPECT_EQ(3u, important_sites.size()); 230 EXPECT_EQ(3u, important_sites.size());
213 231
214 // Add the rest, which should put us over the limit. 232 // Add the rest, which should put us over the limit.
215 AddBookmark(url6); 233 AddBookmark(url6);
216 AddBookmark(url7); 234 AddBookmark(url7);
217 // Too many bookmarks! Nothing shows up now. 235 // Too many bookmarks! Nothing shows up now.
218 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 236 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
219 profile(), kNumImportantSites); 237 profile(), kNumImportantSites);
220 EXPECT_EQ(0u, important_sites.size()); 238 EXPECT_EQ(0u, important_sites.size());
221 239
222 // If we add some site engagement, these should show up in order (even though 240 // If we add some site engagement, they should show up (even though the site
223 // the engagement is too low for a signal by itself). 241 // engagement score is too low for a signal by itself).
224 service->ResetScoreForURL(url1, 2); 242 service->ResetScoreForURL(url1, 2);
225 service->ResetScoreForURL(url4, 3); 243 service->ResetScoreForURL(url4, 3);
226 service->ResetScoreForURL(url7, 0); 244 service->ResetScoreForURL(url7, 0);
227 245
228 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 246 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
229 profile(), kNumImportantSites); 247 profile(), kNumImportantSites);
230 ASSERT_EQ(2u, important_sites.size()); 248 ASSERT_EQ(2u, important_sites.size());
231 std::vector<std::string> expected_sorted_domains = {"google.com", 249 std::vector<std::string> expected_sorted_domains = {"google.com",
232 "chrome.com"}; 250 "chrome.com"};
233 std::vector<GURL> expected_sorted_origins = {url1, url4}; 251 std::vector<GURL> expected_sorted_origins = {url1, url4};
234 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins, 252 ExpectImportantResultsEqualUnordered(
235 important_sites); 253 expected_sorted_domains, expected_sorted_origins, important_sites);
236 } 254 }
237 255
238 TEST_F(ImportantSitesUtilTest, Blacklisting) { 256 TEST_F(ImportantSitesUtilTest, Blacklisting) {
239 SiteEngagementService* service = SiteEngagementService::Get(profile()); 257 SiteEngagementService* service = SiteEngagementService::Get(profile());
240 ASSERT_TRUE(service); 258 ASSERT_TRUE(service);
241 259
242 GURL url1("http://www.google.com/"); 260 GURL url1("http://www.google.com/");
243 261
244 // Set a bunch of positive signals. 262 // Set a bunch of positive signals.
245 service->ResetScoreForURL(url1, 5); 263 service->ResetScoreForURL(url1, 5);
246 AddBookmark(url1); 264 AddBookmark(url1);
247 AddContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW, 265 AddContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW,
248 url1); 266 url1);
249 267
250 // Important fetch 1. 268 // Important fetch 1.
251 std::vector<ImportantDomainInfo> important_sites = 269 std::vector<ImportantDomainInfo> important_sites =
252 ImportantSitesUtil::GetImportantRegisterableDomains(profile(), 270 ImportantSitesUtil::GetImportantRegisterableDomains(profile(),
253 kNumImportantSites); 271 kNumImportantSites);
254 std::vector<std::string> expected_sorted_domains = {"google.com"}; 272 std::vector<std::string> expected_sorted_domains = {"google.com"};
255 std::vector<GURL> expected_sorted_origins = {url1}; 273 std::vector<GURL> expected_sorted_origins = {url1};
256 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins, 274 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins,
257 important_sites); 275 important_sites);
258 ASSERT_EQ(1u, important_sites.size()); 276 ASSERT_EQ(1u, important_sites.size());
259 // Record ignore twice. 277 // Record ignore twice.
260 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 278 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
261 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 279 profile(), std::vector<std::string>(), std::vector<int32_t>(),
280 {"google.com"}, {important_sites[0].reason_bitfield});
262 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 281 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
263 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 282 profile(), std::vector<std::string>(), std::vector<int32_t>(),
283 {"google.com"}, {important_sites[0].reason_bitfield});
264 284
265 // Important fetch 2. 285 // Important fetch 2.
266 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 286 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
267 profile(), kNumImportantSites); 287 profile(), kNumImportantSites);
268 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins, 288 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins,
269 important_sites); 289 important_sites);
270 // We shouldn't blacklist after first two times. 290 // We shouldn't blacklist after first two times.
271 ASSERT_EQ(1u, important_sites.size()); 291 ASSERT_EQ(1u, important_sites.size());
272 292
273 // Record ignore 3rd time. 293 // Record ignore 3rd time.
274 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 294 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
275 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 295 profile(), std::vector<std::string>(), std::vector<int32_t>(),
296 {"google.com"}, {important_sites[0].reason_bitfield});
276 297
277 // Important fetch 3. We should be blacklisted now. 298 // Important fetch 3. We should be blacklisted now.
278 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 299 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
279 profile(), kNumImportantSites); 300 profile(), kNumImportantSites);
280 ASSERT_EQ(0u, important_sites.size()); 301 ASSERT_EQ(0u, important_sites.size());
281 } 302 }
282 303
283 TEST_F(ImportantSitesUtilTest, BlacklistingReset) { 304 TEST_F(ImportantSitesUtilTest, BlacklistingReset) {
284 SiteEngagementService* service = SiteEngagementService::Get(profile()); 305 SiteEngagementService* service = SiteEngagementService::Get(profile());
285 ASSERT_TRUE(service); 306 ASSERT_TRUE(service);
286 307
287 GURL url1("http://www.google.com/"); 308 GURL url1("http://www.google.com/");
288 309
289 // Set a bunch of positive signals. 310 // Set a bunch of positive signals.
290 service->ResetScoreForURL(url1, 5); 311 service->ResetScoreForURL(url1, 5);
291 AddBookmark(url1); 312 AddBookmark(url1);
292 AddContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW, 313 AddContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW,
293 url1); 314 url1);
294 315
295 std::vector<ImportantDomainInfo> important_sites = 316 std::vector<ImportantDomainInfo> important_sites =
296 ImportantSitesUtil::GetImportantRegisterableDomains(profile(), 317 ImportantSitesUtil::GetImportantRegisterableDomains(profile(),
297 kNumImportantSites); 318 kNumImportantSites);
298 319
299 // Record ignored twice. 320 // Record ignored twice.
300 ASSERT_EQ(1u, important_sites.size()); 321 ASSERT_EQ(1u, important_sites.size());
301 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 322 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
302 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 323 profile(), std::vector<std::string>(), std::vector<int32_t>(),
324 {"google.com"}, {important_sites[0].reason_bitfield});
303 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 325 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
304 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 326 profile(), std::vector<std::string>(), std::vector<int32_t>(),
327 {"google.com"}, {important_sites[0].reason_bitfield});
305 328
306 // Important fetch, we should still be there. 329 // Important fetch, we should still be there.
307 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 330 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
308 profile(), kNumImportantSites); 331 profile(), kNumImportantSites);
309 std::vector<std::string> expected_sorted_domains = {"google.com"}; 332 std::vector<std::string> expected_sorted_domains = {"google.com"};
310 std::vector<GURL> expected_sorted_origins = {url1}; 333 std::vector<GURL> expected_sorted_origins = {url1};
311 ASSERT_EQ(1u, important_sites.size()); 334 ASSERT_EQ(1u, important_sites.size());
312 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins, 335 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins,
313 important_sites); 336 important_sites);
314 337
315 // Record NOT ignored. 338 // Record NOT ignored.
316 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 339 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
317 profile(), {"google.com"}, {important_sites[0].reason_bitfield}, {}, {}); 340 profile(), {"google.com"}, {important_sites[0].reason_bitfield},
341 std::vector<std::string>(), std::vector<int32_t>());
318 342
319 // Record ignored twice again. 343 // Record ignored twice again.
320 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 344 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
321 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 345 profile(), std::vector<std::string>(), std::vector<int32_t>(),
346 {"google.com"}, {important_sites[0].reason_bitfield});
322 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 347 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
323 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 348 profile(), std::vector<std::string>(), std::vector<int32_t>(),
349 {"google.com"}, {important_sites[0].reason_bitfield});
324 350
325 // Important fetch, we should still be there. 351 // Important fetch, we should still be there.
326 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 352 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
327 profile(), kNumImportantSites); 353 profile(), kNumImportantSites);
328 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins, 354 ExpectImportantResultsEq(expected_sorted_domains, expected_sorted_origins,
329 important_sites); 355 important_sites);
330 356
331 // Record ignored 3rd time in a row. 357 // Record ignored 3rd time in a row.
332 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 358 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
333 profile(), {}, {}, {"google.com"}, {important_sites[0].reason_bitfield}); 359 profile(), std::vector<std::string>(), std::vector<int32_t>(),
360 {"google.com"}, {important_sites[0].reason_bitfield});
334 361
335 // Blacklisted now. 362 // Blacklisted now.
336 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains( 363 important_sites = ImportantSitesUtil::GetImportantRegisterableDomains(
337 profile(), kNumImportantSites); 364 profile(), kNumImportantSites);
338 EXPECT_EQ(0u, important_sites.size()); 365 EXPECT_EQ(0u, important_sites.size());
339 } 366 }
340 367
341 TEST_F(ImportantSitesUtilTest, Metrics) { 368 TEST_F(ImportantSitesUtilTest, Metrics) {
342 SiteEngagementService* service = SiteEngagementService::Get(profile()); 369 SiteEngagementService* service = SiteEngagementService::Get(profile());
343 ASSERT_TRUE(service); 370 ASSERT_TRUE(service);
(...skipping 12 matching lines...) Expand all
356 383
357 std::vector<ImportantDomainInfo> important_sites = 384 std::vector<ImportantDomainInfo> important_sites =
358 ImportantSitesUtil::GetImportantRegisterableDomains(profile(), 385 ImportantSitesUtil::GetImportantRegisterableDomains(profile(),
359 kNumImportantSites); 386 kNumImportantSites);
360 387
361 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( 388 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
362 profile(), {"google.com", "youtube.com"}, 389 profile(), {"google.com", "youtube.com"},
363 {important_sites[0].reason_bitfield, important_sites[1].reason_bitfield}, 390 {important_sites[0].reason_bitfield, important_sites[1].reason_bitfield},
364 {"bad.com"}, {important_sites[2].reason_bitfield}); 391 {"bad.com"}, {important_sites[2].reason_bitfield});
365 392
366 EXPECT_THAT(histogram_tester.GetAllSamples( 393 EXPECT_THAT(
367 "Storage.ImportantSites.CBDChosenReason"), 394 histogram_tester.GetAllSamples("Storage.ImportantSites.CBDChosenReason"),
368 testing::ElementsAre( 395 testing::ElementsAre(base::Bucket(ENGAGEMENT, 1),
369 base::Bucket(ENGAGEMENT, 1), 396 base::Bucket(BOOKMARKS, 1),
370 base::Bucket(BOOKMARKS, 1), 397 base::Bucket(NOTIFICATIONS, 1)));
371 base::Bucket(NOTIFICATIONS, 1)));
372 398
373 EXPECT_THAT( 399 EXPECT_THAT(
374 histogram_tester.GetAllSamples("Storage.ImportantSites.CBDIgnoredReason"), 400 histogram_tester.GetAllSamples("Storage.ImportantSites.CBDIgnoredReason"),
375 testing::ElementsAre(base::Bucket(BOOKMARKS, 1))); 401 testing::ElementsAre(base::Bucket(BOOKMARKS, 1)));
376 402
377 // Bookmarks are "unknown", as they were added after the crossed reasons. 403 // Bookmarks are "unknown", as they were added after the crossed reasons.
378 EXPECT_THAT(histogram_tester.GetAllSamples( 404 EXPECT_THAT(histogram_tester.GetAllSamples(
379 "Storage.BlacklistedImportantSites.Reason"), 405 "Storage.BlacklistedImportantSites.Reason"),
380 testing::ElementsAre( 406 testing::ElementsAre(
381 base::Bucket(CROSSED_NOTIFICATIONS_AND_ENGAGEMENT, 1), 407 base::Bucket(CROSSED_NOTIFICATIONS_AND_ENGAGEMENT, 1),
382 base::Bucket(CROSSED_REASON_UNKNOWN, 1))); 408 base::Bucket(CROSSED_REASON_UNKNOWN, 1)));
383 } 409 }
OLDNEW
« no previous file with comments | « chrome/browser/engagement/important_sites_util.cc ('k') | chrome/browser/engagement/site_engagement_score.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698