| Index: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
|
| diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
|
| index c72e64715173cf43896fa6dba632859a79eeedfe..01d115cca428d0535d1a0820188f61cd019485a2 100644
|
| --- a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
|
| +++ b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
|
| @@ -35,6 +35,9 @@ const char kBGHistogramNameDomContent[] =
|
| "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.BG";
|
| const char kBGHistogramNameLoad[] =
|
| "PageLoad.Timing2.NavigationToLoadEventFired.BG";
|
| +
|
| +const char kHistogramNameEvents[] = "PageLoad.EventCounts";
|
| +
|
| } // namespace
|
|
|
| class MetricsWebContentsObserverTest
|
| @@ -334,4 +337,64 @@ TEST_F(MetricsWebContentsObserverTest, DontBackgroundQuickerLoad) {
|
| histogram_tester_.ExpectBucketCount(kHistogramNameFirstLayout,
|
| first_layout.InMilliseconds(), 1);
|
| }
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| +
|
| + web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
|
| + content::RenderFrameHostTester* rfh_tester =
|
| + content::RenderFrameHostTester::For(main_rfh());
|
| + rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
|
| + rfh_tester->SimulateNavigationStop();
|
| +
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + STARTED_PROVISIONAL_LOAD, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + ABORTED_PROVISIONAL_LOAD, 1);
|
| +}
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(10);
|
| +
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
| +
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| + main_rfh());
|
| + // Navigate again to force histogram logging.
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
|
| +
|
| + // 3 events: 2 starts and one abort before first layout.
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + STARTED_PROVISIONAL_LOAD, 2);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + ABORTED_LOAD_BEFORE_FIRST_LAYOUT, 1);
|
| +}
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutEvent) {
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(10);
|
| + timing.first_layout = base::TimeDelta::FromMilliseconds(100);
|
| +
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
| +
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| + main_rfh());
|
| + // Navigate again to force histogram logging.
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
|
| +
|
| + // 3 events: 2 starts and one successful first layout.
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + STARTED_PROVISIONAL_LOAD, 2);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + SUCCESSFUL_FIRST_LAYOUT, 1);
|
| +}
|
| +
|
| } // namespace page_load_metrics
|
|
|