From 8597dad96e12029f5afc4fda445149133a6fc3f9 Mon Sep 17 00:00:00 2001 From: Luna Lu Date: Thu, 31 May 2018 15:28:28 +0000 Subject: [PATCH] client side changes to run a field trial for page load metrics sender Bug: 847269 Change-Id: I9303c0cb0f770d61b25532b8f32d6b8edcd09731 Reviewed-on: https://chromium-review.googlesource.com/1075555 Commit-Queue: Luna Lu Reviewed-by: Bryan McQuade Cr-Original-Commit-Position: refs/heads/master@{#562475}(cherry picked from commit 188a49e42f794472140da7636f3d779a26955c7b) Reviewed-on: https://chromium-review.googlesource.com/1079735 Reviewed-by: Luna Lu Cr-Commit-Position: refs/branch-heads/3440@{#60} Cr-Branched-From: 010ddcfda246975d194964ccf20038ebbdec6084-refs/heads/master@{#561733} --- .../page_load_metrics/page_timing_metrics_sender.cc | 12 ++++++++++-- .../page_load_metrics/page_timing_metrics_sender.h | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc index 9337c26d7eb3..ce4b02a62df3 100644 --- a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc +++ b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc @@ -7,6 +7,8 @@ #include #include "base/callback.h" +#include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "chrome/common/page_load_metrics/page_load_metrics_constants.h" @@ -16,6 +18,8 @@ namespace page_load_metrics { namespace { const int kInitialTimerDelayMillis = 50; +const base::Feature kPageLoadMetricsTimerDelayFeature{ + "PageLoadMetricsTimerDelay", base::FEATURE_DISABLED_BY_DEFAULT}; } // namespace PageTimingMetricsSender::PageTimingMetricsSender( @@ -26,7 +30,11 @@ PageTimingMetricsSender::PageTimingMetricsSender( timer_(std::move(timer)), last_timing_(std::move(initial_timing)), metadata_(mojom::PageLoadMetadata::New()), - new_features_(mojom::PageLoadFeatures::New()) { + new_features_(mojom::PageLoadFeatures::New()), + buffer_timer_delay_ms_(kBufferTimerDelayMillis) { + buffer_timer_delay_ms_ = base::GetFieldTrialParamByFeatureAsInt( + kPageLoadMetricsTimerDelayFeature, "BufferTimerDelayMillis", + kBufferTimerDelayMillis /* default value */); if (!IsEmpty(*last_timing_)) { EnsureSendTimer(); } @@ -93,7 +101,7 @@ void PageTimingMetricsSender::EnsureSendTimer() { // Send the first IPC eagerly to make sure the receiving side knows we're // sending metrics as soon as possible. int delay_ms = - have_sent_ipc_ ? kBufferTimerDelayMillis : kInitialTimerDelayMillis; + have_sent_ipc_ ? buffer_timer_delay_ms_ : kInitialTimerDelayMillis; timer_->Start( FROM_HERE, base::TimeDelta::FromMilliseconds(delay_ms), base::Bind(&PageTimingMetricsSender::SendNow, base::Unretained(this))); diff --git a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h index 427392f2d35b..730e3e3def8a 100644 --- a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h +++ b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h @@ -64,6 +64,10 @@ class PageTimingMetricsSender { bool have_sent_ipc_ = false; + // Field trial for alternating page timing metrics sender buffer timer delay. + // https://crbug.com/847269. + int buffer_timer_delay_ms_; + DISALLOW_COPY_AND_ASSIGN(PageTimingMetricsSender); };