| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/shell/test_runner/event_sender.h" | 5 #include "content/shell/test_runner/event_sender.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 int current_buttons, | 210 int current_buttons, |
| 211 const WebPoint& pos, | 211 const WebPoint& pos, |
| 212 int click_count, | 212 int click_count, |
| 213 WebPointerProperties::PointerType pointerType, | 213 WebPointerProperties::PointerType pointerType, |
| 214 int pointerId, | 214 int pointerId, |
| 215 float pressure, | 215 float pressure, |
| 216 int tiltX, | 216 int tiltX, |
| 217 int tiltY, | 217 int tiltY, |
| 218 WebMouseEvent* e) { | 218 WebMouseEvent* e) { |
| 219 e->button = b; | 219 e->button = b; |
| 220 e->x = pos.x; | 220 e->position.x = pos.x; |
| 221 e->y = pos.y; | 221 e->position.y = pos.y; |
| 222 e->globalX = pos.x; | 222 e->screenPosition.x = pos.x; |
| 223 e->globalY = pos.y; | 223 e->screenPosition.y = pos.y; |
| 224 e->pointerType = pointerType; | 224 e->pointerType = pointerType; |
| 225 e->id = pointerId; | 225 e->id = pointerId; |
| 226 e->force = pressure; | 226 e->force = pressure; |
| 227 e->tiltX = tiltX; | 227 e->tiltX = tiltX; |
| 228 e->tiltY = tiltY; | 228 e->tiltY = tiltY; |
| 229 e->clickCount = click_count; | 229 e->clickCount = click_count; |
| 230 } | 230 } |
| 231 | 231 |
| 232 void InitMouseEvent(WebMouseEvent::Button b, | 232 void InitMouseEvent(WebMouseEvent::Button b, |
| 233 int current_buttons, | 233 int current_buttons, |
| 234 const WebPoint& pos, | 234 const WebPoint& pos, |
| 235 int click_count, | 235 int click_count, |
| 236 WebMouseEvent* e) { | 236 WebMouseEvent* e) { |
| 237 InitMouseEventGeneric(b, current_buttons, pos, click_count, | 237 InitMouseEventGeneric(b, current_buttons, pos, click_count, |
| 238 WebPointerProperties::PointerType::Mouse, 0, 0.0, 0, 0, | 238 WebPointerProperties::PointerType::Mouse, 0, 0.0, 0, 0, |
| 239 e); | 239 e); |
| 240 } | 240 } |
| 241 | 241 |
| 242 void InitGestureEventFromMouseWheel(const WebMouseWheelEvent& wheel_event, | 242 void InitGestureEventFromMouseWheel(const WebMouseWheelEvent& wheel_event, |
| 243 WebGestureEvent* gesture_event) { | 243 WebGestureEvent* gesture_event) { |
| 244 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad; | 244 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad; |
| 245 gesture_event->x = wheel_event.x; | 245 gesture_event->x = wheel_event.position.x; |
| 246 gesture_event->y = wheel_event.y; | 246 gesture_event->y = wheel_event.position.y; |
| 247 gesture_event->globalX = wheel_event.globalX; | 247 gesture_event->globalX = wheel_event.screenPosition.x; |
| 248 gesture_event->globalY = wheel_event.globalY; | 248 gesture_event->globalY = wheel_event.screenPosition.y; |
| 249 } | 249 } |
| 250 | 250 |
| 251 int GetKeyModifier(const std::string& modifier_name) { | 251 int GetKeyModifier(const std::string& modifier_name) { |
| 252 const char* characters = modifier_name.c_str(); | 252 const char* characters = modifier_name.c_str(); |
| 253 if (!strcmp(characters, "ctrlKey") | 253 if (!strcmp(characters, "ctrlKey") |
| 254 #ifndef __APPLE__ | 254 #ifndef __APPLE__ |
| 255 || !strcmp(characters, "addSelectionKey") | 255 || !strcmp(characters, "addSelectionKey") |
| 256 #endif | 256 #endif |
| 257 ) { | 257 ) { |
| 258 return WebInputEvent::ControlKey; | 258 return WebInputEvent::ControlKey; |
| (...skipping 1084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1343 current_pointer_state_[kRawMousePointerId].current_buttons_, | 1343 current_pointer_state_[kRawMousePointerId].current_buttons_, |
| 1344 current_pointer_state_[kRawMousePointerId].last_pos_, | 1344 current_pointer_state_[kRawMousePointerId].last_pos_, |
| 1345 click_count_, &raw_event); | 1345 click_count_, &raw_event); |
| 1346 | 1346 |
| 1347 std::unique_ptr<WebInputEvent> widget_event = | 1347 std::unique_ptr<WebInputEvent> widget_event = |
| 1348 TransformScreenToWidgetCoordinates(raw_event); | 1348 TransformScreenToWidgetCoordinates(raw_event); |
| 1349 const WebMouseEvent* event = | 1349 const WebMouseEvent* event = |
| 1350 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) | 1350 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) |
| 1351 : &raw_event; | 1351 : &raw_event; |
| 1352 | 1352 |
| 1353 WebPoint client_point(event->x, event->y); | 1353 WebPoint client_point(event->position.x, event->position.y); |
| 1354 WebPoint screen_point(event->globalX, event->globalY); | 1354 WebPoint screen_point(event->screenPosition.x, event->screenPosition.y); |
| 1355 current_drag_data_ = drag_data; | 1355 current_drag_data_ = drag_data; |
| 1356 current_drag_effects_allowed_ = mask; | 1356 current_drag_effects_allowed_ = mask; |
| 1357 current_drag_effect_ = mainFrameWidget()->dragTargetDragEnter( | 1357 current_drag_effect_ = mainFrameWidget()->dragTargetDragEnter( |
| 1358 drag_data, client_point, screen_point, current_drag_effects_allowed_, | 1358 drag_data, client_point, screen_point, current_drag_effects_allowed_, |
| 1359 modifiersWithButtons( | 1359 modifiersWithButtons( |
| 1360 current_pointer_state_[kRawMousePointerId].modifiers_, | 1360 current_pointer_state_[kRawMousePointerId].modifiers_, |
| 1361 current_pointer_state_[kRawMousePointerId].current_buttons_)); | 1361 current_pointer_state_[kRawMousePointerId].current_buttons_)); |
| 1362 | 1362 |
| 1363 // Finish processing events. | 1363 // Finish processing events. |
| 1364 ReplaySavedEvents(); | 1364 ReplaySavedEvents(); |
| (...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2652 } | 2652 } |
| 2653 | 2653 |
| 2654 void EventSender::FinishDragAndDrop(const WebMouseEvent& raw_event, | 2654 void EventSender::FinishDragAndDrop(const WebMouseEvent& raw_event, |
| 2655 blink::WebDragOperation drag_effect) { | 2655 blink::WebDragOperation drag_effect) { |
| 2656 std::unique_ptr<WebInputEvent> widget_event = | 2656 std::unique_ptr<WebInputEvent> widget_event = |
| 2657 TransformScreenToWidgetCoordinates(raw_event); | 2657 TransformScreenToWidgetCoordinates(raw_event); |
| 2658 const WebMouseEvent* event = | 2658 const WebMouseEvent* event = |
| 2659 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) | 2659 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) |
| 2660 : &raw_event; | 2660 : &raw_event; |
| 2661 | 2661 |
| 2662 WebPoint client_point(event->x, event->y); | 2662 WebPoint client_point(event->position.x, event->position.y); |
| 2663 WebPoint screen_point(event->globalX, event->globalY); | 2663 WebPoint screen_point(event->screenPosition.x, event->screenPosition.y); |
| 2664 current_drag_effect_ = drag_effect; | 2664 current_drag_effect_ = drag_effect; |
| 2665 if (current_drag_effect_) { | 2665 if (current_drag_effect_) { |
| 2666 // Specifically pass any keyboard modifiers to the drop method. This allows | 2666 // Specifically pass any keyboard modifiers to the drop method. This allows |
| 2667 // tests to control the drop type (i.e. copy or move). | 2667 // tests to control the drop type (i.e. copy or move). |
| 2668 mainFrameWidget()->dragTargetDrop(current_drag_data_, client_point, | 2668 mainFrameWidget()->dragTargetDrop(current_drag_data_, client_point, |
| 2669 screen_point, event->modifiers()); | 2669 screen_point, event->modifiers()); |
| 2670 } else { | 2670 } else { |
| 2671 mainFrameWidget()->dragTargetDragLeave(blink::WebPoint(), | 2671 mainFrameWidget()->dragTargetDragLeave(blink::WebPoint(), |
| 2672 blink::WebPoint()); | 2672 blink::WebPoint()); |
| 2673 } | 2673 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2684 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) | 2684 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) |
| 2685 : &raw_event; | 2685 : &raw_event; |
| 2686 | 2686 |
| 2687 last_click_time_sec_ = event->timeStampSeconds(); | 2687 last_click_time_sec_ = event->timeStampSeconds(); |
| 2688 last_click_pos_ = current_pointer_state_[kRawMousePointerId].last_pos_; | 2688 last_click_pos_ = current_pointer_state_[kRawMousePointerId].last_pos_; |
| 2689 | 2689 |
| 2690 // If we're in a drag operation, complete it. | 2690 // If we're in a drag operation, complete it. |
| 2691 if (current_drag_data_.isNull()) | 2691 if (current_drag_data_.isNull()) |
| 2692 return; | 2692 return; |
| 2693 | 2693 |
| 2694 WebPoint client_point(event->x, event->y); | 2694 WebPoint client_point(event->position.x, event->position.y); |
| 2695 WebPoint screen_point(event->globalX, event->globalY); | 2695 WebPoint screen_point(event->screenPosition.x, event->screenPosition.y); |
| 2696 blink::WebDragOperation drag_effect = mainFrameWidget()->dragTargetDragOver( | 2696 blink::WebDragOperation drag_effect = mainFrameWidget()->dragTargetDragOver( |
| 2697 client_point, screen_point, current_drag_effects_allowed_, | 2697 client_point, screen_point, current_drag_effects_allowed_, |
| 2698 event->modifiers()); | 2698 event->modifiers()); |
| 2699 | 2699 |
| 2700 // Bail if dragover caused cancellation. | 2700 // Bail if dragover caused cancellation. |
| 2701 if (current_drag_data_.isNull()) | 2701 if (current_drag_data_.isNull()) |
| 2702 return; | 2702 return; |
| 2703 | 2703 |
| 2704 FinishDragAndDrop(raw_event, drag_effect); | 2704 FinishDragAndDrop(raw_event, drag_effect); |
| 2705 } | 2705 } |
| 2706 | 2706 |
| 2707 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& raw_event) { | 2707 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& raw_event) { |
| 2708 if (current_pointer_state_[kRawMousePointerId].pressed_button_ == | 2708 if (current_pointer_state_[kRawMousePointerId].pressed_button_ == |
| 2709 WebMouseEvent::Button::NoButton || | 2709 WebMouseEvent::Button::NoButton || |
| 2710 current_drag_data_.isNull()) { | 2710 current_drag_data_.isNull()) { |
| 2711 return; | 2711 return; |
| 2712 } | 2712 } |
| 2713 | 2713 |
| 2714 std::unique_ptr<WebInputEvent> widget_event = | 2714 std::unique_ptr<WebInputEvent> widget_event = |
| 2715 TransformScreenToWidgetCoordinates(raw_event); | 2715 TransformScreenToWidgetCoordinates(raw_event); |
| 2716 const WebMouseEvent* event = | 2716 const WebMouseEvent* event = |
| 2717 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) | 2717 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) |
| 2718 : &raw_event; | 2718 : &raw_event; |
| 2719 | 2719 |
| 2720 WebPoint client_point(event->x, event->y); | 2720 WebPoint client_point(event->position.x, event->position.y); |
| 2721 WebPoint screen_point(event->globalX, event->globalY); | 2721 WebPoint screen_point(event->screenPosition.x, event->screenPosition.y); |
| 2722 current_drag_effect_ = mainFrameWidget()->dragTargetDragOver( | 2722 current_drag_effect_ = mainFrameWidget()->dragTargetDragOver( |
| 2723 client_point, screen_point, current_drag_effects_allowed_, | 2723 client_point, screen_point, current_drag_effects_allowed_, |
| 2724 event->modifiers()); | 2724 event->modifiers()); |
| 2725 } | 2725 } |
| 2726 | 2726 |
| 2727 void EventSender::ReplaySavedEvents() { | 2727 void EventSender::ReplaySavedEvents() { |
| 2728 replaying_saved_events_ = true; | 2728 replaying_saved_events_ = true; |
| 2729 while (!mouse_event_queue_.empty()) { | 2729 while (!mouse_event_queue_.empty()) { |
| 2730 SavedEvent e = mouse_event_queue_.front(); | 2730 SavedEvent e = mouse_event_queue_.front(); |
| 2731 mouse_event_queue_.pop_front(); | 2731 mouse_event_queue_.pop_front(); |
| 2732 | 2732 |
| 2733 switch (e.type) { | 2733 switch (e.type) { |
| 2734 case SavedEvent::TYPE_MOUSE_MOVE: { | 2734 case SavedEvent::TYPE_MOUSE_MOVE: { |
| 2735 current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers; | 2735 current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers; |
| 2736 WebMouseEvent event(WebInputEvent::MouseMove, | 2736 WebMouseEvent event(WebInputEvent::MouseMove, |
| 2737 ModifiersForPointer(kRawMousePointerId), | 2737 ModifiersForPointer(kRawMousePointerId), |
| 2738 GetCurrentEventTimeSec()); | 2738 GetCurrentEventTimeSec()); |
| 2739 InitMouseEvent( | 2739 InitMouseEvent( |
| 2740 current_pointer_state_[kRawMousePointerId].pressed_button_, | 2740 current_pointer_state_[kRawMousePointerId].pressed_button_, |
| 2741 current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos, | 2741 current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos, |
| 2742 click_count_, &event); | 2742 click_count_, &event); |
| 2743 current_pointer_state_[kRawMousePointerId].last_pos_ = | 2743 current_pointer_state_[kRawMousePointerId].last_pos_ = |
| 2744 WebPoint(event.x, event.y); | 2744 WebPoint(event.position.x, event.position.y); |
| 2745 HandleInputEventOnViewOrPopup(event); | 2745 HandleInputEventOnViewOrPopup(event); |
| 2746 DoDragAfterMouseMove(event); | 2746 DoDragAfterMouseMove(event); |
| 2747 break; | 2747 break; |
| 2748 } | 2748 } |
| 2749 case SavedEvent::TYPE_LEAP_FORWARD: | 2749 case SavedEvent::TYPE_LEAP_FORWARD: |
| 2750 DoLeapForward(e.milliseconds); | 2750 DoLeapForward(e.milliseconds); |
| 2751 break; | 2751 break; |
| 2752 case SavedEvent::TYPE_MOUSE_UP: { | 2752 case SavedEvent::TYPE_MOUSE_UP: { |
| 2753 current_pointer_state_[kRawMousePointerId].current_buttons_ &= | 2753 current_pointer_state_[kRawMousePointerId].current_buttons_ &= |
| 2754 ~GetWebMouseEventModifierForButton(e.button_type); | 2754 ~GetWebMouseEventModifierForButton(e.button_type); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2881 return view()->mainFrame()->toWebLocalFrame()->frameWidget(); | 2881 return view()->mainFrame()->toWebLocalFrame()->frameWidget(); |
| 2882 } | 2882 } |
| 2883 | 2883 |
| 2884 std::unique_ptr<WebInputEvent> EventSender::TransformScreenToWidgetCoordinates( | 2884 std::unique_ptr<WebInputEvent> EventSender::TransformScreenToWidgetCoordinates( |
| 2885 const WebInputEvent& event) { | 2885 const WebInputEvent& event) { |
| 2886 return delegate()->TransformScreenToWidgetCoordinates( | 2886 return delegate()->TransformScreenToWidgetCoordinates( |
| 2887 web_widget_test_proxy_base_, event); | 2887 web_widget_test_proxy_base_, event); |
| 2888 } | 2888 } |
| 2889 | 2889 |
| 2890 } // namespace test_runner | 2890 } // namespace test_runner |
| OLD | NEW |