OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/engagement/site_engagement_service.h" | 5 #include "chrome/browser/engagement/site_engagement_service.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 service->HandleUserInput(web_contents(), | 384 service->HandleUserInput(web_contents(), |
385 SiteEngagementMetrics::ENGAGEMENT_SCROLL); | 385 SiteEngagementMetrics::ENGAGEMENT_SCROLL); |
386 NavigateAndCommit(url3); | 386 NavigateAndCommit(url3); |
387 service->HandleUserInput(web_contents(), | 387 service->HandleUserInput(web_contents(), |
388 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE); | 388 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE); |
389 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url2)); | 389 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url2)); |
390 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url3)); | 390 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url3)); |
391 EXPECT_DOUBLE_EQ(0.4, service->GetTotalEngagementPoints()); | 391 EXPECT_DOUBLE_EQ(0.4, service->GetTotalEngagementPoints()); |
392 } | 392 } |
393 | 393 |
| 394 TEST_F(SiteEngagementServiceTest, GetTotalNotificationPoints) { |
| 395 SiteEngagementService* service = SiteEngagementService::Get(profile()); |
| 396 ASSERT_TRUE(service); |
| 397 base::HistogramTester histograms; |
| 398 |
| 399 // The https and http versions of www.google.com should be separate. |
| 400 GURL url1("https://www.google.com/"); |
| 401 GURL url2("http://www.google.com/"); |
| 402 GURL url3("http://drive.google.com/"); |
| 403 |
| 404 EXPECT_EQ(0, service->GetScore(url1)); |
| 405 EXPECT_EQ(0, service->GetScore(url2)); |
| 406 EXPECT_EQ(0, service->GetScore(url3)); |
| 407 |
| 408 service->HandleNotificationInteraction(url1); |
| 409 EXPECT_DOUBLE_EQ(1.0, service->GetScore(url1)); |
| 410 EXPECT_DOUBLE_EQ(1.0, service->GetTotalEngagementPoints()); |
| 411 histograms.ExpectBucketCount( |
| 412 SiteEngagementMetrics::kEngagementTypeHistogram, |
| 413 SiteEngagementMetrics::ENGAGEMENT_NOTIFICATION_INTERACTION, 1); |
| 414 |
| 415 service->HandleNotificationInteraction(url2); |
| 416 EXPECT_DOUBLE_EQ(1.0, service->GetScore(url2)); |
| 417 EXPECT_DOUBLE_EQ(2.0, service->GetTotalEngagementPoints()); |
| 418 histograms.ExpectBucketCount( |
| 419 SiteEngagementMetrics::kEngagementTypeHistogram, |
| 420 SiteEngagementMetrics::ENGAGEMENT_NOTIFICATION_INTERACTION, 2); |
| 421 |
| 422 service->HandleNotificationInteraction(url1); |
| 423 EXPECT_DOUBLE_EQ(2.0, service->GetScore(url1)); |
| 424 EXPECT_DOUBLE_EQ(3.0, service->GetTotalEngagementPoints()); |
| 425 histograms.ExpectBucketCount( |
| 426 SiteEngagementMetrics::kEngagementTypeHistogram, |
| 427 SiteEngagementMetrics::ENGAGEMENT_NOTIFICATION_INTERACTION, 3); |
| 428 |
| 429 service->HandleNotificationInteraction(url3); |
| 430 EXPECT_DOUBLE_EQ(1.0, service->GetScore(url3)); |
| 431 EXPECT_DOUBLE_EQ(4.0, service->GetTotalEngagementPoints()); |
| 432 histograms.ExpectBucketCount( |
| 433 SiteEngagementMetrics::kEngagementTypeHistogram, |
| 434 SiteEngagementMetrics::ENGAGEMENT_NOTIFICATION_INTERACTION, 4); |
| 435 } |
| 436 |
394 TEST_F(SiteEngagementServiceTest, RestrictedToHTTPAndHTTPS) { | 437 TEST_F(SiteEngagementServiceTest, RestrictedToHTTPAndHTTPS) { |
395 SiteEngagementService* service = SiteEngagementService::Get(profile()); | 438 SiteEngagementService* service = SiteEngagementService::Get(profile()); |
396 ASSERT_TRUE(service); | 439 ASSERT_TRUE(service); |
397 | 440 |
398 // The https and http versions of www.google.com should be separate. | 441 // The https and http versions of www.google.com should be separate. |
399 GURL url1("ftp://www.google.com/"); | 442 GURL url1("ftp://www.google.com/"); |
400 GURL url2("file://blah"); | 443 GURL url2("file://blah"); |
401 GURL url3("chrome://"); | 444 GURL url3("chrome://"); |
402 GURL url4("about://config"); | 445 GURL url4("about://config"); |
403 | 446 |
(...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1383 EXPECT_TRUE( | 1426 EXPECT_TRUE( |
1384 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); | 1427 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
1385 } | 1428 } |
1386 | 1429 |
1387 TEST_F(SiteEngagementServiceTest, Observers) { | 1430 TEST_F(SiteEngagementServiceTest, Observers) { |
1388 SiteEngagementService* service = SiteEngagementService::Get(profile()); | 1431 SiteEngagementService* service = SiteEngagementService::Get(profile()); |
1389 | 1432 |
1390 GURL url_score_1("http://www.google.com/maps"); | 1433 GURL url_score_1("http://www.google.com/maps"); |
1391 GURL url_score_2("http://www.google.com/drive"); | 1434 GURL url_score_2("http://www.google.com/drive"); |
1392 GURL url_score_3("http://www.google.com/"); | 1435 GURL url_score_3("http://www.google.com/"); |
| 1436 GURL url_score_4("http://maps.google.com/"); |
1393 GURL url_not_called("https://www.google.com/"); | 1437 GURL url_not_called("https://www.google.com/"); |
1394 | 1438 |
1395 // Create an observer and Observe(nullptr). | 1439 // Create an observer and Observe(nullptr). |
1396 ObserverTester tester_not_called(service, web_contents(), url_not_called, 1); | 1440 ObserverTester tester_not_called(service, web_contents(), url_not_called, 1); |
1397 tester_not_called.Observe(nullptr); | 1441 tester_not_called.Observe(nullptr); |
1398 | 1442 |
1399 { | 1443 { |
1400 // Create an observer for navigation. | 1444 // Create an observer for navigation. |
1401 ObserverTester tester(service, web_contents(), url_score_1, 0.5); | 1445 ObserverTester tester(service, web_contents(), url_score_1, 0.5); |
1402 NavigateAndCommit(url_score_1); | 1446 NavigateAndCommit(url_score_1); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1438 // Add an observer for media playing in the background. | 1482 // Add an observer for media playing in the background. |
1439 { | 1483 { |
1440 ObserverTester tester(service, web_contents(), url_score_3, 0.58); | 1484 ObserverTester tester(service, web_contents(), url_score_3, 0.58); |
1441 service->HandleMediaPlaying(web_contents(), true); | 1485 service->HandleMediaPlaying(web_contents(), true); |
1442 tester.Wait(); | 1486 tester.Wait(); |
1443 | 1487 |
1444 EXPECT_TRUE(tester.callback_called()); | 1488 EXPECT_TRUE(tester.callback_called()); |
1445 EXPECT_FALSE(tester_not_called.callback_called()); | 1489 EXPECT_FALSE(tester_not_called.callback_called()); |
1446 tester.Observe(nullptr); | 1490 tester.Observe(nullptr); |
1447 } | 1491 } |
| 1492 |
| 1493 // Add an observer for notifications. |
| 1494 { |
| 1495 ObserverTester tester(service, nullptr, url_score_4, 1.0); |
| 1496 service->HandleNotificationInteraction(url_score_4); |
| 1497 tester.Wait(); |
| 1498 |
| 1499 EXPECT_TRUE(tester.callback_called()); |
| 1500 EXPECT_FALSE(tester_not_called.callback_called()); |
| 1501 tester.Observe(nullptr); |
| 1502 } |
1448 } | 1503 } |
1449 | 1504 |
1450 TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { | 1505 TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
1451 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1506 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
1452 std::unique_ptr<SiteEngagementService> service( | 1507 std::unique_ptr<SiteEngagementService> service( |
1453 new SiteEngagementService(profile(), base::WrapUnique(clock))); | 1508 new SiteEngagementService(profile(), base::WrapUnique(clock))); |
1454 | 1509 |
1455 base::Time current_day = GetReferenceTime(); | 1510 base::Time current_day = GetReferenceTime(); |
1456 clock->SetNow(current_day); | 1511 clock->SetNow(current_day); |
1457 base::HistogramTester histograms; | 1512 base::HistogramTester histograms; |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1809 | 1864 |
1810 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, | 1865 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
1811 settings_map, url1)); | 1866 settings_map, url1)); |
1812 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, | 1867 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
1813 settings_map, url2)); | 1868 settings_map, url2)); |
1814 EXPECT_EQ(4, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, | 1869 EXPECT_EQ(4, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, |
1815 incognito_settings_map, url1)); | 1870 incognito_settings_map, url1)); |
1816 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, | 1871 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, |
1817 incognito_settings_map, url2)); | 1872 incognito_settings_map, url2)); |
1818 } | 1873 } |
OLD | NEW |