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) { |