Index: content/renderer/input/render_widget_input_handler.cc |
diff --git a/content/renderer/input/render_widget_input_handler.cc b/content/renderer/input/render_widget_input_handler.cc |
index ebc894b4d2068aba2f37ca5fd5b85251c2a96468..b1fdadc9c2aa0a437712fb40d412b15b1520200f 100644 |
--- a/content/renderer/input/render_widget_input_handler.cc |
+++ b/content/renderer/input/render_widget_input_handler.cc |
@@ -127,14 +127,14 @@ void LogPassiveEventListenersUma(WebInputEventResult result, |
PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, |
PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, |
PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, |
- PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING, |
+ PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING, |
PASSIVE_LISTENER_UMA_ENUM_COUNT |
}; |
int enum_value; |
switch (dispatch_type) { |
- case WebInputEvent::ListenersForcedNonBlockingPassive: |
- enum_value = PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING; |
+ case WebInputEvent::ListenersForcedNonBlockingPassiveDueToFling: |
+ enum_value = PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING; |
break; |
case WebInputEvent::ListenersNonBlockingPassive: |
enum_value = PASSIVE_LISTENER_UMA_ENUM_PASSIVE; |
@@ -164,10 +164,11 @@ void LogPassiveEventListenersUma(WebInputEventResult result, |
UMA_HISTOGRAM_CUSTOM_COUNTS("Event.PassiveListeners.Latency", |
GetEventLatencyMicros(event_timestamp, now), |
1, 10000000, 100); |
- } else if (enum_value == PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING) { |
+ } else if (enum_value == |
+ PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING) { |
base::TimeTicks now = base::TimeTicks::Now(); |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
- "Event.PassiveListeners.ForcedNonBlockingLatency", |
+ "Event.PassiveListeners.ForcedNonBlockingLatencyDueToFling", |
GetEventLatencyMicros(event_timestamp, now), 1, 10000000, 100); |
} |
} |
@@ -185,7 +186,8 @@ RenderWidgetInputHandler::RenderWidgetInputHandler( |
handling_event_type_(WebInputEvent::Undefined), |
context_menu_source_type_(ui::MENU_SOURCE_MOUSE), |
suppress_next_char_events_(false), |
- ignore_ack_for_mouse_move_from_debugger_(false) { |
+ ignore_ack_for_mouse_move_from_debugger_(false), |
+ waiting_for_first_touch_move_(false) { |
DCHECK(delegate); |
DCHECK(widget); |
delegate->SetInputHandler(this); |
@@ -334,18 +336,22 @@ void RenderWidgetInputHandler::HandleInputEvent( |
LogPassiveEventListenersUma(processed, touch.dispatchType, |
input_event.timeStampSeconds, latency_info); |
- if (input_event.type == WebInputEvent::TouchStart && |
- touch.dispatchType == WebInputEvent::Blocking && |
+ // TODO(lanwei): May remove it when we no longer need any metric for event |
+ // latency outside fling. |
+ if (touch.dispatchType == WebInputEvent::Blocking && |
base::TimeTicks::IsHighResolution()) { |
- base::TimeTicks now = base::TimeTicks::Now(); |
- if (touch.dispatchedDuringFling) { |
- UMA_HISTOGRAM_CUSTOM_COUNTS( |
- "Event.Touch.TouchStartLatencyDuringFling", |
- GetEventLatencyMicros(input_event.timeStampSeconds, now), 1, |
- 100000000, 50); |
- } else { |
+ bool touch_start_or_first_touch_move = false; |
+ if (touch.type == WebInputEvent::TouchStart) { |
+ waiting_for_first_touch_move_ = true; |
+ touch_start_or_first_touch_move = true; |
+ } else if (touch.type == WebInputEvent::TouchMove) { |
+ touch_start_or_first_touch_move = waiting_for_first_touch_move_; |
+ waiting_for_first_touch_move_ = false; |
+ } |
+ if (touch_start_or_first_touch_move) { |
+ base::TimeTicks now = base::TimeTicks::Now(); |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
- "Event.Touch.TouchStartLatencyOutsideFling", |
+ "Event.Touch.TouchLatencyOutsideFling", |
GetEventLatencyMicros(input_event.timeStampSeconds, now), 1, |
100000000, 50); |
} |