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 3d8de093dfb1a32362ef5bc0182aa0073344d8fa..4248999f60bd105c0e1f8249c3c2de3ae6b4a019 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,7 +9,10 @@ |
#include "base/logging.h" |
#include "base/metrics/histogram_macros.h" |
#include "build/build_config.h" |
+#include "components/rappor/public/rappor_utils.h" |
#include "content/browser/renderer_host/render_widget_host_impl.h" |
+#include "content/public/browser/content_browser_client.h" |
+#include "content/public/common/content_client.h" |
#include "ui/events/blink/web_input_event_traits.h" |
using blink::WebGestureEvent; |
@@ -238,6 +241,7 @@ void ComputeScrollLatencyHistograms( |
} |
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, |
@@ -279,6 +283,23 @@ void ComputeTouchAndWheelScrollLatencyHistograms( |
"Event.Latency.ScrollUpdate." + event_type_name + |
".TimeToScrollUpdateSwapBegin2", |
original_component, gpu_swap_begin_component); |
+ |
+ rappor::RapporService* rappor_service = |
+ GetContentClient()->browser()->GetRapporService(); |
+ if (!rappor_service || !render_widget_host_impl->delegate()) |
+ return; |
+ std::unique_ptr<rappor::Sample> sample = |
+ rappor_service->CreateSample(rappor::UMA_RAPPOR_TYPE); |
+ render_widget_host_impl->delegate()->AddDomainInfoToRapporSample( |
+ sample.get()); |
+ sample->SetUInt64Field("Latency", |
+ (gpu_swap_begin_component.last_event_time - |
+ original_component.first_event_time) |
+ .InMicroseconds(), |
+ rappor::NO_NOISE); |
ncarter (slow)
2016/12/08 17:57:27
Regarding testing, the simplest thing to do would
|
+ rappor_service->RecordSample( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", |
tdresser
2016/12/08 18:00:17
Should we add Event.Latency.ScrollBegin.Touch.Time
Navid Zolghadr
2016/12/09 19:13:28
Let me work on adding that and some refactoring be
|
+ std::move(sample)); |
} |
} else { |
// No original component found. |
@@ -366,13 +387,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() {} |
@@ -711,8 +734,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"); |
} |