Chromium Code Reviews| Index: content/browser/renderer_host/input/touch_emulator.cc |
| diff --git a/content/browser/renderer_host/input/touch_emulator.cc b/content/browser/renderer_host/input/touch_emulator.cc |
| index 61ae63ef1fffa283ce8a9e543cefadf9ebc8002b..2d0112a8482860d64f560ef90b739965c2c7319f 100644 |
| --- a/content/browser/renderer_host/input/touch_emulator.cc |
| +++ b/content/browser/renderer_host/input/touch_emulator.cc |
| @@ -29,8 +29,9 @@ namespace { |
| ui::GestureProvider::Config GetGestureProviderConfig() { |
| // TODO(dgozman): Use different configs to emulate mobile/desktop as |
| - // requested by renderer. |
| - ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig(); |
| + // requested by renderer, crbug/425586. |
| + ui::GestureProvider::Config config = ui::GetGestureProviderConfig( |
| + ui::GestureProviderConfigType::GENERIC_MOBILE); |
|
dgozman
2014/10/28 11:25:21
Great!
tdresser
2014/10/28 13:41:41
Can't you also emulate a touch screen laptop?
Als
jdduke (slow)
2014/10/30 22:06:54
I guess I would consider desktop as PC/laptop, and
tdresser
2014/10/31 12:34:11
Oh nevermind, I was confused.
|
| config.gesture_begin_end_types_enabled = false; |
| config.gesture_detector_config.swipe_enabled = false; |
| config.gesture_detector_config.two_finger_tap_enabled = false; |
| @@ -157,8 +158,14 @@ bool TouchEmulator::HandleMouseEvent(const WebMouseEvent& mouse_event) { |
| UpdateShiftPressed((mouse_event.modifiers & WebInputEvent::ShiftKey) != 0); |
| - if (FillTouchEventAndPoint(mouse_event) && |
| - gesture_provider_.OnTouchEvent(MotionEventWeb(touch_event_))) { |
| + if (mouse_event.type != WebInputEvent::MouseDown && |
| + mouse_event.type != WebInputEvent::MouseMove && |
| + mouse_event.type != WebInputEvent::MouseUp) { |
| + return true; |
| + } |
| + |
| + if (gesture_provider_.OnTouchEvent(MotionEventWeb(touch_event_))) { |
| + FillTouchEventAndPoint(mouse_event); |
| ForwardTouchEventToClient(); |
| } |
| @@ -394,12 +401,6 @@ void TouchEmulator::ScrollEnd(const WebGestureEvent& event) { |
| } |
| bool TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) { |
| - if (mouse_event.type != WebInputEvent::MouseDown && |
| - mouse_event.type != WebInputEvent::MouseMove && |
| - mouse_event.type != WebInputEvent::MouseUp) { |
| - return false; |
| - } |
| - |
| WebInputEvent::Type eventType; |
| switch (mouse_event.type) { |
| case WebInputEvent::MouseDown: |
| @@ -413,12 +414,14 @@ bool TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) { |
| break; |
| default: |
| eventType = WebInputEvent::Undefined; |
| - NOTREACHED(); |
| + NOTREACHED() << "Invalid event for touch emulation: " << mouse_event.type; |
| } |
| touch_event_.touchesLength = 1; |
| touch_event_.modifiers = mouse_event.modifiers; |
| WebTouchEventTraits::ResetTypeAndTouchStates( |
| eventType, mouse_event.timeStampSeconds, &touch_event_); |
| + touch_event_.defaultActionMayCauseScrolling = |
|
dgozman
2014/10/28 11:25:22
So, this function should be called exactly after |
jdduke (slow)
2014/10/30 22:06:54
Yeah, this was pretty unclear. I reworked the logi
|
| + gesture_provider_.LastTouchEventDidGenerateScroll(); |
| WebTouchPoint& point = touch_event_.touches[0]; |
| point.id = 0; |