| 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 86cabdc56345c82a37dde5cb2255e625c240d7e7..93e55caf910424675f7a46d832849b704294595d 100644
|
| --- a/content/browser/renderer_host/input/touch_emulator.cc
|
| +++ b/content/browser/renderer_host/input/touch_emulator.cc
|
| @@ -364,8 +364,7 @@ void TouchEmulator::CancelTouch() {
|
|
|
| WebTouchEventTraits::ResetTypeAndTouchStates(
|
| WebInputEvent::TouchCancel,
|
| - (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF(),
|
| - &touch_event_);
|
| + ui::EventTimeStampToSeconds(ui::EventTimeForNow()), &touch_event_);
|
| DCHECK(gesture_provider_);
|
| if (gesture_provider_->GetCurrentDownEvent())
|
| HandleEmulatedTouchEvent(touch_event_);
|
| @@ -392,47 +391,49 @@ void TouchEmulator::PinchBegin(const WebGestureEvent& event) {
|
| pinch_gesture_active_ = true;
|
| pinch_anchor_ = gfx::Point(event.x, event.y);
|
| pinch_scale_ = 1.f;
|
| - FillPinchEvent(event);
|
| - pinch_event_.type = WebInputEvent::GesturePinchBegin;
|
| - client_->ForwardEmulatedGestureEvent(pinch_event_);
|
| + WebGestureEvent pinch_event =
|
| + GetPinchGestureEvent(WebInputEvent::GesturePinchBegin, event);
|
| + client_->ForwardEmulatedGestureEvent(pinch_event);
|
| }
|
|
|
| void TouchEmulator::PinchUpdate(const WebGestureEvent& event) {
|
| DCHECK(pinch_gesture_active_);
|
| int dy = pinch_anchor_.y() - event.y;
|
| float scale = exp(dy * 0.002f);
|
| - FillPinchEvent(event);
|
| - pinch_event_.type = WebInputEvent::GesturePinchUpdate;
|
| - pinch_event_.data.pinchUpdate.scale = scale / pinch_scale_;
|
| - client_->ForwardEmulatedGestureEvent(pinch_event_);
|
| + WebGestureEvent pinch_event =
|
| + GetPinchGestureEvent(WebInputEvent::GesturePinchUpdate, event);
|
| + pinch_event.data.pinchUpdate.scale = scale / pinch_scale_;
|
| + client_->ForwardEmulatedGestureEvent(pinch_event);
|
| pinch_scale_ = scale;
|
| }
|
|
|
| void TouchEmulator::PinchEnd(const WebGestureEvent& event) {
|
| DCHECK(pinch_gesture_active_);
|
| pinch_gesture_active_ = false;
|
| - FillPinchEvent(event);
|
| - pinch_event_.type = WebInputEvent::GesturePinchEnd;
|
| - client_->ForwardEmulatedGestureEvent(pinch_event_);
|
| -}
|
| -
|
| -void TouchEmulator::FillPinchEvent(const WebInputEvent& event) {
|
| - pinch_event_.timeStampSeconds = event.timeStampSeconds;
|
| - pinch_event_.modifiers = ModifiersWithoutMouseButtons(event);
|
| - pinch_event_.sourceDevice = blink::WebGestureDeviceTouchscreen;
|
| - pinch_event_.x = pinch_anchor_.x();
|
| - pinch_event_.y = pinch_anchor_.y();
|
| + WebGestureEvent pinch_event =
|
| + GetPinchGestureEvent(WebInputEvent::GesturePinchEnd, event);
|
| + client_->ForwardEmulatedGestureEvent(pinch_event);
|
| }
|
|
|
| void TouchEmulator::ScrollEnd(const WebGestureEvent& event) {
|
| - WebGestureEvent scroll_event;
|
| - scroll_event.timeStampSeconds = event.timeStampSeconds;
|
| - scroll_event.modifiers = ModifiersWithoutMouseButtons(event);
|
| + WebGestureEvent scroll_event(WebInputEvent::GestureScrollEnd,
|
| + ModifiersWithoutMouseButtons(event),
|
| + event.timeStampSeconds);
|
| scroll_event.sourceDevice = blink::WebGestureDeviceTouchscreen;
|
| - scroll_event.type = WebInputEvent::GestureScrollEnd;
|
| client_->ForwardEmulatedGestureEvent(scroll_event);
|
| }
|
|
|
| +WebGestureEvent TouchEmulator::GetPinchGestureEvent(
|
| + WebInputEvent::Type type,
|
| + const WebInputEvent& original_event) {
|
| + WebGestureEvent event(type, ModifiersWithoutMouseButtons(original_event),
|
| + original_event.timeStampSeconds);
|
| + event.sourceDevice = blink::WebGestureDeviceTouchscreen;
|
| + event.x = pinch_anchor_.x();
|
| + event.y = pinch_anchor_.y();
|
| + return event;
|
| +}
|
| +
|
| void TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) {
|
| WebInputEvent::Type eventType;
|
| switch (mouse_event.type) {
|
| @@ -450,10 +451,9 @@ void TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) {
|
| NOTREACHED() << "Invalid event for touch emulation: " << mouse_event.type;
|
| }
|
| touch_event_.touchesLength = 1;
|
| - touch_event_.modifiers = ModifiersWithoutMouseButtons(mouse_event);
|
| + touch_event_.setModifiers(ModifiersWithoutMouseButtons(mouse_event));
|
| WebTouchEventTraits::ResetTypeAndTouchStates(
|
| eventType, mouse_event.timeStampSeconds, &touch_event_);
|
| -
|
| WebTouchPoint& point = touch_event_.touches[0];
|
| point.id = 0;
|
| point.radiusX = 0.5f * cursor_size_.width();
|
|
|