| 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 ee2639f5009f4f89450accc0a0a03f2da77f838a..9d513ca1bffa2d4bdf7f7fc978b41887a650fe1c 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
|
| @@ -29,6 +29,12 @@ const char kHistogramNameDomContent[] =
|
| const char kHistogramNameLoad[] =
|
| "PageLoad.Timing.NavigationToLoadEventFired";
|
|
|
| +const char kBGHistogramNameFirstLayout[] =
|
| + "PageLoad.Timing.BG.NavigationToFirstLayout";
|
| +const char kBGHistogramNameDomContent[] =
|
| + "PageLoad.Timing.BG.NavigationToDOMContentLoadedEventFired";
|
| +const char kBGHistogramNameLoad[] =
|
| + "PageLoad.Timing.BG.NavigationToLoadEventFired";
|
| } // namespace
|
|
|
| class MetricsWebContentsObserverTest
|
| @@ -39,6 +45,7 @@ class MetricsWebContentsObserverTest
|
| void SetUp() override {
|
| RenderViewHostTestHarness::SetUp();
|
| observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents()));
|
| + observer_->WasShown();
|
| }
|
|
|
| void AssertNoHistogramsLogged() {
|
| @@ -100,6 +107,8 @@ TEST_F(MetricsWebContentsObserverTest, SamePageNoTrigger) {
|
| observer_->OnMessageReceived(
|
| PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| web_contents()->GetMainFrame());
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl));
|
| web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrlAnchor));
|
| // A same page navigation shouldn't trigger logging UMA for the original.
|
| AssertNoHistogramsLogged();
|
| @@ -119,7 +128,11 @@ TEST_F(MetricsWebContentsObserverTest, SamePageNoTriggerUntilTrueNavCommit) {
|
| observer_->OnMessageReceived(
|
| PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| web_contents()->GetMainFrame());
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl));
|
| web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrlAnchor));
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrlAnchor));
|
| // A same page navigation shouldn't trigger logging UMA for the original.
|
| AssertNoHistogramsLogged();
|
|
|
| @@ -147,6 +160,8 @@ TEST_F(MetricsWebContentsObserverTest, SingleMetricAfterCommit) {
|
| observer_->OnMessageReceived(
|
| PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| web_contents()->GetMainFrame());
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl));
|
|
|
| AssertNoHistogramsLogged();
|
|
|
| @@ -181,6 +196,8 @@ TEST_F(MetricsWebContentsObserverTest, MultipleMetricsAfterCommits) {
|
| observer_->OnMessageReceived(
|
| PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| web_contents()->GetMainFrame());
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl));
|
|
|
| web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
|
|
|
| @@ -191,6 +208,8 @@ TEST_F(MetricsWebContentsObserverTest, MultipleMetricsAfterCommits) {
|
| observer_->OnMessageReceived(
|
| PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2),
|
| web_contents()->GetMainFrame());
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl2));
|
|
|
| web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
|
|
| @@ -211,4 +230,42 @@ TEST_F(MetricsWebContentsObserverTest, MultipleMetricsAfterCommits) {
|
| 1);
|
| }
|
|
|
| +TEST_F(MetricsWebContentsObserverTest, BackgroundDifferentHistogram) {
|
| + base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1);
|
| +
|
| + PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(1);
|
| + timing.first_layout = first_layout;
|
| +
|
| + content::WebContentsTester* web_contents_tester =
|
| + content::WebContentsTester::For(web_contents());
|
| +
|
| + // Simulate "Open link in new tab."
|
| + observer_->WasHidden();
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
|
| +
|
| + observer_->OnMessageReceived(
|
| + PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
|
| + web_contents()->GetMainFrame());
|
| +
|
| + // Simulate switching to the tab and making another navigation.
|
| + observer_->WasShown();
|
| + observer_->DidFinishLoad(web_contents()->GetMainFrame(),
|
| + GURL(kDefaultTestUrl));
|
| + AssertNoHistogramsLogged();
|
| +
|
| + // Navigate again to force histogram recording.
|
| + web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
|
| +
|
| + histogram_tester_.ExpectTotalCount(kBGHistogramNameDomContent, 0);
|
| + histogram_tester_.ExpectTotalCount(kBGHistogramNameLoad, 0);
|
| + histogram_tester_.ExpectTotalCount(kBGHistogramNameFirstLayout, 1);
|
| + histogram_tester_.ExpectBucketCount(kBGHistogramNameFirstLayout,
|
| + first_layout.InMilliseconds(), 1);
|
| +
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameDomContent, 0);
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameLoad, 0);
|
| + histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 0);
|
| +}
|
| +
|
| } // namespace page_load_metrics
|
|
|