Chromium Code Reviews| 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 "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 10 matching lines...) Expand all Loading... | |
| 21 #include "components/test_runner/web_task.h" | 21 #include "components/test_runner/web_task.h" |
| 22 #include "components/test_runner/web_test_delegate.h" | 22 #include "components/test_runner/web_test_delegate.h" |
| 23 #include "components/test_runner/web_test_proxy.h" | 23 #include "components/test_runner/web_test_proxy.h" |
| 24 #include "gin/handle.h" | 24 #include "gin/handle.h" |
| 25 #include "gin/object_template_builder.h" | 25 #include "gin/object_template_builder.h" |
| 26 #include "gin/wrappable.h" | 26 #include "gin/wrappable.h" |
| 27 #include "third_party/WebKit/public/platform/WebPointerProperties.h" | 27 #include "third_party/WebKit/public/platform/WebPointerProperties.h" |
| 28 #include "third_party/WebKit/public/platform/WebString.h" | 28 #include "third_party/WebKit/public/platform/WebString.h" |
| 29 #include "third_party/WebKit/public/platform/WebVector.h" | 29 #include "third_party/WebKit/public/platform/WebVector.h" |
| 30 #include "third_party/WebKit/public/web/WebContextMenuData.h" | 30 #include "third_party/WebKit/public/web/WebContextMenuData.h" |
| 31 #include "third_party/WebKit/public/web/WebFrame.h" | |
| 32 #include "third_party/WebKit/public/web/WebKit.h" | 31 #include "third_party/WebKit/public/web/WebKit.h" |
| 32 #include "third_party/WebKit/public/web/WebLocalFrame.h" | |
| 33 #include "third_party/WebKit/public/web/WebPagePopup.h" | 33 #include "third_party/WebKit/public/web/WebPagePopup.h" |
| 34 #include "third_party/WebKit/public/web/WebView.h" | 34 #include "third_party/WebKit/public/web/WebView.h" |
| 35 #include "ui/events/keycodes/dom/keycode_converter.h" | 35 #include "ui/events/keycodes/dom/keycode_converter.h" |
| 36 #include "ui/events/keycodes/keyboard_codes.h" | 36 #include "ui/events/keycodes/keyboard_codes.h" |
| 37 #include "v8/include/v8.h" | 37 #include "v8/include/v8.h" |
| 38 | 38 |
| 39 using blink::WebContextMenuData; | 39 using blink::WebContextMenuData; |
| 40 using blink::WebDragData; | 40 using blink::WebDragData; |
| 41 using blink::WebDragOperationsMask; | 41 using blink::WebDragOperationsMask; |
| 42 using blink::WebFloatPoint; | 42 using blink::WebFloatPoint; |
| 43 using blink::WebFrame; | |
| 44 using blink::WebGestureEvent; | 43 using blink::WebGestureEvent; |
| 45 using blink::WebInputEvent; | 44 using blink::WebInputEvent; |
| 46 using blink::WebInputEventResult; | 45 using blink::WebInputEventResult; |
| 47 using blink::WebKeyboardEvent; | 46 using blink::WebKeyboardEvent; |
| 47 using blink::WebLocalFrame; | |
| 48 using blink::WebMenuItemInfo; | 48 using blink::WebMenuItemInfo; |
| 49 using blink::WebMouseEvent; | 49 using blink::WebMouseEvent; |
| 50 using blink::WebMouseWheelEvent; | 50 using blink::WebMouseWheelEvent; |
| 51 using blink::WebPagePopup; | 51 using blink::WebPagePopup; |
| 52 using blink::WebPoint; | 52 using blink::WebPoint; |
| 53 using blink::WebPointerProperties; | 53 using blink::WebPointerProperties; |
| 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; |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 471 const char* kSourceDeviceStringTouchpad = "touchpad"; | 471 const char* kSourceDeviceStringTouchpad = "touchpad"; |
| 472 const char* kSourceDeviceStringTouchscreen = "touchscreen"; | 472 const char* kSourceDeviceStringTouchscreen = "touchscreen"; |
| 473 | 473 |
| 474 } // namespace | 474 } // namespace |
| 475 | 475 |
| 476 class EventSenderBindings : public gin::Wrappable<EventSenderBindings> { | 476 class EventSenderBindings : public gin::Wrappable<EventSenderBindings> { |
| 477 public: | 477 public: |
| 478 static gin::WrapperInfo kWrapperInfo; | 478 static gin::WrapperInfo kWrapperInfo; |
| 479 | 479 |
| 480 static void Install(base::WeakPtr<EventSender> sender, | 480 static void Install(base::WeakPtr<EventSender> sender, |
| 481 blink::WebFrame* frame); | 481 blink::WebLocalFrame* frame); |
| 482 | 482 |
| 483 private: | 483 private: |
| 484 explicit EventSenderBindings(base::WeakPtr<EventSender> sender); | 484 explicit EventSenderBindings(base::WeakPtr<EventSender> sender); |
| 485 ~EventSenderBindings() override; | 485 ~EventSenderBindings() override; |
| 486 | 486 |
| 487 // gin::Wrappable: | 487 // gin::Wrappable: |
| 488 gin::ObjectTemplateBuilder GetObjectTemplateBuilder( | 488 gin::ObjectTemplateBuilder GetObjectTemplateBuilder( |
| 489 v8::Isolate* isolate) override; | 489 v8::Isolate* isolate) override; |
| 490 | 490 |
| 491 // Bound methods: | 491 // Bound methods: |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 590 gin::WrapperInfo EventSenderBindings::kWrapperInfo = {gin::kEmbedderNativeGin}; | 590 gin::WrapperInfo EventSenderBindings::kWrapperInfo = {gin::kEmbedderNativeGin}; |
| 591 | 591 |
| 592 EventSenderBindings::EventSenderBindings(base::WeakPtr<EventSender> sender) | 592 EventSenderBindings::EventSenderBindings(base::WeakPtr<EventSender> sender) |
| 593 : sender_(sender) { | 593 : sender_(sender) { |
| 594 } | 594 } |
| 595 | 595 |
| 596 EventSenderBindings::~EventSenderBindings() {} | 596 EventSenderBindings::~EventSenderBindings() {} |
| 597 | 597 |
| 598 // static | 598 // static |
| 599 void EventSenderBindings::Install(base::WeakPtr<EventSender> sender, | 599 void EventSenderBindings::Install(base::WeakPtr<EventSender> sender, |
| 600 WebFrame* frame) { | 600 WebLocalFrame* frame) { |
| 601 v8::Isolate* isolate = blink::mainThreadIsolate(); | 601 v8::Isolate* isolate = blink::mainThreadIsolate(); |
| 602 v8::HandleScope handle_scope(isolate); | 602 v8::HandleScope handle_scope(isolate); |
| 603 v8::Local<v8::Context> context = frame->mainWorldScriptContext(); | 603 v8::Local<v8::Context> context = frame->mainWorldScriptContext(); |
| 604 if (context.IsEmpty()) | 604 if (context.IsEmpty()) |
| 605 return; | 605 return; |
| 606 | 606 |
| 607 v8::Context::Scope context_scope(context); | 607 v8::Context::Scope context_scope(context); |
| 608 | 608 |
| 609 gin::Handle<EventSenderBindings> bindings = | 609 gin::Handle<EventSenderBindings> bindings = |
| 610 gin::CreateHandle(isolate, new EventSenderBindings(sender)); | 610 gin::CreateHandle(isolate, new EventSenderBindings(sender)); |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1188 | 1188 |
| 1189 WebMouseEvent::Button EventSender::last_button_type_ = | 1189 WebMouseEvent::Button EventSender::last_button_type_ = |
| 1190 WebMouseEvent::ButtonNone; | 1190 WebMouseEvent::ButtonNone; |
| 1191 | 1191 |
| 1192 EventSender::SavedEvent::SavedEvent() | 1192 EventSender::SavedEvent::SavedEvent() |
| 1193 : type(TYPE_UNSPECIFIED), | 1193 : type(TYPE_UNSPECIFIED), |
| 1194 button_type(WebMouseEvent::ButtonNone), | 1194 button_type(WebMouseEvent::ButtonNone), |
| 1195 milliseconds(0), | 1195 milliseconds(0), |
| 1196 modifiers(0) {} | 1196 modifiers(0) {} |
| 1197 | 1197 |
| 1198 EventSender::EventSender(TestInterfaces* interfaces) | 1198 EventSender::EventSender(WebTestProxyBase* web_test_proxy_base) |
| 1199 : | 1199 : web_test_proxy_base_(web_test_proxy_base), |
| 1200 #if defined(OS_WIN) | |
| 1201 wm_key_down_(0), | |
| 1202 wm_key_up_(0), | |
| 1203 wm_char_(0), | |
| 1204 wm_dead_char_(0), | |
| 1205 wm_sys_key_down_(0), | |
| 1206 wm_sys_key_up_(0), | |
| 1207 wm_sys_char_(0), | |
| 1208 wm_sys_dead_char_(0), | |
| 1209 #endif | |
| 1210 interfaces_(interfaces), | |
| 1211 delegate_(NULL), | |
| 1212 view_(NULL), | |
| 1213 send_wheel_gestures_(false), | 1200 send_wheel_gestures_(false), |
| 1214 force_layout_on_events_(false), | |
| 1215 is_drag_mode_(true), | |
| 1216 touch_modifiers_(0), | |
| 1217 touch_cancelable_(true), | |
| 1218 replaying_saved_events_(false), | 1201 replaying_saved_events_(false), |
| 1219 current_drag_effects_allowed_(blink::WebDragOperationNone), | |
| 1220 last_click_time_sec_(0), | |
| 1221 current_drag_effect_(blink::WebDragOperationNone), | |
| 1222 time_offset_ms_(0), | |
| 1223 click_count_(0), | |
|
Łukasz Anforowicz
2016/04/21 23:01:45
All of the removed initializers above are already
| |
| 1224 weak_factory_(this) { | 1202 weak_factory_(this) { |
| 1203 Reset(); | |
| 1225 } | 1204 } |
| 1226 | 1205 |
| 1227 EventSender::~EventSender() {} | 1206 EventSender::~EventSender() {} |
| 1228 | 1207 |
| 1229 void EventSender::Reset() { | 1208 void EventSender::Reset() { |
| 1230 DCHECK(current_drag_data_.isNull()); | 1209 DCHECK(current_drag_data_.isNull()); |
| 1231 current_drag_data_.reset(); | 1210 current_drag_data_.reset(); |
| 1232 current_drag_effect_ = blink::WebDragOperationNone; | 1211 current_drag_effect_ = blink::WebDragOperationNone; |
| 1233 current_drag_effects_allowed_ = blink::WebDragOperationNone; | 1212 current_drag_effects_allowed_ = blink::WebDragOperationNone; |
| 1234 if (view_ && | 1213 if (view() && |
| 1235 current_pointer_state_[kMousePointerId].pressed_button_ != | 1214 current_pointer_state_[kMousePointerId].pressed_button_ != |
| 1236 WebMouseEvent::ButtonNone) | 1215 WebMouseEvent::ButtonNone) |
| 1237 view_->mouseCaptureLost(); | 1216 view()->mouseCaptureLost(); |
| 1238 current_pointer_state_.clear(); | 1217 current_pointer_state_.clear(); |
| 1239 is_drag_mode_ = true; | 1218 is_drag_mode_ = true; |
| 1240 force_layout_on_events_ = true; | 1219 force_layout_on_events_ = true; |
| 1241 | 1220 |
| 1242 #if defined(OS_WIN) | 1221 #if defined(OS_WIN) |
| 1243 wm_key_down_ = WM_KEYDOWN; | 1222 wm_key_down_ = WM_KEYDOWN; |
| 1244 wm_key_up_ = WM_KEYUP; | 1223 wm_key_up_ = WM_KEYUP; |
| 1245 wm_char_ = WM_CHAR; | 1224 wm_char_ = WM_CHAR; |
| 1246 wm_dead_char_ = WM_DEADCHAR; | 1225 wm_dead_char_ = WM_DEADCHAR; |
| 1247 wm_sys_key_down_ = WM_SYSKEYDOWN; | 1226 wm_sys_key_down_ = WM_SYSKEYDOWN; |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1260 mouse_event_queue_.clear(); | 1239 mouse_event_queue_.clear(); |
| 1261 | 1240 |
| 1262 time_offset_ms_ = 0; | 1241 time_offset_ms_ = 0; |
| 1263 click_count_ = 0; | 1242 click_count_ = 0; |
| 1264 | 1243 |
| 1265 touch_modifiers_ = 0; | 1244 touch_modifiers_ = 0; |
| 1266 touch_cancelable_ = true; | 1245 touch_cancelable_ = true; |
| 1267 touch_points_.clear(); | 1246 touch_points_.clear(); |
| 1268 } | 1247 } |
| 1269 | 1248 |
| 1270 void EventSender::Install(WebFrame* frame) { | 1249 void EventSender::Install(WebLocalFrame* frame) { |
| 1271 EventSenderBindings::Install(weak_factory_.GetWeakPtr(), frame); | 1250 EventSenderBindings::Install(weak_factory_.GetWeakPtr(), frame); |
| 1272 } | 1251 } |
| 1273 | 1252 |
| 1274 void EventSender::SetDelegate(WebTestDelegate* delegate) { | |
| 1275 delegate_ = delegate; | |
| 1276 } | |
| 1277 | |
| 1278 void EventSender::SetWebView(WebView* view) { | |
| 1279 view_ = view; | |
| 1280 } | |
| 1281 | |
| 1282 void EventSender::SetContextMenuData(const WebContextMenuData& data) { | 1253 void EventSender::SetContextMenuData(const WebContextMenuData& data) { |
| 1283 last_context_menu_data_.reset(new WebContextMenuData(data)); | 1254 last_context_menu_data_.reset(new WebContextMenuData(data)); |
| 1284 } | 1255 } |
| 1285 | 1256 |
| 1286 void EventSender::DoDragDrop(const WebDragData& drag_data, | 1257 void EventSender::DoDragDrop(const WebDragData& drag_data, |
| 1287 WebDragOperationsMask mask) { | 1258 WebDragOperationsMask mask) { |
| 1288 WebMouseEvent event; | 1259 WebMouseEvent event; |
| 1289 InitMouseEvent(WebInputEvent::MouseDown, | 1260 InitMouseEvent(WebInputEvent::MouseDown, |
| 1290 current_pointer_state_[kMousePointerId].pressed_button_, | 1261 current_pointer_state_[kMousePointerId].pressed_button_, |
| 1291 current_pointer_state_[kMousePointerId].current_buttons_, | 1262 current_pointer_state_[kMousePointerId].current_buttons_, |
| 1292 current_pointer_state_[kMousePointerId].last_pos_, | 1263 current_pointer_state_[kMousePointerId].last_pos_, |
| 1293 GetCurrentEventTimeSec(), | 1264 GetCurrentEventTimeSec(), |
| 1294 click_count_, | 1265 click_count_, |
| 1295 current_pointer_state_[kMousePointerId].modifiers_, | 1266 current_pointer_state_[kMousePointerId].modifiers_, |
| 1296 blink::WebPointerProperties::PointerType::Mouse, | 1267 blink::WebPointerProperties::PointerType::Mouse, |
| 1297 0, | 1268 0, |
| 1298 &event); | 1269 &event); |
| 1299 WebPoint client_point(event.x, event.y); | 1270 WebPoint client_point(event.x, event.y); |
| 1300 WebPoint screen_point(event.globalX, event.globalY); | 1271 WebPoint screen_point(event.globalX, event.globalY); |
| 1301 current_drag_data_ = drag_data; | 1272 current_drag_data_ = drag_data; |
| 1302 current_drag_effects_allowed_ = mask; | 1273 current_drag_effects_allowed_ = mask; |
| 1303 current_drag_effect_ = view_->dragTargetDragEnter( | 1274 current_drag_effect_ = view()->dragTargetDragEnter( |
| 1304 drag_data, | 1275 drag_data, client_point, screen_point, current_drag_effects_allowed_, |
| 1305 client_point, | |
| 1306 screen_point, | |
| 1307 current_drag_effects_allowed_, | |
| 1308 modifiersWithButtons( | 1276 modifiersWithButtons( |
| 1309 current_pointer_state_[kMousePointerId].modifiers_, | 1277 current_pointer_state_[kMousePointerId].modifiers_, |
| 1310 current_pointer_state_[kMousePointerId].current_buttons_)); | 1278 current_pointer_state_[kMousePointerId].current_buttons_)); |
| 1311 | 1279 |
| 1312 // Finish processing events. | 1280 // Finish processing events. |
| 1313 ReplaySavedEvents(); | 1281 ReplaySavedEvents(); |
| 1314 } | 1282 } |
| 1315 | 1283 |
| 1316 void EventSender::MouseDown(int button_number, int modifiers) { | 1284 void EventSender::MouseDown(int button_number, int modifiers) { |
| 1317 PointerDown(button_number, modifiers, | 1285 PointerDown(button_number, modifiers, |
| 1318 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); | 1286 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); |
| 1319 } | 1287 } |
| 1320 | 1288 |
| 1321 void EventSender::MouseUp(int button_number, int modifiers) { | 1289 void EventSender::MouseUp(int button_number, int modifiers) { |
| 1322 PointerUp(button_number, modifiers, | 1290 PointerUp(button_number, modifiers, |
| 1323 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); | 1291 blink::WebPointerProperties::PointerType::Mouse, kMousePointerId); |
| 1324 } | 1292 } |
| 1325 | 1293 |
| 1326 void EventSender::PointerDown( | 1294 void EventSender::PointerDown( |
| 1327 int button_number, | 1295 int button_number, |
| 1328 int modifiers, | 1296 int modifiers, |
| 1329 blink::WebPointerProperties::PointerType pointerType, | 1297 blink::WebPointerProperties::PointerType pointerType, |
| 1330 int pointerId) { | 1298 int pointerId) { |
| 1331 if (force_layout_on_events_) | 1299 if (force_layout_on_events_) |
| 1332 view_->updateAllLifecyclePhases(); | 1300 view()->updateAllLifecyclePhases(); |
| 1333 | 1301 |
| 1334 DCHECK_NE(-1, button_number); | 1302 DCHECK_NE(-1, button_number); |
| 1335 | 1303 |
| 1336 WebMouseEvent::Button button_type = | 1304 WebMouseEvent::Button button_type = |
| 1337 GetButtonTypeFromButtonNumber(button_number); | 1305 GetButtonTypeFromButtonNumber(button_number); |
| 1338 | 1306 |
| 1339 WebMouseEvent event; | 1307 WebMouseEvent event; |
| 1340 int click_count = 0; | 1308 int click_count = 0; |
| 1341 current_pointer_state_[pointerId].pressed_button_ = button_type; | 1309 current_pointer_state_[pointerId].pressed_button_ = button_type; |
| 1342 current_pointer_state_[pointerId].current_buttons_ |= | 1310 current_pointer_state_[pointerId].current_buttons_ |= |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1360 | 1328 |
| 1361 HandleInputEventOnViewOrPopup(event); | 1329 HandleInputEventOnViewOrPopup(event); |
| 1362 } | 1330 } |
| 1363 | 1331 |
| 1364 void EventSender::PointerUp( | 1332 void EventSender::PointerUp( |
| 1365 int button_number, | 1333 int button_number, |
| 1366 int modifiers, | 1334 int modifiers, |
| 1367 blink::WebPointerProperties::PointerType pointerType, | 1335 blink::WebPointerProperties::PointerType pointerType, |
| 1368 int pointerId) { | 1336 int pointerId) { |
| 1369 if (force_layout_on_events_) | 1337 if (force_layout_on_events_) |
| 1370 view_->updateAllLifecyclePhases(); | 1338 view()->updateAllLifecyclePhases(); |
| 1371 | 1339 |
| 1372 DCHECK_NE(-1, button_number); | 1340 DCHECK_NE(-1, button_number); |
| 1373 | 1341 |
| 1374 WebMouseEvent::Button button_type = | 1342 WebMouseEvent::Button button_type = |
| 1375 GetButtonTypeFromButtonNumber(button_number); | 1343 GetButtonTypeFromButtonNumber(button_number); |
| 1376 | 1344 |
| 1377 if (pointerType == blink::WebPointerProperties::PointerType::Mouse && | 1345 if (pointerType == blink::WebPointerProperties::PointerType::Mouse && |
| 1378 is_drag_mode_ && !replaying_saved_events_) { | 1346 is_drag_mode_ && !replaying_saved_events_) { |
| 1379 SavedEvent saved_event; | 1347 SavedEvent saved_event; |
| 1380 saved_event.type = SavedEvent::TYPE_MOUSE_UP; | 1348 saved_event.type = SavedEvent::TYPE_MOUSE_UP; |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1587 event_down.modifiers |= WebInputEvent::IsKeyPad; | 1555 event_down.modifiers |= WebInputEvent::IsKeyPad; |
| 1588 break; | 1556 break; |
| 1589 } | 1557 } |
| 1590 | 1558 |
| 1591 WebKeyboardEvent event_up; | 1559 WebKeyboardEvent event_up; |
| 1592 event_up = event_down; | 1560 event_up = event_down; |
| 1593 event_up.type = WebInputEvent::KeyUp; | 1561 event_up.type = WebInputEvent::KeyUp; |
| 1594 // EventSender.m forces a layout here, with at least one | 1562 // EventSender.m forces a layout here, with at least one |
| 1595 // test (fast/forms/focus-control-to-page.html) relying on this. | 1563 // test (fast/forms/focus-control-to-page.html) relying on this. |
| 1596 if (force_layout_on_events_) | 1564 if (force_layout_on_events_) |
| 1597 view_->updateAllLifecyclePhases(); | 1565 view()->updateAllLifecyclePhases(); |
| 1598 | 1566 |
| 1599 // In the browser, if a keyboard event corresponds to an editor command, | 1567 // In the browser, if a keyboard event corresponds to an editor command, |
| 1600 // the command will be dispatched to the renderer just before dispatching | 1568 // the command will be dispatched to the renderer just before dispatching |
| 1601 // the keyboard event, and then it will be executed in the | 1569 // the keyboard event, and then it will be executed in the |
| 1602 // RenderView::handleCurrentKeyboardEvent() method. | 1570 // RenderView::handleCurrentKeyboardEvent() method. |
| 1603 // We just simulate the same behavior here. | 1571 // We just simulate the same behavior here. |
| 1604 std::string edit_command; | 1572 std::string edit_command; |
| 1605 if (GetEditCommand(event_down, &edit_command)) | 1573 if (GetEditCommand(event_down, &edit_command)) |
| 1606 delegate_->SetEditCommand(edit_command, ""); | 1574 delegate()->SetEditCommand(edit_command, ""); |
| 1607 | 1575 |
| 1608 HandleInputEventOnViewOrPopup(event_down); | 1576 HandleInputEventOnViewOrPopup(event_down); |
| 1609 | 1577 |
| 1610 if (code == ui::VKEY_ESCAPE && !current_drag_data_.isNull()) { | 1578 if (code == ui::VKEY_ESCAPE && !current_drag_data_.isNull()) { |
| 1611 WebMouseEvent event; | 1579 WebMouseEvent event; |
| 1612 InitMouseEvent(WebInputEvent::MouseDown, | 1580 InitMouseEvent(WebInputEvent::MouseDown, |
| 1613 current_pointer_state_[kMousePointerId].pressed_button_, | 1581 current_pointer_state_[kMousePointerId].pressed_button_, |
| 1614 current_pointer_state_[kMousePointerId].current_buttons_, | 1582 current_pointer_state_[kMousePointerId].current_buttons_, |
| 1615 current_pointer_state_[kMousePointerId].last_pos_, | 1583 current_pointer_state_[kMousePointerId].last_pos_, |
| 1616 GetCurrentEventTimeSec(), | 1584 GetCurrentEventTimeSec(), |
| 1617 click_count_, | 1585 click_count_, |
| 1618 0, | 1586 0, |
| 1619 blink::WebPointerProperties::PointerType::Mouse, | 1587 blink::WebPointerProperties::PointerType::Mouse, |
| 1620 0, | 1588 0, |
| 1621 &event); | 1589 &event); |
| 1622 FinishDragAndDrop(event, blink::WebDragOperationNone); | 1590 FinishDragAndDrop(event, blink::WebDragOperationNone); |
| 1623 } | 1591 } |
| 1624 | 1592 |
| 1625 delegate_->ClearEditCommand(); | 1593 delegate()->ClearEditCommand(); |
| 1626 | 1594 |
| 1627 if (generate_char) { | 1595 if (generate_char) { |
| 1628 WebKeyboardEvent event_char = event_up; | 1596 WebKeyboardEvent event_char = event_up; |
| 1629 event_char.type = WebInputEvent::Char; | 1597 event_char.type = WebInputEvent::Char; |
| 1630 // keyIdentifier is an empty string, unless the Enter key was pressed. | 1598 // keyIdentifier is an empty string, unless the Enter key was pressed. |
| 1631 // This behavior is not standard (keyIdentifier itself is not even a | 1599 // This behavior is not standard (keyIdentifier itself is not even a |
| 1632 // standard any more), but it matches the actual behavior in Blink. | 1600 // standard any more), but it matches the actual behavior in Blink. |
| 1633 if (code != ui::VKEY_RETURN) | 1601 if (code != ui::VKEY_RETURN) |
| 1634 event_char.keyIdentifier[0] = '\0'; | 1602 event_char.keyIdentifier[0] = '\0'; |
| 1635 HandleInputEventOnViewOrPopup(event_char); | 1603 HandleInputEventOnViewOrPopup(event_char); |
| 1636 } | 1604 } |
| 1637 | 1605 |
| 1638 HandleInputEventOnViewOrPopup(event_up); | 1606 HandleInputEventOnViewOrPopup(event_up); |
| 1639 } | 1607 } |
| 1640 | 1608 |
| 1641 void EventSender::EnableDOMUIEventLogging() {} | 1609 void EventSender::EnableDOMUIEventLogging() {} |
| 1642 | 1610 |
| 1643 void EventSender::FireKeyboardEventsToElement() {} | 1611 void EventSender::FireKeyboardEventsToElement() {} |
| 1644 | 1612 |
| 1645 void EventSender::ClearKillRing() {} | 1613 void EventSender::ClearKillRing() {} |
| 1646 | 1614 |
| 1647 std::vector<std::string> EventSender::ContextClick() { | 1615 std::vector<std::string> EventSender::ContextClick() { |
| 1648 if (force_layout_on_events_) { | 1616 if (force_layout_on_events_) { |
| 1649 view_->updateAllLifecyclePhases(); | 1617 view()->updateAllLifecyclePhases(); |
| 1650 } | 1618 } |
| 1651 | 1619 |
| 1652 UpdateClickCountForButton(WebMouseEvent::ButtonRight); | 1620 UpdateClickCountForButton(WebMouseEvent::ButtonRight); |
| 1653 | 1621 |
| 1654 // Clears last context menu data because we need to know if the context menu | 1622 // Clears last context menu data because we need to know if the context menu |
| 1655 // be requested after following mouse events. | 1623 // be requested after following mouse events. |
| 1656 last_context_menu_data_.reset(); | 1624 last_context_menu_data_.reset(); |
| 1657 | 1625 |
| 1658 // Generate right mouse down and up. | 1626 // Generate right mouse down and up. |
| 1659 WebMouseEvent event; | 1627 WebMouseEvent event; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1695 GetCurrentEventTimeSec(), | 1663 GetCurrentEventTimeSec(), |
| 1696 click_count_, | 1664 click_count_, |
| 1697 0, | 1665 0, |
| 1698 blink::WebPointerProperties::PointerType::Mouse, | 1666 blink::WebPointerProperties::PointerType::Mouse, |
| 1699 0, | 1667 0, |
| 1700 &event); | 1668 &event); |
| 1701 HandleInputEventOnViewOrPopup(event); | 1669 HandleInputEventOnViewOrPopup(event); |
| 1702 #endif | 1670 #endif |
| 1703 | 1671 |
| 1704 std::vector<std::string> menu_items = | 1672 std::vector<std::string> menu_items = |
| 1705 MakeMenuItemStringsFor(last_context_menu_data_.get(), delegate_); | 1673 MakeMenuItemStringsFor(last_context_menu_data_.get(), delegate()); |
| 1706 last_context_menu_data_.reset(); | 1674 last_context_menu_data_.reset(); |
| 1707 return menu_items; | 1675 return menu_items; |
| 1708 } | 1676 } |
| 1709 | 1677 |
| 1710 void EventSender::TextZoomIn() { | 1678 void EventSender::TextZoomIn() { |
| 1711 view_->setTextZoomFactor(view_->textZoomFactor() * 1.2f); | 1679 view()->setTextZoomFactor(view()->textZoomFactor() * 1.2f); |
| 1712 } | 1680 } |
| 1713 | 1681 |
| 1714 void EventSender::TextZoomOut() { | 1682 void EventSender::TextZoomOut() { |
| 1715 view_->setTextZoomFactor(view_->textZoomFactor() / 1.2f); | 1683 view()->setTextZoomFactor(view()->textZoomFactor() / 1.2f); |
| 1716 } | 1684 } |
| 1717 | 1685 |
| 1718 void EventSender::ZoomPageIn() { | 1686 void EventSender::ZoomPageIn() { |
| 1719 const std::vector<WebTestProxyBase*>& window_list = | 1687 const std::vector<WebTestProxyBase*>& window_list = |
| 1720 interfaces_->GetWindowList(); | 1688 interfaces()->GetWindowList(); |
| 1721 | 1689 |
| 1722 for (size_t i = 0; i < window_list.size(); ++i) { | 1690 for (size_t i = 0; i < window_list.size(); ++i) { |
| 1723 window_list.at(i)->web_view()->setZoomLevel( | 1691 window_list.at(i)->web_view()->setZoomLevel( |
| 1724 window_list.at(i)->web_view()->zoomLevel() + 1); | 1692 window_list.at(i)->web_view()->zoomLevel() + 1); |
| 1725 } | 1693 } |
| 1726 } | 1694 } |
| 1727 | 1695 |
| 1728 void EventSender::ZoomPageOut() { | 1696 void EventSender::ZoomPageOut() { |
| 1729 const std::vector<WebTestProxyBase*>& window_list = | 1697 const std::vector<WebTestProxyBase*>& window_list = |
| 1730 interfaces_->GetWindowList(); | 1698 interfaces()->GetWindowList(); |
| 1731 | 1699 |
| 1732 for (size_t i = 0; i < window_list.size(); ++i) { | 1700 for (size_t i = 0; i < window_list.size(); ++i) { |
| 1733 window_list.at(i)->web_view()->setZoomLevel( | 1701 window_list.at(i)->web_view()->setZoomLevel( |
| 1734 window_list.at(i)->web_view()->zoomLevel() - 1); | 1702 window_list.at(i)->web_view()->zoomLevel() - 1); |
| 1735 } | 1703 } |
| 1736 } | 1704 } |
| 1737 | 1705 |
| 1738 void EventSender::SetPageZoomFactor(double zoom_factor) { | 1706 void EventSender::SetPageZoomFactor(double zoom_factor) { |
| 1739 const std::vector<WebTestProxyBase*>& window_list = | 1707 const std::vector<WebTestProxyBase*>& window_list = |
| 1740 interfaces_->GetWindowList(); | 1708 interfaces()->GetWindowList(); |
| 1741 | 1709 |
| 1742 for (size_t i = 0; i < window_list.size(); ++i) { | 1710 for (size_t i = 0; i < window_list.size(); ++i) { |
| 1743 window_list.at(i)->web_view()->setZoomLevel(std::log(zoom_factor) / | 1711 window_list.at(i)->web_view()->setZoomLevel(std::log(zoom_factor) / |
| 1744 std::log(1.2)); | 1712 std::log(1.2)); |
| 1745 } | 1713 } |
| 1746 } | 1714 } |
| 1747 | 1715 |
| 1748 void EventSender::ClearTouchPoints() { | 1716 void EventSender::ClearTouchPoints() { |
| 1749 touch_points_.clear(); | 1717 touch_points_.clear(); |
| 1750 } | 1718 } |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1812 return; | 1780 return; |
| 1813 | 1781 |
| 1814 WebString filename; | 1782 WebString filename; |
| 1815 WebVector<WebDragData::Item> items = current_drag_data_.items(); | 1783 WebVector<WebDragData::Item> items = current_drag_data_.items(); |
| 1816 for (size_t i = 0; i < items.size(); ++i) { | 1784 for (size_t i = 0; i < items.size(); ++i) { |
| 1817 if (items[i].storageType == WebDragData::Item::StorageTypeBinaryData) { | 1785 if (items[i].storageType == WebDragData::Item::StorageTypeBinaryData) { |
| 1818 filename = items[i].title; | 1786 filename = items[i].title; |
| 1819 break; | 1787 break; |
| 1820 } | 1788 } |
| 1821 } | 1789 } |
| 1822 delegate_->PrintMessage(std::string("Filename being dragged: ") + | 1790 delegate()->PrintMessage(std::string("Filename being dragged: ") + |
| 1823 filename.utf8().data() + "\n"); | 1791 filename.utf8().data() + "\n"); |
| 1824 } | 1792 } |
| 1825 | 1793 |
| 1826 void EventSender::GestureFlingCancel() { | 1794 void EventSender::GestureFlingCancel() { |
| 1827 WebGestureEvent event; | 1795 WebGestureEvent event; |
| 1828 event.type = WebInputEvent::GestureFlingCancel; | 1796 event.type = WebInputEvent::GestureFlingCancel; |
| 1829 // Generally it won't matter what device we use here, and since it might | 1797 // Generally it won't matter what device we use here, and since it might |
| 1830 // be cumbersome to expect all callers to specify a device, we'll just | 1798 // be cumbersome to expect all callers to specify a device, we'll just |
| 1831 // choose Touchpad here. | 1799 // choose Touchpad here. |
| 1832 event.sourceDevice = blink::WebGestureDeviceTouchpad; | 1800 event.sourceDevice = blink::WebGestureDeviceTouchpad; |
| 1833 event.timeStampSeconds = GetCurrentEventTimeSec(); | 1801 event.timeStampSeconds = GetCurrentEventTimeSec(); |
| 1834 | 1802 |
| 1835 if (force_layout_on_events_) | 1803 if (force_layout_on_events_) |
| 1836 view_->updateAllLifecyclePhases(); | 1804 view()->updateAllLifecyclePhases(); |
| 1837 | 1805 |
| 1838 HandleInputEventOnViewOrPopup(event); | 1806 HandleInputEventOnViewOrPopup(event); |
| 1839 } | 1807 } |
| 1840 | 1808 |
| 1841 void EventSender::GestureFlingStart(float x, | 1809 void EventSender::GestureFlingStart(float x, |
| 1842 float y, | 1810 float y, |
| 1843 float velocity_x, | 1811 float velocity_x, |
| 1844 float velocity_y, | 1812 float velocity_y, |
| 1845 gin::Arguments* args) { | 1813 gin::Arguments* args) { |
| 1846 WebGestureEvent event; | 1814 WebGestureEvent event; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1862 event.x = x; | 1830 event.x = x; |
| 1863 event.y = y; | 1831 event.y = y; |
| 1864 event.globalX = event.x; | 1832 event.globalX = event.x; |
| 1865 event.globalY = event.y; | 1833 event.globalY = event.y; |
| 1866 | 1834 |
| 1867 event.data.flingStart.velocityX = velocity_x; | 1835 event.data.flingStart.velocityX = velocity_x; |
| 1868 event.data.flingStart.velocityY = velocity_y; | 1836 event.data.flingStart.velocityY = velocity_y; |
| 1869 event.timeStampSeconds = GetCurrentEventTimeSec(); | 1837 event.timeStampSeconds = GetCurrentEventTimeSec(); |
| 1870 | 1838 |
| 1871 if (force_layout_on_events_) | 1839 if (force_layout_on_events_) |
| 1872 view_->updateAllLifecyclePhases(); | 1840 view()->updateAllLifecyclePhases(); |
| 1873 | 1841 |
| 1874 HandleInputEventOnViewOrPopup(event); | 1842 HandleInputEventOnViewOrPopup(event); |
| 1875 } | 1843 } |
| 1876 | 1844 |
| 1877 bool EventSender::IsFlinging() const { | 1845 bool EventSender::IsFlinging() const { |
| 1878 return view_->isFlinging(); | 1846 return view()->isFlinging(); |
| 1879 } | 1847 } |
| 1880 | 1848 |
| 1881 void EventSender::GestureScrollFirstPoint(int x, int y) { | 1849 void EventSender::GestureScrollFirstPoint(int x, int y) { |
| 1882 current_gesture_location_ = WebPoint(x, y); | 1850 current_gesture_location_ = WebPoint(x, y); |
| 1883 } | 1851 } |
| 1884 | 1852 |
| 1885 void EventSender::TouchStart() { | 1853 void EventSender::TouchStart() { |
| 1886 SendCurrentTouchEvent(WebInputEvent::TouchStart, false); | 1854 SendCurrentTouchEvent(WebInputEvent::TouchStart, false); |
| 1887 } | 1855 } |
| 1888 | 1856 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1927 isolate->ThrowException(v8::Exception::Error( | 1895 isolate->ThrowException(v8::Exception::Error( |
| 1928 gin::StringToV8(isolate, | 1896 gin::StringToV8(isolate, |
| 1929 "Nested beginDragWithFiles() not supported."))); | 1897 "Nested beginDragWithFiles() not supported."))); |
| 1930 return; | 1898 return; |
| 1931 } | 1899 } |
| 1932 current_drag_data_.initialize(); | 1900 current_drag_data_.initialize(); |
| 1933 WebVector<WebString> absolute_filenames(files.size()); | 1901 WebVector<WebString> absolute_filenames(files.size()); |
| 1934 for (size_t i = 0; i < files.size(); ++i) { | 1902 for (size_t i = 0; i < files.size(); ++i) { |
| 1935 WebDragData::Item item; | 1903 WebDragData::Item item; |
| 1936 item.storageType = WebDragData::Item::StorageTypeFilename; | 1904 item.storageType = WebDragData::Item::StorageTypeFilename; |
| 1937 item.filenameData = delegate_->GetAbsoluteWebStringFromUTF8Path(files[i]); | 1905 item.filenameData = delegate()->GetAbsoluteWebStringFromUTF8Path(files[i]); |
| 1938 current_drag_data_.addItem(item); | 1906 current_drag_data_.addItem(item); |
| 1939 absolute_filenames[i] = item.filenameData; | 1907 absolute_filenames[i] = item.filenameData; |
| 1940 } | 1908 } |
| 1941 current_drag_data_.setFilesystemId( | 1909 current_drag_data_.setFilesystemId( |
| 1942 delegate_->RegisterIsolatedFileSystem(absolute_filenames)); | 1910 delegate()->RegisterIsolatedFileSystem(absolute_filenames)); |
| 1943 current_drag_effects_allowed_ = blink::WebDragOperationCopy; | 1911 current_drag_effects_allowed_ = blink::WebDragOperationCopy; |
| 1944 | 1912 |
| 1945 // Provide a drag source. | 1913 // Provide a drag source. |
| 1946 view_->dragTargetDragEnter(current_drag_data_, | 1914 view()->dragTargetDragEnter(current_drag_data_, |
| 1947 current_pointer_state_[kMousePointerId].last_pos_, | 1915 current_pointer_state_[kMousePointerId].last_pos_, |
| 1948 current_pointer_state_[kMousePointerId].last_pos_, | 1916 current_pointer_state_[kMousePointerId].last_pos_, |
| 1949 current_drag_effects_allowed_, | 1917 current_drag_effects_allowed_, 0); |
| 1950 0); | |
| 1951 // |is_drag_mode_| saves events and then replays them later. We don't | 1918 // |is_drag_mode_| saves events and then replays them later. We don't |
| 1952 // need/want that. | 1919 // need/want that. |
| 1953 is_drag_mode_ = false; | 1920 is_drag_mode_ = false; |
| 1954 | 1921 |
| 1955 // Make the rest of eventSender think a drag is in progress. | 1922 // Make the rest of eventSender think a drag is in progress. |
| 1956 current_pointer_state_[kMousePointerId].pressed_button_ = | 1923 current_pointer_state_[kMousePointerId].pressed_button_ = |
| 1957 WebMouseEvent::ButtonLeft; | 1924 WebMouseEvent::ButtonLeft; |
| 1958 current_pointer_state_[kMousePointerId].current_buttons_ |= | 1925 current_pointer_state_[kMousePointerId].current_buttons_ |= |
| 1959 GetWebMouseEventModifierForButton( | 1926 GetWebMouseEventModifierForButton( |
| 1960 current_pointer_state_[kMousePointerId].pressed_button_); | 1927 current_pointer_state_[kMousePointerId].pressed_button_); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2046 InitMouseWheelEvent(args, scroll_type, &wheel_event, &send_gestures); | 2013 InitMouseWheelEvent(args, scroll_type, &wheel_event, &send_gestures); |
| 2047 if (HandleInputEventOnViewOrPopup(wheel_event) == | 2014 if (HandleInputEventOnViewOrPopup(wheel_event) == |
| 2048 WebInputEventResult::NotHandled && | 2015 WebInputEventResult::NotHandled && |
| 2049 send_gestures) { | 2016 send_gestures) { |
| 2050 SendGesturesForMouseWheelEvent(wheel_event); | 2017 SendGesturesForMouseWheelEvent(wheel_event); |
| 2051 } | 2018 } |
| 2052 } | 2019 } |
| 2053 | 2020 |
| 2054 void EventSender::MouseMoveTo(gin::Arguments* args) { | 2021 void EventSender::MouseMoveTo(gin::Arguments* args) { |
| 2055 if (force_layout_on_events_) | 2022 if (force_layout_on_events_) |
| 2056 view_->updateAllLifecyclePhases(); | 2023 view()->updateAllLifecyclePhases(); |
| 2057 | 2024 |
| 2058 double x; | 2025 double x; |
| 2059 double y; | 2026 double y; |
| 2060 blink::WebPointerProperties::PointerType pointerType = | 2027 blink::WebPointerProperties::PointerType pointerType = |
| 2061 blink::WebPointerProperties::PointerType::Mouse; | 2028 blink::WebPointerProperties::PointerType::Mouse; |
| 2062 int pointerId = 0; | 2029 int pointerId = 0; |
| 2063 if (!args->GetNext(&x) || !args->GetNext(&y)) { | 2030 if (!args->GetNext(&x) || !args->GetNext(&y)) { |
| 2064 args->ThrowError(); | 2031 args->ThrowError(); |
| 2065 return; | 2032 return; |
| 2066 } | 2033 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2101 pointerId, | 2068 pointerId, |
| 2102 &event); | 2069 &event); |
| 2103 HandleInputEventOnViewOrPopup(event); | 2070 HandleInputEventOnViewOrPopup(event); |
| 2104 if (pointerType == blink::WebPointerProperties::PointerType::Mouse) | 2071 if (pointerType == blink::WebPointerProperties::PointerType::Mouse) |
| 2105 DoDragAfterMouseMove(event); | 2072 DoDragAfterMouseMove(event); |
| 2106 } | 2073 } |
| 2107 } | 2074 } |
| 2108 | 2075 |
| 2109 void EventSender::MouseLeave() { | 2076 void EventSender::MouseLeave() { |
| 2110 if (force_layout_on_events_) | 2077 if (force_layout_on_events_) |
| 2111 view_->updateAllLifecyclePhases(); | 2078 view()->updateAllLifecyclePhases(); |
| 2112 | 2079 |
| 2113 WebMouseEvent event; | 2080 WebMouseEvent event; |
| 2114 InitMouseEvent(WebInputEvent::MouseLeave, | 2081 InitMouseEvent(WebInputEvent::MouseLeave, |
| 2115 WebMouseEvent::ButtonNone, | 2082 WebMouseEvent::ButtonNone, |
| 2116 0, | 2083 0, |
| 2117 current_pointer_state_[kMousePointerId].last_pos_, | 2084 current_pointer_state_[kMousePointerId].last_pos_, |
| 2118 GetCurrentEventTimeSec(), | 2085 GetCurrentEventTimeSec(), |
| 2119 click_count_, | 2086 click_count_, |
| 2120 0, | 2087 0, |
| 2121 blink::WebPointerProperties::PointerType::Mouse, | 2088 blink::WebPointerProperties::PointerType::Mouse, |
| 2122 0, | 2089 0, |
| 2123 &event); | 2090 &event); |
| 2124 HandleInputEventOnViewOrPopup(event); | 2091 HandleInputEventOnViewOrPopup(event); |
| 2125 } | 2092 } |
| 2126 | 2093 |
| 2127 | 2094 |
| 2128 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) { | 2095 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) { |
| 2129 delegate_->PostTask(new WebCallbackTask( | 2096 delegate()->PostTask(new WebCallbackTask( |
| 2130 base::Bind(&EventSender::MouseDown, weak_factory_.GetWeakPtr(), | 2097 base::Bind(&EventSender::MouseDown, weak_factory_.GetWeakPtr(), |
| 2131 button_number, modifiers))); | 2098 button_number, modifiers))); |
| 2132 delegate_->PostTask(new WebCallbackTask( | 2099 delegate()->PostTask(new WebCallbackTask( |
| 2133 base::Bind(&EventSender::MouseUp, weak_factory_.GetWeakPtr(), | 2100 base::Bind(&EventSender::MouseUp, weak_factory_.GetWeakPtr(), |
| 2134 button_number, modifiers))); | 2101 button_number, modifiers))); |
| 2135 } | 2102 } |
| 2136 | 2103 |
| 2137 void EventSender::ScheduleAsynchronousKeyDown(const std::string& code_str, | 2104 void EventSender::ScheduleAsynchronousKeyDown(const std::string& code_str, |
| 2138 int modifiers, | 2105 int modifiers, |
| 2139 KeyLocationCode location) { | 2106 KeyLocationCode location) { |
| 2140 delegate_->PostTask(new WebCallbackTask( | 2107 delegate()->PostTask(new WebCallbackTask( |
| 2141 base::Bind(&EventSender::KeyDown, weak_factory_.GetWeakPtr(), code_str, | 2108 base::Bind(&EventSender::KeyDown, weak_factory_.GetWeakPtr(), code_str, |
| 2142 modifiers, location))); | 2109 modifiers, location))); |
| 2143 } | 2110 } |
| 2144 | 2111 |
| 2145 double EventSender::GetCurrentEventTimeSec() { | 2112 double EventSender::GetCurrentEventTimeSec() { |
| 2146 return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF() + | 2113 return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF() + |
| 2147 time_offset_ms_ / 1000.0; | 2114 time_offset_ms_ / 1000.0; |
| 2148 } | 2115 } |
| 2149 | 2116 |
| 2150 void EventSender::DoLeapForward(int milliseconds) { | 2117 void EventSender::DoLeapForward(int milliseconds) { |
| 2151 time_offset_ms_ += milliseconds; | 2118 time_offset_ms_ += milliseconds; |
| 2152 } | 2119 } |
| 2153 | 2120 |
| 2154 void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type, | 2121 void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type, |
| 2155 bool movedBeyondSlopRegion) { | 2122 bool movedBeyondSlopRegion) { |
| 2156 DCHECK_GT(static_cast<unsigned>(WebTouchEvent::touchesLengthCap), | 2123 DCHECK_GT(static_cast<unsigned>(WebTouchEvent::touchesLengthCap), |
| 2157 touch_points_.size()); | 2124 touch_points_.size()); |
| 2158 if (force_layout_on_events_) | 2125 if (force_layout_on_events_) |
| 2159 view_->updateAllLifecyclePhases(); | 2126 view()->updateAllLifecyclePhases(); |
| 2160 | 2127 |
| 2161 WebTouchEvent touch_event; | 2128 WebTouchEvent touch_event; |
| 2162 touch_event.type = type; | 2129 touch_event.type = type; |
| 2163 touch_event.modifiers = touch_modifiers_; | 2130 touch_event.modifiers = touch_modifiers_; |
| 2164 touch_event.dispatchType = touch_cancelable_ | 2131 touch_event.dispatchType = touch_cancelable_ |
| 2165 ? WebInputEvent::Blocking | 2132 ? WebInputEvent::Blocking |
| 2166 : WebInputEvent::EventNonBlocking; | 2133 : WebInputEvent::EventNonBlocking; |
| 2167 touch_event.timeStampSeconds = GetCurrentEventTimeSec(); | 2134 touch_event.timeStampSeconds = GetCurrentEventTimeSec(); |
| 2168 touch_event.movedBeyondSlopRegion = movedBeyondSlopRegion; | 2135 touch_event.movedBeyondSlopRegion = movedBeyondSlopRegion; |
| 2169 touch_event.touchesLength = touch_points_.size(); | 2136 touch_event.touchesLength = touch_points_.size(); |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2424 break; | 2391 break; |
| 2425 default: | 2392 default: |
| 2426 NOTREACHED(); | 2393 NOTREACHED(); |
| 2427 } | 2394 } |
| 2428 | 2395 |
| 2429 event.globalX = event.x; | 2396 event.globalX = event.x; |
| 2430 event.globalY = event.y; | 2397 event.globalY = event.y; |
| 2431 event.timeStampSeconds = GetCurrentEventTimeSec(); | 2398 event.timeStampSeconds = GetCurrentEventTimeSec(); |
| 2432 | 2399 |
| 2433 if (force_layout_on_events_) | 2400 if (force_layout_on_events_) |
| 2434 view_->updateAllLifecyclePhases(); | 2401 view()->updateAllLifecyclePhases(); |
| 2435 | 2402 |
| 2436 WebInputEventResult result = HandleInputEventOnViewOrPopup(event); | 2403 WebInputEventResult result = HandleInputEventOnViewOrPopup(event); |
| 2437 | 2404 |
| 2438 // Long press might start a drag drop session. Complete it if so. | 2405 // Long press might start a drag drop session. Complete it if so. |
| 2439 if (type == WebInputEvent::GestureLongPress && !current_drag_data_.isNull()) { | 2406 if (type == WebInputEvent::GestureLongPress && !current_drag_data_.isNull()) { |
| 2440 WebMouseEvent mouse_event; | 2407 WebMouseEvent mouse_event; |
| 2441 InitMouseEvent(WebInputEvent::MouseDown, | 2408 InitMouseEvent(WebInputEvent::MouseDown, |
| 2442 current_pointer_state_[kMousePointerId].pressed_button_, | 2409 current_pointer_state_[kMousePointerId].pressed_button_, |
| 2443 current_pointer_state_[kMousePointerId].current_buttons_, | 2410 current_pointer_state_[kMousePointerId].current_buttons_, |
| 2444 WebPoint(x, y), GetCurrentEventTimeSec(), | 2411 WebPoint(x, y), GetCurrentEventTimeSec(), |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 2469 } | 2436 } |
| 2470 | 2437 |
| 2471 void EventSender::InitMouseWheelEvent(gin::Arguments* args, | 2438 void EventSender::InitMouseWheelEvent(gin::Arguments* args, |
| 2472 MouseScrollType scroll_type, | 2439 MouseScrollType scroll_type, |
| 2473 WebMouseWheelEvent* event, | 2440 WebMouseWheelEvent* event, |
| 2474 bool* send_gestures) { | 2441 bool* send_gestures) { |
| 2475 // Force a layout here just to make sure every position has been | 2442 // Force a layout here just to make sure every position has been |
| 2476 // determined before we send events (as well as all the other methods | 2443 // determined before we send events (as well as all the other methods |
| 2477 // that send an event do). | 2444 // that send an event do). |
| 2478 if (force_layout_on_events_) | 2445 if (force_layout_on_events_) |
| 2479 view_->updateAllLifecyclePhases(); | 2446 view()->updateAllLifecyclePhases(); |
| 2480 | 2447 |
| 2481 double horizontal; | 2448 double horizontal; |
| 2482 if (!args->GetNext(&horizontal)) { | 2449 if (!args->GetNext(&horizontal)) { |
| 2483 args->ThrowError(); | 2450 args->ThrowError(); |
| 2484 return; | 2451 return; |
| 2485 } | 2452 } |
| 2486 double vertical; | 2453 double vertical; |
| 2487 if (!args->GetNext(&vertical)) { | 2454 if (!args->GetNext(&vertical)) { |
| 2488 args->ThrowError(); | 2455 args->ThrowError(); |
| 2489 return; | 2456 return; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2588 } | 2555 } |
| 2589 | 2556 |
| 2590 void EventSender::FinishDragAndDrop(const WebMouseEvent& e, | 2557 void EventSender::FinishDragAndDrop(const WebMouseEvent& e, |
| 2591 blink::WebDragOperation drag_effect) { | 2558 blink::WebDragOperation drag_effect) { |
| 2592 WebPoint client_point(e.x, e.y); | 2559 WebPoint client_point(e.x, e.y); |
| 2593 WebPoint screen_point(e.globalX, e.globalY); | 2560 WebPoint screen_point(e.globalX, e.globalY); |
| 2594 current_drag_effect_ = drag_effect; | 2561 current_drag_effect_ = drag_effect; |
| 2595 if (current_drag_effect_) { | 2562 if (current_drag_effect_) { |
| 2596 // Specifically pass any keyboard modifiers to the drop method. This allows | 2563 // Specifically pass any keyboard modifiers to the drop method. This allows |
| 2597 // tests to control the drop type (i.e. copy or move). | 2564 // tests to control the drop type (i.e. copy or move). |
| 2598 view_->dragTargetDrop(client_point, screen_point, e.modifiers); | 2565 view()->dragTargetDrop(client_point, screen_point, e.modifiers); |
| 2599 } else { | 2566 } else { |
| 2600 view_->dragTargetDragLeave(); | 2567 view()->dragTargetDragLeave(); |
| 2601 } | 2568 } |
| 2602 view_->dragSourceEndedAt(client_point, screen_point, current_drag_effect_); | 2569 view()->dragSourceEndedAt(client_point, screen_point, current_drag_effect_); |
| 2603 view_->dragSourceSystemDragEnded(); | 2570 view()->dragSourceSystemDragEnded(); |
| 2604 | 2571 |
| 2605 current_drag_data_.reset(); | 2572 current_drag_data_.reset(); |
| 2606 } | 2573 } |
| 2607 | 2574 |
| 2608 void EventSender::DoDragAfterMouseUp(const WebMouseEvent& e) { | 2575 void EventSender::DoDragAfterMouseUp(const WebMouseEvent& e) { |
| 2609 last_click_time_sec_ = e.timeStampSeconds; | 2576 last_click_time_sec_ = e.timeStampSeconds; |
| 2610 last_click_pos_ = current_pointer_state_[kMousePointerId].last_pos_; | 2577 last_click_pos_ = current_pointer_state_[kMousePointerId].last_pos_; |
| 2611 | 2578 |
| 2612 // If we're in a drag operation, complete it. | 2579 // If we're in a drag operation, complete it. |
| 2613 if (current_drag_data_.isNull()) | 2580 if (current_drag_data_.isNull()) |
| 2614 return; | 2581 return; |
| 2615 | 2582 |
| 2616 WebPoint client_point(e.x, e.y); | 2583 WebPoint client_point(e.x, e.y); |
| 2617 WebPoint screen_point(e.globalX, e.globalY); | 2584 WebPoint screen_point(e.globalX, e.globalY); |
| 2618 blink::WebDragOperation drag_effect = view_->dragTargetDragOver( | 2585 blink::WebDragOperation drag_effect = view()->dragTargetDragOver( |
| 2619 client_point, | 2586 client_point, screen_point, current_drag_effects_allowed_, e.modifiers); |
| 2620 screen_point, | |
| 2621 current_drag_effects_allowed_, | |
| 2622 e.modifiers); | |
| 2623 | 2587 |
| 2624 // Bail if dragover caused cancellation. | 2588 // Bail if dragover caused cancellation. |
| 2625 if (current_drag_data_.isNull()) | 2589 if (current_drag_data_.isNull()) |
| 2626 return; | 2590 return; |
| 2627 | 2591 |
| 2628 FinishDragAndDrop(e, drag_effect); | 2592 FinishDragAndDrop(e, drag_effect); |
| 2629 } | 2593 } |
| 2630 | 2594 |
| 2631 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& e) { | 2595 void EventSender::DoDragAfterMouseMove(const WebMouseEvent& e) { |
| 2632 if (current_pointer_state_[kMousePointerId].pressed_button_ == | 2596 if (current_pointer_state_[kMousePointerId].pressed_button_ == |
| 2633 WebMouseEvent::ButtonNone || | 2597 WebMouseEvent::ButtonNone || |
| 2634 current_drag_data_.isNull()) { | 2598 current_drag_data_.isNull()) { |
| 2635 return; | 2599 return; |
| 2636 } | 2600 } |
| 2637 | 2601 |
| 2638 WebPoint client_point(e.x, e.y); | 2602 WebPoint client_point(e.x, e.y); |
| 2639 WebPoint screen_point(e.globalX, e.globalY); | 2603 WebPoint screen_point(e.globalX, e.globalY); |
| 2640 current_drag_effect_ = view_->dragTargetDragOver( | 2604 current_drag_effect_ = view()->dragTargetDragOver( |
| 2641 client_point, screen_point, current_drag_effects_allowed_, e.modifiers); | 2605 client_point, screen_point, current_drag_effects_allowed_, e.modifiers); |
| 2642 } | 2606 } |
| 2643 | 2607 |
| 2644 void EventSender::ReplaySavedEvents() { | 2608 void EventSender::ReplaySavedEvents() { |
| 2645 replaying_saved_events_ = true; | 2609 replaying_saved_events_ = true; |
| 2646 while (!mouse_event_queue_.empty()) { | 2610 while (!mouse_event_queue_.empty()) { |
| 2647 SavedEvent e = mouse_event_queue_.front(); | 2611 SavedEvent e = mouse_event_queue_.front(); |
| 2648 mouse_event_queue_.pop_front(); | 2612 mouse_event_queue_.pop_front(); |
| 2649 | 2613 |
| 2650 switch (e.type) { | 2614 switch (e.type) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2696 } | 2660 } |
| 2697 } | 2661 } |
| 2698 | 2662 |
| 2699 replaying_saved_events_ = false; | 2663 replaying_saved_events_ = false; |
| 2700 } | 2664 } |
| 2701 | 2665 |
| 2702 WebInputEventResult EventSender::HandleInputEventOnViewOrPopup( | 2666 WebInputEventResult EventSender::HandleInputEventOnViewOrPopup( |
| 2703 const WebInputEvent& event) { | 2667 const WebInputEvent& event) { |
| 2704 last_event_timestamp_ = event.timeStampSeconds; | 2668 last_event_timestamp_ = event.timeStampSeconds; |
| 2705 | 2669 |
| 2706 if (WebPagePopup* popup = view_->pagePopup()) { | 2670 if (WebPagePopup* popup = view()->pagePopup()) { |
| 2707 if (!WebInputEvent::isKeyboardEventType(event.type)) | 2671 if (!WebInputEvent::isKeyboardEventType(event.type)) |
| 2708 return popup->handleInputEvent(event); | 2672 return popup->handleInputEvent(event); |
| 2709 } | 2673 } |
| 2710 return view_->handleInputEvent(event); | 2674 return view()->handleInputEvent(event); |
| 2711 } | 2675 } |
| 2712 | 2676 |
| 2713 void EventSender::SendGesturesForMouseWheelEvent( | 2677 void EventSender::SendGesturesForMouseWheelEvent( |
| 2714 const WebMouseWheelEvent wheel_event) { | 2678 const WebMouseWheelEvent wheel_event) { |
| 2715 WebGestureEvent begin_event; | 2679 WebGestureEvent begin_event; |
| 2716 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollBegin, | 2680 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollBegin, |
| 2717 GetCurrentEventTimeSec(), wheel_event, | 2681 GetCurrentEventTimeSec(), wheel_event, |
| 2718 &begin_event); | 2682 &begin_event); |
| 2719 begin_event.data.scrollBegin.deltaXHint = wheel_event.deltaX; | 2683 begin_event.data.scrollBegin.deltaXHint = wheel_event.deltaX; |
| 2720 begin_event.data.scrollBegin.deltaYHint = wheel_event.deltaY; | 2684 begin_event.data.scrollBegin.deltaYHint = wheel_event.deltaY; |
| 2721 if (wheel_event.scrollByPage) { | 2685 if (wheel_event.scrollByPage) { |
| 2722 begin_event.data.scrollBegin.deltaHintUnits = blink::WebGestureEvent::Page; | 2686 begin_event.data.scrollBegin.deltaHintUnits = blink::WebGestureEvent::Page; |
| 2723 if (begin_event.data.scrollBegin.deltaXHint) { | 2687 if (begin_event.data.scrollBegin.deltaXHint) { |
| 2724 begin_event.data.scrollBegin.deltaXHint = | 2688 begin_event.data.scrollBegin.deltaXHint = |
| 2725 begin_event.data.scrollBegin.deltaXHint > 0 ? 1 : -1; | 2689 begin_event.data.scrollBegin.deltaXHint > 0 ? 1 : -1; |
| 2726 } | 2690 } |
| 2727 if (begin_event.data.scrollBegin.deltaYHint) { | 2691 if (begin_event.data.scrollBegin.deltaYHint) { |
| 2728 begin_event.data.scrollBegin.deltaYHint = | 2692 begin_event.data.scrollBegin.deltaYHint = |
| 2729 begin_event.data.scrollBegin.deltaYHint > 0 ? 1 : -1; | 2693 begin_event.data.scrollBegin.deltaYHint > 0 ? 1 : -1; |
| 2730 } | 2694 } |
| 2731 } else { | 2695 } else { |
| 2732 begin_event.data.scrollBegin.deltaHintUnits = | 2696 begin_event.data.scrollBegin.deltaHintUnits = |
| 2733 wheel_event.hasPreciseScrollingDeltas | 2697 wheel_event.hasPreciseScrollingDeltas |
| 2734 ? blink::WebGestureEvent::PrecisePixels | 2698 ? blink::WebGestureEvent::PrecisePixels |
| 2735 : blink::WebGestureEvent::Pixels; | 2699 : blink::WebGestureEvent::Pixels; |
| 2736 } | 2700 } |
| 2737 | 2701 |
| 2738 if (force_layout_on_events_) | 2702 if (force_layout_on_events_) |
| 2739 view_->updateAllLifecyclePhases(); | 2703 view()->updateAllLifecyclePhases(); |
| 2740 | 2704 |
| 2741 HandleInputEventOnViewOrPopup(begin_event); | 2705 HandleInputEventOnViewOrPopup(begin_event); |
| 2742 | 2706 |
| 2743 WebGestureEvent update_event; | 2707 WebGestureEvent update_event; |
| 2744 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollUpdate, | 2708 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollUpdate, |
| 2745 GetCurrentEventTimeSec(), wheel_event, | 2709 GetCurrentEventTimeSec(), wheel_event, |
| 2746 &update_event); | 2710 &update_event); |
| 2747 update_event.data.scrollUpdate.deltaX = | 2711 update_event.data.scrollUpdate.deltaX = |
| 2748 begin_event.data.scrollBegin.deltaXHint; | 2712 begin_event.data.scrollBegin.deltaXHint; |
| 2749 update_event.data.scrollUpdate.deltaY = | 2713 update_event.data.scrollUpdate.deltaY = |
| 2750 begin_event.data.scrollBegin.deltaYHint; | 2714 begin_event.data.scrollBegin.deltaYHint; |
| 2751 update_event.data.scrollUpdate.deltaUnits = | 2715 update_event.data.scrollUpdate.deltaUnits = |
| 2752 begin_event.data.scrollBegin.deltaHintUnits; | 2716 begin_event.data.scrollBegin.deltaHintUnits; |
| 2753 | 2717 |
| 2754 if (force_layout_on_events_) | 2718 if (force_layout_on_events_) |
| 2755 view_->updateAllLifecyclePhases(); | 2719 view()->updateAllLifecyclePhases(); |
| 2756 HandleInputEventOnViewOrPopup(update_event); | 2720 HandleInputEventOnViewOrPopup(update_event); |
| 2757 | 2721 |
| 2758 WebGestureEvent end_event; | 2722 WebGestureEvent end_event; |
| 2759 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollEnd, | 2723 InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollEnd, |
| 2760 GetCurrentEventTimeSec(), wheel_event, | 2724 GetCurrentEventTimeSec(), wheel_event, |
| 2761 &end_event); | 2725 &end_event); |
| 2762 end_event.data.scrollEnd.deltaUnits = | 2726 end_event.data.scrollEnd.deltaUnits = |
| 2763 begin_event.data.scrollBegin.deltaHintUnits; | 2727 begin_event.data.scrollBegin.deltaHintUnits; |
| 2764 | 2728 |
| 2765 if (force_layout_on_events_) | 2729 if (force_layout_on_events_) |
| 2766 view_->updateAllLifecyclePhases(); | 2730 view()->updateAllLifecyclePhases(); |
| 2767 HandleInputEventOnViewOrPopup(end_event); | 2731 HandleInputEventOnViewOrPopup(end_event); |
| 2768 } | 2732 } |
| 2769 | 2733 |
| 2734 TestInterfaces* EventSender::interfaces() { | |
| 2735 return web_test_proxy_base_->test_interfaces(); | |
| 2736 } | |
| 2737 | |
| 2738 WebTestDelegate* EventSender::delegate() { | |
| 2739 return web_test_proxy_base_->delegate(); | |
| 2740 } | |
| 2741 | |
| 2742 const blink::WebView* EventSender::view() const { | |
| 2743 return web_test_proxy_base_->web_view(); | |
| 2744 } | |
| 2745 | |
| 2746 blink::WebView* EventSender::view() { | |
| 2747 return web_test_proxy_base_->web_view(); | |
| 2748 } | |
| 2749 | |
| 2770 } // namespace test_runner | 2750 } // namespace test_runner |
| OLD | NEW |