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

Side by Side Diff: components/test_runner/event_sender.cc

Issue 2054123002: Added missing pen tilt when creating PointerEvent from ME. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: Created 4 years, 6 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 "components/test_runner/event_sender.h" 5 #include "components/test_runner/event_sender.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 using blink::WebString; 54 using blink::WebString;
55 using blink::WebTouchEvent; 55 using blink::WebTouchEvent;
56 using blink::WebTouchPoint; 56 using blink::WebTouchPoint;
57 using blink::WebVector; 57 using blink::WebVector;
58 using blink::WebView; 58 using blink::WebView;
59 59
60 namespace test_runner { 60 namespace test_runner {
61 61
62 namespace { 62 namespace {
63 63
64 const int kMousePointerId = -1; 64 const int kRawMousePointerId = -1;
65 const char* kPointerTypeStringUnknown = ""; 65 const char* kPointerTypeStringUnknown = "";
66 const char* kPointerTypeStringMouse = "mouse"; 66 const char* kPointerTypeStringMouse = "mouse";
67 const char* kPointerTypeStringPen = "pen"; 67 const char* kPointerTypeStringPen = "pen";
68 const char* kPointerTypeStringTouch = "touch"; 68 const char* kPointerTypeStringTouch = "touch";
69 69
70 // Assigns |pointerType| from the provided |args|. Returns false if there was 70 // Assigns |pointerType| from the provided |args|. Returns false if there was
71 // any error. 71 // any error.
72 bool getPointerType(gin::Arguments* args, 72 bool getPointerType(gin::Arguments* args,
73 bool isOnlyMouseAndPenAllowed, 73 bool isOnlyMouseAndPenAllowed,
74 blink::WebPointerProperties::PointerType& pointerType) { 74 WebPointerProperties::PointerType& pointerType) {
75 if (args->PeekNext().IsEmpty()) 75 if (args->PeekNext().IsEmpty())
76 return true; 76 return true;
77 std::string pointer_type_string; 77 std::string pointer_type_string;
78 if (!args->GetNext(&pointer_type_string)) { 78 if (!args->GetNext(&pointer_type_string)) {
79 args->ThrowError(); 79 args->ThrowError();
80 return false; 80 return false;
81 } 81 }
82 if (isOnlyMouseAndPenAllowed && 82 if (isOnlyMouseAndPenAllowed &&
83 (pointer_type_string == kPointerTypeStringUnknown || 83 (pointer_type_string == kPointerTypeStringUnknown ||
84 pointer_type_string == kPointerTypeStringTouch)) { 84 pointer_type_string == kPointerTypeStringTouch)) {
85 args->ThrowError(); 85 args->ThrowError();
86 return false; 86 return false;
87 } 87 }
88 if (pointer_type_string == kPointerTypeStringUnknown) { 88 if (pointer_type_string == kPointerTypeStringUnknown) {
89 pointerType = WebMouseEvent::PointerType::Unknown; 89 pointerType = WebMouseEvent::PointerType::Unknown;
90 } else if (pointer_type_string == kPointerTypeStringMouse) { 90 } else if (pointer_type_string == kPointerTypeStringMouse) {
91 pointerType = WebMouseEvent::PointerType::Mouse; 91 pointerType = WebMouseEvent::PointerType::Mouse;
92 } else if (pointer_type_string == kPointerTypeStringPen) { 92 } else if (pointer_type_string == kPointerTypeStringPen) {
93 pointerType = WebMouseEvent::PointerType::Pen; 93 pointerType = WebMouseEvent::PointerType::Pen;
94 } else if (pointer_type_string == kPointerTypeStringTouch) { 94 } else if (pointer_type_string == kPointerTypeStringTouch) {
95 pointerType = WebMouseEvent::PointerType::Touch; 95 pointerType = WebMouseEvent::PointerType::Touch;
96 } else { 96 } else {
97 args->ThrowError(); 97 args->ThrowError();
98 return false; 98 return false;
99 } 99 }
100 return true; 100 return true;
101 } 101 }
102 102
103 // Assigns |pointerType| and |pointerId| from the provided |args|. Returns 103 // Parses |pointerType|, |rawPointerId|, |pressure|, |tiltX| and |tiltY| from
104 // false if there was any error. 104 // the provided |args|. Returns false if there was any error, assuming the last
105 bool getMousePenPointerTypeAndId( 105 // 3 of the five parsed parameters are optional.
106 bool getMousePenPointerProperties(
106 gin::Arguments* args, 107 gin::Arguments* args,
107 blink::WebPointerProperties::PointerType& pointerType, 108 WebPointerProperties::PointerType& pointerType,
108 int& pointerId) { 109 int& rawPointerId,
109 pointerType = blink::WebPointerProperties::PointerType::Mouse; 110 float& pressure,
110 pointerId = kMousePointerId; 111 int& tiltX,
112 int& tiltY) {
113 pointerType = WebPointerProperties::PointerType::Mouse;
114 rawPointerId = kRawMousePointerId;
115 pressure = std::numeric_limits<float>::quiet_NaN();
116 tiltX = 0;
117 tiltY = 0;
118
111 // Only allow pen or mouse through this API. 119 // Only allow pen or mouse through this API.
112 if (!getPointerType(args, false, pointerType)) 120 if (!getPointerType(args, false, pointerType))
113 return false; 121 return false;
114 if (!args->PeekNext().IsEmpty()) { 122 if (!args->PeekNext().IsEmpty()) {
115 if (!args->GetNext(&pointerId)) { 123 if (!args->GetNext(&rawPointerId)) {
116 args->ThrowError(); 124 args->ThrowError();
117 return false; 125 return false;
118 } 126 }
119 if (pointerType != blink::WebPointerProperties::PointerType::Mouse && 127
120 pointerId == kMousePointerId) { 128 // Parse optional params
121 args->ThrowError(); 129 if (!args->PeekNext().IsEmpty()) {
122 return false; 130 if (!args->GetNext(&pressure)) {
131 args->ThrowError();
132 return false;
133 }
134 if (!args->PeekNext().IsEmpty()) {
135 if (!args->GetNext(&tiltX)) {
136 args->ThrowError();
137 return false;
138 }
139 if (!args->PeekNext().IsEmpty()) {
140 if (!args->GetNext(&tiltY)) {
141 args->ThrowError();
142 return false;
143 }
144 }
145 }
123 } 146 }
124 } else if (pointerType == blink::WebPointerProperties::PointerType::Pen) {
125 pointerId = 1; // A default value for the id of the pen.
126 } 147 }
148
127 return true; 149 return true;
128 } 150 }
129 151
130 WebMouseEvent::Button GetButtonTypeFromButtonNumber(int button_code) { 152 WebMouseEvent::Button GetButtonTypeFromButtonNumber(int button_code) {
131 switch (button_code) { 153 switch (button_code) {
132 case -1: 154 case -1:
133 return WebMouseEvent::ButtonNone; 155 return WebMouseEvent::ButtonNone;
134 case 0: 156 case 0:
135 return WebMouseEvent::ButtonLeft; 157 return WebMouseEvent::ButtonLeft;
136 case 1: 158 case 1:
(...skipping 21 matching lines...) Expand all
158 } 180 }
159 181
160 const int kButtonsInModifiers = WebMouseEvent::LeftButtonDown 182 const int kButtonsInModifiers = WebMouseEvent::LeftButtonDown
161 | WebMouseEvent::MiddleButtonDown | WebMouseEvent::RightButtonDown; 183 | WebMouseEvent::MiddleButtonDown | WebMouseEvent::RightButtonDown;
162 184
163 int modifiersWithButtons(int modifiers, int buttons) { 185 int modifiersWithButtons(int modifiers, int buttons) {
164 return (modifiers & ~kButtonsInModifiers) 186 return (modifiers & ~kButtonsInModifiers)
165 | (buttons & kButtonsInModifiers); 187 | (buttons & kButtonsInModifiers);
166 } 188 }
167 189
168 void InitMouseEvent(WebInputEvent::Type t, 190 void InitMouseEventGeneric(WebInputEvent::Type t,
169 WebMouseEvent::Button b, 191 WebMouseEvent::Button b,
170 int current_buttons, 192 int current_buttons,
171 const WebPoint& pos, 193 const WebPoint& pos,
172 double time_stamp, 194 double time_stamp,
173 int click_count, 195 int click_count,
174 int modifiers, 196 int modifiers,
175 blink::WebPointerProperties::PointerType pointerType, 197 WebPointerProperties::PointerType pointerType,
176 int pointerId, 198 int pointerId,
177 WebMouseEvent* e) { 199 float pressure,
200 int tiltX,
201 int tiltY,
202 WebMouseEvent* e) {
178 e->type = t; 203 e->type = t;
179 e->button = b; 204 e->button = b;
180 e->modifiers = modifiersWithButtons(modifiers, current_buttons); 205 e->modifiers = modifiersWithButtons(modifiers, current_buttons);
181 e->x = pos.x; 206 e->x = pos.x;
182 e->y = pos.y; 207 e->y = pos.y;
183 e->globalX = pos.x; 208 e->globalX = pos.x;
184 e->globalY = pos.y; 209 e->globalY = pos.y;
185 e->pointerType = pointerType; 210 e->pointerType = pointerType;
186 e->id = pointerId; 211 e->id = pointerId;
212 e->force = pressure;
213 e->tiltX = tiltX;
214 e->tiltY = tiltY;
187 e->timeStampSeconds = time_stamp; 215 e->timeStampSeconds = time_stamp;
188 e->clickCount = click_count; 216 e->clickCount = click_count;
189 } 217 }
190 218
219 void InitMouseEvent(WebInputEvent::Type t,
220 WebMouseEvent::Button b,
221 int current_buttons,
222 const WebPoint& pos,
223 double time_stamp,
224 int click_count,
225 int modifiers,
226 WebMouseEvent* e) {
227 InitMouseEventGeneric(t, b, current_buttons, pos, time_stamp, click_count,
228 modifiers, WebPointerProperties::PointerType::Mouse, 0,
229 0.0, 0, 0, e);
230 }
231
191 void InitGestureEventFromMouseWheel(WebInputEvent::Type type, 232 void InitGestureEventFromMouseWheel(WebInputEvent::Type type,
192 double time_stamp, 233 double time_stamp,
193 const WebMouseWheelEvent& wheel_event, 234 const WebMouseWheelEvent& wheel_event,
194 WebGestureEvent* gesture_event) { 235 WebGestureEvent* gesture_event) {
195 gesture_event->type = type; 236 gesture_event->type = type;
196 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad; 237 gesture_event->sourceDevice = blink::WebGestureDeviceTouchpad;
197 gesture_event->x = wheel_event.x; 238 gesture_event->x = wheel_event.x;
198 gesture_event->y = wheel_event.y; 239 gesture_event->y = wheel_event.y;
199 gesture_event->globalX = wheel_event.globalX; 240 gesture_event->globalX = wheel_event.globalX;
200 gesture_event->globalY = wheel_event.globalY; 241 gesture_event->globalY = wheel_event.globalY;
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers, 1023 sender_->ScheduleAsynchronousKeyDown(code_str, modifiers,
983 static_cast<KeyLocationCode>(location)); 1024 static_cast<KeyLocationCode>(location));
984 } 1025 }
985 1026
986 void EventSenderBindings::MouseDown(gin::Arguments* args) { 1027 void EventSenderBindings::MouseDown(gin::Arguments* args) {
987 if (!sender_) 1028 if (!sender_)
988 return; 1029 return;
989 1030
990 int button_number = 0; 1031 int button_number = 0;
991 int modifiers = 0; 1032 int modifiers = 0;
992 blink::WebPointerProperties::PointerType pointerType =
993 blink::WebPointerProperties::PointerType::Mouse;
994 int pointerId = 0;
995 if (!args->PeekNext().IsEmpty()) { 1033 if (!args->PeekNext().IsEmpty()) {
996 if (!args->GetNext(&button_number)) { 1034 if (!args->GetNext(&button_number)) {
997 args->ThrowError(); 1035 args->ThrowError();
998 return; 1036 return;
999 } 1037 }
1000 if (!args->PeekNext().IsEmpty()) { 1038 if (!args->PeekNext().IsEmpty()) {
1001 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); 1039 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext());
1002 args->Skip(); 1040 args->Skip();
1003 } 1041 }
1004 } 1042 }
1005 1043
1006 if (!getMousePenPointerTypeAndId(args, pointerType, pointerId)) 1044 WebPointerProperties::PointerType pointerType =
1045 WebPointerProperties::PointerType::Mouse;
1046 int pointerId = 0;
1047 float pressure = 0;
1048 int tiltX = 0;
1049 int tiltY = 0;
1050 if (!getMousePenPointerProperties(args, pointerType, pointerId, pressure,
1051 tiltX, tiltY))
1007 return; 1052 return;
1008 1053
1009 sender_->PointerDown(button_number, modifiers, pointerType, pointerId); 1054 sender_->PointerDown(button_number, modifiers, pointerType, pointerId,
1055 pressure, tiltX, tiltY);
1010 } 1056 }
1011 1057
1012 void EventSenderBindings::MouseUp(gin::Arguments* args) { 1058 void EventSenderBindings::MouseUp(gin::Arguments* args) {
1013 if (!sender_) 1059 if (!sender_)
1014 return; 1060 return;
1015 1061
1016 int button_number = 0; 1062 int button_number = 0;
1017 int modifiers = 0; 1063 int modifiers = 0;
1018 blink::WebPointerProperties::PointerType pointerType =
1019 blink::WebPointerProperties::PointerType::Mouse;
1020 int pointerId = 0;
1021 if (!args->PeekNext().IsEmpty()) { 1064 if (!args->PeekNext().IsEmpty()) {
1022 if (!args->GetNext(&button_number)) { 1065 if (!args->GetNext(&button_number)) {
1023 args->ThrowError(); 1066 args->ThrowError();
1024 return; 1067 return;
1025 } 1068 }
1026 if (!args->PeekNext().IsEmpty()) { 1069 if (!args->PeekNext().IsEmpty()) {
1027 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); 1070 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext());
1028 args->Skip(); 1071 args->Skip();
1029 } 1072 }
1030 } 1073 }
1031 1074
1032 if (!getMousePenPointerTypeAndId(args, pointerType, pointerId)) 1075 WebPointerProperties::PointerType pointerType =
1076 WebPointerProperties::PointerType::Mouse;
1077 int pointerId = 0;
1078 float pressure = 0;
1079 int tiltX = 0;
1080 int tiltY = 0;
1081 if (!getMousePenPointerProperties(args, pointerType, pointerId, pressure,
1082 tiltX, tiltY))
1033 return; 1083 return;
1034 1084
1035 sender_->PointerUp(button_number, modifiers, pointerType, pointerId); 1085 sender_->PointerUp(button_number, modifiers, pointerType, pointerId, pressure,
1086 tiltX, tiltY);
1036 } 1087 }
1037 1088
1038 void EventSenderBindings::SetMouseButtonState(gin::Arguments* args) { 1089 void EventSenderBindings::SetMouseButtonState(gin::Arguments* args) {
1039 if (!sender_) 1090 if (!sender_)
1040 return; 1091 return;
1041 1092
1042 int button_number; 1093 int button_number;
1043 if (!args->GetNext(&button_number)) { 1094 if (!args->GetNext(&button_number)) {
1044 args->ThrowError(); 1095 args->ThrowError();
1045 return; 1096 return;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 } 1254 }
1204 1255
1205 EventSender::~EventSender() {} 1256 EventSender::~EventSender() {}
1206 1257
1207 void EventSender::Reset() { 1258 void EventSender::Reset() {
1208 DCHECK(current_drag_data_.isNull()); 1259 DCHECK(current_drag_data_.isNull());
1209 current_drag_data_.reset(); 1260 current_drag_data_.reset();
1210 current_drag_effect_ = blink::WebDragOperationNone; 1261 current_drag_effect_ = blink::WebDragOperationNone;
1211 current_drag_effects_allowed_ = blink::WebDragOperationNone; 1262 current_drag_effects_allowed_ = blink::WebDragOperationNone;
1212 if (view() && 1263 if (view() &&
1213 current_pointer_state_[kMousePointerId].pressed_button_ != 1264 current_pointer_state_[kRawMousePointerId].pressed_button_ !=
1214 WebMouseEvent::ButtonNone) 1265 WebMouseEvent::ButtonNone)
1215 view()->mouseCaptureLost(); 1266 view()->mouseCaptureLost();
1216 current_pointer_state_.clear(); 1267 current_pointer_state_.clear();
1217 is_drag_mode_ = true; 1268 is_drag_mode_ = true;
1218 force_layout_on_events_ = true; 1269 force_layout_on_events_ = true;
1219 1270
1220 #if defined(OS_WIN) 1271 #if defined(OS_WIN)
1221 wm_key_down_ = WM_KEYDOWN; 1272 wm_key_down_ = WM_KEYDOWN;
1222 wm_key_up_ = WM_KEYUP; 1273 wm_key_up_ = WM_KEYUP;
1223 wm_char_ = WM_CHAR; 1274 wm_char_ = WM_CHAR;
(...skipping 26 matching lines...) Expand all
1250 } 1301 }
1251 1302
1252 void EventSender::SetContextMenuData(const WebContextMenuData& data) { 1303 void EventSender::SetContextMenuData(const WebContextMenuData& data) {
1253 last_context_menu_data_.reset(new WebContextMenuData(data)); 1304 last_context_menu_data_.reset(new WebContextMenuData(data));
1254 } 1305 }
1255 1306
1256 void EventSender::DoDragDrop(const WebDragData& drag_data, 1307 void EventSender::DoDragDrop(const WebDragData& drag_data,
1257 WebDragOperationsMask mask) { 1308 WebDragOperationsMask mask) {
1258 WebMouseEvent event; 1309 WebMouseEvent event;
1259 InitMouseEvent(WebInputEvent::MouseDown, 1310 InitMouseEvent(WebInputEvent::MouseDown,
1260 current_pointer_state_[kMousePointerId].pressed_button_, 1311 current_pointer_state_[kRawMousePointerId].pressed_button_,
1261 current_pointer_state_[kMousePointerId].current_buttons_, 1312 current_pointer_state_[kRawMousePointerId].current_buttons_,
1262 current_pointer_state_[kMousePointerId].last_pos_, 1313 current_pointer_state_[kRawMousePointerId].last_pos_,
1263 GetCurrentEventTimeSec(), 1314 GetCurrentEventTimeSec(), click_count_,
1264 click_count_, 1315 current_pointer_state_[kRawMousePointerId].modifiers_, &event);
1265 current_pointer_state_[kMousePointerId].modifiers_,
1266 blink::WebPointerProperties::PointerType::Mouse,
1267 0,
1268 &event);
1269 WebPoint client_point(event.x, event.y); 1316 WebPoint client_point(event.x, event.y);
1270 WebPoint screen_point(event.globalX, event.globalY); 1317 WebPoint screen_point(event.globalX, event.globalY);
1271 current_drag_data_ = drag_data; 1318 current_drag_data_ = drag_data;
1272 current_drag_effects_allowed_ = mask; 1319 current_drag_effects_allowed_ = mask;
1273 current_drag_effect_ = view()->dragTargetDragEnter( 1320 current_drag_effect_ = view()->dragTargetDragEnter(
1274 drag_data, client_point, screen_point, current_drag_effects_allowed_, 1321 drag_data, client_point, screen_point, current_drag_effects_allowed_,
1275 modifiersWithButtons( 1322 modifiersWithButtons(
1276 current_pointer_state_[kMousePointerId].modifiers_, 1323 current_pointer_state_[kRawMousePointerId].modifiers_,
1277 current_pointer_state_[kMousePointerId].current_buttons_)); 1324 current_pointer_state_[kRawMousePointerId].current_buttons_));
1278 1325
1279 // Finish processing events. 1326 // Finish processing events.
1280 ReplaySavedEvents(); 1327 ReplaySavedEvents();
1281 } 1328 }
1282 1329
1283 void EventSender::MouseDown(int button_number, int modifiers) { 1330 void EventSender::MouseDown(int button_number, int modifiers) {
1284 PointerDown(button_number, modifiers, 1331 PointerDown(button_number, modifiers,
1285 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); 1332 WebPointerProperties::PointerType::Mouse, kRawMousePointerId, 0.0,
1333 0, 0);
1286 } 1334 }
1287 1335
1288 void EventSender::MouseUp(int button_number, int modifiers) { 1336 void EventSender::MouseUp(int button_number, int modifiers) {
1289 PointerUp(button_number, modifiers, 1337 PointerUp(button_number, modifiers, WebPointerProperties::PointerType::Mouse,
1290 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); 1338 kRawMousePointerId, 0.0, 0, 0);
1291 } 1339 }
1292 1340
1293 void EventSender::PointerDown( 1341 void EventSender::PointerDown(int button_number,
1294 int button_number, 1342 int modifiers,
1295 int modifiers, 1343 WebPointerProperties::PointerType pointerType,
1296 blink::WebPointerProperties::PointerType pointerType, 1344 int pointerId,
1297 int pointerId) { 1345 float pressure,
1346 int tiltX,
1347 int tiltY) {
1298 if (force_layout_on_events_) 1348 if (force_layout_on_events_)
1299 view()->updateAllLifecyclePhases(); 1349 view()->updateAllLifecyclePhases();
1300 1350
1301 DCHECK_NE(-1, button_number); 1351 DCHECK_NE(-1, button_number);
1302 1352
1303 WebMouseEvent::Button button_type = 1353 WebMouseEvent::Button button_type =
1304 GetButtonTypeFromButtonNumber(button_number); 1354 GetButtonTypeFromButtonNumber(button_number);
1305 1355
1306 WebMouseEvent event; 1356 WebMouseEvent event;
1307 int click_count = 0; 1357 int click_count = 0;
1308 current_pointer_state_[pointerId].pressed_button_ = button_type; 1358 current_pointer_state_[pointerId].pressed_button_ = button_type;
1309 current_pointer_state_[pointerId].current_buttons_ |= 1359 current_pointer_state_[pointerId].current_buttons_ |=
1310 GetWebMouseEventModifierForButton(button_type); 1360 GetWebMouseEventModifierForButton(button_type);
1311 current_pointer_state_[pointerId].modifiers_ = modifiers; 1361 current_pointer_state_[pointerId].modifiers_ = modifiers;
1312 1362
1313 if (pointerType == blink::WebPointerProperties::PointerType::Mouse) { 1363 if (pointerType == WebPointerProperties::PointerType::Mouse) {
1314 UpdateClickCountForButton(button_type); 1364 UpdateClickCountForButton(button_type);
1315 click_count = click_count_; 1365 click_count = click_count_;
1316 } 1366 }
1317 InitMouseEvent(WebInputEvent::MouseDown, 1367 InitMouseEventGeneric(WebInputEvent::MouseDown,
1318 current_pointer_state_[pointerId].pressed_button_, 1368 current_pointer_state_[pointerId].pressed_button_,
1319 current_pointer_state_[pointerId].current_buttons_, 1369 current_pointer_state_[pointerId].current_buttons_,
1320 current_pointer_state_[pointerId].last_pos_, 1370 current_pointer_state_[pointerId].last_pos_,
1321 GetCurrentEventTimeSec(), 1371 GetCurrentEventTimeSec(), click_count,
1322 click_count, 1372 current_pointer_state_[pointerId].modifiers_,
1323 current_pointer_state_[pointerId].modifiers_, 1373 pointerType, pointerId, pressure, tiltX, tiltY, &event);
1324 pointerType,
1325 pointerId,
1326 &event);
1327 1374
1328 HandleInputEventOnViewOrPopup(event); 1375 HandleInputEventOnViewOrPopup(event);
1329 } 1376 }
1330 1377
1331 void EventSender::PointerUp( 1378 void EventSender::PointerUp(int button_number,
1332 int button_number, 1379 int modifiers,
1333 int modifiers, 1380 WebPointerProperties::PointerType pointerType,
1334 blink::WebPointerProperties::PointerType pointerType, 1381 int pointerId,
1335 int pointerId) { 1382 float pressure,
1383 int tiltX,
1384 int tiltY) {
1336 if (force_layout_on_events_) 1385 if (force_layout_on_events_)
1337 view()->updateAllLifecyclePhases(); 1386 view()->updateAllLifecyclePhases();
1338 1387
1339 DCHECK_NE(-1, button_number); 1388 DCHECK_NE(-1, button_number);
1340 1389
1341 WebMouseEvent::Button button_type = 1390 WebMouseEvent::Button button_type =
1342 GetButtonTypeFromButtonNumber(button_number); 1391 GetButtonTypeFromButtonNumber(button_number);
1343 1392
1344 if (pointerType == blink::WebPointerProperties::PointerType::Mouse && 1393 if (pointerType == WebPointerProperties::PointerType::Mouse &&
1345 is_drag_mode_ && !replaying_saved_events_) { 1394 is_drag_mode_ && !replaying_saved_events_) {
1346 SavedEvent saved_event; 1395 SavedEvent saved_event;
1347 saved_event.type = SavedEvent::TYPE_MOUSE_UP; 1396 saved_event.type = SavedEvent::TYPE_MOUSE_UP;
1348 saved_event.button_type = button_type; 1397 saved_event.button_type = button_type;
1349 saved_event.modifiers = modifiers; 1398 saved_event.modifiers = modifiers;
1350 mouse_event_queue_.push_back(saved_event); 1399 mouse_event_queue_.push_back(saved_event);
1351 ReplaySavedEvents(); 1400 ReplaySavedEvents();
1352 } else { 1401 } else {
1353 current_pointer_state_[pointerId].current_buttons_ &= 1402 current_pointer_state_[pointerId].current_buttons_ &=
1354 ~GetWebMouseEventModifierForButton(button_type); 1403 ~GetWebMouseEventModifierForButton(button_type);
1355 current_pointer_state_[pointerId].pressed_button_ = 1404 current_pointer_state_[pointerId].pressed_button_ =
1356 WebMouseEvent::ButtonNone; 1405 WebMouseEvent::ButtonNone;
1357 1406
1358 WebMouseEvent event; 1407 WebMouseEvent event;
1359 InitMouseEvent( 1408 int click_count = pointerType == WebPointerProperties::PointerType::Mouse
1360 WebInputEvent::MouseUp, button_type, 1409 ? click_count_
1361 current_pointer_state_[pointerId].current_buttons_, 1410 : 0;
1362 current_pointer_state_[pointerId].last_pos_, GetCurrentEventTimeSec(), 1411 InitMouseEventGeneric(WebInputEvent::MouseUp, button_type,
1363 pointerType == blink::WebPointerProperties::PointerType::Mouse 1412 current_pointer_state_[pointerId].current_buttons_,
1364 ? click_count_ 1413 current_pointer_state_[pointerId].last_pos_,
1365 : 0, 1414 GetCurrentEventTimeSec(), click_count, modifiers,
1366 modifiers, pointerType, pointerId, &event); 1415 pointerType, pointerId, pressure, tiltX, tiltY,
1416 &event);
1367 HandleInputEventOnViewOrPopup(event); 1417 HandleInputEventOnViewOrPopup(event);
1368 if (pointerType == blink::WebPointerProperties::PointerType::Mouse) 1418 if (pointerType == WebPointerProperties::PointerType::Mouse)
1369 DoDragAfterMouseUp(event); 1419 DoDragAfterMouseUp(event);
1370 } 1420 }
1371 } 1421 }
1372 1422
1373 void EventSender::SetMouseButtonState(int button_number, int modifiers) { 1423 void EventSender::SetMouseButtonState(int button_number, int modifiers) {
1374 current_pointer_state_[kMousePointerId].pressed_button_ = 1424 current_pointer_state_[kRawMousePointerId].pressed_button_ =
1375 GetButtonTypeFromButtonNumber(button_number); 1425 GetButtonTypeFromButtonNumber(button_number);
1376 current_pointer_state_[kMousePointerId].current_buttons_ = 1426 current_pointer_state_[kRawMousePointerId].current_buttons_ =
1377 (modifiers == -1) 1427 (modifiers == -1)
1378 ? GetWebMouseEventModifierForButton( 1428 ? GetWebMouseEventModifierForButton(
1379 current_pointer_state_[kMousePointerId].pressed_button_) 1429 current_pointer_state_[kRawMousePointerId].pressed_button_)
1380 : modifiers & kButtonsInModifiers; 1430 : modifiers & kButtonsInModifiers;
1381 } 1431 }
1382 1432
1383 void EventSender::KeyDown(const std::string& code_str, 1433 void EventSender::KeyDown(const std::string& code_str,
1384 int modifiers, 1434 int modifiers,
1385 KeyLocationCode location) { 1435 KeyLocationCode location) {
1386 // FIXME: I'm not exactly sure how we should convert the string to a key 1436 // FIXME: I'm not exactly sure how we should convert the string to a key
1387 // event. This seems to work in the cases I tested. 1437 // event. This seems to work in the cases I tested.
1388 // FIXME: Should we also generate a KEY_UP? 1438 // FIXME: Should we also generate a KEY_UP?
1389 1439
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 // We just simulate the same behavior here. 1652 // We just simulate the same behavior here.
1603 std::string edit_command; 1653 std::string edit_command;
1604 if (GetEditCommand(event_down, &edit_command)) 1654 if (GetEditCommand(event_down, &edit_command))
1605 delegate()->SetEditCommand(edit_command, ""); 1655 delegate()->SetEditCommand(edit_command, "");
1606 1656
1607 HandleInputEventOnViewOrPopup(event_down); 1657 HandleInputEventOnViewOrPopup(event_down);
1608 1658
1609 if (code == ui::VKEY_ESCAPE && !current_drag_data_.isNull()) { 1659 if (code == ui::VKEY_ESCAPE && !current_drag_data_.isNull()) {
1610 WebMouseEvent event; 1660 WebMouseEvent event;
1611 InitMouseEvent(WebInputEvent::MouseDown, 1661 InitMouseEvent(WebInputEvent::MouseDown,
1612 current_pointer_state_[kMousePointerId].pressed_button_, 1662 current_pointer_state_[kRawMousePointerId].pressed_button_,
1613 current_pointer_state_[kMousePointerId].current_buttons_, 1663 current_pointer_state_[kRawMousePointerId].current_buttons_,
1614 current_pointer_state_[kMousePointerId].last_pos_, 1664 current_pointer_state_[kRawMousePointerId].last_pos_,
1615 GetCurrentEventTimeSec(), 1665 GetCurrentEventTimeSec(), click_count_, 0, &event);
1616 click_count_,
1617 0,
1618 blink::WebPointerProperties::PointerType::Mouse,
1619 0,
1620 &event);
1621 FinishDragAndDrop(event, blink::WebDragOperationNone); 1666 FinishDragAndDrop(event, blink::WebDragOperationNone);
1622 } 1667 }
1623 1668
1624 delegate()->ClearEditCommand(); 1669 delegate()->ClearEditCommand();
1625 1670
1626 if (generate_char) { 1671 if (generate_char) {
1627 WebKeyboardEvent event_char = event_up; 1672 WebKeyboardEvent event_char = event_up;
1628 event_char.type = WebInputEvent::Char; 1673 event_char.type = WebInputEvent::Char;
1629 // keyIdentifier is an empty string, unless the Enter key was pressed. 1674 // keyIdentifier is an empty string, unless the Enter key was pressed.
1630 // This behavior is not standard (keyIdentifier itself is not even a 1675 // This behavior is not standard (keyIdentifier itself is not even a
(...skipping 23 matching lines...) Expand all
1654 // be requested after following mouse events. 1699 // be requested after following mouse events.
1655 last_context_menu_data_.reset(); 1700 last_context_menu_data_.reset();
1656 1701
1657 // Generate right mouse down and up. 1702 // Generate right mouse down and up.
1658 WebMouseEvent event; 1703 WebMouseEvent event;
1659 // This is a hack to work around only allowing a single pressed button since 1704 // This is a hack to work around only allowing a single pressed button since
1660 // we want to test the case where both the left and right mouse buttons are 1705 // we want to test the case where both the left and right mouse buttons are
1661 // pressed. 1706 // pressed.
1662 // TODO(mustaq): This hack seems unused here! But do we need this hack at all 1707 // TODO(mustaq): This hack seems unused here! But do we need this hack at all
1663 // after adding current_buttons_. 1708 // after adding current_buttons_.
1664 if (current_pointer_state_[kMousePointerId].pressed_button_ == 1709 if (current_pointer_state_[kRawMousePointerId].pressed_button_ ==
1665 WebMouseEvent::ButtonNone) { 1710 WebMouseEvent::ButtonNone) {
1666 current_pointer_state_[kMousePointerId].pressed_button_ = 1711 current_pointer_state_[kRawMousePointerId].pressed_button_ =
1667 WebMouseEvent::ButtonRight; 1712 WebMouseEvent::ButtonRight;
1668 current_pointer_state_[kMousePointerId].current_buttons_ |= 1713 current_pointer_state_[kRawMousePointerId].current_buttons_ |=
1669 GetWebMouseEventModifierForButton( 1714 GetWebMouseEventModifierForButton(
1670 current_pointer_state_[kMousePointerId].pressed_button_); 1715 current_pointer_state_[kRawMousePointerId].pressed_button_);
1671 } 1716 }
1672 InitMouseEvent(WebInputEvent::MouseDown, 1717 InitMouseEvent(WebInputEvent::MouseDown, WebMouseEvent::ButtonRight,
1673 WebMouseEvent::ButtonRight, 1718 current_pointer_state_[kRawMousePointerId].current_buttons_,
1674 current_pointer_state_[kMousePointerId].current_buttons_, 1719 current_pointer_state_[kRawMousePointerId].last_pos_,
1675 current_pointer_state_[kMousePointerId].last_pos_, 1720 GetCurrentEventTimeSec(), click_count_, 0, &event);
1676 GetCurrentEventTimeSec(),
1677 click_count_,
1678 0,
1679 blink::WebPointerProperties::PointerType::Mouse,
1680 0,
1681 &event);
1682 HandleInputEventOnViewOrPopup(event); 1721 HandleInputEventOnViewOrPopup(event);
1683 1722
1684 #if defined(OS_WIN) 1723 #if defined(OS_WIN)
1685 current_pointer_state_[kMousePointerId].current_buttons_ &= 1724 current_pointer_state_[kRawMousePointerId].current_buttons_ &=
1686 ~GetWebMouseEventModifierForButton(WebMouseEvent::ButtonRight); 1725 ~GetWebMouseEventModifierForButton(WebMouseEvent::ButtonRight);
1687 current_pointer_state_[kMousePointerId].pressed_button_ = 1726 current_pointer_state_[kRawMousePointerId].pressed_button_ =
1688 WebMouseEvent::ButtonNone; 1727 WebMouseEvent::ButtonNone;
1689 1728
1690 InitMouseEvent(WebInputEvent::MouseUp, 1729 InitMouseEvent(WebInputEvent::MouseUp, WebMouseEvent::ButtonRight,
1691 WebMouseEvent::ButtonRight, 1730 current_pointer_state_[kRawMousePointerId].current_buttons_,
1692 current_pointer_state_[kMousePointerId].current_buttons_, 1731 current_pointer_state_[kRawMousePointerId].last_pos_,
1693 current_pointer_state_[kMousePointerId].last_pos_, 1732 GetCurrentEventTimeSec(), click_count_, 0, &event);
1694 GetCurrentEventTimeSec(),
1695 click_count_,
1696 0,
1697 blink::WebPointerProperties::PointerType::Mouse,
1698 0,
1699 &event);
1700 HandleInputEventOnViewOrPopup(event); 1733 HandleInputEventOnViewOrPopup(event);
1701 #endif 1734 #endif
1702 1735
1703 std::vector<std::string> menu_items = 1736 std::vector<std::string> menu_items =
1704 MakeMenuItemStringsFor(last_context_menu_data_.get(), delegate()); 1737 MakeMenuItemStringsFor(last_context_menu_data_.get(), delegate());
1705 last_context_menu_data_.reset(); 1738 last_context_menu_data_.reset();
1706 return menu_items; 1739 return menu_items;
1707 } 1740 }
1708 1741
1709 void EventSender::TextZoomIn() { 1742 void EventSender::TextZoomIn() {
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 } 1949 }
1917 1950
1918 void EventSender::NotifyStartOfTouchScroll() { 1951 void EventSender::NotifyStartOfTouchScroll() {
1919 WebTouchEvent event; 1952 WebTouchEvent event;
1920 event.type = WebInputEvent::TouchScrollStarted; 1953 event.type = WebInputEvent::TouchScrollStarted;
1921 HandleInputEventOnViewOrPopup(event); 1954 HandleInputEventOnViewOrPopup(event);
1922 } 1955 }
1923 1956
1924 void EventSender::LeapForward(int milliseconds) { 1957 void EventSender::LeapForward(int milliseconds) {
1925 if (is_drag_mode_ && 1958 if (is_drag_mode_ &&
1926 current_pointer_state_[kMousePointerId].pressed_button_ == 1959 current_pointer_state_[kRawMousePointerId].pressed_button_ ==
1927 WebMouseEvent::ButtonLeft && 1960 WebMouseEvent::ButtonLeft &&
1928 !replaying_saved_events_) { 1961 !replaying_saved_events_) {
1929 SavedEvent saved_event; 1962 SavedEvent saved_event;
1930 saved_event.type = SavedEvent::TYPE_LEAP_FORWARD; 1963 saved_event.type = SavedEvent::TYPE_LEAP_FORWARD;
1931 saved_event.milliseconds = milliseconds; 1964 saved_event.milliseconds = milliseconds;
1932 mouse_event_queue_.push_back(saved_event); 1965 mouse_event_queue_.push_back(saved_event);
1933 } else { 1966 } else {
1934 DoLeapForward(milliseconds); 1967 DoLeapForward(milliseconds);
1935 } 1968 }
1936 } 1969 }
(...skipping 16 matching lines...) Expand all
1953 item.storageType = WebDragData::Item::StorageTypeFilename; 1986 item.storageType = WebDragData::Item::StorageTypeFilename;
1954 item.filenameData = delegate()->GetAbsoluteWebStringFromUTF8Path(files[i]); 1987 item.filenameData = delegate()->GetAbsoluteWebStringFromUTF8Path(files[i]);
1955 current_drag_data_.addItem(item); 1988 current_drag_data_.addItem(item);
1956 absolute_filenames[i] = item.filenameData; 1989 absolute_filenames[i] = item.filenameData;
1957 } 1990 }
1958 current_drag_data_.setFilesystemId( 1991 current_drag_data_.setFilesystemId(
1959 delegate()->RegisterIsolatedFileSystem(absolute_filenames)); 1992 delegate()->RegisterIsolatedFileSystem(absolute_filenames));
1960 current_drag_effects_allowed_ = blink::WebDragOperationCopy; 1993 current_drag_effects_allowed_ = blink::WebDragOperationCopy;
1961 1994
1962 // Provide a drag source. 1995 // Provide a drag source.
1963 view()->dragTargetDragEnter(current_drag_data_, 1996 view()->dragTargetDragEnter(
1964 current_pointer_state_[kMousePointerId].last_pos_, 1997 current_drag_data_, current_pointer_state_[kRawMousePointerId].last_pos_,
1965 current_pointer_state_[kMousePointerId].last_pos_, 1998 current_pointer_state_[kRawMousePointerId].last_pos_,
1966 current_drag_effects_allowed_, 0); 1999 current_drag_effects_allowed_, 0);
1967 // |is_drag_mode_| saves events and then replays them later. We don't 2000 // |is_drag_mode_| saves events and then replays them later. We don't
1968 // need/want that. 2001 // need/want that.
1969 is_drag_mode_ = false; 2002 is_drag_mode_ = false;
1970 2003
1971 // Make the rest of eventSender think a drag is in progress. 2004 // Make the rest of eventSender think a drag is in progress.
1972 current_pointer_state_[kMousePointerId].pressed_button_ = 2005 current_pointer_state_[kRawMousePointerId].pressed_button_ =
1973 WebMouseEvent::ButtonLeft; 2006 WebMouseEvent::ButtonLeft;
1974 current_pointer_state_[kMousePointerId].current_buttons_ |= 2007 current_pointer_state_[kRawMousePointerId].current_buttons_ |=
1975 GetWebMouseEventModifierForButton( 2008 GetWebMouseEventModifierForButton(
1976 current_pointer_state_[kMousePointerId].pressed_button_); 2009 current_pointer_state_[kRawMousePointerId].pressed_button_);
1977 } 2010 }
1978 2011
1979 void EventSender::AddTouchPoint(float x, float y, gin::Arguments* args) { 2012 void EventSender::AddTouchPoint(float x, float y, gin::Arguments* args) {
1980 WebTouchPoint touch_point; 2013 WebTouchPoint touch_point;
1981 touch_point.pointerType = WebPointerProperties::PointerType::Touch; 2014 touch_point.pointerType = WebPointerProperties::PointerType::Touch;
1982 touch_point.state = WebTouchPoint::StatePressed; 2015 touch_point.state = WebTouchPoint::StatePressed;
1983 touch_point.position = WebFloatPoint(x, y); 2016 touch_point.position = WebFloatPoint(x, y);
1984 touch_point.screenPosition = touch_point.position; 2017 touch_point.screenPosition = touch_point.position;
1985 2018
1986 int highest_id = -1; 2019 int highest_id = -1;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2066 SendGesturesForMouseWheelEvent(wheel_event); 2099 SendGesturesForMouseWheelEvent(wheel_event);
2067 } 2100 }
2068 } 2101 }
2069 2102
2070 void EventSender::MouseMoveTo(gin::Arguments* args) { 2103 void EventSender::MouseMoveTo(gin::Arguments* args) {
2071 if (force_layout_on_events_) 2104 if (force_layout_on_events_)
2072 view()->updateAllLifecyclePhases(); 2105 view()->updateAllLifecyclePhases();
2073 2106
2074 double x; 2107 double x;
2075 double y; 2108 double y;
2076 blink::WebPointerProperties::PointerType pointerType =
2077 blink::WebPointerProperties::PointerType::Mouse;
2078 int pointerId = 0;
2079 if (!args->GetNext(&x) || !args->GetNext(&y)) { 2109 if (!args->GetNext(&x) || !args->GetNext(&y)) {
2080 args->ThrowError(); 2110 args->ThrowError();
2081 return; 2111 return;
2082 } 2112 }
2083 WebPoint mouse_pos(static_cast<int>(x), static_cast<int>(y)); 2113 WebPoint mouse_pos(static_cast<int>(x), static_cast<int>(y));
2084 2114
2085 int modifiers = 0; 2115 int modifiers = 0;
2086 if (!args->PeekNext().IsEmpty()) { 2116 if (!args->PeekNext().IsEmpty()) {
2087 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); 2117 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext());
2088 args->Skip(); 2118 args->Skip();
2089 } 2119 }
2090 2120
2091 if (!getMousePenPointerTypeAndId(args, pointerType, pointerId)) 2121 WebPointerProperties::PointerType pointerType =
2122 WebPointerProperties::PointerType::Mouse;
2123 int pointerId = 0;
2124 float pressure = 0;
2125 int tiltX = 0;
2126 int tiltY = 0;
2127 if (!getMousePenPointerProperties(args, pointerType, pointerId, pressure,
2128 tiltX, tiltY))
2092 return; 2129 return;
2093 2130
2094 if (pointerType == blink::WebPointerProperties::PointerType::Mouse && 2131 if (pointerType == WebPointerProperties::PointerType::Mouse &&
2095 is_drag_mode_ && !replaying_saved_events_ && 2132 is_drag_mode_ && !replaying_saved_events_ &&
2096 current_pointer_state_[kMousePointerId].pressed_button_ == 2133 current_pointer_state_[kRawMousePointerId].pressed_button_ ==
2097 WebMouseEvent::ButtonLeft) { 2134 WebMouseEvent::ButtonLeft) {
2098 SavedEvent saved_event; 2135 SavedEvent saved_event;
2099 saved_event.type = SavedEvent::TYPE_MOUSE_MOVE; 2136 saved_event.type = SavedEvent::TYPE_MOUSE_MOVE;
2100 saved_event.pos = mouse_pos; 2137 saved_event.pos = mouse_pos;
2101 saved_event.modifiers = modifiers; 2138 saved_event.modifiers = modifiers;
2102 mouse_event_queue_.push_back(saved_event); 2139 mouse_event_queue_.push_back(saved_event);
2103 } else { 2140 } else {
2104 current_pointer_state_[pointerId].last_pos_ = mouse_pos; 2141 current_pointer_state_[pointerId].last_pos_ = mouse_pos;
2105 WebMouseEvent event; 2142 WebMouseEvent event;
2106 InitMouseEvent( 2143 int click_count = pointerType == WebPointerProperties::PointerType::Mouse
2144 ? click_count_
2145 : 0;
2146 InitMouseEventGeneric(
2107 WebInputEvent::MouseMove, 2147 WebInputEvent::MouseMove,
2108 current_pointer_state_[kMousePointerId].pressed_button_, 2148 current_pointer_state_[kRawMousePointerId].pressed_button_,
2109 current_pointer_state_[kMousePointerId].current_buttons_, 2149 current_pointer_state_[kRawMousePointerId].current_buttons_, mouse_pos,
2110 mouse_pos, 2150 GetCurrentEventTimeSec(), click_count, modifiers, pointerType,
2111 GetCurrentEventTimeSec(), 2151 pointerId, pressure, tiltX, tiltY, &event);
2112 pointerType == blink::WebPointerProperties::PointerType::Mouse
2113 ? click_count_
2114 : 0,
2115 modifiers,
2116 pointerType,
2117 pointerId,
2118 &event);
2119 HandleInputEventOnViewOrPopup(event); 2152 HandleInputEventOnViewOrPopup(event);
2120 if (pointerType == blink::WebPointerProperties::PointerType::Mouse) 2153 if (pointerType == WebPointerProperties::PointerType::Mouse)
2121 DoDragAfterMouseMove(event); 2154 DoDragAfterMouseMove(event);
2122 } 2155 }
2123 } 2156 }
2124 2157
2125 void EventSender::MouseLeave() { 2158 void EventSender::MouseLeave() {
2126 if (force_layout_on_events_) 2159 if (force_layout_on_events_)
2127 view()->updateAllLifecyclePhases(); 2160 view()->updateAllLifecyclePhases();
2128 2161
2129 WebMouseEvent event; 2162 WebMouseEvent event;
2130 InitMouseEvent(WebInputEvent::MouseLeave, 2163 InitMouseEvent(WebInputEvent::MouseLeave, WebMouseEvent::ButtonNone, 0,
2131 WebMouseEvent::ButtonNone, 2164 current_pointer_state_[kRawMousePointerId].last_pos_,
2132 0, 2165 GetCurrentEventTimeSec(), click_count_, 0, &event);
2133 current_pointer_state_[kMousePointerId].last_pos_,
2134 GetCurrentEventTimeSec(),
2135 click_count_,
2136 0,
2137 blink::WebPointerProperties::PointerType::Mouse,
2138 0,
2139 &event);
2140 HandleInputEventOnViewOrPopup(event); 2166 HandleInputEventOnViewOrPopup(event);
2141 } 2167 }
2142 2168
2143 2169
2144 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) { 2170 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) {
2145 delegate()->PostTask(new WebCallbackTask( 2171 delegate()->PostTask(new WebCallbackTask(
2146 base::Bind(&EventSender::MouseDown, weak_factory_.GetWeakPtr(), 2172 base::Bind(&EventSender::MouseDown, weak_factory_.GetWeakPtr(),
2147 button_number, modifiers))); 2173 button_number, modifiers)));
2148 delegate()->PostTask(new WebCallbackTask( 2174 delegate()->PostTask(new WebCallbackTask(
2149 base::Bind(&EventSender::MouseUp, weak_factory_.GetWeakPtr(), 2175 base::Bind(&EventSender::MouseUp, weak_factory_.GetWeakPtr(),
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
2448 2474
2449 if (force_layout_on_events_) 2475 if (force_layout_on_events_)
2450 view()->updateAllLifecyclePhases(); 2476 view()->updateAllLifecyclePhases();
2451 2477
2452 WebInputEventResult result = HandleInputEventOnViewOrPopup(event); 2478 WebInputEventResult result = HandleInputEventOnViewOrPopup(event);
2453 2479
2454 // Long press might start a drag drop session. Complete it if so. 2480 // Long press might start a drag drop session. Complete it if so.
2455 if (type == WebInputEvent::GestureLongPress && !current_drag_data_.isNull()) { 2481 if (type == WebInputEvent::GestureLongPress && !current_drag_data_.isNull()) {
2456 WebMouseEvent mouse_event; 2482 WebMouseEvent mouse_event;
2457 InitMouseEvent(WebInputEvent::MouseDown, 2483 InitMouseEvent(WebInputEvent::MouseDown,
2458 current_pointer_state_[kMousePointerId].pressed_button_, 2484 current_pointer_state_[kRawMousePointerId].pressed_button_,
2459 current_pointer_state_[kMousePointerId].current_buttons_, 2485 current_pointer_state_[kRawMousePointerId].current_buttons_,
2460 WebPoint(x, y), GetCurrentEventTimeSec(), 2486 WebPoint(x, y), GetCurrentEventTimeSec(), click_count_,
2461 click_count_, 2487 current_pointer_state_[kRawMousePointerId].modifiers_,
2462 current_pointer_state_[kMousePointerId].modifiers_,
2463 blink::WebPointerProperties::PointerType::Mouse,
2464 0,
2465 &mouse_event); 2488 &mouse_event);
2466 2489
2467 FinishDragAndDrop(mouse_event, blink::WebDragOperationNone); 2490 FinishDragAndDrop(mouse_event, blink::WebDragOperationNone);
2468 } 2491 }
2469 args->Return(result != WebInputEventResult::NotHandled); 2492 args->Return(result != WebInputEventResult::NotHandled);
2470 } 2493 }
2471 2494
2472 void EventSender::UpdateClickCountForButton( 2495 void EventSender::UpdateClickCountForButton(
2473 WebMouseEvent::Button button_type) { 2496 WebMouseEvent::Button button_type) {
2474 if ((GetCurrentEventTimeSec() - last_click_time_sec_ < 2497 if ((GetCurrentEventTimeSec() - last_click_time_sec_ <
2475 kMultipleClickTimeSec) && 2498 kMultipleClickTimeSec) &&
2476 (!OutsideMultiClickRadius( 2499 (!OutsideMultiClickRadius(
2477 current_pointer_state_[kMousePointerId].last_pos_, 2500 current_pointer_state_[kRawMousePointerId].last_pos_,
2478 last_click_pos_)) && 2501 last_click_pos_)) &&
2479 (button_type == last_button_type_)) { 2502 (button_type == last_button_type_)) {
2480 ++click_count_; 2503 ++click_count_;
2481 } else { 2504 } else {
2482 click_count_ = 1; 2505 click_count_ = 1;
2483 last_button_type_ = button_type; 2506 last_button_type_ = button_type;
2484 } 2507 }
2485 } 2508 }
2486 2509
2487 void EventSender::InitMouseWheelEvent(gin::Arguments* args, 2510 void EventSender::InitMouseWheelEvent(gin::Arguments* args,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2522 } 2545 }
2523 } 2546 }
2524 } 2547 }
2525 } 2548 }
2526 if (can_scroll && send_wheel_gestures_) { 2549 if (can_scroll && send_wheel_gestures_) {
2527 can_scroll = false; 2550 can_scroll = false;
2528 *send_gestures = true; 2551 *send_gestures = true;
2529 } 2552 }
2530 2553
2531 InitMouseEvent(WebInputEvent::MouseWheel, 2554 InitMouseEvent(WebInputEvent::MouseWheel,
2532 current_pointer_state_[kMousePointerId].pressed_button_, 2555 current_pointer_state_[kRawMousePointerId].pressed_button_,
2533 current_pointer_state_[kMousePointerId].current_buttons_, 2556 current_pointer_state_[kRawMousePointerId].current_buttons_,
2534 current_pointer_state_[kMousePointerId].last_pos_, 2557 current_pointer_state_[kRawMousePointerId].last_pos_,
2535 GetCurrentEventTimeSec(), 2558 GetCurrentEventTimeSec(), click_count_, modifiers, event);
2536 click_count_,
2537 modifiers,
2538 blink::WebPointerProperties::PointerType::Mouse,
2539 0,
2540 event);
2541 event->wheelTicksX = static_cast<float>(horizontal); 2559 event->wheelTicksX = static_cast<float>(horizontal);
2542 event->wheelTicksY = static_cast<float>(vertical); 2560 event->wheelTicksY = static_cast<float>(vertical);
2543 event->deltaX = event->wheelTicksX; 2561 event->deltaX = event->wheelTicksX;
2544 event->deltaY = event->wheelTicksY; 2562 event->deltaY = event->wheelTicksY;
2545 event->scrollByPage = paged; 2563 event->scrollByPage = paged;
2546 event->hasPreciseScrollingDeltas = has_precise_scrolling_deltas; 2564 event->hasPreciseScrollingDeltas = has_precise_scrolling_deltas;
2547 event->canScroll = can_scroll; 2565 event->canScroll = can_scroll;
2548 if (scroll_type == MouseScrollType::PIXEL) { 2566 if (scroll_type == MouseScrollType::PIXEL) {
2549 event->wheelTicksX /= kScrollbarPixelsPerTick; 2567 event->wheelTicksX /= kScrollbarPixelsPerTick;
2550 event->wheelTicksY /= kScrollbarPixelsPerTick; 2568 event->wheelTicksY /= kScrollbarPixelsPerTick;
2551 } else { 2569 } else {
2552 event->deltaX *= kScrollbarPixelsPerTick; 2570 event->deltaX *= kScrollbarPixelsPerTick;
2553 event->deltaY *= kScrollbarPixelsPerTick; 2571 event->deltaY *= kScrollbarPixelsPerTick;
2554 } 2572 }
2555 } 2573 }
2556 2574
2557 // Radius fields radius_x and radius_y should eventually be moved to 2575 // Radius fields radius_x and radius_y should eventually be moved to
2558 // WebPointerProperties. 2576 // WebPointerProperties.
2559 // TODO(e_hakkinen): Drop radius_{x,y}_pointer parameters once that happens. 2577 // TODO(e_hakkinen): Drop radius_{x,y}_pointer parameters once that happens.
2560 void EventSender::InitPointerProperties(gin::Arguments* args, 2578 void EventSender::InitPointerProperties(gin::Arguments* args,
2561 blink::WebPointerProperties* e, 2579 WebPointerProperties* e,
2562 float* radius_x_pointer, 2580 float* radius_x_pointer,
2563 float* radius_y_pointer) { 2581 float* radius_y_pointer) {
2564 if (!args->PeekNext().IsEmpty()) { 2582 if (!args->PeekNext().IsEmpty()) {
2565 double radius_x; 2583 double radius_x;
2566 if (!args->GetNext(&radius_x)) { 2584 if (!args->GetNext(&radius_x)) {
2567 args->ThrowError(); 2585 args->ThrowError();
2568 return; 2586 return;
2569 } 2587 }
2570 2588
2571 double radius_y = radius_x; 2589 double radius_y = radius_x;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2616 view()->dragTargetDragLeave(); 2634 view()->dragTargetDragLeave();
2617 } 2635 }
2618 view()->dragSourceEndedAt(client_point, screen_point, current_drag_effect_); 2636 view()->dragSourceEndedAt(client_point, screen_point, current_drag_effect_);
2619 view()->dragSourceSystemDragEnded(); 2637 view()->dragSourceSystemDragEnded();
2620 2638
2621 current_drag_data_.reset(); 2639 current_drag_data_.reset();
2622 } 2640 }
2623 2641
2624 void EventSender::DoDragAfterMouseUp(const WebMouseEvent& e) { 2642 void EventSender::DoDragAfterMouseUp(const WebMouseEvent& e) {
2625 last_click_time_sec_ = e.timeStampSeconds; 2643 last_click_time_sec_ = e.timeStampSeconds;
2626 last_click_pos_ = current_pointer_state_[kMousePointerId].last_pos_; 2644 last_click_pos_ = current_pointer_state_[kRawMousePointerId].last_pos_;
2627 2645
2628 // If we're in a drag operation, complete it. 2646 // If we're in a drag operation, complete it.
2629 if (current_drag_data_.isNull()) 2647 if (current_drag_data_.isNull())
2630 return; 2648 return;
2631 2649
2632 WebPoint client_point(e.x, e.y); 2650 WebPoint client_point(e.x, e.y);
2633 WebPoint screen_point(e.globalX, e.globalY); 2651 WebPoint screen_point(e.globalX, e.globalY);
2634 blink::WebDragOperation drag_effect = view()->dragTargetDragOver( 2652 blink::WebDragOperation drag_effect = view()->dragTargetDragOver(
2635 client_point, screen_point, current_drag_effects_allowed_, e.modifiers); 2653 client_point, screen_point, current_drag_effects_allowed_, e.modifiers);
2636 2654
2637 // Bail if dragover caused cancellation. 2655 // Bail if dragover caused cancellation.
2638 if (current_drag_data_.isNull()) 2656 if (current_drag_data_.isNull())
2639 return; 2657 return;
2640 2658
2641 FinishDragAndDrop(e, drag_effect); 2659 FinishDragAndDrop(e, drag_effect);
2642 } 2660 }
2643 2661
2644 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& e) { 2662 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& e) {
2645 if (current_pointer_state_[kMousePointerId].pressed_button_ == 2663 if (current_pointer_state_[kRawMousePointerId].pressed_button_ ==
2646 WebMouseEvent::ButtonNone || 2664 WebMouseEvent::ButtonNone ||
2647 current_drag_data_.isNull()) { 2665 current_drag_data_.isNull()) {
2648 return; 2666 return;
2649 } 2667 }
2650 2668
2651 WebPoint client_point(e.x, e.y); 2669 WebPoint client_point(e.x, e.y);
2652 WebPoint screen_point(e.globalX, e.globalY); 2670 WebPoint screen_point(e.globalX, e.globalY);
2653 current_drag_effect_ = view()->dragTargetDragOver( 2671 current_drag_effect_ = view()->dragTargetDragOver(
2654 client_point, screen_point, current_drag_effects_allowed_, e.modifiers); 2672 client_point, screen_point, current_drag_effects_allowed_, e.modifiers);
2655 } 2673 }
2656 2674
2657 void EventSender::ReplaySavedEvents() { 2675 void EventSender::ReplaySavedEvents() {
2658 replaying_saved_events_ = true; 2676 replaying_saved_events_ = true;
2659 while (!mouse_event_queue_.empty()) { 2677 while (!mouse_event_queue_.empty()) {
2660 SavedEvent e = mouse_event_queue_.front(); 2678 SavedEvent e = mouse_event_queue_.front();
2661 mouse_event_queue_.pop_front(); 2679 mouse_event_queue_.pop_front();
2662 2680
2663 switch (e.type) { 2681 switch (e.type) {
2664 case SavedEvent::TYPE_MOUSE_MOVE: { 2682 case SavedEvent::TYPE_MOUSE_MOVE: {
2665 WebMouseEvent event; 2683 WebMouseEvent event;
2666 InitMouseEvent( 2684 InitMouseEvent(
2667 WebInputEvent::MouseMove, 2685 WebInputEvent::MouseMove,
2668 current_pointer_state_[kMousePointerId].pressed_button_, 2686 current_pointer_state_[kRawMousePointerId].pressed_button_,
2669 current_pointer_state_[kMousePointerId].current_buttons_, 2687 current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos,
2670 e.pos, 2688 GetCurrentEventTimeSec(), click_count_, e.modifiers, &event);
2671 GetCurrentEventTimeSec(), 2689 current_pointer_state_[kRawMousePointerId].last_pos_ =
2672 click_count_,
2673 e.modifiers,
2674 blink::WebPointerProperties::PointerType::Mouse,
2675 0,
2676 &event);
2677 current_pointer_state_[kMousePointerId].last_pos_ =
2678 WebPoint(event.x, event.y); 2690 WebPoint(event.x, event.y);
2679 HandleInputEventOnViewOrPopup(event); 2691 HandleInputEventOnViewOrPopup(event);
2680 DoDragAfterMouseMove(event); 2692 DoDragAfterMouseMove(event);
2681 break; 2693 break;
2682 } 2694 }
2683 case SavedEvent::TYPE_LEAP_FORWARD: 2695 case SavedEvent::TYPE_LEAP_FORWARD:
2684 DoLeapForward(e.milliseconds); 2696 DoLeapForward(e.milliseconds);
2685 break; 2697 break;
2686 case SavedEvent::TYPE_MOUSE_UP: { 2698 case SavedEvent::TYPE_MOUSE_UP: {
2687 current_pointer_state_[kMousePointerId].current_buttons_ &= 2699 current_pointer_state_[kRawMousePointerId].current_buttons_ &=
2688 ~GetWebMouseEventModifierForButton(e.button_type); 2700 ~GetWebMouseEventModifierForButton(e.button_type);
2689 current_pointer_state_[kMousePointerId].pressed_button_ = 2701 current_pointer_state_[kRawMousePointerId].pressed_button_ =
2690 WebMouseEvent::ButtonNone; 2702 WebMouseEvent::ButtonNone;
2691 2703
2692 WebMouseEvent event; 2704 WebMouseEvent event;
2693 InitMouseEvent(WebInputEvent::MouseUp, 2705 InitMouseEvent(
2694 e.button_type, 2706 WebInputEvent::MouseUp, e.button_type,
2695 current_pointer_state_[kMousePointerId].current_buttons_, 2707 current_pointer_state_[kRawMousePointerId].current_buttons_,
2696 current_pointer_state_[kMousePointerId].last_pos_, 2708 current_pointer_state_[kRawMousePointerId].last_pos_,
2697 GetCurrentEventTimeSec(), 2709 GetCurrentEventTimeSec(), click_count_, e.modifiers, &event);
2698 click_count_,
2699 e.modifiers,
2700 blink::WebPointerProperties::PointerType::Mouse,
2701 0,
2702 &event);
2703 HandleInputEventOnViewOrPopup(event); 2710 HandleInputEventOnViewOrPopup(event);
2704 DoDragAfterMouseUp(event); 2711 DoDragAfterMouseUp(event);
2705 break; 2712 break;
2706 } 2713 }
2707 default: 2714 default:
2708 NOTREACHED(); 2715 NOTREACHED();
2709 } 2716 }
2710 } 2717 }
2711 2718
2712 replaying_saved_events_ = false; 2719 replaying_saved_events_ = false;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
2790 2797
2791 const blink::WebView* EventSender::view() const { 2798 const blink::WebView* EventSender::view() const {
2792 return web_test_proxy_base_->web_view(); 2799 return web_test_proxy_base_->web_view();
2793 } 2800 }
2794 2801
2795 blink::WebView* EventSender::view() { 2802 blink::WebView* EventSender::view() {
2796 return web_test_proxy_base_->web_view(); 2803 return web_test_proxy_base_->web_view();
2797 } 2804 }
2798 2805
2799 } // namespace test_runner 2806 } // namespace test_runner
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698