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

Unified Diff: chrome/browser/engagement/site_engagement_helper_unittest.cc

Issue 1427913002: Implement media playing engagement detection for the site engagement service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@user-input-event
Patch Set: Addressing nits Created 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/engagement/site_engagement_helper_unittest.cc
diff --git a/chrome/browser/engagement/site_engagement_helper_unittest.cc b/chrome/browser/engagement/site_engagement_helper_unittest.cc
index 371b84cb8e260dee6e4bb3008de8e16f48e5d2c9..4297d45d6eda6cbb648fad9550a79b249d8b64b8 100644
--- a/chrome/browser/engagement/site_engagement_helper_unittest.cc
+++ b/chrome/browser/engagement/site_engagement_helper_unittest.cc
@@ -29,8 +29,9 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest {
return helper.Pass();
}
- void StartTracking(SiteEngagementHelper* helper) {
- helper->input_tracker_.StartTracking();
+ void TrackingStarted(SiteEngagementHelper* helper) {
+ helper->input_tracker_.TrackingStarted();
+ helper->media_tracker_.TrackingStarted();
}
// Simulate a user interaction event and handle it.
@@ -42,9 +43,21 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest {
// Simulate a user interaction event and handle it. Reactivates tracking
// immediately.
void HandleUserInputAndRestartTracking(SiteEngagementHelper* helper,
- blink::WebInputEvent::Type type) {
+ blink::WebInputEvent::Type type) {
helper->input_tracker_.DidGetUserInteraction(type);
- helper->input_tracker_.StartTracking();
+ helper->input_tracker_.TrackingStarted();
+ }
+
+ void HandleMediaPlaying(SiteEngagementHelper* helper, bool is_hidden) {
+ helper->RecordMediaPlaying(is_hidden);
+ }
+
+ void MediaStartedPlaying(SiteEngagementHelper* helper) {
+ helper->media_tracker_.MediaStartedPlaying();
+ }
+
+ void MediaPaused(SiteEngagementHelper* helper) {
+ helper->media_tracker_.MediaPaused();
}
// Set a pause timer on the input tracker for test purposes.
@@ -80,7 +93,7 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest {
// Check that navigation triggers engagement.
NavigateWithDisposition(url1, CURRENT_TAB);
- StartTracking(helper.get());
+ TrackingStarted(helper.get());
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1));
EXPECT_EQ(0, service->GetScore(url2));
@@ -101,7 +114,7 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest {
// Simulate inputs for a different link.
NavigateWithDisposition(url2, CURRENT_TAB);
- StartTracking(helper.get());
+ TrackingStarted(helper.get());
EXPECT_DOUBLE_EQ(0.7, service->GetScore(url1));
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url2));
@@ -130,6 +143,81 @@ TEST_F(SiteEngagementHelperTest, GestureEngagementAccumulation) {
UserInputAccumulation(blink::WebInputEvent::GestureTapDown);
}
+TEST_F(SiteEngagementHelperTest, MediaEngagementAccumulation) {
+ AddTab(browser(), GURL("about:blank"));
+ GURL url1("https://www.google.com/");
+ GURL url2("http://www.google.com/");
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+
+ scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents));
+ SiteEngagementService* service =
+ SiteEngagementServiceFactory::GetForProfile(browser()->profile());
+ DCHECK(service);
+
+ NavigateWithDisposition(url1, CURRENT_TAB);
+ TrackingStarted(helper.get());
+
+ EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1));
+ EXPECT_EQ(0, service->GetScore(url2));
+
+ // Simulate a foreground media input and ensure it is treated correctly.
+ HandleMediaPlaying(helper.get(), false);
+
+ EXPECT_DOUBLE_EQ(0.52, service->GetScore(url1));
+ EXPECT_EQ(0, service->GetScore(url2));
+
+ // Simulate continual media playing, and ensure it is treated correctly.
+ HandleMediaPlaying(helper.get(), false);
+ HandleMediaPlaying(helper.get(), false);
+ HandleMediaPlaying(helper.get(), false);
+
+ EXPECT_DOUBLE_EQ(0.58, service->GetScore(url1));
+ EXPECT_EQ(0, service->GetScore(url2));
+
+ // Simulate backgrounding the media.
+ HandleMediaPlaying(helper.get(), true);
+ HandleMediaPlaying(helper.get(), true);
+
+ EXPECT_DOUBLE_EQ(0.60, service->GetScore(url1));
+ EXPECT_EQ(0, service->GetScore(url2));
+
+ // Simulate inputs for a different link.
+ NavigateWithDisposition(url2, CURRENT_TAB);
+ TrackingStarted(helper.get());
+
+ EXPECT_DOUBLE_EQ(0.6, service->GetScore(url1));
+ EXPECT_DOUBLE_EQ(0.5, service->GetScore(url2));
+ EXPECT_DOUBLE_EQ(1.1, service->GetTotalEngagementPoints());
+
+ HandleMediaPlaying(helper.get(), false);
+ HandleMediaPlaying(helper.get(), false);
+ EXPECT_DOUBLE_EQ(0.6, service->GetScore(url1));
+ EXPECT_DOUBLE_EQ(0.54, service->GetScore(url2));
+ EXPECT_DOUBLE_EQ(1.14, service->GetTotalEngagementPoints());
+}
+
+TEST_F(SiteEngagementHelperTest, MediaEngagement) {
+ AddTab(browser(), GURL("about:blank"));
+ GURL url1("https://www.google.com/");
+ GURL url2("http://www.google.com/");
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+
+ scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents));
+ SiteEngagementService* service =
+ SiteEngagementServiceFactory::GetForProfile(browser()->profile());
+ DCHECK(service);
+
+ NavigateWithDisposition(url1, CURRENT_TAB);
+ // Start media playing before tracking begins
+ MediaStartedPlaying(helper.get());
+ TrackingStarted(helper.get());
+
+ EXPECT_DOUBLE_EQ(0.52, service->GetScore(url1));
+ EXPECT_EQ(0, service->GetScore(url2));
+}
+
TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) {
AddTab(browser(), GURL("about:blank"));
GURL url1("https://www.google.com/");
@@ -149,7 +237,7 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) {
0);
NavigateWithDisposition(url1, CURRENT_TAB);
- StartTracking(helper.get());
+ TrackingStarted(helper.get());
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1));
EXPECT_EQ(0, service->GetScore(url2));
@@ -187,13 +275,15 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) {
blink::WebInputEvent::MouseWheel);
HandleUserInputAndRestartTracking(helper.get(),
blink::WebInputEvent::MouseDown);
+ HandleMediaPlaying(helper.get(), true);
HandleUserInputAndRestartTracking(helper.get(),
blink::WebInputEvent::GestureTapDown);
+ HandleMediaPlaying(helper.get(), false);
- EXPECT_DOUBLE_EQ(0.9, service->GetScore(url1));
+ EXPECT_DOUBLE_EQ(0.93, service->GetScore(url1));
EXPECT_EQ(0, service->GetScore(url2));
histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
- 9);
+ 11);
histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2);
histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
@@ -201,24 +291,30 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) {
histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE,
3);
+ histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
+ SiteEngagementMetrics::ENGAGEMENT_MEDIA_VISIBLE,
+ 1);
+ histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
+ SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN,
+ 1);
NavigateWithDisposition(url2, CURRENT_TAB);
- StartTracking(helper.get());
+ TrackingStarted(helper.get());
- EXPECT_DOUBLE_EQ(0.9, service->GetScore(url1));
+ EXPECT_DOUBLE_EQ(0.93, service->GetScore(url1));
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url2));
- EXPECT_DOUBLE_EQ(1.4, service->GetTotalEngagementPoints());
+ EXPECT_DOUBLE_EQ(1.43, service->GetTotalEngagementPoints());
HandleUserInputAndRestartTracking(helper.get(),
blink::WebInputEvent::GestureTapDown);
HandleUserInputAndRestartTracking(helper.get(),
blink::WebInputEvent::RawKeyDown);
- EXPECT_DOUBLE_EQ(0.9, service->GetScore(url1));
+ EXPECT_DOUBLE_EQ(0.93, service->GetScore(url1));
EXPECT_DOUBLE_EQ(0.6, service->GetScore(url2));
- EXPECT_DOUBLE_EQ(1.5, service->GetTotalEngagementPoints());
+ EXPECT_DOUBLE_EQ(1.53, service->GetTotalEngagementPoints());
histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
- 12);
+ 14);
histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 2);
histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
« no previous file with comments | « chrome/browser/engagement/site_engagement_helper.cc ('k') | chrome/browser/engagement/site_engagement_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698