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..77292aa43ab8427d3ae6be921db2dd8421744e2c 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,12 @@ 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_countdown_(-1), |
+ render_widget_host_delegate_(nullptr) { |
+ if (metric_sampling) |
+ metric_sampling_countdown_ = base::RandUint64() % kSamplingInterval; |
+} |
RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} |
@@ -414,6 +423,15 @@ 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_countdown_++; |
tdresser
2017/07/17 20:25:22
"countdown" implies it counts down, but it counts
Navid Zolghadr
2017/07/19 15:57:46
Done.
|
+ metric_sampling_countdown_ %= kSamplingInterval; |
+ if (metric_sampling_ && metric_sampling_countdown_) |
+ return; |
+ metric_sampling_countdown_ = 0; |
dtapuska
2017/07/17 20:21:41
This line is useless.
Navid Zolghadr
2017/07/19 15:57:46
Done.
|
+ } |
+ |
ukm::SourceId ukm_source_id = GetUkmSourceId(); |
ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get(); |