Index: chrome/browser/engagement/site_engagement_service_browsertest.cc |
diff --git a/chrome/browser/engagement/site_engagement_service_browsertest.cc b/chrome/browser/engagement/site_engagement_service_browsertest.cc |
index 2da4efa2571129a089b5632ce1e5d163e0a1829a..40ce86ca04a32e65538bcd8c07db998b20844672 100644 |
--- a/chrome/browser/engagement/site_engagement_service_browsertest.cc |
+++ b/chrome/browser/engagement/site_engagement_service_browsertest.cc |
@@ -58,6 +58,14 @@ class SiteEngagementServiceBrowserTest : public InProcessBrowserTest { |
bool IsTracking(SiteEngagementHelper* helper) { |
return helper->input_tracker_.is_tracking(); |
} |
+ |
+ bool IsActive(SiteEngagementHelper* helper) { |
+ return helper->input_tracker_.IsActive(); |
+ } |
+ |
+ content::RenderViewHost* InputTrackerHost(SiteEngagementHelper* helper) { |
+ return helper->input_tracker_.host(); |
+ } |
}; |
IN_PROC_BROWSER_TEST_F(SiteEngagementServiceBrowserTest, |
@@ -412,12 +420,19 @@ IN_PROC_BROWSER_TEST_F(SiteEngagementServiceBrowserTest, SwitchRenderViewHost) { |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTracking(helper.get())); |
- content::RenderViewHost* rvh = web_contents->GetRenderViewHost(); |
+ content::RenderViewHost* rvh1 = web_contents->GetRenderViewHost(); |
+ |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser(), url2, NEW_BACKGROUND_TAB, |
+ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ content::RenderViewHost* rvh2 = |
+ browser()->tab_strip_model()->GetWebContentsAt(1)->GetRenderViewHost(); |
// The timer should still be running after the RenderViewHost is changed. |
- helper->RenderViewHostChanged(rvh, rvh); |
+ helper->RenderViewHostChanged(rvh1, rvh2); |
EXPECT_TRUE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTracking(helper.get())); |
+ EXPECT_EQ(rvh2, InputTrackerHost(helper.get())); |
// Firing the timer should add the callbacks. |
input_tracker_timer->Fire(); |
@@ -426,21 +441,24 @@ IN_PROC_BROWSER_TEST_F(SiteEngagementServiceBrowserTest, SwitchRenderViewHost) { |
// The callbacks should be on readded another RVH change since the timer has |
// already fired. |
- helper->RenderViewHostChanged(rvh, rvh); |
+ helper->RenderViewHostChanged(rvh2, rvh1); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_TRUE(IsTracking(helper.get())); |
+ EXPECT_EQ(rvh1, InputTrackerHost(helper.get())); |
// Ensure nothing bad happens with a destroyed RVH. |
- helper->RenderViewHostChanged(nullptr, rvh); |
+ helper->RenderViewHostChanged(nullptr, rvh2); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_TRUE(IsTracking(helper.get())); |
+ EXPECT_EQ(rvh2, InputTrackerHost(helper.get())); |
// Ensure nothing happens when RVH change happens for a hidden tab. |
helper->WasHidden(); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTracking(helper.get())); |
- helper->RenderViewHostChanged(nullptr, rvh); |
+ helper->RenderViewHostChanged(rvh2, rvh1); |
EXPECT_FALSE(input_tracker_timer->IsRunning()); |
EXPECT_FALSE(IsTracking(helper.get())); |
+ EXPECT_EQ(nullptr, InputTrackerHost(helper.get())); |
} |