Chromium Code Reviews| Index: chrome/browser/page_load_metrics/observers/page_load_metrics_observers_unittest.cc |
| diff --git a/chrome/browser/page_load_metrics/observers/page_load_metrics_observers_unittest.cc b/chrome/browser/page_load_metrics/observers/page_load_metrics_observers_unittest.cc |
| index cdcf5901204ef1abbaf4ceac83f20bd2164c3c4d..f27959b1bcab0c2d6ce518b3425ca08096f35969 100644 |
| --- a/chrome/browser/page_load_metrics/observers/page_load_metrics_observers_unittest.cc |
| +++ b/chrome/browser/page_load_metrics/observers/page_load_metrics_observers_unittest.cc |
| @@ -4,6 +4,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/test/histogram_tester.h" |
| +#include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.h" |
| #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h" |
| #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h" |
| #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| @@ -49,6 +50,8 @@ class TestPageLoadMetricsEmbedderInterface |
| void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { |
| tracker->AddObserver( |
| make_scoped_ptr(new TestFromGWSPageLoadMetricsObserver(referrer_))); |
| + tracker->AddObserver( |
|
Bryan McQuade
2015/12/10 17:04:23
I'd like to have a separate aborts_page_load_metri
Charlie Harrison
2015/12/10 17:59:31
I have a bug filed for this. I'll do it asap after
|
| + make_scoped_ptr(new AbortsPageLoadMetricsObserver())); |
| } |
| void set_referrer(const content::Referrer& referrer) { referrer_ = referrer; } |
| @@ -237,6 +240,67 @@ TEST_F(PageLoadMetricsObserverTest, ReferralNotFromGWS) { |
| histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); |
| } |
| +TEST_F(PageLoadMetricsObserverTest, AbortStopClose) { |
| + page_load_metrics::PageLoadTiming timing; |
| + timing.navigation_start = base::Time::FromDoubleT(1); |
| + content::WebContentsTester* web_contents_tester = |
| + content::WebContentsTester::For(web_contents()); |
| + NavigateAndCommit(GURL("https://www.google.com")); |
| + observer_->OnMessageReceived( |
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| + web_contents()->GetMainFrame()); |
| + // Simulate the user pressing the stop button. |
| + observer_->NavigationStopped(); |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.example.com")); |
| + observer_->OnMessageReceived( |
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| + web_contents()->GetMainFrame()); |
| + // Kill the MetricsWebContentsObserver to simulate closing the tab. |
| + observer_.reset(); |
| + histogram_tester_.ExpectTotalCount(kHistogramAbortStopBeforePaint, 1); |
| + histogram_tester_.ExpectTotalCount(kHistogramAbortCloseBeforePaint, 1); |
| +} |
| + |
| +TEST_F(PageLoadMetricsObserverTest, AbortNewNavigation) { |
| + page_load_metrics::PageLoadTiming timing; |
| + timing.navigation_start = base::Time::FromDoubleT(1); |
| + content::WebContentsTester* web_contents_tester = |
| + content::WebContentsTester::For(web_contents()); |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.google.com")); |
| + observer_->OnMessageReceived( |
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| + web_contents()->GetMainFrame()); |
| + // Simulate the user performaning another navigation before first paint. |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.example.com")); |
| + histogram_tester_.ExpectTotalCount(kHistogramAbortNewNavigationBeforePaint, |
| + 1); |
| +} |
| + |
| +TEST_F(PageLoadMetricsObserverTest, NoAbortNewNavigationFromAboutURL) { |
| + content::WebContentsTester* web_contents_tester = |
| + content::WebContentsTester::For(web_contents()); |
| + web_contents_tester->NavigateAndCommit(GURL("about:blank")); |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.example.com")); |
| + histogram_tester_.ExpectTotalCount(kHistogramAbortNewNavigationBeforePaint, |
| + 0); |
| +} |
| + |
| +TEST_F(PageLoadMetricsObserverTest, NoAbortNewNavigationAfterPaint) { |
| + page_load_metrics::PageLoadTiming timing; |
| + timing.navigation_start = base::Time::FromDoubleT(1); |
| + timing.first_paint = base::TimeDelta::FromMicroseconds(1); |
| + content::WebContentsTester* web_contents_tester = |
| + content::WebContentsTester::For(web_contents()); |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.google.com")); |
| + observer_->OnMessageReceived( |
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| + web_contents()->GetMainFrame()); |
| + web_contents_tester->NavigateAndCommit(GURL("https://www.example.com")); |
| + histogram_tester_.ExpectTotalCount(kHistogramAbortNewNavigationBeforePaint, |
| + 0); |
| +} |
| + |
| + |
| TEST_F(PageLoadMetricsObserverTest, IsGoogleCaptcha) { |
| struct { |
| std::string url; |