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") {
"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.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.h",
"page_load_metrics/observers/https_engagement_metrics/https_engagement_service.cc",
......
......@@ -13,6 +13,7 @@
#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_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_util.h"
#include "chrome/browser/previews/previews_infobar_delegate.h"
......@@ -72,25 +73,6 @@ const char kHistogramDataReductionProxyPrefix[] =
"PageLoad.Clients.DataReductionProxy.";
const char kHistogramDataReductionProxyLoFiOnPrefix[] =
"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[] =
"Experimental.CompletedResources.Network.PercentProxied";
......@@ -340,7 +322,7 @@ void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->dom_content_loaded_event_start,
internal::kHistogramDOMContentLoadedEventFiredSuffix);
::internal::kHistogramDOMContentLoadedEventFiredSuffix);
}
void DataReductionProxyMetricsObserver::OnLoadEventStart(
......@@ -349,7 +331,7 @@ void DataReductionProxyMetricsObserver::OnLoadEventStart(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->load_event_start,
internal::kHistogramLoadEventFiredSuffix);
::internal::kHistogramLoadEventFiredSuffix);
}
void DataReductionProxyMetricsObserver::OnFirstLayout(
......@@ -358,16 +340,16 @@ void DataReductionProxyMetricsObserver::OnFirstLayout(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.document_timing->first_layout,
internal::kHistogramFirstLayoutSuffix);
::internal::kHistogramFirstLayoutSuffix);
}
void DataReductionProxyMetricsObserver::OnFirstPaintInPage(
const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
timing.paint_timing->first_paint,
internal::kHistogramFirstPaintSuffix);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_paint,
::internal::kHistogramFirstPaintSuffix);
}
void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage(
......@@ -376,7 +358,7 @@ void DataReductionProxyMetricsObserver::OnFirstTextPaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_text_paint,
internal::kHistogramFirstTextPaintSuffix);
::internal::kHistogramFirstTextPaintSuffix);
}
void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage(
......@@ -385,7 +367,7 @@ void DataReductionProxyMetricsObserver::OnFirstImagePaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_image_paint,
internal::kHistogramFirstImagePaintSuffix);
::internal::kHistogramFirstImagePaintSuffix);
}
void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage(
......@@ -394,7 +376,7 @@ void DataReductionProxyMetricsObserver::OnFirstContentfulPaintInPage(
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_contentful_paint,
internal::kHistogramFirstContentfulPaintSuffix);
::internal::kHistogramFirstContentfulPaintSuffix);
}
void DataReductionProxyMetricsObserver::
......@@ -404,16 +386,16 @@ void DataReductionProxyMetricsObserver::
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.paint_timing->first_meaningful_paint,
internal::kHistogramFirstMeaningfulPaintSuffix);
::internal::kHistogramFirstMeaningfulPaintSuffix);
}
void DataReductionProxyMetricsObserver::OnParseStart(
const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
timing.parse_timing->parse_start,
internal::kHistogramParseStartSuffix);
RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
info, data_, timing.parse_timing->parse_start,
::internal::kHistogramParseStartSuffix);
}
void DataReductionProxyMetricsObserver::OnParseStop(
......@@ -427,10 +409,10 @@ void DataReductionProxyMetricsObserver::OnParseStop(
base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() -
timing.parse_timing->parse_start.value();
RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration,
internal::kHistogramParseDurationSuffix);
::internal::kHistogramParseDurationSuffix);
RECORD_HISTOGRAMS_FOR_SUFFIX(
data_, timing.parse_timing->parse_blocked_on_script_load_duration.value(),
internal::kHistogramParseBlockedOnScriptLoadSuffix);
::internal::kHistogramParseBlockedOnScriptLoadSuffix);
}
void DataReductionProxyMetricsObserver::OnLoadedResource(
......
......@@ -17,6 +17,7 @@
#include "base/time/time.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/observers/histogram_suffixes.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_tracker.h"
......@@ -222,28 +223,30 @@ class DataReductionProxyMetricsObserverTest
void ValidateHistograms() {
ValidateHistogramsForSuffix(
internal::kHistogramDOMContentLoadedEventFiredSuffix,
::internal::kHistogramDOMContentLoadedEventFiredSuffix,
timing_.document_timing->dom_content_loaded_event_start);
ValidateHistogramsForSuffix(internal::kHistogramFirstLayoutSuffix,
ValidateHistogramsForSuffix(::internal::kHistogramFirstLayoutSuffix,
timing_.document_timing->first_layout);
ValidateHistogramsForSuffix(internal::kHistogramLoadEventFiredSuffix,
ValidateHistogramsForSuffix(::internal::kHistogramLoadEventFiredSuffix,
timing_.document_timing->load_event_start);
ValidateHistogramsForSuffix(internal::kHistogramFirstContentfulPaintSuffix,
timing_.paint_timing->first_contentful_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstMeaningfulPaintSuffix,
timing_.paint_timing->first_meaningful_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstImagePaintSuffix,
ValidateHistogramsForSuffix(
::internal::kHistogramFirstContentfulPaintSuffix,
timing_.paint_timing->first_contentful_paint);
ValidateHistogramsForSuffix(
::internal::kHistogramFirstMeaningfulPaintSuffix,
timing_.paint_timing->first_meaningful_paint);
ValidateHistogramsForSuffix(::internal::kHistogramFirstImagePaintSuffix,
timing_.paint_timing->first_image_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstPaintSuffix,
ValidateHistogramsForSuffix(::internal::kHistogramFirstPaintSuffix,
timing_.paint_timing->first_paint);
ValidateHistogramsForSuffix(internal::kHistogramFirstTextPaintSuffix,
ValidateHistogramsForSuffix(::internal::kHistogramFirstTextPaintSuffix,
timing_.paint_timing->first_text_paint);
ValidateHistogramsForSuffix(internal::kHistogramParseStartSuffix,
ValidateHistogramsForSuffix(::internal::kHistogramParseStartSuffix,
timing_.parse_timing->parse_start);
ValidateHistogramsForSuffix(
internal::kHistogramParseBlockedOnScriptLoadSuffix,
::internal::kHistogramParseBlockedOnScriptLoadSuffix,
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_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 @@
#include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.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 "content/public/browser/web_contents.h"
......@@ -19,32 +20,15 @@
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[] =
"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
......@@ -76,19 +60,39 @@ MultiTabLoadingPageLoadMetricsObserver::OnCommit(
: 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(
const page_load_metrics::mojom::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground(
timing.paint_timing->first_contentful_paint, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingFirstContentfulPaint,
timing.paint_timing->first_contentful_paint.value());
RECORD_HISTOGRAMS(internal::kHistogramFirstContentfulPaintSuffix,
timing.paint_timing->first_contentful_paint.value());
}
if (WasStartedInBackgroundOptionalEventInForeground(
timing.paint_timing->first_contentful_paint, info)) {
PAGE_LOAD_HISTOGRAM(
internal::kHistogramMultiTabLoadingForegroundToFirstContentfulPaint,
RECORD_HISTOGRAMS(
internal::kHistogramForegroundToFirstContentfulPaintSuffix,
timing.paint_timing->first_contentful_paint.value() -
info.first_foreground_time.value());
}
......@@ -100,13 +104,13 @@ void MultiTabLoadingPageLoadMetricsObserver::
const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground(
timing.paint_timing->first_meaningful_paint, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingFirstMeaningfulPaint,
timing.paint_timing->first_meaningful_paint.value());
RECORD_HISTOGRAMS(internal::kHistogramFirstMeaningfulPaintSuffix,
timing.paint_timing->first_meaningful_paint.value());
}
if (WasStartedInBackgroundOptionalEventInForeground(
timing.paint_timing->first_meaningful_paint, info)) {
PAGE_LOAD_HISTOGRAM(
internal::kHistogramMultiTabLoadingForegroundToFirstMeaningfulPaint,
RECORD_HISTOGRAMS(
internal::kHistogramForegroundToFirstMeaningfulPaintSuffix,
timing.paint_timing->first_meaningful_paint.value() -
info.first_foreground_time.value());
}
......@@ -117,12 +121,12 @@ void MultiTabLoadingPageLoadMetricsObserver::OnDomContentLoadedEventStart(
const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground(
timing.document_timing->dom_content_loaded_event_start, info)) {
PAGE_LOAD_HISTOGRAM(
internal::kHistogramMultiTabLoadingDomContentLoaded,
RECORD_HISTOGRAMS(
internal::kHistogramDOMContentLoadedEventFiredSuffix,
timing.document_timing->dom_content_loaded_event_start.value());
} else {
PAGE_LOAD_HISTOGRAM(
internal::kBackgroundHistogramMultiTabLoadingDomContentLoaded,
RECORD_HISTOGRAMS(
internal::kHistogramDOMContentLoadedEventFiredBackgroundSuffix,
timing.document_timing->dom_content_loaded_event_start.value());
}
}
......@@ -132,11 +136,11 @@ void MultiTabLoadingPageLoadMetricsObserver::OnLoadEventStart(
const page_load_metrics::PageLoadExtraInfo& info) {
if (WasStartedInForegroundOptionalEventInForeground(
timing.document_timing->load_event_start, info)) {
PAGE_LOAD_HISTOGRAM(internal::kHistogramMultiTabLoadingLoad,
timing.document_timing->load_event_start.value());
RECORD_HISTOGRAMS(internal::kHistogramLoadEventFiredSuffix,
timing.document_timing->load_event_start.value());
} else {
PAGE_LOAD_HISTOGRAM(internal::kBackgroundHistogramMultiTabLoadingLoad,
timing.document_timing->load_event_start.value());
RECORD_HISTOGRAMS(internal::kHistogramLoadEventFiredBackgroundSuffix,
timing.document_timing->load_event_start.value());
}
}
......
......@@ -15,15 +15,10 @@ class NavigationHandle;
namespace internal {
// Exposed for tests.
extern const char kHistogramPrefixMultiTabLoading[];
extern const char kHistogramPrefixMultiTabLoading2OrMore[];
extern const char kHistogramPrefixMultiTabLoading5OrMore[];
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
......
......@@ -5,6 +5,7 @@
#include "chrome/browser/page_load_metrics/observers/multi_tab_loading_page_load_metrics_observer.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/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
......@@ -31,6 +32,11 @@ class MultiTabLoadingPageLoadMetricsBrowserTest : public InProcessBrowserTest {
void SetUpOnMainThread() override {
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) {
......@@ -41,9 +47,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest, SingleTab) {
// Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 0);
histogram_tester.ExpectTotalCount(
internal::kBackgroundHistogramMultiTabLoadingLoad, 0);
HistogramNameWithSuffix(internal::kHistogramLoadEventFiredSuffix), 0);
histogram_tester.ExpectTotalCount(
HistogramNameWithSuffix(
internal::kHistogramLoadEventFiredBackgroundSuffix),
0);
}
IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
......@@ -60,9 +69,12 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
// Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 1);
histogram_tester.ExpectTotalCount(
internal::kBackgroundHistogramMultiTabLoadingLoad, 0);
HistogramNameWithSuffix(internal::kHistogramLoadEventFiredSuffix), 1);
histogram_tester.ExpectTotalCount(
HistogramNameWithSuffix(
internal::kHistogramLoadEventFiredBackgroundSuffix),
0);
}
IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
......@@ -87,7 +99,10 @@ IN_PROC_BROWSER_TEST_F(MultiTabLoadingPageLoadMetricsBrowserTest,
// Navigate away to force the histogram recording.
ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
histogram_tester.ExpectTotalCount(internal::kHistogramMultiTabLoadingLoad, 0);
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.
<suffix name="Clients.MultiTabLoading"
label="PageLoadMetrics for page loads that started while there are
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
name="PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired"/>
<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