Commit 428cfddd authored by Kunihiko Sakamoto's avatar Kunihiko Sakamoto Committed by Commit Bot

Add more aggressively targeted variants of MultiTabLoading metrics

This adds variants of PageLoad.Clients.MultiTabLoading.* metrics that
are recorded only when there are >=2 (or >=5) inflight loading tabs.

Bug: 792759
Change-Id: Ic1c8711d6424752dd80685b7740ec12fcc1c885e
Reviewed-on: https://chromium-review.googlesource.com/826706Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarTakashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Commit-Queue: Kunihiko Sakamoto <ksakamoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524329}
parent a09615be
...@@ -904,6 +904,8 @@ split_static_library("browser") { ...@@ -904,6 +904,8 @@ split_static_library("browser") {
"page_load_metrics/observers/from_gws_page_load_metrics_observer.h", "page_load_metrics/observers/from_gws_page_load_metrics_observer.h",
"page_load_metrics/observers/google_captcha_observer.cc", "page_load_metrics/observers/google_captcha_observer.cc",
"page_load_metrics/observers/google_captcha_observer.h", "page_load_metrics/observers/google_captcha_observer.h",
"page_load_metrics/observers/histogram_suffixes.cc",
"page_load_metrics/observers/histogram_suffixes.h",
"page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.cc", "page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.cc",
"page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.h", "page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.h",
"page_load_metrics/observers/https_engagement_metrics/https_engagement_service.cc", "page_load_metrics/observers/https_engagement_metrics/https_engagement_service.cc",
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/loader/chrome_navigation_data.h" #include "chrome/browser/loader/chrome_navigation_data.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h" #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h" #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h"
#include "chrome/browser/page_load_metrics/observers/histogram_suffixes.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
#include "chrome/browser/previews/previews_infobar_delegate.h" #include "chrome/browser/previews/previews_infobar_delegate.h"
...@@ -72,25 +73,6 @@ const char kHistogramDataReductionProxyPrefix[] = ...@@ -72,25 +73,6 @@ const char kHistogramDataReductionProxyPrefix[] =
"PageLoad.Clients.DataReductionProxy."; "PageLoad.Clients.DataReductionProxy.";
const char kHistogramDataReductionProxyLoFiOnPrefix[] = const char kHistogramDataReductionProxyLoFiOnPrefix[] =
"PageLoad.Clients.DataReductionProxy.LoFiOn."; "PageLoad.Clients.DataReductionProxy.LoFiOn.";
const char kHistogramDOMContentLoadedEventFiredSuffix[] =
"DocumentTiming.NavigationToDOMContentLoadedEventFired";
const char kHistogramFirstLayoutSuffix[] =
"DocumentTiming.NavigationToFirstLayout";
const char kHistogramLoadEventFiredSuffix[] =
"DocumentTiming.NavigationToLoadEventFired";
const char kHistogramFirstContentfulPaintSuffix[] =
"PaintTiming.NavigationToFirstContentfulPaint";
const char kHistogramFirstMeaningfulPaintSuffix[] =
"Experimental.PaintTiming.NavigationToFirstMeaningfulPaint";
const char kHistogramFirstImagePaintSuffix[] =
"PaintTiming.NavigationToFirstImagePaint";
const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint";
const char kHistogramFirstTextPaintSuffix[] =
"PaintTiming.NavigationToFirstTextPaint";
const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart";
const char kHistogramParseBlockedOnScriptLoadSuffix[] =
"ParseTiming.ParseBlockedOnScriptLoad";
const char kHistogramParseDurationSuffix[] = "ParseTiming.ParseDuration";
const char kResourcesPercentProxied[] = const char kResourcesPercentProxied[] =
"Experimental.CompletedResources.Network.PercentProxied"; "Experimental.CompletedResources.Network.PercentProxied";
...@@ -340,7 +322,7 @@ void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( ...@@ -340,7 +322,7 @@ void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->dom_content_loaded_event_start, info, data_, timing.document_timing->dom_content_loaded_event_start,
internal::kHistogramDOMContentLoadedEventFiredSuffix); ::internal::kHistogramDOMContentLoadedEventFiredSuffix);
} }
void DataReductionProxyMetricsObserver::OnLoadEventStart( void DataReductionProxyMetricsObserver::OnLoadEventStart(
...@@ -349,7 +331,7 @@ void DataReductionProxyMetricsObserver::OnLoadEventStart( ...@@ -349,7 +331,7 @@ void DataReductionProxyMetricsObserver::OnLoadEventStart(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->load_event_start, info, data_, timing.document_timing->load_event_start,
internal::kHistogramLoadEventFiredSuffix); ::internal::kHistogramLoadEventFiredSuffix);
} }
void DataReductionProxyMetricsObserver::OnFirstLayout( void DataReductionProxyMetricsObserver::OnFirstLayout(
...@@ -358,16 +340,16 @@ void DataReductionProxyMetricsObserver::OnFirstLayout( ...@@ -358,16 +340,16 @@ void DataReductionProxyMetricsObserver::OnFirstLayout(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->first_layout, info, data_, timing.document_timing->first_layout,
internal::kHistogramFirstLayoutSuffix); ::internal::kHistogramFirstLayoutSuffix);
} }
void DataReductionProxyMetricsObserver::OnFirstPaintInPage( void DataReductionProxyMetricsObserver::OnFirstPaintInPage(
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
timing.paint_timing->first_paint, info, data_, timing.paint_timing->first_paint,
internal::kHistogramFirstPaintSuffix); ::internal::kHistogramFirstPaintSuffix);
} }
void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage( void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage(
...@@ -376,7 +358,7 @@ void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage( ...@@ -376,7 +358,7 @@ void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_text_paint, info, data_, timing.paint_timing->first_text_paint,
internal::kHistogramFirstTextPaintSuffix); ::internal::kHistogramFirstTextPaintSuffix);
} }
void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage( void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage(
...@@ -385,7 +367,7 @@ void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage( ...@@ -385,7 +367,7 @@ void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_image_paint, info, data_, timing.paint_timing->first_image_paint,
internal::kHistogramFirstImagePaintSuffix); ::internal::kHistogramFirstImagePaintSuffix);
} }
void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage( void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage(
...@@ -394,7 +376,7 @@ void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage( ...@@ -394,7 +376,7 @@ void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_contentful_paint, info, data_, timing.paint_timing->first_contentful_paint,
internal::kHistogramFirstContentfulPaintSuffix); ::internal::kHistogramFirstContentfulPaintSuffix);
} }
void DataReductionProxyMetricsObserver:: void DataReductionProxyMetricsObserver::
...@@ -404,16 +386,16 @@ void DataReductionProxyMetricsObserver:: ...@@ -404,16 +386,16 @@ void DataReductionProxyMetricsObserver::
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_meaningful_paint, info, data_, timing.paint_timing->first_meaningful_paint,
internal::kHistogramFirstMeaningfulPaintSuffix); ::internal::kHistogramFirstMeaningfulPaintSuffix);
} }
void DataReductionProxyMetricsObserver::OnParseStart( void DataReductionProxyMetricsObserver::OnParseStart(
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
timing.parse_timing->parse_start, info, data_, timing.parse_timing->parse_start,
internal::kHistogramParseStartSuffix); ::internal::kHistogramParseStartSuffix);
} }
void DataReductionProxyMetricsObserver::OnParseStop( void DataReductionProxyMetricsObserver::OnParseStop(
...@@ -427,10 +409,10 @@ void DataReductionProxyMetricsObserver::OnParseStop( ...@@ -427,10 +409,10 @@ void DataReductionProxyMetricsObserver::OnParseStop(
base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() - base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() -
timing.parse_timing->parse_start.value(); timing.parse_timing->parse_start.value();
RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration, RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration,
internal::kHistogramParseDurationSuffix); ::internal::kHistogramParseDurationSuffix);
RECORD_HISTOGRAMS_FOR_SUFFIX( RECORD_HISTOGRAMS_FOR_SUFFIX(
data_, timing.parse_timing->parse_blocked_on_script_load_duration.value(), data_, timing.parse_timing->parse_blocked_on_script_load_duration.value(),
internal::kHistogramParseBlockedOnScriptLoadSuffix); ::internal::kHistogramParseBlockedOnScriptLoadSuffix);
} }
void DataReductionProxyMetricsObserver::OnLoadedResource( void DataReductionProxyMetricsObserver::OnLoadedResource(
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/loader/chrome_navigation_data.h" #include "chrome/browser/loader/chrome_navigation_data.h"
#include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h"
#include "chrome/browser/page_load_metrics/observers/histogram_suffixes.h"
#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h" #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
#include "chrome/browser/page_load_metrics/page_load_tracker.h" #include "chrome/browser/page_load_metrics/page_load_tracker.h"
...@@ -222,28 +223,30 @@ class DataReductionProxyMetricsObserverTest ...@@ -222,28 +223,30 @@ class DataReductionProxyMetricsObserverTest
void ValidateHistograms() { void ValidateHistograms() {
ValidateHistogramsForSuffix( ValidateHistogramsForSuffix(
internal::kHistogramDOMContentLoadedEventFiredSuffix, ::internal::kHistogramDOMContentLoadedEventFiredSuffix,
timing_.document_timing->dom_content_loaded_event_start); timing_.document_timing->dom_content_loaded_event_start);
ValidateHistogramsForSuffix(internal::kHistogramFirstLayoutSuffix, ValidateHistogramsForSuffix(::internal::kHistogramFirstLayoutSuffix,
timing_.document_timing->first_layout); timing_.document_timing->first_layout);
ValidateHistogramsForSuffix(internal::kHistogramLoadEventFiredSuffix, ValidateHistogramsForSuffix(::internal::kHistogramLoadEventFiredSuffix,
timing_.document_timing->load_event_start); timing_.document_timing->load_event_start);
ValidateHistogramsForSuffix(internal::kHistogramFirstContentfulPaintSuffix, ValidateHistogramsForSuffix(
timing_.paint_timing->first_contentful_paint); ::internal::kHistogramFirstContentfulPaintSuffix,
ValidateHistogramsForSuffix(internal::kHistogramFirstMeaningfulPaintSuffix, timing_.paint_timing->first_contentful_paint);
timing_.paint_timing->first_meaningful_paint); ValidateHistogramsForSuffix(
ValidateHistogramsForSuffix(internal::kHistogramFirstImagePaintSuffix, ::internal::kHistogramFirstMeaningfulPaintSuffix,
timing_.paint_timing->first_meaningful_paint);
ValidateHistogramsForSuffix(::internal::kHistogramFirstImagePaintSuffix,
timing_.paint_timing->first_image_paint); timing_.paint_timing->first_image_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstPaintSuffix, ValidateHistogramsForSuffix(::internal::kHistogramFirstPaintSuffix,
timing_.paint_timing->first_paint); timing_.paint_timing->first_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstTextPaintSuffix, ValidateHistogramsForSuffix(::internal::kHistogramFirstTextPaintSuffix,
timing_.paint_timing->first_text_paint); timing_.paint_timing->first_text_paint);
ValidateHistogramsForSuffix(internal::kHistogramParseStartSuffix, ValidateHistogramsForSuffix(::internal::kHistogramParseStartSuffix,
timing_.parse_timing->parse_start); timing_.parse_timing->parse_start);
ValidateHistogramsForSuffix( ValidateHistogramsForSuffix(
internal::kHistogramParseBlockedOnScriptLoadSuffix, ::internal::kHistogramParseBlockedOnScriptLoadSuffix,
timing_.parse_timing->parse_blocked_on_script_load_duration); timing_.parse_timing->parse_blocked_on_script_load_duration);
ValidateHistogramsForSuffix(internal::kHistogramParseDurationSuffix, ValidateHistogramsForSuffix(::internal::kHistogramParseDurationSuffix,
timing_.parse_timing->parse_stop.value() - timing_.parse_timing->parse_stop.value() -
timing_.parse_timing->parse_start.value()); timing_.parse_timing->parse_start.value());
} }
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/page_load_metrics/observers/histogram_suffixes.h"
namespace internal {
const char kHistogramDOMContentLoadedEventFiredBackgroundSuffix[] =
"DocumentTiming.NavigationToDOMContentLoadedEventFired.Background";
const char kHistogramDOMContentLoadedEventFiredSuffix[] =
"DocumentTiming.NavigationToDOMContentLoadedEventFired";
const char kHistogramFirstContentfulPaintSuffix[] =
"PaintTiming.NavigationToFirstContentfulPaint";
const char kHistogramFirstImagePaintSuffix[] =
"PaintTiming.NavigationToFirstImagePaint";
const char kHistogramFirstLayoutSuffix[] =
"DocumentTiming.NavigationToFirstLayout";
const char kHistogramFirstMeaningfulPaintSuffix[] =
"Experimental.PaintTiming.NavigationToFirstMeaningfulPaint";
const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint";
const char kHistogramFirstTextPaintSuffix[] =
"PaintTiming.NavigationToFirstTextPaint";
const char kHistogramForegroundToFirstContentfulPaintSuffix[] =
"PaintTiming.ForegroundToFirstContentfulPaint";
const char kHistogramForegroundToFirstMeaningfulPaintSuffix[] =
"Experimental.PaintTiming.ForegroundToFirstMeaningfulPaint";
const char kHistogramLoadEventFiredBackgroundSuffix[] =
"DocumentTiming.NavigationToLoadEventFired.Background";
const char kHistogramLoadEventFiredSuffix[] =
"DocumentTiming.NavigationToLoadEventFired";
const char kHistogramParseBlockedOnScriptLoadSuffix[] =
"ParseTiming.ParseBlockedOnScriptLoad";
const char kHistogramParseDurationSuffix[] = "ParseTiming.ParseDuration";
const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart";
} // namespace internal
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_HISTOGRAM_SUFFIXES_H_
#define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_HISTOGRAM_SUFFIXES_H_
namespace internal {
// Histogram suffixes used by multiple observers.
extern const char kHistogramDOMContentLoadedEventFiredBackgroundSuffix[];
extern const char kHistogramDOMContentLoadedEventFiredSuffix[];
extern const char kHistogramFirstContentfulPaintSuffix[];
extern const char kHistogramFirstImagePaintSuffix[];
extern const char kHistogramFirstLayoutSuffix[];
extern const char kHistogramFirstMeaningfulPaintSuffix[];
extern const char kHistogramFirstPaintSuffix[];
extern const char kHistogramFirstTextPaintSuffix[];
extern const char kHistogramForegroundToFirstContentfulPaintSuffix[];
extern const char kHistogramForegroundToFirstMeaningfulPaintSuffix[];
extern const char kHistogramLoadEventFiredBackgroundSuffix[];
extern const char kHistogramLoadEventFiredSuffix[];
extern const char kHistogramParseBlockedOnScriptLoadSuffix[];
extern const char kHistogramParseDurationSuffix[];
extern const char kHistogramParseStartSuffix[];
} // namespace internal
#endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_HISTOGRAM_SUFFIXES_H_
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "chrome/browser/page_load_metrics/observers/histogram_suffixes.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -19,32 +20,15 @@ ...@@ -19,32 +20,15 @@
namespace internal { namespace internal {
const char kHistogramPrefixMultiTabLoading[] =
"PageLoad.Clients.MultiTabLoading.";
const char kHistogramPrefixMultiTabLoading2OrMore[] =
"PageLoad.Clients.MultiTabLoading.2OrMore.";
const char kHistogramPrefixMultiTabLoading5OrMore[] =
"PageLoad.Clients.MultiTabLoading.5OrMore.";
const char kHistogramMultiTabLoadingNumTabsWithInflightLoad[] = const char kHistogramMultiTabLoadingNumTabsWithInflightLoad[] =
"PageLoad.Clients.MultiTabLoading.NumTabsWithInflightLoad"; "PageLoad.Clients.MultiTabLoading.NumTabsWithInflightLoad";
const char kHistogramMultiTabLoadingFirstContentfulPaint[] =
"PageLoad.Clients.MultiTabLoading.PaintTiming."
"NavigationToFirstContentfulPaint";
const char kHistogramMultiTabLoadingForegroundToFirstContentfulPaint[] =
"PageLoad.Clients.MultiTabLoading.PaintTiming."
"ForegroundToFirstContentfulPaint";
const char kHistogramMultiTabLoadingFirstMeaningfulPaint[] =
"PageLoad.Clients.MultiTabLoading.Experimental.PaintTiming."
"NavigationToFirstMeaningfulPaint";
const char kHistogramMultiTabLoadingForegroundToFirstMeaningfulPaint[] =
"PageLoad.Clients.MultiTabLoading.Experimental.PaintTiming."
"ForegroundToFirstMeaningfulPaint";
const char kHistogramMultiTabLoadingDomContentLoaded[] =
"PageLoad.Clients.MultiTabLoading.DocumentTiming."
"NavigationToDOMContentLoadedEventFired";
const char kBackgroundHistogramMultiTabLoadingDomContentLoaded[] =
"PageLoad.Clients.MultiTabLoading.DocumentTiming."
"NavigationToDOMContentLoadedEventFired.Background";
const char kHistogramMultiTabLoadingLoad[] =
"PageLoad.Clients.MultiTabLoading.DocumentTiming."
"NavigationToLoadEventFired";
const char kBackgroundHistogramMultiTabLoadingLoad[] =
"PageLoad.Clients.MultiTabLoading.DocumentTiming."
"NavigationToLoadEventFired.Background";
} // namespace internal } // namespace internal
...@@ -76,19 +60,39 @@ MultiTabLoadingPageLoadMetricsObserver::OnCommit( ...@@ -76,19 +60,39 @@ MultiTabLoadingPageLoadMetricsObserver::OnCommit(
: STOP_OBSERVING; : STOP_OBSERVING;
} }
#define RECORD_HISTOGRAMS(suffix, sample) \
do { \
base::TimeDelta sample_value(sample); \
PAGE_LOAD_HISTOGRAM( \
std::string(internal::kHistogramPrefixMultiTabLoading).append(suffix), \
sample_value); \
if (num_loading_tabs_when_started_ >= 2) { \
PAGE_LOAD_HISTOGRAM( \
std::string(internal::kHistogramPrefixMultiTabLoading2OrMore) \
.append(suffix), \
sample_value); \
} \
if (num_loading_tabs_when_started_ >= 5) { \
PAGE_LOAD_HISTOGRAM( \
std::string(internal::kHistogramPrefixMultiTabLoading5OrMore) \
.append(suffix), \
sample_value); \
} \
} while (false)
void MultiTabLoadingPageLoadMetricsObserver::OnFirstContentfulPaintInPage( void MultiTabLoadingPageLoadMetricsObserver::OnFirstContentfulPaintInPage(
const page_load_metrics::mojom::PageLoadTiming& timing, const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground( if (WasStartedInForegroundOptionalEventInForeground(
timing.paint_timing->first_contentful_paint, info)) { timing.paint_timing->first_contentful_paint, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingFirstContentfulPaint, RECORD_HISTOGRAMS(internal::kHistogramFirstContentfulPaintSuffix,
timing.paint_timing->first_contentful_paint.value()); timing.paint_timing->first_contentful_paint.value());
} }
if (WasStartedInBackgroundOptionalEventInForeground( if (WasStartedInBackgroundOptionalEventInForeground(
timing.paint_timing->first_contentful_paint, info)) { timing.paint_timing->first_contentful_paint, info)) {
PAGE_LOAD_HISTOGRAM( RECORD_HISTOGRAMS(
internal::kHistogramMultiTabLoadingForegroundToFirstContentfulPaint, internal::kHistogramForegroundToFirstContentfulPaintSuffix,
timing.paint_timing->first_contentful_paint.value() - timing.paint_timing->first_contentful_paint.value() -
info.first_foreground_time.value()); info.first_foreground_time.value());
} }
...@@ -100,13 +104,13 @@ void MultiTabLoadingPageLoadMetricsObserver:: ...@@ -100,13 +104,13 @@ void MultiTabLoadingPageLoadMetricsObserver::
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground( if (WasStartedInForegroundOptionalEventInForeground(
timing.paint_timing->first_meaningful_paint, info)) { timing.paint_timing->first_meaningful_paint, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingFirstMeaningfulPaint, RECORD_HISTOGRAMS(internal::kHistogramFirstMeaningfulPaintSuffix,
timing.paint_timing->first_meaningful_paint.value()); timing.paint_timing->first_meaningful_paint.value());
} }
if (WasStartedInBackgroundOptionalEventInForeground( if (WasStartedInBackgroundOptionalEventInForeground(
timing.paint_timing->first_meaningful_paint, info)) { timing.paint_timing->first_meaningful_paint, info)) {
PAGE_LOAD_HISTOGRAM( RECORD_HISTOGRAMS(
internal::kHistogramMultiTabLoadingForegroundToFirstMeaningfulPaint, internal::kHistogramForegroundToFirstMeaningfulPaintSuffix,
timing.paint_timing->first_meaningful_paint.value() - timing.paint_timing->first_meaningful_paint.value() -
info.first_foreground_time.value()); info.first_foreground_time.value());
} }
...@@ -117,12 +121,12 @@ void MultiTabLoadingPageLoadMetricsObserver::OnDomContentLoadedEventStart( ...@@ -117,12 +121,12 @@ void MultiTabLoadingPageLoadMetricsObserver::OnDomContentLoadedEventStart(
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground( if (WasStartedInForegroundOptionalEventInForeground(
timing.document_timing->dom_content_loaded_event_start, info)) { timing.document_timing->dom_content_loaded_event_start, info)) {
PAGE_LOAD_HISTOGRAM( RECORD_HISTOGRAMS(
internal::kHistogramMultiTabLoadingDomContentLoaded, internal::kHistogramDOMContentLoadedEventFiredSuffix,
timing.document_timing->dom_content_loaded_event_start.value()); timing.document_timing->dom_content_loaded_event_start.value());
} else { } else {
PAGE_LOAD_HISTOGRAM( RECORD_HISTOGRAMS(
internal::kBackgroundHistogramMultiTabLoadingDomContentLoaded, internal::kHistogramDOMContentLoadedEventFiredBackgroundSuffix,
timing.document_timing->dom_content_loaded_event_start.value()); timing.document_timing->dom_content_loaded_event_start.value());
} }
} }
...@@ -132,11 +136,11 @@ void MultiTabLoadingPageLoadMetricsObserver::OnLoadEventStart( ...@@ -132,11 +136,11 @@ void MultiTabLoadingPageLoadMetricsObserver::OnLoadEventStart(
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground( if (WasStartedInForegroundOptionalEventInForeground(
timing.document_timing->load_event_start, info)) { timing.document_timing->load_event_start, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingLoad, RECORD_HISTOGRAMS(internal::kHistogramLoadEventFiredSuffix,
timing.document_timing->load_event_start.value()); timing.document_timing->load_event_start.value());
} else { } else {
PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramMultiTabLoadingLoad, RECORD_HISTOGRAMS(internal::kHistogramLoadEventFiredBackgroundSuffix,
timing.document_timing->load_event_start.value()); timing.document_timing->load_event_start.value());
} }
} }
......
...@@ -15,15 +15,10 @@ class NavigationHandle; ...@@ -15,15 +15,10 @@ class NavigationHandle;
namespace internal { namespace internal {
// Exposed for tests. // Exposed for tests.
extern const char kHistogramPrefixMultiTabLoading[];
extern const char kHistogramPrefixMultiTabLoading2OrMore[];
extern const char kHistogramPrefixMultiTabLoading5OrMore[];
extern const char kHistogramMultiTabLoadingNumTabsWithInflightLoad[]; extern const char kHistogramMultiTabLoadingNumTabsWithInflightLoad[];
extern const char kHistogramMultiTabLoadingFirstContentfulPaint[];
extern const char kHistogramMultiTabLoadingForegroundToFirstContentfulPaint[];
extern const char kHistogramMultiTabLoadingFirstMeaningfulPaint[];
extern const char kHistogramMultiTabLoadingForegroundToFirstMeaningfulPaint[];
extern const char kHistogramMultiTabLoadingDomContentLoaded[];
extern const char kBackgroundHistogramMultiTabLoadingDomContentLoaded[];
extern const char kHistogramMultiTabLoadingLoad[];
extern const char kBackgroundHistogramMultiTabLoadingLoad[];
} // namespace internal } // namespace internal
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.h"
#include "base/test/histogram_tester.h" #include "base/test/histogram_tester.h"
#include "chrome/browser/page_load_metrics/observers/histogram_suffixes.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
...@@ -31,6 +32,11 @@ class MultiTabLoadingPageLoadMetricsBrowserTest : public InProcessBrowserTest { ...@@ -31,6 +32,11 @@ class MultiTabLoadingPageLoadMetricsBrowserTest : public InProcessBrowserTest {
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(embedded_test_server()->Start());
} }
std::string HistogramNameWithSuffix(const char* suffix) {
return std::string(internal::kHistogramPrefixMultiTabLoading)
.append(suffix);
}
}; };
IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, SingleTab) { IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, SingleTab) {
...@@ -41,9 +47,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, SingleTab) { ...@@ -41,9 +47,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, SingleTab) {
// Navigate away to force the histogram recording. // Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 0);
histogram_tester.ExpectTotalCount( histogram_tester.ExpectTotalCount(
internal::kBackgroundHistogramMultiTabLoadingLoad, 0); HistogramNameWithSuffix(internal::kHistogramLoadEventFiredSuffix), 0);
histogram_tester.ExpectTotalCount(
HistogramNameWithSuffix(
internal::kHistogramLoadEventFiredBackgroundSuffix),
0);
} }
IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
...@@ -60,9 +69,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, ...@@ -60,9 +69,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
// Navigate away to force the histogram recording. // Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 1);
histogram_tester.ExpectTotalCount( histogram_tester.ExpectTotalCount(
internal::kBackgroundHistogramMultiTabLoadingLoad, 0); HistogramNameWithSuffix(internal::kHistogramLoadEventFiredSuffix), 1);
histogram_tester.ExpectTotalCount(
HistogramNameWithSuffix(
internal::kHistogramLoadEventFiredBackgroundSuffix),
0);
} }
IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
...@@ -87,7 +99,10 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, ...@@ -87,7 +99,10 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
// Navigate away to force the histogram recording. // Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 0);
histogram_tester.ExpectTotalCount( histogram_tester.ExpectTotalCount(
internal::kBackgroundHistogramMultiTabLoadingLoad, 1); HistogramNameWithSuffix(internal::kHistogramLoadEventFiredSuffix), 0);
histogram_tester.ExpectTotalCount(
HistogramNameWithSuffix(
internal::kHistogramLoadEventFiredBackgroundSuffix),
1);
} }
...@@ -106697,6 +106697,12 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. ...@@ -106697,6 +106697,12 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<suffix name="Clients.MultiTabLoading" <suffix name="Clients.MultiTabLoading"
label="PageLoadMetrics for page loads that started while there are label="PageLoadMetrics for page loads that started while there are
other loading tabs."/> other loading tabs."/>
<suffix name="Clients.MultiTabLoading.2OrMore"
label="PageLoadMetrics for page loads that started while there are 2 or
more other loading tabs."/>
<suffix name="Clients.MultiTabLoading.5OrMore"
label="PageLoadMetrics for page loads that started while there are 5 or
more other loading tabs."/>
<affected-histogram <affected-histogram
name="PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired"/> name="PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired"/>
<affected-histogram <affected-histogram
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment