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 a8d3ac23f52d9612d76f3b27e9185f8c9c04e02b..9334428d5f997700f2d87875874e0993a5bda544 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_macros.h" |
#include "build/build_config.h" |
+#include "components/rappor/rappor_service.h" |
#include "content/browser/renderer_host/render_widget_host_impl.h" |
#include "ui/events/blink/web_input_event_traits.h" |
@@ -237,7 +238,24 @@ void ComputeScrollLatencyHistograms( |
gpu_swap_end_component); |
} |
+uint64_t RapporHistogramBucketIndex(int64_t ms) { |
+ if (ms < 10) |
+ return 0; |
+ if (ms < 20) |
+ return 1; |
+ if (ms < 30) |
+ return 2; |
+ if (ms < 40) |
+ return 3; |
+ if (ms < 50) |
+ return 4; |
+ if (ms < 60) |
+ return 5; |
ncarter (slow)
2016/12/01 23:33:46
What about 6?
Navid Zolghadr
2016/12/08 17:37:29
This is now removed as I reported it without any b
|
+ return 7; |
+} |
+ |
void ComputeTouchAndWheelScrollLatencyHistograms( |
+ RenderWidgetHostImpl* render_widget_host_impl, |
const ui::LatencyInfo::LatencyComponent& gpu_swap_begin_component, |
const ui::LatencyInfo::LatencyComponent& gpu_swap_end_component, |
int64_t latency_component_id, |
@@ -269,6 +287,27 @@ void ComputeTouchAndWheelScrollLatencyHistograms( |
"Event.Latency.ScrollUpdate." + event_type_name + |
".TimeToScrollUpdateSwapBegin2", |
original_component, gpu_swap_begin_component); |
+ |
+ if (!render_widget_host_impl->delegate()) |
+ return; |
+ rappor::RapporService* rappor_service = |
+ render_widget_host_impl->delegate()->getRapporService(); |
+ if (!rappor_service) |
+ return; |
+ std::unique_ptr<rappor::Sample> sample = |
+ rappor_service->CreateSample(rappor::UMA_RAPPOR_TYPE); |
+ sample->SetStringField( |
+ "Domain", |
+ render_widget_host_impl->delegate()->getRapporCommittedUrl()); |
Navid Zolghadr
2016/11/10 21:49:19
I was going to create some helper methods in my ne
Steven Holte
2016/11/10 22:49:45
It seems like this value is non-PII, so it should
Navid Zolghadr
2016/12/08 17:37:29
Done. I didn't find anywhere else that this is use
|
+ uint64_t bucket_index = |
+ RapporHistogramBucketIndex((gpu_swap_begin_component.last_event_time - |
+ original_component.first_event_time) |
+ .InMicroseconds()); |
+ sample->SetFlagsField("Bucket", uint64_t(1) << bucket_index, 7); |
+ rappor_service->RecordSampleObj( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2." |
+ "Rappor", |
+ std::move(sample)); |
} |
} else { |
// No original component found. |
@@ -356,13 +395,15 @@ void AddLatencyInfoComponentIds(LatencyInfo* latency, |
} // namespace |
-RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() |
+RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker( |
+ RenderWidgetHostImpl* render_widget_host_impl) |
: last_event_id_(0), |
latency_component_id_(0), |
device_scale_factor_(1), |
has_seen_first_gesture_scroll_update_(false), |
multi_finger_gesture_(false), |
- touch_start_default_prevented_(false) {} |
+ touch_start_default_prevented_(false), |
+ render_widget_host_impl(render_widget_host_impl) {} |
RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} |
@@ -701,8 +742,8 @@ void RenderWidgetHostLatencyTracker::OnFrameSwapped( |
if (source_event_type == ui::SourceEventType::WHEEL || |
source_event_type == ui::SourceEventType::TOUCH) { |
ComputeTouchAndWheelScrollLatencyHistograms( |
- gpu_swap_begin_component, gpu_swap_end_component, latency_component_id_, |
- latency, |
+ render_widget_host_impl, gpu_swap_begin_component, |
+ gpu_swap_end_component, latency_component_id_, latency, |
source_event_type == ui::SourceEventType::WHEEL ? "Wheel" : "Touch"); |
} |