Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Unified Diff: content/browser/renderer_host/input/render_widget_host_latency_tracker.cc

Issue 2801043002: Fix RenderWidgetHostLatencyTracker handling of multi-finger touch. (Closed)
Patch Set: Fix nits. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 625e8d371e5fe14b770404a1193e5dcdeed492c3..5c4f789315389acc924a718f744c2dab60c54059 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
@@ -339,7 +339,7 @@ RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker()
latency_component_id_(0),
device_scale_factor_(1),
has_seen_first_gesture_scroll_update_(false),
- multi_finger_gesture_(false),
+ active_multi_finger_gesture_(false),
touch_start_default_prevented_(false),
render_widget_host_delegate_(nullptr) {}
@@ -375,6 +375,9 @@ void RenderWidgetHostLatencyTracker::ComputeInputLatencyHistograms(
}
DCHECK_EQ(rwh_component.event_count, 1u);
+ bool multi_finger_touch_gesture =
+ WebInputEvent::isTouchEventType(type) && active_multi_finger_gesture_;
+
LatencyInfo::LatencyComponent ui_component;
if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0,
&ui_component)) {
@@ -407,7 +410,7 @@ void RenderWidgetHostLatencyTracker::ComputeInputLatencyHistograms(
if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT, 0,
&main_component)) {
DCHECK_EQ(main_component.event_count, 1u);
- if (!multi_finger_gesture_) {
+ if (!multi_finger_touch_gesture) {
UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS(
"Event.Latency.QueueingTime." + event_name + default_action_status,
rwh_component, main_component);
@@ -418,7 +421,7 @@ void RenderWidgetHostLatencyTracker::ComputeInputLatencyHistograms(
if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, 0,
&acked_component)) {
DCHECK_EQ(acked_component.event_count, 1u);
- if (!multi_finger_gesture_ &&
+ if (!multi_finger_touch_gesture &&
main_component.event_time != base::TimeTicks()) {
UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS(
"Event.Latency.BlockingTime." + event_name + default_action_status,
@@ -438,6 +441,14 @@ void RenderWidgetHostLatencyTracker::OnInputEvent(
const blink::WebInputEvent& event,
LatencyInfo* latency) {
DCHECK(latency);
+
+ if (event.type() == WebInputEvent::TouchStart) {
+ const WebTouchEvent& touch_event =
+ *static_cast<const WebTouchEvent*>(&event);
+ DCHECK(touch_event.touchesLength >= 1);
+ active_multi_finger_gesture_ = touch_event.touchesLength != 1;
+ }
+
if (latency->FindLatency(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
latency_component_id_, NULL)) {
return;
@@ -508,10 +519,11 @@ void RenderWidgetHostLatencyTracker::OnInputEventAck(
const WebTouchEvent& touch_event =
*static_cast<const WebTouchEvent*>(&event);
if (event.type() == WebInputEvent::TouchStart) {
- DCHECK(touch_event.touchesLength >= 1);
- multi_finger_gesture_ = touch_event.touchesLength != 1;
touch_start_default_prevented_ =
ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
+ } else if (event.type() == WebInputEvent::TouchEnd ||
+ event.type() == WebInputEvent::TouchCancel) {
+ active_multi_finger_gesture_ = touch_event.touchesLength > 2;
}
}

Powered by Google App Engine
This is Rietveld 408576698