| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/test/histogram_tester.h" | 6 #include "base/test/histogram_tester.h" |
| 7 #include "base/timer/mock_timer.h" | 7 #include "base/timer/mock_timer.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/engagement/site_engagement_helper.h" | 9 #include "chrome/browser/engagement/site_engagement_helper.h" |
| 10 #include "chrome/browser/engagement/site_engagement_service.h" | 10 #include "chrome/browser/engagement/site_engagement_service.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 51 |
| 52 // Set a pause timer on the input tracker for test purposes. | 52 // Set a pause timer on the input tracker for test purposes. |
| 53 void SetInputTrackerPauseTimer(SiteEngagementHelper* helper, | 53 void SetInputTrackerPauseTimer(SiteEngagementHelper* helper, |
| 54 scoped_ptr<base::Timer> timer) { | 54 scoped_ptr<base::Timer> timer) { |
| 55 helper->input_tracker_.SetPauseTimerForTesting(timer.Pass()); | 55 helper->input_tracker_.SetPauseTimerForTesting(timer.Pass()); |
| 56 } | 56 } |
| 57 | 57 |
| 58 bool IsTracking(SiteEngagementHelper* helper) { | 58 bool IsTracking(SiteEngagementHelper* helper) { |
| 59 return helper->input_tracker_.is_tracking(); | 59 return helper->input_tracker_.is_tracking(); |
| 60 } | 60 } |
| 61 |
| 62 bool IsActive(SiteEngagementHelper* helper) { |
| 63 return helper->input_tracker_.IsActive(); |
| 64 } |
| 65 |
| 66 content::RenderViewHost* InputTrackerHost(SiteEngagementHelper* helper) { |
| 67 return helper->input_tracker_.host(); |
| 68 } |
| 61 }; | 69 }; |
| 62 | 70 |
| 63 IN_PROC_BROWSER_TEST_F(SiteEngagementServiceBrowserTest, | 71 IN_PROC_BROWSER_TEST_F(SiteEngagementServiceBrowserTest, |
| 64 KeyPressEngagementAccumulation) { | 72 KeyPressEngagementAccumulation) { |
| 65 GURL url1("https://www.google.com/"); | 73 GURL url1("https://www.google.com/"); |
| 66 GURL url2("http://www.google.com/"); | 74 GURL url2("http://www.google.com/"); |
| 67 content::WebContents* web_contents = | 75 content::WebContents* web_contents = |
| 68 browser()->tab_strip_model()->GetActiveWebContents(); | 76 browser()->tab_strip_model()->GetActiveWebContents(); |
| 69 | 77 |
| 70 scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents)); | 78 scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents)); |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 | 413 |
| 406 base::MockTimer* input_tracker_timer = new base::MockTimer(true, false); | 414 base::MockTimer* input_tracker_timer = new base::MockTimer(true, false); |
| 407 scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents)); | 415 scoped_ptr<SiteEngagementHelper> helper(CreateHelper(web_contents)); |
| 408 SetInputTrackerPauseTimer(helper.get(), make_scoped_ptr(input_tracker_timer)); | 416 SetInputTrackerPauseTimer(helper.get(), make_scoped_ptr(input_tracker_timer)); |
| 409 | 417 |
| 410 // Navigation starts the initial delay timer. | 418 // Navigation starts the initial delay timer. |
| 411 ui_test_utils::NavigateToURL(browser(), url1); | 419 ui_test_utils::NavigateToURL(browser(), url1); |
| 412 EXPECT_TRUE(input_tracker_timer->IsRunning()); | 420 EXPECT_TRUE(input_tracker_timer->IsRunning()); |
| 413 EXPECT_FALSE(IsTracking(helper.get())); | 421 EXPECT_FALSE(IsTracking(helper.get())); |
| 414 | 422 |
| 415 content::RenderViewHost* rvh = web_contents->GetRenderViewHost(); | 423 content::RenderViewHost* rvh1 = web_contents->GetRenderViewHost(); |
| 424 |
| 425 ui_test_utils::NavigateToURLWithDisposition( |
| 426 browser(), url2, NEW_BACKGROUND_TAB, |
| 427 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 428 content::RenderViewHost* rvh2 = |
| 429 browser()->tab_strip_model()->GetWebContentsAt(1)->GetRenderViewHost(); |
| 416 | 430 |
| 417 // The timer should still be running after the RenderViewHost is changed. | 431 // The timer should still be running after the RenderViewHost is changed. |
| 418 helper->RenderViewHostChanged(rvh, rvh); | 432 helper->RenderViewHostChanged(rvh1, rvh2); |
| 419 EXPECT_TRUE(input_tracker_timer->IsRunning()); | 433 EXPECT_TRUE(input_tracker_timer->IsRunning()); |
| 420 EXPECT_FALSE(IsTracking(helper.get())); | 434 EXPECT_FALSE(IsTracking(helper.get())); |
| 435 EXPECT_EQ(rvh2, InputTrackerHost(helper.get())); |
| 421 | 436 |
| 422 // Firing the timer should add the callbacks. | 437 // Firing the timer should add the callbacks. |
| 423 input_tracker_timer->Fire(); | 438 input_tracker_timer->Fire(); |
| 424 EXPECT_FALSE(input_tracker_timer->IsRunning()); | 439 EXPECT_FALSE(input_tracker_timer->IsRunning()); |
| 425 EXPECT_TRUE(IsTracking(helper.get())); | 440 EXPECT_TRUE(IsTracking(helper.get())); |
| 426 | 441 |
| 427 // The callbacks should be on readded another RVH change since the timer has | 442 // The callbacks should be on readded another RVH change since the timer has |
| 428 // already fired. | 443 // already fired. |
| 429 helper->RenderViewHostChanged(rvh, rvh); | 444 helper->RenderViewHostChanged(rvh2, rvh1); |
| 430 EXPECT_FALSE(input_tracker_timer->IsRunning()); | 445 EXPECT_FALSE(input_tracker_timer->IsRunning()); |
| 431 EXPECT_TRUE(IsTracking(helper.get())); | 446 EXPECT_TRUE(IsTracking(helper.get())); |
| 447 EXPECT_EQ(rvh1, InputTrackerHost(helper.get())); |
| 432 | 448 |
| 433 // Ensure nothing bad happens with a destroyed RVH. | 449 // Ensure nothing bad happens with a destroyed RVH. |
| 434 helper->RenderViewHostChanged(nullptr, rvh); | 450 helper->RenderViewHostChanged(nullptr, rvh2); |
| 435 EXPECT_FALSE(input_tracker_timer->IsRunning()); | 451 EXPECT_FALSE(input_tracker_timer->IsRunning()); |
| 436 EXPECT_TRUE(IsTracking(helper.get())); | 452 EXPECT_TRUE(IsTracking(helper.get())); |
| 453 EXPECT_EQ(rvh2, InputTrackerHost(helper.get())); |
| 437 | 454 |
| 438 // Ensure nothing happens when RVH change happens for a hidden tab. | 455 // Ensure nothing happens when RVH change happens for a hidden tab. |
| 439 helper->WasHidden(); | 456 helper->WasHidden(); |
| 440 EXPECT_FALSE(input_tracker_timer->IsRunning()); | 457 EXPECT_FALSE(input_tracker_timer->IsRunning()); |
| 441 EXPECT_FALSE(IsTracking(helper.get())); | 458 EXPECT_FALSE(IsTracking(helper.get())); |
| 442 | 459 |
| 443 helper->RenderViewHostChanged(nullptr, rvh); | 460 helper->RenderViewHostChanged(rvh2, rvh1); |
| 444 EXPECT_FALSE(input_tracker_timer->IsRunning()); | 461 EXPECT_FALSE(input_tracker_timer->IsRunning()); |
| 445 EXPECT_FALSE(IsTracking(helper.get())); | 462 EXPECT_FALSE(IsTracking(helper.get())); |
| 463 EXPECT_EQ(nullptr, InputTrackerHost(helper.get())); |
| 446 } | 464 } |
| OLD | NEW |