Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6842)

Unified Diff: chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc

Issue 1837233002: Optional <TimeDelta> since they may be non existent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added dcheck when isHighResolution is true. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
index eefc6bf6ded56b4255814bcace6ee330f876040b..d66de85856e5bf3c9c24665bc9172469be13ab0a 100644
--- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
@@ -7,6 +7,7 @@
#include "base/memory/ptr_util.h"
#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
#include "chrome/test/base/testing_browser_process.h"
+#include "components/page_load_metrics/browser/page_load_metrics_util.h"
#include "components/rappor/rappor_utils.h"
#include "components/rappor/test_rappor_service.h"
@@ -238,10 +239,51 @@ TEST_F(CorePageLoadMetricsObserverTest, BackgroundDifferentHistogram) {
histogram_tester().ExpectTotalCount(internal::kHistogramFirstTextPaint, 0);
}
+TEST_F(CorePageLoadMetricsObserverTest,
+ BackgroundCommitHistogramClockResolutionNonDeterministic) {
+ base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1);
+
+ page_load_metrics::PageLoadTiming timing;
+ timing.navigation_start = base::Time::FromDoubleT(1);
+ timing.first_layout = first_layout;
+ PopulateRequiredTimingFields(&timing);
+
+ // Start a provisional load.
+ GURL url(kDefaultTestUrl2);
+ content::RenderFrameHostTester* rfh_tester =
+ content::RenderFrameHostTester::For(main_rfh());
+ rfh_tester->SimulateNavigationStart(url);
+
+ // Background and then commit.
+ web_contents()->WasHidden();
+ rfh_tester->SimulateNavigationCommit(url);
+ SimulateTimingUpdate(timing);
+ rfh_tester->SimulateNavigationStop();
+
+ page_load_metrics::PageLoadExtraInfo info =
+ GetPageLoadExtraInfoForCommittedLoad();
+
+ // Navigate again to force histograms to be logged.
+ NavigateAndCommit(GURL(kDefaultTestUrl));
+
+ // If the system clock is low resolution PageLoadTracker's commit_time_ may
+ // be = first_background_time_.
+ if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground(
+ info.time_to_commit, info)) {
+ histogram_tester().ExpectTotalCount(internal::kBackgroundHistogramCommit,
+ 0);
+ histogram_tester().ExpectTotalCount(internal::kHistogramCommit, 1);
+ } else {
+ histogram_tester().ExpectTotalCount(internal::kBackgroundHistogramCommit,
+ 1);
+ histogram_tester().ExpectTotalCount(internal::kHistogramCommit, 0);
+ }
+}
+
TEST_F(CorePageLoadMetricsObserverTest, OnlyBackgroundLaterEvents) {
page_load_metrics::PageLoadTiming timing;
timing.navigation_start = base::Time::FromDoubleT(1);
- // Set these events at 1 microsecond so they are definitely occur before we
+ // Set these events at 1 microsecond so they definitely occur before we
// background the tab later in the test.
timing.response_start = base::TimeDelta::FromMicroseconds(1);
timing.dom_loading = base::TimeDelta::FromMicroseconds(1);
@@ -250,7 +292,7 @@ TEST_F(CorePageLoadMetricsObserverTest, OnlyBackgroundLaterEvents) {
NavigateAndCommit(GURL(kDefaultTestUrl));
SimulateTimingUpdate(timing);
- // Background the tab, then forground it.
+ // Background the tab, then foreground it.
web_contents()->WasHidden();
web_contents()->WasShown();
timing.first_layout = base::TimeDelta::FromSeconds(3);
@@ -258,12 +300,33 @@ TEST_F(CorePageLoadMetricsObserverTest, OnlyBackgroundLaterEvents) {
PopulateRequiredTimingFields(&timing);
SimulateTimingUpdate(timing);
+ // If the system clock is low resolution, PageLoadTracker's
+ // first_background_time_ may be same as other times such as
+ // dom_content_loaded_event_start.
+ page_load_metrics::PageLoadExtraInfo info =
+ GetPageLoadExtraInfoForCommittedLoad();
+
// Navigate again to force histogram recording.
NavigateAndCommit(GURL(kDefaultTestUrl2));
histogram_tester().ExpectTotalCount(internal::kBackgroundHistogramCommit, 0);
- histogram_tester().ExpectTotalCount(
- internal::kBackgroundHistogramDomContentLoaded, 0);
+
+ if (page_load_metrics::WasStartedInForegroundEventInForeground(
+ timing.dom_content_loaded_event_start, info)) {
+ histogram_tester().ExpectTotalCount(internal::kHistogramDomContentLoaded,
+ 1);
+ histogram_tester().ExpectBucketCount(
+ internal::kHistogramDomContentLoaded,
+ timing.dom_content_loaded_event_start.InMilliseconds(), 1);
+ histogram_tester().ExpectTotalCount(
+ internal::kBackgroundHistogramDomContentLoaded, 0);
+ } else {
+ histogram_tester().ExpectTotalCount(
+ internal::kBackgroundHistogramDomContentLoaded, 1);
+ histogram_tester().ExpectTotalCount(internal::kHistogramDomContentLoaded,
+ 0);
+ }
+
histogram_tester().ExpectTotalCount(internal::kBackgroundHistogramLoad, 0);
histogram_tester().ExpectTotalCount(internal::kBackgroundHistogramFirstLayout,
1);
@@ -277,10 +340,6 @@ TEST_F(CorePageLoadMetricsObserverTest, OnlyBackgroundLaterEvents) {
timing.first_text_paint.InMilliseconds(), 1);
histogram_tester().ExpectTotalCount(internal::kHistogramCommit, 1);
- histogram_tester().ExpectTotalCount(internal::kHistogramDomContentLoaded, 1);
- histogram_tester().ExpectBucketCount(
- internal::kHistogramDomContentLoaded,
- timing.dom_content_loaded_event_start.InMilliseconds(), 1);
histogram_tester().ExpectTotalCount(internal::kHistogramLoad, 0);
histogram_tester().ExpectTotalCount(internal::kHistogramFirstLayout, 0);
histogram_tester().ExpectTotalCount(internal::kHistogramFirstTextPaint, 0);
@@ -345,10 +404,10 @@ TEST_F(CorePageLoadMetricsObserverTest, FailedBackgroundProvisionalLoad) {
// Test that failed provisional event does not get logged in the
// histogram if it happened in the background
GURL url(kDefaultTestUrl);
+ web_contents()->WasHidden();
content::RenderFrameHostTester* rfh_tester =
content::RenderFrameHostTester::For(main_rfh());
rfh_tester->SimulateNavigationStart(url);
- web_contents()->WasHidden();
rfh_tester->SimulateNavigationError(url, net::ERR_TIMED_OUT);
rfh_tester->SimulateNavigationStop();

Powered by Google App Engine
This is Rietveld 408576698