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

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

Issue 1897363003: Use correct WebView from EventSender. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed initial state of EventSender. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/test_runner/event_sender.h ('k') | components/test_runner/test_interfaces.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 10 matching lines...) Expand all
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « components/test_runner/event_sender.h ('k') | components/test_runner/test_interfaces.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698