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; |