| 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 147f09434028d069b3d59aaa0f0193f7d141c1e0..92aae36909636c2e643999556ef05671f921561b 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
|
| @@ -49,6 +49,7 @@ class MetricsWebContentsObserverTest
|
| RenderViewHostTestHarness::SetUp();
|
| observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents()));
|
| observer_->WasShown();
|
| + num_events_ = 0;
|
| }
|
|
|
| void AssertNoHistogramsLogged() {
|
| @@ -57,9 +58,21 @@ class MetricsWebContentsObserverTest
|
| histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 0);
|
| }
|
|
|
| + void CheckEvent(PageLoadEvent event, int count) {
|
| + histogram_tester_.ExpectBucketCount(kHistogramNameEvents, event, count);
|
| + num_events_ = num_events_ + count;
|
| + }
|
| +
|
| + void CheckTotalEvents() {
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameEvents, num_events_);
|
| + }
|
| +
|
| protected:
|
| base::HistogramTester histogram_tester_;
|
| scoped_ptr<MetricsWebContentsObserver> observer_;
|
| +
|
| + private:
|
| + int num_events_;
|
| };
|
|
|
| TEST_F(MetricsWebContentsObserverTest, NoMetrics) {
|
| @@ -349,15 +362,10 @@ TEST_F(MetricsWebContentsObserverTest, FailProvisionalLoad) {
|
| 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_BEFORE_COMMIT, 1);
|
| - histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| - PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| - histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| - PAGE_LOAD_ABORTED_BEFORE_COMMIT, 0);
|
| + CheckEvent(PAGE_LOAD_STARTED, 1);
|
| + CheckEvent(PAGE_LOAD_FAILED_BEFORE_COMMIT, 1);
|
| + CheckEvent(PAGE_LOAD_ABORTED_BEFORE_COMMIT, 0);
|
| + CheckTotalEvents();
|
| }
|
|
|
| TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
|
| @@ -370,15 +378,32 @@ TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
|
| 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_BEFORE_COMMIT, 1);
|
| - histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| - PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| - histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
|
| - PAGE_LOAD_ABORTED_BEFORE_COMMIT, 1);
|
| + CheckEvent(PAGE_LOAD_STARTED, 1);
|
| + CheckEvent(PAGE_LOAD_FAILED_BEFORE_COMMIT, 1);
|
| + CheckEvent(PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| + CheckEvent(PAGE_LOAD_ABORTED_BEFORE_COMMIT, 1);
|
| + CheckTotalEvents();
|
| +}
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) {
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(10);
|
| +
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| +
|
| + GURL about_blank_url = GURL("about:blank");
|
| + web_contents_tester->NavigateAndCommit(about_blank_url);
|
| +
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| + main_rfh());
|
| +
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
| +
|
| + CheckEvent(PAGE_LOAD_STARTED, 2);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_STARTED_IN_FOREGROUND, 1);
|
| + CheckTotalEvents();
|
| }
|
|
|
| TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
|
| @@ -395,16 +420,16 @@ TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
|
| // 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);
|
| +
|
| + CheckEvent(PAGE_LOAD_STARTED, 2);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_STARTED_IN_FOREGROUND, 2);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| + CheckEvent(PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
|
| + CheckTotalEvents();
|
| }
|
|
|
| TEST_F(MetricsWebContentsObserverTest,
|
| - SuccessfulFirstLayoutInForeGroundEvent) {
|
| + SuccessfulFirstLayoutInForegroundEvent) {
|
| PageLoadTiming timing;
|
| timing.navigation_start = base::Time::FromDoubleT(10);
|
| timing.first_layout = base::TimeDelta::FromMilliseconds(100);
|
| @@ -419,12 +444,10 @@ TEST_F(MetricsWebContentsObserverTest,
|
| // 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_FOREGROUND, 1);
|
| + CheckEvent(PAGE_LOAD_STARTED, 2);
|
| + CheckEvent(PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_FOREGROUND, 1);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_STARTED_IN_FOREGROUND, 2);
|
| + CheckTotalEvents();
|
| }
|
|
|
| TEST_F(MetricsWebContentsObserverTest,
|
| @@ -449,11 +472,33 @@ TEST_F(MetricsWebContentsObserverTest,
|
| // 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_BACKGROUND, 1);
|
| + CheckEvent(PAGE_LOAD_STARTED, 2);
|
| + CheckEvent(PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_BACKGROUND, 1);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_STARTED_IN_FOREGROUND, 2);
|
| + CheckTotalEvents();
|
| }
|
| +
|
| +TEST_F(MetricsWebContentsObserverTest, BadIPC) {
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(10);
|
| + PageLoadTiming timing2;
|
| + timing2.navigation_start = base::Time::FromDoubleT(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());
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2),
|
| + main_rfh());
|
| +
|
| + CheckEvent(PAGE_LOAD_STARTED, 1);
|
| + CheckEvent(PAGE_LOAD_BAD_IPC, 1);
|
| + CheckEvent(PAGE_LOAD_RELEVANT_STARTED_IN_FOREGROUND, 1);
|
| + CheckTotalEvents();
|
| +}
|
| +
|
| } // namespace page_load_metrics
|
|
|