Chromium Code Reviews

Side by Side Diff: content/shell/test_runner/event_sender.cc

Issue 2782893002: WebMouseEvent coordinates are now fractional & private (Closed)
Patch Set: Fixed compile failures. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
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...)
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...)
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...)
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...)
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...)
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
OLDNEW

Powered by Google App Engine