| Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| index f8bcb254a53fb7a285715348a25bd80202370dd2..d8cb11170edc491882e9ea597d9e601e4f775e66 100644
|
| --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
|
| +#include "components/page_load_metrics/browser/page_load_metrics_util.h"
|
|
|
| namespace {
|
| const char kExampleUrl[] = "http://www.example.com/";
|
| @@ -427,16 +428,25 @@ TEST_F(FromGWSPageLoadMetricsObserverTest,
|
| NavigateAndCommit(GURL("https://www.google.com/search#q=test"));
|
| NavigateAndCommit(GURL(kExampleUrl));
|
|
|
| - SimulateTimingUpdate(timing);
|
| web_contents()->WasHidden();
|
| + SimulateTimingUpdate(timing);
|
|
|
| - // Navigate again to force logging.
|
| - NavigateAndCommit(GURL("https://www.final.com"));
|
| - histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint,
|
| - 1);
|
| - histogram_tester().ExpectBucketCount(
|
| - internal::kHistogramFromGWSFirstTextPaint,
|
| - timing.first_text_paint.InMilliseconds(), 1);
|
| + page_load_metrics::PageLoadExtraInfo info =
|
| + GetPageLoadExtraInfoForCommittedLoad();
|
| +
|
| + // If the system clock is low resolution PageLoadTracker's background_time_
|
| + // may be < timing.first_text_paint.
|
| + if (page_load_metrics::WasStartedInForegroundEventInForeground(
|
| + timing.first_text_paint, info)) {
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSFirstTextPaint, 1);
|
| + histogram_tester().ExpectBucketCount(
|
| + internal::kHistogramFromGWSFirstTextPaint,
|
| + timing.first_text_paint.InMilliseconds(), 1);
|
| + } else {
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSFirstTextPaint, 0);
|
| + }
|
| }
|
|
|
| TEST_F(FromGWSPageLoadMetricsObserverTest, UnknownNavigationBeforeCommit) {
|
| @@ -599,9 +609,20 @@ TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationAfterPaint) {
|
| PopulateRequiredTimingFields(&timing);
|
| NavigateAndCommit(GURL("https://example.test"));
|
| SimulateTimingUpdate(timing);
|
| +
|
| + // The test cannot assume that abort time will be > first_paint
|
| + // (1 micro-sec). If the system clock is low resolution, PageLoadTracker's
|
| + // abort time may be <= first_paint. In that case the histogram will be
|
| + // logged. Thus both 0 and 1 counts of histograms are considered good.
|
| +
|
| NavigateAndCommit(GURL("https://example.test2"));
|
| - histogram_tester().ExpectTotalCount(
|
| - internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 0);
|
| +
|
| + base::HistogramTester::CountsMap counts_map =
|
| + histogram_tester().GetTotalCountsForPrefix(
|
| + internal::kHistogramFromGWSAbortNewNavigationBeforePaint);
|
| +
|
| + EXPECT_TRUE(counts_map.empty() ||
|
| + (counts_map.size() == 1 && counts_map.begin()->second == 1));
|
| }
|
|
|
| TEST_F(FromGWSPageLoadMetricsObserverTest, NewNavigationBeforeInteraction) {
|
|
|