Index: components/test_runner/event_sender.cc |
diff --git a/components/test_runner/event_sender.cc b/components/test_runner/event_sender.cc |
index 8b2ccef10b451ef46bbc12def713bf47ee1fd73e..49609d2f14e87d96f1757bc3dae317781c2151e2 100644 |
--- a/components/test_runner/event_sender.cc |
+++ b/components/test_runner/event_sender.cc |
@@ -200,22 +200,17 @@ int modifiersWithButtons(int modifiers, int buttons) { |
| (buttons & kButtonsInModifiers); |
} |
-void InitMouseEventGeneric(WebInputEvent::Type t, |
- WebMouseEvent::Button b, |
+void InitMouseEventGeneric(WebMouseEvent::Button b, |
int current_buttons, |
const WebPoint& pos, |
- double time_stamp, |
int click_count, |
- int modifiers, |
WebPointerProperties::PointerType pointerType, |
int pointerId, |
float pressure, |
int tiltX, |
int tiltY, |
WebMouseEvent* e) { |
- e->type = t; |
e->button = b; |
- e->modifiers = modifiersWithButtons(modifiers, current_buttons); |
e->x = pos.x; |
e->y = pos.y; |
e->globalX = pos.x; |
@@ -225,34 +220,26 @@ void InitMouseEventGeneric(WebInputEvent::Type t, |
e->force = pressure; |
e->tiltX = tiltX; |
e->tiltY = tiltY; |
- e->timeStampSeconds = time_stamp; |
e->clickCount = click_count; |
} |
-void InitMouseEvent(WebInputEvent::Type t, |
- WebMouseEvent::Button b, |
+void InitMouseEvent(WebMouseEvent::Button b, |
int current_buttons, |
const WebPoint& pos, |
- double time_stamp, |
int click_count, |
- int modifiers, |
WebMouseEvent* e) { |
- InitMouseEventGeneric(t, b, current_buttons, pos, time_stamp, click_count, |
- modifiers, WebPointerProperties::PointerType::Mouse, 0, |
- 0.0, 0, 0, e); |
+ InitMouseEventGeneric(b, current_buttons, pos, click_count, |
+ WebPointerProperties::PointerType::Mouse, 0, 0.0, 0, 0, |
+ e); |
} |
-void InitGestureEventFromMouseWheel(WebInputEvent::Type type, |
- double time_stamp, |
- const WebMouseWheelEvent& wheel_event, |
+void InitGestureEventFromMouseWheel(const WebMouseWheelEvent& wheel_event, |
WebGestureEvent* gesture_event) { |
- gesture_event->type = type; |
gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad; |
gesture_event->x = wheel_event.x; |
gesture_event->y = wheel_event.y; |
gesture_event->globalX = wheel_event.globalX; |
gesture_event->globalY = wheel_event.globalY; |
- gesture_event->timeStampSeconds = time_stamp; |
} |
int GetKeyModifier(const std::string& modifier_name) { |
@@ -1344,16 +1331,21 @@ void EventSender::SetContextMenuData(const WebContextMenuData& data) { |
last_context_menu_data_.reset(new WebContextMenuData(data)); |
} |
+int EventSender::ModifiersForPointer(int pointer_id) { |
+ return modifiersWithButtons( |
+ current_pointer_state_[pointer_id].modifiers_, |
+ current_pointer_state_[pointer_id].current_buttons_); |
+} |
+ |
void EventSender::DoDragDrop(const WebDragData& drag_data, |
WebDragOperationsMask mask) { |
- WebMouseEvent raw_event; |
- InitMouseEvent(WebInputEvent::MouseDown, |
- current_pointer_state_[kRawMousePointerId].pressed_button_, |
+ WebMouseEvent raw_event(WebInputEvent::MouseDown, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, |
- current_pointer_state_[kRawMousePointerId].modifiers_, |
- &raw_event); |
+ click_count_, &raw_event); |
std::unique_ptr<WebInputEvent> widget_event = |
TransformScreenToWidgetCoordinates(raw_event); |
@@ -1401,7 +1393,6 @@ void EventSender::PointerDown(int button_number, |
WebMouseEvent::Button button_type = |
GetButtonTypeFromButtonNumber(button_number); |
- WebMouseEvent event; |
int click_count = 0; |
current_pointer_state_[pointerId].pressed_button_ = button_type; |
current_pointer_state_[pointerId].current_buttons_ |= |
@@ -1412,13 +1403,13 @@ void EventSender::PointerDown(int button_number, |
UpdateClickCountForButton(button_type); |
click_count = click_count_; |
} |
- InitMouseEventGeneric(WebInputEvent::MouseDown, |
- current_pointer_state_[pointerId].pressed_button_, |
+ WebMouseEvent event(WebInputEvent::MouseDown, ModifiersForPointer(pointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEventGeneric(current_pointer_state_[pointerId].pressed_button_, |
current_pointer_state_[pointerId].current_buttons_, |
current_pointer_state_[pointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count, |
- current_pointer_state_[pointerId].modifiers_, |
- pointerType, pointerId, pressure, tiltX, tiltY, &event); |
+ click_count, pointerType, pointerId, pressure, tiltX, |
+ tiltY, &event); |
HandleInputEventOnViewOrPopup(event); |
} |
@@ -1447,21 +1438,21 @@ void EventSender::PointerUp(int button_number, |
mouse_event_queue_.push_back(saved_event); |
ReplaySavedEvents(); |
} else { |
+ current_pointer_state_[pointerId].modifiers_ = modifiers; |
current_pointer_state_[pointerId].current_buttons_ &= |
~GetWebMouseEventModifierForButton(button_type); |
current_pointer_state_[pointerId].pressed_button_ = |
WebMouseEvent::Button::NoButton; |
- WebMouseEvent event; |
+ WebMouseEvent event(WebInputEvent::MouseUp, ModifiersForPointer(pointerId), |
+ GetCurrentEventTimeSec()); |
int click_count = pointerType == WebPointerProperties::PointerType::Mouse |
? click_count_ |
: 0; |
- InitMouseEventGeneric(WebInputEvent::MouseUp, button_type, |
- current_pointer_state_[pointerId].current_buttons_, |
- current_pointer_state_[pointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count, modifiers, |
- pointerType, pointerId, pressure, tiltX, tiltY, |
- &event); |
+ InitMouseEventGeneric( |
+ button_type, current_pointer_state_[pointerId].current_buttons_, |
+ current_pointer_state_[pointerId].last_pos_, click_count, pointerType, |
+ pointerId, pressure, tiltX, tiltY, &event); |
HandleInputEventOnViewOrPopup(event); |
if (pointerType == WebPointerProperties::PointerType::Mouse) |
DoDragAfterMouseUp(event); |
@@ -1653,15 +1644,31 @@ void EventSender::KeyDown(const std::string& code_str, |
} |
} |
+ if (needs_shift_key_modifier) |
+ modifiers |= WebInputEvent::ShiftKey; |
+ |
+ // See if KeyLocation argument is given. |
+ switch (location) { |
+ case DOMKeyLocationStandard: |
+ break; |
+ case DOMKeyLocationLeft: |
+ modifiers |= WebInputEvent::IsLeft; |
+ break; |
+ case DOMKeyLocationRight: |
+ modifiers |= WebInputEvent::IsRight; |
+ break; |
+ case DOMKeyLocationNumpad: |
+ modifiers |= WebInputEvent::IsKeyPad; |
+ break; |
+ } |
+ |
// For one generated keyboard event, we need to generate a keyDown/keyUp |
// pair; |
// On Windows, we might also need to generate a char event to mimic the |
// Windows event flow; on other platforms we create a merged event and test |
// the event flow that that platform provides. |
- WebKeyboardEvent event_down; |
- event_down.timeStampSeconds = GetCurrentEventTimeSec(); |
- event_down.type = WebInputEvent::RawKeyDown; |
- event_down.modifiers = modifiers; |
+ WebKeyboardEvent event_down(WebInputEvent::RawKeyDown, modifiers, |
+ GetCurrentEventTimeSec()); |
event_down.windowsKeyCode = code; |
event_down.domKey = static_cast<int>( |
ui::KeycodeConverter::KeyStringToDomKey(domKeyString)); |
@@ -1676,27 +1683,8 @@ void EventSender::KeyDown(const std::string& code_str, |
if (event_down.modifiers != 0) |
event_down.isSystemKey = IsSystemKeyEvent(event_down); |
- if (needs_shift_key_modifier) |
- event_down.modifiers |= WebInputEvent::ShiftKey; |
- |
- // See if KeyLocation argument is given. |
- switch (location) { |
- case DOMKeyLocationStandard: |
- break; |
- case DOMKeyLocationLeft: |
- event_down.modifiers |= WebInputEvent::IsLeft; |
- break; |
- case DOMKeyLocationRight: |
- event_down.modifiers |= WebInputEvent::IsRight; |
- break; |
- case DOMKeyLocationNumpad: |
- event_down.modifiers |= WebInputEvent::IsKeyPad; |
- break; |
- } |
- |
- WebKeyboardEvent event_up; |
- event_up = event_down; |
- event_up.type = WebInputEvent::KeyUp; |
+ WebKeyboardEvent event_up = event_down; |
+ event_up.setType(WebInputEvent::KeyUp); |
// EventSender.m forces a layout here, with at least one |
// test (fast/forms/focus-control-to-page.html) relying on this. |
if (force_layout_on_events_) |
@@ -1714,12 +1702,13 @@ void EventSender::KeyDown(const std::string& code_str, |
HandleInputEventOnViewOrPopup(event_down); |
if (code == ui::VKEY_ESCAPE && !current_drag_data_.isNull()) { |
- WebMouseEvent event; |
- InitMouseEvent(WebInputEvent::MouseDown, |
- current_pointer_state_[kRawMousePointerId].pressed_button_, |
+ WebMouseEvent event(WebInputEvent::MouseDown, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, 0, &event); |
+ click_count_, &event); |
FinishDragAndDrop(event, blink::WebDragOperationNone); |
} |
@@ -1727,7 +1716,7 @@ void EventSender::KeyDown(const std::string& code_str, |
if (generate_char) { |
WebKeyboardEvent event_char = event_up; |
- event_char.type = WebInputEvent::Char; |
+ event_char.setType(WebInputEvent::Char); |
HandleInputEventOnViewOrPopup(event_char); |
} |
@@ -1751,7 +1740,6 @@ std::vector<std::string> EventSender::ContextClick() { |
last_context_menu_data_.reset(); |
// Generate right mouse down and up. |
- WebMouseEvent event; |
// This is a hack to work around only allowing a single pressed button since |
// we want to test the case where both the left and right mouse buttons are |
// pressed. |
@@ -1765,10 +1753,13 @@ std::vector<std::string> EventSender::ContextClick() { |
GetWebMouseEventModifierForButton( |
current_pointer_state_[kRawMousePointerId].pressed_button_); |
} |
- InitMouseEvent(WebInputEvent::MouseDown, WebMouseEvent::Button::Right, |
+ WebMouseEvent event(WebInputEvent::MouseDown, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(WebMouseEvent::Button::Right, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, 0, &event); |
+ click_count_, &event); |
HandleInputEventOnViewOrPopup(event); |
#if defined(OS_WIN) |
@@ -1777,11 +1768,14 @@ std::vector<std::string> EventSender::ContextClick() { |
current_pointer_state_[kRawMousePointerId].pressed_button_ = |
WebMouseEvent::Button::NoButton; |
- InitMouseEvent(WebInputEvent::MouseUp, WebMouseEvent::Button::Right, |
+ WebMouseEvent mouseUpEvent(WebInputEvent::MouseUp, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(WebMouseEvent::Button::Right, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, 0, &event); |
- HandleInputEventOnViewOrPopup(event); |
+ click_count_, &mouseUpEvent); |
+ HandleInputEventOnViewOrPopup(mouseUpEvent); |
#endif |
std::vector<std::string> menu_items = |
@@ -1907,13 +1901,12 @@ void EventSender::DumpFilenameBeingDragged() { |
} |
void EventSender::GestureFlingCancel() { |
- WebGestureEvent event; |
- event.type = WebInputEvent::GestureFlingCancel; |
+ WebGestureEvent event(WebInputEvent::GestureFlingCancel, |
+ WebInputEvent::NoModifiers, GetCurrentEventTimeSec()); |
// Generally it won't matter what device we use here, and since it might |
// be cumbersome to expect all callers to specify a device, we'll just |
// choose Touchpad here. |
event.sourceDevice = blink::WebGestureDeviceTouchpad; |
- event.timeStampSeconds = GetCurrentEventTimeSec(); |
if (force_layout_on_events_) |
widget()->updateAllLifecyclePhases(); |
@@ -1926,8 +1919,8 @@ void EventSender::GestureFlingStart(float x, |
float velocity_x, |
float velocity_y, |
gin::Arguments* args) { |
- WebGestureEvent event; |
- event.type = WebInputEvent::GestureFlingStart; |
+ WebGestureEvent event(WebInputEvent::GestureFlingStart, |
+ WebInputEvent::NoModifiers, GetCurrentEventTimeSec()); |
std::string device_string; |
if (!args->PeekNext().IsEmpty() && args->PeekNext()->IsString()) |
@@ -1957,7 +1950,6 @@ void EventSender::GestureFlingStart(float x, |
event.data.flingStart.velocityX = velocity_x; |
event.data.flingStart.velocityY = velocity_y; |
- event.timeStampSeconds = GetCurrentEventTimeSec(); |
if (force_layout_on_events_) |
widget()->updateAllLifecyclePhases(); |
@@ -1990,8 +1982,8 @@ void EventSender::TouchEnd(gin::Arguments* args) { |
} |
void EventSender::NotifyStartOfTouchScroll() { |
- WebTouchEvent event; |
- event.type = WebInputEvent::TouchScrollStarted; |
+ WebTouchEvent event(WebInputEvent::TouchScrollStarted, |
+ WebInputEvent::NoModifiers, GetCurrentEventTimeSec()); |
HandleInputEventOnViewOrPopup(event); |
} |
@@ -2132,13 +2124,14 @@ void EventSender::GestureTwoFingerTap(gin::Arguments* args) { |
void EventSender::MouseScrollBy(gin::Arguments* args, |
MouseScrollType scroll_type) { |
- WebMouseWheelEvent wheel_event; |
// TODO(dtapuska): Gestures really should be sent by the MouseWheelEventQueue |
// class in the browser. But since the event doesn't propogate up into |
// the browser generate the events here. See crbug.com/596095. |
bool send_gestures = true; |
- InitMouseWheelEvent(args, scroll_type, &wheel_event, &send_gestures); |
- if (HandleInputEventOnViewOrPopup(wheel_event) == |
+ WebMouseWheelEvent wheel_event = |
+ GetMouseWheelEvent(args, scroll_type, &send_gestures); |
+ if (wheel_event.type != WebInputEvent::Undefined && |
+ HandleInputEventOnViewOrPopup(wheel_event) == |
WebInputEventResult::NotHandled && |
send_gestures) { |
SendGesturesForMouseWheelEvent(wheel_event); |
@@ -2184,16 +2177,17 @@ void EventSender::MouseMoveTo(gin::Arguments* args) { |
mouse_event_queue_.push_back(saved_event); |
} else { |
current_pointer_state_[pointerId].last_pos_ = mouse_pos; |
- WebMouseEvent event; |
+ current_pointer_state_[pointerId].modifiers_ = modifiers; |
+ WebMouseEvent event(WebInputEvent::MouseMove, |
+ ModifiersForPointer(pointerId), |
+ GetCurrentEventTimeSec()); |
int click_count = pointerType == WebPointerProperties::PointerType::Mouse |
? click_count_ |
: 0; |
InitMouseEventGeneric( |
- WebInputEvent::MouseMove, |
current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, mouse_pos, |
- GetCurrentEventTimeSec(), click_count, modifiers, pointerType, |
- pointerId, pressure, tiltX, tiltY, &event); |
+ click_count, pointerType, pointerId, pressure, tiltX, tiltY, &event); |
HandleInputEventOnViewOrPopup(event); |
if (pointerType == WebPointerProperties::PointerType::Mouse) |
DoDragAfterMouseMove(event); |
@@ -2204,10 +2198,12 @@ void EventSender::MouseLeave() { |
if (force_layout_on_events_) |
widget()->updateAllLifecyclePhases(); |
- WebMouseEvent event; |
- InitMouseEvent(WebInputEvent::MouseLeave, WebMouseEvent::Button::NoButton, 0, |
+ WebMouseEvent event(WebInputEvent::MouseLeave, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(WebMouseEvent::Button::NoButton, 0, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, 0, &event); |
+ click_count_, &event); |
HandleInputEventOnViewOrPopup(event); |
} |
@@ -2273,13 +2269,10 @@ void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type, |
if (force_layout_on_events_) |
widget()->updateAllLifecyclePhases(); |
- WebTouchEvent touch_event; |
- touch_event.type = type; |
- touch_event.modifiers = touch_modifiers_; |
+ WebTouchEvent touch_event(type, touch_modifiers_, GetCurrentEventTimeSec()); |
touch_event.dispatchType = touch_cancelable_ |
? WebInputEvent::Blocking |
: WebInputEvent::EventNonBlocking; |
- touch_event.timeStampSeconds = GetCurrentEventTimeSec(); |
touch_event.movedBeyondSlopRegion = moved_beyond_slop_region; |
touch_event.uniqueTouchEventId = unique_touch_event_id; |
touch_event.touchesLength = touch_points_.size(); |
@@ -2301,8 +2294,8 @@ void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type, |
void EventSender::GestureEvent(WebInputEvent::Type type, |
gin::Arguments* args) { |
- WebGestureEvent event; |
- event.type = type; |
+ WebGestureEvent event(type, WebInputEvent::NoModifiers, |
+ GetCurrentEventTimeSec()); |
// If the first argument is a string, it is to specify the device, otherwise |
// the device is assumed to be a touchscreen (since most tests were written |
@@ -2527,7 +2520,6 @@ void EventSender::GestureEvent(WebInputEvent::Type type, |
event.globalX = event.x; |
event.globalY = event.y; |
- event.timeStampSeconds = GetCurrentEventTimeSec(); |
if (force_layout_on_events_) |
widget()->updateAllLifecyclePhases(); |
@@ -2536,13 +2528,13 @@ void EventSender::GestureEvent(WebInputEvent::Type type, |
// Long press might start a drag drop session. Complete it if so. |
if (type == WebInputEvent::GestureLongPress && !current_drag_data_.isNull()) { |
- WebMouseEvent mouse_event; |
- InitMouseEvent(WebInputEvent::MouseDown, |
- current_pointer_state_[kRawMousePointerId].pressed_button_, |
+ WebMouseEvent mouse_event(WebInputEvent::MouseDown, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ |
+ InitMouseEvent(current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
- WebPoint(x, y), GetCurrentEventTimeSec(), click_count_, |
- current_pointer_state_[kRawMousePointerId].modifiers_, |
- &mouse_event); |
+ WebPoint(x, y), click_count_, &mouse_event); |
FinishDragAndDrop(mouse_event, blink::WebDragOperationNone); |
} |
@@ -2564,10 +2556,9 @@ void EventSender::UpdateClickCountForButton( |
} |
} |
-void EventSender::InitMouseWheelEvent(gin::Arguments* args, |
- MouseScrollType scroll_type, |
- WebMouseWheelEvent* event, |
- bool* send_gestures) { |
+WebMouseWheelEvent EventSender::GetMouseWheelEvent(gin::Arguments* args, |
+ MouseScrollType scroll_type, |
+ bool* send_gestures) { |
// Force a layout here just to make sure every position has been |
// determined before we send events (as well as all the other methods |
// that send an event do). |
@@ -2575,14 +2566,10 @@ void EventSender::InitMouseWheelEvent(gin::Arguments* args, |
widget()->updateAllLifecyclePhases(); |
double horizontal; |
- if (!args->GetNext(&horizontal)) { |
- args->ThrowError(); |
- return; |
- } |
double vertical; |
- if (!args->GetNext(&vertical)) { |
+ if (!args->GetNext(&horizontal) || !args->GetNext(&vertical)) { |
args->ThrowError(); |
- return; |
+ return WebMouseWheelEvent(); |
} |
bool paged = false; |
@@ -2609,25 +2596,29 @@ void EventSender::InitMouseWheelEvent(gin::Arguments* args, |
} |
} |
- InitMouseEvent(WebInputEvent::MouseWheel, |
- current_pointer_state_[kRawMousePointerId].pressed_button_, |
+ current_pointer_state_[kRawMousePointerId].modifiers_ = modifiers; |
+ WebMouseWheelEvent event(WebInputEvent::MouseWheel, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
+ InitMouseEvent(current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, modifiers, event); |
- event->wheelTicksX = static_cast<float>(horizontal); |
- event->wheelTicksY = static_cast<float>(vertical); |
- event->deltaX = event->wheelTicksX; |
- event->deltaY = event->wheelTicksY; |
- event->scrollByPage = paged; |
- event->hasPreciseScrollingDeltas = has_precise_scrolling_deltas; |
- event->phase = phase; |
+ click_count_, &event); |
+ event.wheelTicksX = static_cast<float>(horizontal); |
+ event.wheelTicksY = static_cast<float>(vertical); |
+ event.deltaX = event.wheelTicksX; |
+ event.deltaY = event.wheelTicksY; |
+ event.scrollByPage = paged; |
+ event.hasPreciseScrollingDeltas = has_precise_scrolling_deltas; |
+ event.phase = phase; |
if (scroll_type == MouseScrollType::PIXEL) { |
- event->wheelTicksX /= kScrollbarPixelsPerTick; |
- event->wheelTicksY /= kScrollbarPixelsPerTick; |
+ event.wheelTicksX /= kScrollbarPixelsPerTick; |
+ event.wheelTicksY /= kScrollbarPixelsPerTick; |
} else { |
- event->deltaX *= kScrollbarPixelsPerTick; |
- event->deltaY *= kScrollbarPixelsPerTick; |
+ event.deltaX *= kScrollbarPixelsPerTick; |
+ event.deltaY *= kScrollbarPixelsPerTick; |
} |
+ return event; |
} |
// Radius fields radius_x and radius_y should eventually be moved to |
@@ -2759,12 +2750,14 @@ void EventSender::ReplaySavedEvents() { |
switch (e.type) { |
case SavedEvent::TYPE_MOUSE_MOVE: { |
- WebMouseEvent event; |
+ current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers; |
+ WebMouseEvent event(WebInputEvent::MouseMove, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
InitMouseEvent( |
- WebInputEvent::MouseMove, |
current_pointer_state_[kRawMousePointerId].pressed_button_, |
current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos, |
- GetCurrentEventTimeSec(), click_count_, e.modifiers, &event); |
+ click_count_, &event); |
current_pointer_state_[kRawMousePointerId].last_pos_ = |
WebPoint(event.x, event.y); |
HandleInputEventOnViewOrPopup(event); |
@@ -2779,13 +2772,16 @@ void EventSender::ReplaySavedEvents() { |
~GetWebMouseEventModifierForButton(e.button_type); |
current_pointer_state_[kRawMousePointerId].pressed_button_ = |
WebMouseEvent::Button::NoButton; |
+ current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers; |
- WebMouseEvent event; |
+ WebMouseEvent event(WebInputEvent::MouseUp, |
+ ModifiersForPointer(kRawMousePointerId), |
+ GetCurrentEventTimeSec()); |
InitMouseEvent( |
- WebInputEvent::MouseUp, e.button_type, |
+ e.button_type, |
current_pointer_state_[kRawMousePointerId].current_buttons_, |
- current_pointer_state_[kRawMousePointerId].last_pos_, |
- GetCurrentEventTimeSec(), click_count_, e.modifiers, &event); |
+ current_pointer_state_[kRawMousePointerId].last_pos_, click_count_, |
+ &event); |
HandleInputEventOnViewOrPopup(event); |
DoDragAfterMouseUp(event); |
break; |
@@ -2823,10 +2819,9 @@ WebInputEventResult EventSender::HandleInputEventOnViewOrPopup( |
void EventSender::SendGesturesForMouseWheelEvent( |
const WebMouseWheelEvent wheel_event) { |
- WebGestureEvent begin_event; |
- InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollBegin, |
- GetCurrentEventTimeSec(), wheel_event, |
- &begin_event); |
+ WebGestureEvent begin_event(WebInputEvent::GestureScrollBegin, |
+ wheel_event.modifiers, GetCurrentEventTimeSec()); |
+ InitGestureEventFromMouseWheel(wheel_event, &begin_event); |
begin_event.data.scrollBegin.deltaXHint = wheel_event.deltaX; |
begin_event.data.scrollBegin.deltaYHint = wheel_event.deltaY; |
if (wheel_event.scrollByPage) { |
@@ -2851,10 +2846,9 @@ void EventSender::SendGesturesForMouseWheelEvent( |
HandleInputEventOnViewOrPopup(begin_event); |
- WebGestureEvent update_event; |
- InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollUpdate, |
- GetCurrentEventTimeSec(), wheel_event, |
- &update_event); |
+ WebGestureEvent update_event(WebInputEvent::GestureScrollUpdate, |
+ wheel_event.modifiers, GetCurrentEventTimeSec()); |
+ InitGestureEventFromMouseWheel(wheel_event, &update_event); |
update_event.data.scrollUpdate.deltaX = |
begin_event.data.scrollBegin.deltaXHint; |
update_event.data.scrollUpdate.deltaY = |
@@ -2866,10 +2860,9 @@ void EventSender::SendGesturesForMouseWheelEvent( |
widget()->updateAllLifecyclePhases(); |
HandleInputEventOnViewOrPopup(update_event); |
- WebGestureEvent end_event; |
- InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollEnd, |
- GetCurrentEventTimeSec(), wheel_event, |
- &end_event); |
+ WebGestureEvent end_event(WebInputEvent::GestureScrollEnd, |
+ wheel_event.modifiers, GetCurrentEventTimeSec()); |
+ InitGestureEventFromMouseWheel(wheel_event, &end_event); |
end_event.data.scrollEnd.deltaUnits = |
begin_event.data.scrollBegin.deltaHintUnits; |