Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(494)

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

Issue 2782893002: WebMouseEvent coordinates are now fractional & private (Closed)
Patch Set: Rebased, fixed a comment in web_input_event_builders_mac.mm Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 int current_buttons, 217 int current_buttons,
218 const WebPoint& pos, 218 const WebPoint& pos,
219 int click_count, 219 int click_count,
220 WebPointerProperties::PointerType pointerType, 220 WebPointerProperties::PointerType pointerType,
221 int pointerId, 221 int pointerId,
222 float pressure, 222 float pressure,
223 int tiltX, 223 int tiltX,
224 int tiltY, 224 int tiltY,
225 WebMouseEvent* e) { 225 WebMouseEvent* e) {
226 e->button = b; 226 e->button = b;
227 e->x = pos.x; 227 e->setPositionInWidget(pos.x, pos.y);
228 e->y = pos.y; 228 e->setPositionInScreen(pos.x, pos.y);
229 e->globalX = pos.x;
230 e->globalY = pos.y;
231 e->pointerType = pointerType; 229 e->pointerType = pointerType;
232 e->id = pointerId; 230 e->id = pointerId;
233 e->force = pressure; 231 e->force = pressure;
234 e->tiltX = tiltX; 232 e->tiltX = tiltX;
235 e->tiltY = tiltY; 233 e->tiltY = tiltY;
236 e->clickCount = click_count; 234 e->clickCount = click_count;
237 } 235 }
238 236
239 void InitMouseEvent(WebMouseEvent::Button b, 237 void InitMouseEvent(WebMouseEvent::Button b,
240 int current_buttons, 238 int current_buttons,
241 const WebPoint& pos, 239 const WebPoint& pos,
242 int click_count, 240 int click_count,
243 WebMouseEvent* e) { 241 WebMouseEvent* e) {
244 InitMouseEventGeneric(b, current_buttons, pos, click_count, 242 InitMouseEventGeneric(b, current_buttons, pos, click_count,
245 WebPointerProperties::PointerType::Mouse, 0, 0.0, 0, 0, 243 WebPointerProperties::PointerType::Mouse, 0, 0.0, 0, 0,
246 e); 244 e);
247 } 245 }
248 246
249 void InitGestureEventFromMouseWheel(const WebMouseWheelEvent& wheel_event, 247 void InitGestureEventFromMouseWheel(const WebMouseWheelEvent& wheel_event,
250 WebGestureEvent* gesture_event) { 248 WebGestureEvent* gesture_event) {
251 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad; 249 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad;
252 gesture_event->x = wheel_event.x; 250 gesture_event->x = wheel_event.positionInWidget().x;
253 gesture_event->y = wheel_event.y; 251 gesture_event->y = wheel_event.positionInWidget().y;
254 gesture_event->globalX = wheel_event.globalX; 252 gesture_event->globalX = wheel_event.positionInScreen().x;
255 gesture_event->globalY = wheel_event.globalY; 253 gesture_event->globalY = wheel_event.positionInScreen().y;
256 } 254 }
257 255
258 int GetKeyModifier(const std::string& modifier_name) { 256 int GetKeyModifier(const std::string& modifier_name) {
259 const char* characters = modifier_name.c_str(); 257 const char* characters = modifier_name.c_str();
260 if (!strcmp(characters, "ctrlKey") 258 if (!strcmp(characters, "ctrlKey")
261 #ifndef __APPLE__ 259 #ifndef __APPLE__
262 || !strcmp(characters, "addSelectionKey") 260 || !strcmp(characters, "addSelectionKey")
263 #endif 261 #endif
264 ) { 262 ) {
265 return WebInputEvent::ControlKey; 263 return WebInputEvent::ControlKey;
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 current_pointer_state_[kRawMousePointerId].current_buttons_, 1352 current_pointer_state_[kRawMousePointerId].current_buttons_,
1355 current_pointer_state_[kRawMousePointerId].last_pos_, 1353 current_pointer_state_[kRawMousePointerId].last_pos_,
1356 click_count_, &raw_event); 1354 click_count_, &raw_event);
1357 1355
1358 std::unique_ptr<WebInputEvent> widget_event = 1356 std::unique_ptr<WebInputEvent> widget_event =
1359 TransformScreenToWidgetCoordinates(raw_event); 1357 TransformScreenToWidgetCoordinates(raw_event);
1360 const WebMouseEvent* event = 1358 const WebMouseEvent* event =
1361 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) 1359 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get())
1362 : &raw_event; 1360 : &raw_event;
1363 1361
1364 WebPoint client_point(event->x, event->y); 1362 WebPoint client_point(event->positionInWidget().x,
1365 WebPoint screen_point(event->globalX, event->globalY); 1363 event->positionInWidget().y);
1364 WebPoint screen_point(event->positionInScreen().x,
1365 event->positionInScreen().y);
1366 current_drag_data_ = drag_data; 1366 current_drag_data_ = drag_data;
1367 current_drag_effects_allowed_ = mask; 1367 current_drag_effects_allowed_ = mask;
1368 current_drag_effect_ = mainFrameWidget()->dragTargetDragEnter( 1368 current_drag_effect_ = mainFrameWidget()->dragTargetDragEnter(
1369 drag_data, client_point, screen_point, current_drag_effects_allowed_, 1369 drag_data, client_point, screen_point, current_drag_effects_allowed_,
1370 modifiersWithButtons( 1370 modifiersWithButtons(
1371 current_pointer_state_[kRawMousePointerId].modifiers_, 1371 current_pointer_state_[kRawMousePointerId].modifiers_,
1372 current_pointer_state_[kRawMousePointerId].current_buttons_)); 1372 current_pointer_state_[kRawMousePointerId].current_buttons_));
1373 1373
1374 // Finish processing events. 1374 // Finish processing events.
1375 ReplaySavedEvents(); 1375 ReplaySavedEvents();
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2663 } 2663 }
2664 2664
2665 void EventSender::FinishDragAndDrop(const WebMouseEvent& raw_event, 2665 void EventSender::FinishDragAndDrop(const WebMouseEvent& raw_event,
2666 blink::WebDragOperation drag_effect) { 2666 blink::WebDragOperation drag_effect) {
2667 std::unique_ptr<WebInputEvent> widget_event = 2667 std::unique_ptr<WebInputEvent> widget_event =
2668 TransformScreenToWidgetCoordinates(raw_event); 2668 TransformScreenToWidgetCoordinates(raw_event);
2669 const WebMouseEvent* event = 2669 const WebMouseEvent* event =
2670 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) 2670 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get())
2671 : &raw_event; 2671 : &raw_event;
2672 2672
2673 WebPoint client_point(event->x, event->y); 2673 WebPoint client_point(event->positionInWidget().x,
2674 WebPoint screen_point(event->globalX, event->globalY); 2674 event->positionInWidget().y);
2675 WebPoint screen_point(event->positionInScreen().x,
2676 event->positionInScreen().y);
2675 current_drag_effect_ = drag_effect; 2677 current_drag_effect_ = drag_effect;
2676 if (current_drag_effect_) { 2678 if (current_drag_effect_) {
2677 // Specifically pass any keyboard modifiers to the drop method. This allows 2679 // Specifically pass any keyboard modifiers to the drop method. This allows
2678 // tests to control the drop type (i.e. copy or move). 2680 // tests to control the drop type (i.e. copy or move).
2679 mainFrameWidget()->dragTargetDrop(current_drag_data_, client_point, 2681 mainFrameWidget()->dragTargetDrop(current_drag_data_, client_point,
2680 screen_point, event->modifiers()); 2682 screen_point, event->modifiers());
2681 } else { 2683 } else {
2682 mainFrameWidget()->dragTargetDragLeave(blink::WebPoint(), 2684 mainFrameWidget()->dragTargetDragLeave(blink::WebPoint(),
2683 blink::WebPoint()); 2685 blink::WebPoint());
2684 } 2686 }
(...skipping 10 matching lines...) Expand all
2695 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) 2697 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get())
2696 : &raw_event; 2698 : &raw_event;
2697 2699
2698 last_click_time_sec_ = event->timeStampSeconds(); 2700 last_click_time_sec_ = event->timeStampSeconds();
2699 last_click_pos_ = current_pointer_state_[kRawMousePointerId].last_pos_; 2701 last_click_pos_ = current_pointer_state_[kRawMousePointerId].last_pos_;
2700 2702
2701 // If we're in a drag operation, complete it. 2703 // If we're in a drag operation, complete it.
2702 if (current_drag_data_.isNull()) 2704 if (current_drag_data_.isNull())
2703 return; 2705 return;
2704 2706
2705 WebPoint client_point(event->x, event->y); 2707 WebPoint client_point(event->positionInWidget().x,
2706 WebPoint screen_point(event->globalX, event->globalY); 2708 event->positionInWidget().y);
2709 WebPoint screen_point(event->positionInScreen().x,
2710 event->positionInScreen().y);
2707 blink::WebDragOperation drag_effect = mainFrameWidget()->dragTargetDragOver( 2711 blink::WebDragOperation drag_effect = mainFrameWidget()->dragTargetDragOver(
2708 client_point, screen_point, current_drag_effects_allowed_, 2712 client_point, screen_point, current_drag_effects_allowed_,
2709 event->modifiers()); 2713 event->modifiers());
2710 2714
2711 // Bail if dragover caused cancellation. 2715 // Bail if dragover caused cancellation.
2712 if (current_drag_data_.isNull()) 2716 if (current_drag_data_.isNull())
2713 return; 2717 return;
2714 2718
2715 FinishDragAndDrop(raw_event, drag_effect); 2719 FinishDragAndDrop(raw_event, drag_effect);
2716 } 2720 }
2717 2721
2718 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& raw_event) { 2722 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& raw_event) {
2719 if (current_pointer_state_[kRawMousePointerId].pressed_button_ == 2723 if (current_pointer_state_[kRawMousePointerId].pressed_button_ ==
2720 WebMouseEvent::Button::NoButton || 2724 WebMouseEvent::Button::NoButton ||
2721 current_drag_data_.isNull()) { 2725 current_drag_data_.isNull()) {
2722 return; 2726 return;
2723 } 2727 }
2724 2728
2725 std::unique_ptr<WebInputEvent> widget_event = 2729 std::unique_ptr<WebInputEvent> widget_event =
2726 TransformScreenToWidgetCoordinates(raw_event); 2730 TransformScreenToWidgetCoordinates(raw_event);
2727 const WebMouseEvent* event = 2731 const WebMouseEvent* event =
2728 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get()) 2732 widget_event.get() ? static_cast<WebMouseEvent*>(widget_event.get())
2729 : &raw_event; 2733 : &raw_event;
2730 2734
2731 WebPoint client_point(event->x, event->y); 2735 WebPoint client_point(event->positionInWidget().x,
2732 WebPoint screen_point(event->globalX, event->globalY); 2736 event->positionInWidget().y);
2737 WebPoint screen_point(event->positionInScreen().x,
2738 event->positionInScreen().y);
2733 current_drag_effect_ = mainFrameWidget()->dragTargetDragOver( 2739 current_drag_effect_ = mainFrameWidget()->dragTargetDragOver(
2734 client_point, screen_point, current_drag_effects_allowed_, 2740 client_point, screen_point, current_drag_effects_allowed_,
2735 event->modifiers()); 2741 event->modifiers());
2736 } 2742 }
2737 2743
2738 void EventSender::ReplaySavedEvents() { 2744 void EventSender::ReplaySavedEvents() {
2739 replaying_saved_events_ = true; 2745 replaying_saved_events_ = true;
2740 while (!mouse_event_queue_.empty()) { 2746 while (!mouse_event_queue_.empty()) {
2741 SavedEvent e = mouse_event_queue_.front(); 2747 SavedEvent e = mouse_event_queue_.front();
2742 mouse_event_queue_.pop_front(); 2748 mouse_event_queue_.pop_front();
2743 2749
2744 switch (e.type) { 2750 switch (e.type) {
2745 case SavedEvent::TYPE_MOUSE_MOVE: { 2751 case SavedEvent::TYPE_MOUSE_MOVE: {
2746 current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers; 2752 current_pointer_state_[kRawMousePointerId].modifiers_ = e.modifiers;
2747 WebMouseEvent event(WebInputEvent::MouseMove, 2753 WebMouseEvent event(WebInputEvent::MouseMove,
2748 ModifiersForPointer(kRawMousePointerId), 2754 ModifiersForPointer(kRawMousePointerId),
2749 GetCurrentEventTimeSec()); 2755 GetCurrentEventTimeSec());
2750 InitMouseEvent( 2756 InitMouseEvent(
2751 current_pointer_state_[kRawMousePointerId].pressed_button_, 2757 current_pointer_state_[kRawMousePointerId].pressed_button_,
2752 current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos, 2758 current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos,
2753 click_count_, &event); 2759 click_count_, &event);
2754 current_pointer_state_[kRawMousePointerId].last_pos_ = 2760 current_pointer_state_[kRawMousePointerId].last_pos_ =
2755 WebPoint(event.x, event.y); 2761 WebPoint(event.positionInWidget().x, event.positionInWidget().y);
2756 HandleInputEventOnViewOrPopup(event); 2762 HandleInputEventOnViewOrPopup(event);
2757 DoDragAfterMouseMove(event); 2763 DoDragAfterMouseMove(event);
2758 break; 2764 break;
2759 } 2765 }
2760 case SavedEvent::TYPE_LEAP_FORWARD: 2766 case SavedEvent::TYPE_LEAP_FORWARD:
2761 DoLeapForward(e.milliseconds); 2767 DoLeapForward(e.milliseconds);
2762 break; 2768 break;
2763 case SavedEvent::TYPE_MOUSE_UP: { 2769 case SavedEvent::TYPE_MOUSE_UP: {
2764 current_pointer_state_[kRawMousePointerId].current_buttons_ &= 2770 current_pointer_state_[kRawMousePointerId].current_buttons_ &=
2765 ~GetWebMouseEventModifierForButton(e.button_type); 2771 ~GetWebMouseEventModifierForButton(e.button_type);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
2892 return view()->mainFrame()->toWebLocalFrame()->frameWidget(); 2898 return view()->mainFrame()->toWebLocalFrame()->frameWidget();
2893 } 2899 }
2894 2900
2895 std::unique_ptr<WebInputEvent> EventSender::TransformScreenToWidgetCoordinates( 2901 std::unique_ptr<WebInputEvent> EventSender::TransformScreenToWidgetCoordinates(
2896 const WebInputEvent& event) { 2902 const WebInputEvent& event) {
2897 return delegate()->TransformScreenToWidgetCoordinates( 2903 return delegate()->TransformScreenToWidgetCoordinates(
2898 web_widget_test_proxy_base_, event); 2904 web_widget_test_proxy_base_, event);
2899 } 2905 }
2900 2906
2901 } // namespace test_runner 2907 } // namespace test_runner
OLDNEW
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.cc ('k') | content/shell/test_runner/test_plugin.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698