| Index: ui/events/blink/blink_event_util.cc
|
| diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc
|
| index c0b32d721abb1868d8fe8fd7d86c0c87ad8d9eb9..22087cb62fdd302137bfcfb9516c36f626099fd8 100644
|
| --- a/ui/events/blink/blink_event_util.cc
|
| +++ b/ui/events/blink/blink_event_util.cc
|
| @@ -359,46 +359,72 @@ WebGestureEvent CreateWebGestureEventFromGestureEventData(
|
| data.unique_touch_event_id);
|
| }
|
|
|
| +std::unique_ptr<blink::WebInputEvent> MakeDeepCopyOfWebInputEvent(
|
| + const blink::WebInputEvent& event) {
|
| + std::unique_ptr<blink::WebInputEvent> cloned_event;
|
| + if (event.type == blink::WebMouseEvent::MouseWheel) {
|
| + blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent;
|
| + cloned_event.reset(wheel_event);
|
| + *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
|
| + } else if (blink::WebInputEvent::isMouseEventType(event.type)) {
|
| + blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent;
|
| + cloned_event.reset(mouse_event);
|
| + *mouse_event = static_cast<const blink::WebMouseEvent&>(event);
|
| + } else if (blink::WebInputEvent::isTouchEventType(event.type)) {
|
| + blink::WebTouchEvent* touch_event = new blink::WebTouchEvent;
|
| + cloned_event.reset(touch_event);
|
| + *touch_event = static_cast<const blink::WebTouchEvent&>(event);
|
| + } else if (blink::WebInputEvent::isGestureEventType(event.type)) {
|
| + blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent;
|
| + cloned_event.reset(gesture_event);
|
| + *gesture_event = static_cast<const blink::WebGestureEvent&>(event);
|
| + }
|
| + return cloned_event;
|
| +}
|
| +
|
| std::unique_ptr<blink::WebInputEvent> ScaleWebInputEvent(
|
| const blink::WebInputEvent& event,
|
| float scale) {
|
| std::unique_ptr<blink::WebInputEvent> scaled_event;
|
| if (scale == 1.f)
|
| return scaled_event;
|
| - if (event.type == blink::WebMouseEvent::MouseWheel) {
|
| - blink::WebMouseWheelEvent* wheel_event = new blink::WebMouseWheelEvent;
|
| - scaled_event.reset(wheel_event);
|
| - *wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
|
| +
|
| + scaled_event = MakeDeepCopyOfWebInputEvent(event);
|
| + ScaleWebInputEvent(scale, scaled_event.get());
|
| + return scaled_event;
|
| +}
|
| +
|
| +void ScaleWebInputEvent(float scale, blink::WebInputEvent* event) {
|
| + if (event->type == blink::WebMouseEvent::MouseWheel) {
|
| + blink::WebMouseWheelEvent* wheel_event =
|
| + static_cast<blink::WebMouseWheelEvent*>(event);
|
| wheel_event->x *= scale;
|
| wheel_event->y *= scale;
|
| wheel_event->deltaX *= scale;
|
| wheel_event->deltaY *= scale;
|
| wheel_event->wheelTicksX *= scale;
|
| wheel_event->wheelTicksY *= scale;
|
| - } else if (blink::WebInputEvent::isMouseEventType(event.type)) {
|
| - blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent;
|
| - scaled_event.reset(mouse_event);
|
| - *mouse_event = static_cast<const blink::WebMouseEvent&>(event);
|
| + } else if (blink::WebInputEvent::isMouseEventType(event->type)) {
|
| + blink::WebMouseEvent* mouse_event =
|
| + static_cast<blink::WebMouseEvent*>(event);
|
| mouse_event->x *= scale;
|
| mouse_event->y *= scale;
|
| mouse_event->windowX = mouse_event->x;
|
| mouse_event->windowY = mouse_event->y;
|
| mouse_event->movementX *= scale;
|
| mouse_event->movementY *= scale;
|
| - } else if (blink::WebInputEvent::isTouchEventType(event.type)) {
|
| - blink::WebTouchEvent* touch_event = new blink::WebTouchEvent;
|
| - scaled_event.reset(touch_event);
|
| - *touch_event = static_cast<const blink::WebTouchEvent&>(event);
|
| + } else if (blink::WebInputEvent::isTouchEventType(event->type)) {
|
| + blink::WebTouchEvent* touch_event =
|
| + static_cast<blink::WebTouchEvent*>(event);
|
| for (unsigned i = 0; i < touch_event->touchesLength; i++) {
|
| touch_event->touches[i].position.x *= scale;
|
| touch_event->touches[i].position.y *= scale;
|
| touch_event->touches[i].radiusX *= scale;
|
| touch_event->touches[i].radiusY *= scale;
|
| }
|
| - } else if (blink::WebInputEvent::isGestureEventType(event.type)) {
|
| - blink::WebGestureEvent* gesture_event = new blink::WebGestureEvent;
|
| - scaled_event.reset(gesture_event);
|
| - *gesture_event = static_cast<const blink::WebGestureEvent&>(event);
|
| + } else if (blink::WebInputEvent::isGestureEventType(event->type)) {
|
| + blink::WebGestureEvent* gesture_event =
|
| + static_cast<blink::WebGestureEvent*>(event);
|
| gesture_event->x *= scale;
|
| gesture_event->y *= scale;
|
| switch (gesture_event->type) {
|
| @@ -461,7 +487,28 @@ std::unique_ptr<blink::WebInputEvent> ScaleWebInputEvent(
|
| break;
|
| }
|
| }
|
| - return scaled_event;
|
| +}
|
| +
|
| +void ShiftWebInputEvent(int delta_x, int delta_y, blink::WebInputEvent* event) {
|
| + if (blink::WebInputEvent::isMouseEventType(event->type)) {
|
| + blink::WebMouseEvent* mouse_event =
|
| + static_cast<blink::WebMouseEvent*>(event);
|
| + mouse_event->x += delta_x;
|
| + mouse_event->y += delta_y;
|
| + } else if (blink::WebInputEvent::isGestureEventType(event->type)) {
|
| + blink::WebGestureEvent* gesture_event =
|
| + static_cast<blink::WebGestureEvent*>(event);
|
| + gesture_event->x += delta_x;
|
| + gesture_event->y += delta_y;
|
| + } else if (blink::WebInputEvent::isTouchEventType(event->type)) {
|
| + blink::WebTouchEvent* touch_event =
|
| + static_cast<blink::WebTouchEvent*>(event);
|
| + for (unsigned i = 0; i < touch_event->touchesLength; i++) {
|
| + blink::WebTouchPoint* p = touch_event->touches + i;
|
| + p->position.x += delta_x;
|
| + p->position.y += delta_y;
|
| + }
|
| + }
|
| }
|
|
|
| WebPointerProperties::PointerType ToWebPointerType(
|
|
|