Index: content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
index 62e42952dd6e9400f3de541511172139ca8b229d..f7fb38a43419305180983f55ea7cb73568990ed7 100644 |
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
@@ -9,6 +9,7 @@ |
#include "base/logging.h" |
#include "base/metrics/histogram_functions.h" |
#include "base/metrics/histogram_macros.h" |
+#include "base/rand_util.h" |
#include "build/build_config.h" |
#include "components/rappor/public/rappor_utils.h" |
#include "content/browser/renderer_host/render_widget_host_delegate.h" |
@@ -29,6 +30,8 @@ using ui::LatencyInfo; |
namespace content { |
namespace { |
+constexpr int kSamplingInterval = 10; |
+ |
std::string WebInputEventTypeToInputModalityString(WebInputEvent::Type type) { |
if (type == blink::WebInputEvent::kMouseWheel) { |
return "Wheel"; |
@@ -138,7 +141,8 @@ void RecordEQTAccuracy(base::TimeDelta queueing_time, |
} // namespace |
-RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() |
+RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker( |
+ bool metric_sampling) |
: ukm_source_id_(-1), |
last_event_id_(0), |
latency_component_id_(0), |
@@ -146,7 +150,13 @@ RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() |
has_seen_first_gesture_scroll_update_(false), |
active_multi_finger_gesture_(false), |
touch_start_default_prevented_(false), |
- render_widget_host_delegate_(nullptr) {} |
+ metric_sampling_(metric_sampling), |
+ metric_sampling_events_since_last_sample_(-1), |
+ render_widget_host_delegate_(nullptr) { |
+ if (metric_sampling) |
+ metric_sampling_events_since_last_sample_ = |
+ base::RandUint64() % kSamplingInterval; |
+} |
RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} |
@@ -414,6 +424,14 @@ void RenderWidgetHostLatencyTracker::ReportUkmScrollLatency( |
const LatencyInfo::LatencyComponent& end_component) { |
CONFIRM_VALID_TIMING(start_component, end_component) |
+ // Only report a subset of this metric as the volume is too high. |
+ if (event_name == "Event.ScrollUpdate.Touch") { |
+ metric_sampling_events_since_last_sample_++; |
+ metric_sampling_events_since_last_sample_ %= kSamplingInterval; |
+ if (metric_sampling_ && metric_sampling_events_since_last_sample_) |
+ return; |
+ } |
+ |
ukm::SourceId ukm_source_id = GetUkmSourceId(); |
ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get(); |