| 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..21aa07d6811711416b1e0a368a9064ef123dd429 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,121 @@ TEST_F(MetricsWebContentsObserverTest, DontBackgroundQuickerLoad) {
|
| histogram_tester_.ExpectBucketCount(kHistogramNameFirstLayout,
|
| first_layout.InMilliseconds(), 1);
|
| }
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, FailProvisionalLoad) {
|
| + 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_TIMED_OUT);
|
| + rfh_tester->SimulateNavigationStop();
|
| +
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_STARTED, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_FAILED_PROVISIONAL, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_ABORTED_PROVISIONAL, 0);
|
| +}
|
| +
|
| +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_.ExpectTotalCount(kHistogramNameEvents, 4);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_STARTED, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_FAILED_PROVISIONAL, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_ABORTED_PROVISIONAL, 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_.ExpectTotalCount(kHistogramNameEvents, 3);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_STARTED, 2);
|
| + histogram_tester_.ExpectBucketCount(
|
| + kHistogramNameEvents, PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| +}
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutFGEvent) {
|
| + 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_.ExpectTotalCount(kHistogramNameEvents, 3);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_STARTED, 2);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_FG, 1);
|
| +}
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutBGEvent) {
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(
|
| + (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1);
|
| +
|
| + timing.first_layout = base::TimeDelta::FromSeconds(30);
|
| +
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
| + // Background the tab.
|
| + observer_->WasHidden();
|
| +
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| + main_rfh());
|
| +
|
| + observer_->WasShown();
|
| + // Navigate again to force histogram logging.
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
|
| +
|
| + // 3 events: 2 starts and one successful first layout.
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_STARTED, 2);
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| + PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_BG, 1);
|
| +}
|
| } // namespace page_load_metrics
|
|
|