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 1e74be28f80cf2b0c21953c3d6840f2f82eb8b1e..c8058ace86c5f0c148450c15386a0a56040856d3 100644 |
--- a/chrome/browser/engagement/site_engagement_helper_unittest.cc |
+++ b/chrome/browser/engagement/site_engagement_helper_unittest.cc |
@@ -4,32 +4,27 @@ |
#include "chrome/browser/engagement/site_engagement_helper.h" |
-#include <utility> |
- |
-#include "base/command_line.h" |
#include "base/test/histogram_tester.h" |
#include "base/timer/mock_timer.h" |
#include "base/values.h" |
#include "chrome/browser/engagement/site_engagement_service.h" |
#include "chrome/browser/engagement/site_engagement_service_factory.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/common/chrome_switches.h" |
-#include "chrome/test/base/browser_with_test_window_test.h" |
+#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/page_navigator.h" |
+#include "content/public/browser/web_contents.h" |
+#include "content/public/test/web_contents_tester.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-class SiteEngagementHelperTest : public BrowserWithTestWindowTest { |
+class SiteEngagementHelperTest : public ChromeRenderViewHostTestHarness { |
public: |
- void SetUp() override { |
- BrowserWithTestWindowTest::SetUp(); |
- base::CommandLine::ForCurrentProcess()->AppendSwitch( |
- switches::kEnableSiteEngagementService); |
- } |
- |
SiteEngagementHelper* GetHelper(content::WebContents* web_contents) { |
+ SiteEngagementHelper::CreateForWebContents(web_contents); |
SiteEngagementHelper* helper = |
SiteEngagementHelper::FromWebContents(web_contents); |
+ |
DCHECK(helper); |
return helper; |
} |
@@ -83,29 +78,27 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest { |
return helper->input_tracker_.is_tracking(); |
} |
- void NavigateWithDisposition(GURL& url, WindowOpenDisposition disposition) { |
- content::NavigationController* controller = |
- &browser()->tab_strip_model()->GetActiveWebContents()->GetController(); |
- browser()->OpenURL( |
- content::OpenURLParams(url, content::Referrer(), disposition, |
- ui::PAGE_TRANSITION_TYPED, false)); |
- CommitPendingLoad(controller); |
+ void Navigate(const GURL& url) { |
+ controller().LoadURL(url, content::Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ std::string()); |
+ int pending_id = controller().GetPendingEntry()->GetUniqueID(); |
+ content::WebContentsTester::For(web_contents()) |
+ ->TestDidNavigate(web_contents()->GetMainFrame(), 1, pending_id, true, |
+ url, ui::PAGE_TRANSITION_TYPED); |
} |
void UserInputAccumulation(const blink::WebInputEvent::Type type) { |
- 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(); |
+ content::WebContents* contents = web_contents(); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SiteEngagementService* service = |
- SiteEngagementServiceFactory::GetForProfile(browser()->profile()); |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
// Check that navigation triggers engagement. |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1)); |
@@ -126,7 +119,7 @@ class SiteEngagementHelperTest : public BrowserWithTestWindowTest { |
EXPECT_EQ(0, service->GetScore(url2)); |
// Simulate inputs for a different link. |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.7, service->GetScore(url1)); |
@@ -157,18 +150,16 @@ TEST_F(SiteEngagementHelperTest, GestureEngagementAccumulation) { |
} |
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(); |
+ content::WebContents* contents = web_contents(); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SiteEngagementService* service = |
- SiteEngagementServiceFactory::GetForProfile(browser()->profile()); |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1)); |
@@ -196,7 +187,7 @@ TEST_F(SiteEngagementHelperTest, MediaEngagementAccumulation) { |
EXPECT_EQ(0, service->GetScore(url2)); |
// Simulate inputs for a different link. |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.6, service->GetScore(url1)); |
@@ -211,20 +202,18 @@ TEST_F(SiteEngagementHelperTest, MediaEngagementAccumulation) { |
} |
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(); |
+ content::WebContents* contents = web_contents(); |
base::MockTimer* media_tracker_timer = new base::MockTimer(true, false); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SetMediaTrackerPauseTimer(helper, make_scoped_ptr(media_tracker_timer)); |
SiteEngagementService* service = |
- SiteEngagementServiceFactory::GetForProfile(browser()->profile()); |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
MediaStartedPlaying(helper); |
EXPECT_DOUBLE_EQ(0.50, service->GetScore(url1)); |
@@ -236,7 +225,7 @@ TEST_F(SiteEngagementHelperTest, MediaEngagement) { |
EXPECT_EQ(0, service->GetScore(url2)); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
- web_contents->WasHidden(); |
+ contents->WasHidden(); |
media_tracker_timer->Fire(); |
EXPECT_DOUBLE_EQ(0.53, service->GetScore(url1)); |
EXPECT_EQ(0, service->GetScore(url2)); |
@@ -248,7 +237,7 @@ TEST_F(SiteEngagementHelperTest, MediaEngagement) { |
EXPECT_EQ(0, service->GetScore(url2)); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
- web_contents->WasShown(); |
+ contents->WasShown(); |
media_tracker_timer->Fire(); |
EXPECT_DOUBLE_EQ(0.53, service->GetScore(url1)); |
EXPECT_EQ(0, service->GetScore(url2)); |
@@ -260,7 +249,7 @@ TEST_F(SiteEngagementHelperTest, MediaEngagement) { |
EXPECT_EQ(0, service->GetScore(url2)); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
EXPECT_DOUBLE_EQ(0.55, service->GetScore(url1)); |
EXPECT_EQ(0.5, service->GetScore(url2)); |
EXPECT_FALSE(media_tracker_timer->IsRunning()); |
@@ -271,14 +260,14 @@ TEST_F(SiteEngagementHelperTest, MediaEngagement) { |
EXPECT_EQ(0.52, service->GetScore(url2)); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
- web_contents->WasHidden(); |
+ contents->WasHidden(); |
media_tracker_timer->Fire(); |
EXPECT_DOUBLE_EQ(0.55, service->GetScore(url1)); |
EXPECT_EQ(0.53, service->GetScore(url2)); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
MediaStoppedPlaying(helper); |
- web_contents->WasShown(); |
+ contents->WasShown(); |
media_tracker_timer->Fire(); |
EXPECT_DOUBLE_EQ(0.55, service->GetScore(url1)); |
EXPECT_EQ(0.53, service->GetScore(url2)); |
@@ -286,15 +275,13 @@ TEST_F(SiteEngagementHelperTest, MediaEngagement) { |
} |
TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) { |
- 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(); |
+ content::WebContents* contents = web_contents(); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SiteEngagementService* service = |
- SiteEngagementServiceFactory::GetForProfile(browser()->profile()); |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
base::HistogramTester histograms; |
@@ -303,7 +290,7 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) { |
histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
0); |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1)); |
@@ -360,7 +347,7 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) { |
SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN, |
1); |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
TrackingStarted(helper); |
EXPECT_DOUBLE_EQ(0.93, service->GetScore(url1)); |
@@ -386,23 +373,21 @@ TEST_F(SiteEngagementHelperTest, MixedInputEngagementAccumulation) { |
} |
TEST_F(SiteEngagementHelperTest, CheckTimerAndCallbacks) { |
- 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(); |
+ content::WebContents* contents = web_contents(); |
base::MockTimer* input_tracker_timer = new base::MockTimer(true, false); |
base::MockTimer* media_tracker_timer = new base::MockTimer(true, false); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SetInputTrackerPauseTimer(helper, make_scoped_ptr(input_tracker_timer)); |
SetMediaTrackerPauseTimer(helper, make_scoped_ptr(media_tracker_timer)); |
SiteEngagementService* service = |
- SiteEngagementServiceFactory::GetForProfile(browser()->profile()); |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
EXPECT_DOUBLE_EQ(0.5, service->GetScore(url1)); |
EXPECT_EQ(0, service->GetScore(url2)); |
@@ -459,7 +444,7 @@ TEST_F(SiteEngagementHelperTest, CheckTimerAndCallbacks) { |
EXPECT_EQ(0, service->GetScore(url2)); |
// Timer should be running for navigation delay. Media is disabled again. |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
EXPECT_FALSE(media_tracker_timer->IsRunning()); |
@@ -496,30 +481,28 @@ TEST_F(SiteEngagementHelperTest, CheckTimerAndCallbacks) { |
// tracking until after a delay. We must manually call WasShown/WasHidden as |
// they are not triggered automatically in this test environment. |
TEST_F(SiteEngagementHelperTest, ShowAndHide) { |
- 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(); |
+ content::WebContents* contents = web_contents(); |
base::MockTimer* input_tracker_timer = new base::MockTimer(true, false); |
base::MockTimer* media_tracker_timer = new base::MockTimer(true, false); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SetInputTrackerPauseTimer(helper, make_scoped_ptr(input_tracker_timer)); |
SetMediaTrackerPauseTimer(helper, make_scoped_ptr(media_tracker_timer)); |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
input_tracker_timer->Fire(); |
// Hiding the tab should stop input tracking. Media tracking remains inactive. |
- web_contents->WasHidden(); |
+ contents->WasHidden(); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(media_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
// Showing the tab should start tracking again after another delay. Media |
// tracking remains inactive. |
- web_contents->WasShown(); |
+ contents->WasShown(); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(media_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
@@ -529,14 +512,14 @@ TEST_F(SiteEngagementHelperTest, ShowAndHide) { |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
// Hiding the tab should stop input tracking, but not media tracking. |
- web_contents->WasHidden(); |
+ contents->WasHidden(); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
// Showing the tab should start tracking again after another delay. Media |
// tracking continues. |
- web_contents->WasShown(); |
+ contents->WasShown(); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_TRUE(media_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
@@ -550,23 +533,21 @@ TEST_F(SiteEngagementHelperTest, ShowAndHide) { |
// Ensure tracking behavior is correct for multiple navigations in a single tab. |
TEST_F(SiteEngagementHelperTest, SingleTabNavigation) { |
- AddTab(browser(), GURL("about:blank")); |
GURL url1("https://www.google.com/"); |
GURL url2("https://www.example.com/"); |
- content::WebContents* web_contents = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
+ content::WebContents* contents = web_contents(); |
base::MockTimer* input_tracker_timer = new base::MockTimer(true, false); |
- SiteEngagementHelper* helper = GetHelper(web_contents); |
+ SiteEngagementHelper* helper = GetHelper(contents); |
SetInputTrackerPauseTimer(helper, make_scoped_ptr(input_tracker_timer)); |
// Navigation should start the initial delay timer. |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
// Navigating before the timer fires should simply reset the timer. |
- NavigateWithDisposition(url2, CURRENT_TAB); |
+ Navigate(url2); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
@@ -576,7 +557,7 @@ TEST_F(SiteEngagementHelperTest, SingleTabNavigation) { |
EXPECT_TRUE(IsTrackingInput(helper)); |
// Navigation should start the initial delay timer again. |
- NavigateWithDisposition(url1, CURRENT_TAB); |
+ Navigate(url1); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTrackingInput(helper)); |
} |