| 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/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 .SetMethod("mouseUp", &EventSenderBindings::MouseUp) | 629 .SetMethod("mouseUp", &EventSenderBindings::MouseUp) |
| 630 .SetMethod("setMouseButtonState", | 630 .SetMethod("setMouseButtonState", |
| 631 &EventSenderBindings::SetMouseButtonState) | 631 &EventSenderBindings::SetMouseButtonState) |
| 632 .SetMethod("scheduleAsynchronousClick", | 632 .SetMethod("scheduleAsynchronousClick", |
| 633 &EventSenderBindings::ScheduleAsynchronousClick) | 633 &EventSenderBindings::ScheduleAsynchronousClick) |
| 634 .SetMethod("scheduleAsynchronousKeyDown", | 634 .SetMethod("scheduleAsynchronousKeyDown", |
| 635 &EventSenderBindings::ScheduleAsynchronousKeyDown) | 635 &EventSenderBindings::ScheduleAsynchronousKeyDown) |
| 636 .SetProperty("forceLayoutOnEvents", | 636 .SetProperty("forceLayoutOnEvents", |
| 637 &EventSenderBindings::ForceLayoutOnEvents, | 637 &EventSenderBindings::ForceLayoutOnEvents, |
| 638 &EventSenderBindings::SetForceLayoutOnEvents) | 638 &EventSenderBindings::SetForceLayoutOnEvents) |
| 639 .SetProperty("dragMode", &EventSenderBindings::IsDragMode, | |
| 640 &EventSenderBindings::SetIsDragMode) | |
| 641 #if defined(OS_WIN) | 639 #if defined(OS_WIN) |
| 642 .SetProperty("WM_KEYDOWN", &EventSenderBindings::WmKeyDown, | 640 .SetProperty("WM_KEYDOWN", &EventSenderBindings::WmKeyDown, |
| 643 &EventSenderBindings::SetWmKeyDown) | 641 &EventSenderBindings::SetWmKeyDown) |
| 644 .SetProperty("WM_KEYUP", &EventSenderBindings::WmKeyUp, | 642 .SetProperty("WM_KEYUP", &EventSenderBindings::WmKeyUp, |
| 645 &EventSenderBindings::SetWmKeyUp) | 643 &EventSenderBindings::SetWmKeyUp) |
| 646 .SetProperty("WM_CHAR", &EventSenderBindings::WmChar, | 644 .SetProperty("WM_CHAR", &EventSenderBindings::WmChar, |
| 647 &EventSenderBindings::SetWmChar) | 645 &EventSenderBindings::SetWmChar) |
| 648 .SetProperty("WM_DEADCHAR", &EventSenderBindings::WmDeadChar, | 646 .SetProperty("WM_DEADCHAR", &EventSenderBindings::WmDeadChar, |
| 649 &EventSenderBindings::SetWmDeadChar) | 647 &EventSenderBindings::SetWmDeadChar) |
| 650 .SetProperty("WM_SYSKEYDOWN", &EventSenderBindings::WmSysKeyDown, | 648 .SetProperty("WM_SYSKEYDOWN", &EventSenderBindings::WmSysKeyDown, |
| 651 &EventSenderBindings::SetWmSysKeyDown) | 649 &EventSenderBindings::SetWmSysKeyDown) |
| 652 .SetProperty("WM_SYSKEYUP", &EventSenderBindings::WmSysKeyUp, | 650 .SetProperty("WM_SYSKEYUP", &EventSenderBindings::WmSysKeyUp, |
| 653 &EventSenderBindings::SetWmSysKeyUp) | 651 &EventSenderBindings::SetWmSysKeyUp) |
| 654 .SetProperty("WM_SYSCHAR", &EventSenderBindings::WmSysChar, | 652 .SetProperty("WM_SYSCHAR", &EventSenderBindings::WmSysChar, |
| 655 &EventSenderBindings::SetWmSysChar) | 653 &EventSenderBindings::SetWmSysChar) |
| 656 .SetProperty("WM_SYSDEADCHAR", &EventSenderBindings::WmSysDeadChar, | 654 .SetProperty("WM_SYSDEADCHAR", &EventSenderBindings::WmSysDeadChar, |
| 657 &EventSenderBindings::SetWmSysDeadChar); | 655 &EventSenderBindings::SetWmSysDeadChar) |
| 658 #else | |
| 659 ; | |
| 660 #endif | 656 #endif |
| 657 .SetProperty("dragMode", &EventSenderBindings::IsDragMode, |
| 658 &EventSenderBindings::SetIsDragMode); |
| 661 } | 659 } |
| 662 | 660 |
| 663 void EventSenderBindings::EnableDOMUIEventLogging() { | 661 void EventSenderBindings::EnableDOMUIEventLogging() { |
| 664 if (sender_) | 662 if (sender_) |
| 665 sender_->EnableDOMUIEventLogging(); | 663 sender_->EnableDOMUIEventLogging(); |
| 666 } | 664 } |
| 667 | 665 |
| 668 void EventSenderBindings::FireKeyboardEventsToElement() { | 666 void EventSenderBindings::FireKeyboardEventsToElement() { |
| 669 if (sender_) | 667 if (sender_) |
| 670 sender_->FireKeyboardEventsToElement(); | 668 sender_->FireKeyboardEventsToElement(); |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 void EventSenderBindings::SetMouseButtonState(gin::Arguments* args) { | 987 void EventSenderBindings::SetMouseButtonState(gin::Arguments* args) { |
| 990 if (!sender_) | 988 if (!sender_) |
| 991 return; | 989 return; |
| 992 | 990 |
| 993 int button_number; | 991 int button_number; |
| 994 if (!args->GetNext(&button_number)) { | 992 if (!args->GetNext(&button_number)) { |
| 995 args->ThrowError(); | 993 args->ThrowError(); |
| 996 return; | 994 return; |
| 997 } | 995 } |
| 998 | 996 |
| 999 int modifiers = -1; // Default to the modifier implied by button_number | 997 int modifiers = -1; // Default to the modifier implied by button_number |
| 1000 if (!args->PeekNext().IsEmpty()) { | 998 if (!args->PeekNext().IsEmpty()) { |
| 1001 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); | 999 modifiers = GetKeyModifiersFromV8(args->isolate(), args->PeekNext()); |
| 1002 } | 1000 } |
| 1003 | 1001 |
| 1004 sender_->SetMouseButtonState(button_number, modifiers); | 1002 sender_->SetMouseButtonState(button_number, modifiers); |
| 1005 } | 1003 } |
| 1006 | 1004 |
| 1007 void EventSenderBindings::KeyDown(gin::Arguments* args) { | 1005 void EventSenderBindings::KeyDown(gin::Arguments* args) { |
| 1008 if (!sender_) | 1006 if (!sender_) |
| 1009 return; | 1007 return; |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1486 | 1484 |
| 1487 event_down.setKeyIdentifierFromWindowsKeyCode(); | 1485 event_down.setKeyIdentifierFromWindowsKeyCode(); |
| 1488 | 1486 |
| 1489 if (event_down.modifiers != 0) | 1487 if (event_down.modifiers != 0) |
| 1490 event_down.isSystemKey = IsSystemKeyEvent(event_down); | 1488 event_down.isSystemKey = IsSystemKeyEvent(event_down); |
| 1491 | 1489 |
| 1492 if (needs_shift_key_modifier) | 1490 if (needs_shift_key_modifier) |
| 1493 event_down.modifiers |= WebInputEvent::ShiftKey; | 1491 event_down.modifiers |= WebInputEvent::ShiftKey; |
| 1494 | 1492 |
| 1495 // See if KeyLocation argument is given. | 1493 // See if KeyLocation argument is given. |
| 1496 switch(location) { | 1494 switch (location) { |
| 1497 case DOMKeyLocationStandard: | 1495 case DOMKeyLocationStandard: |
| 1498 break; | 1496 break; |
| 1499 case DOMKeyLocationLeft: | 1497 case DOMKeyLocationLeft: |
| 1500 event_down.modifiers |= WebInputEvent::IsLeft; | 1498 event_down.modifiers |= WebInputEvent::IsLeft; |
| 1501 break; | 1499 break; |
| 1502 case DOMKeyLocationRight: | 1500 case DOMKeyLocationRight: |
| 1503 event_down.modifiers |= WebInputEvent::IsRight; | 1501 event_down.modifiers |= WebInputEvent::IsRight; |
| 1504 break; | 1502 break; |
| 1505 case DOMKeyLocationNumpad: | 1503 case DOMKeyLocationNumpad: |
| 1506 event_down.modifiers |= WebInputEvent::IsKeyPad; | 1504 event_down.modifiers |= WebInputEvent::IsKeyPad; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1589 last_mouse_pos_, | 1587 last_mouse_pos_, |
| 1590 GetCurrentEventTimeSec(), | 1588 GetCurrentEventTimeSec(), |
| 1591 click_count_, | 1589 click_count_, |
| 1592 0, | 1590 0, |
| 1593 &event); | 1591 &event); |
| 1594 HandleInputEventOnViewOrPopup(event); | 1592 HandleInputEventOnViewOrPopup(event); |
| 1595 | 1593 |
| 1596 #if defined(OS_WIN) | 1594 #if defined(OS_WIN) |
| 1597 current_buttons_ &= | 1595 current_buttons_ &= |
| 1598 ~GetWebMouseEventModifierForButton(WebMouseEvent::ButtonRight); | 1596 ~GetWebMouseEventModifierForButton(WebMouseEvent::ButtonRight); |
| 1599 pressed_button_= WebMouseEvent::ButtonNone; | 1597 pressed_button_ = WebMouseEvent::ButtonNone; |
| 1600 | 1598 |
| 1601 InitMouseEvent(WebInputEvent::MouseUp, | 1599 InitMouseEvent(WebInputEvent::MouseUp, |
| 1602 WebMouseEvent::ButtonRight, | 1600 WebMouseEvent::ButtonRight, |
| 1603 current_buttons_, | 1601 current_buttons_, |
| 1604 last_mouse_pos_, | 1602 last_mouse_pos_, |
| 1605 GetCurrentEventTimeSec(), | 1603 GetCurrentEventTimeSec(), |
| 1606 click_count_, | 1604 click_count_, |
| 1607 0, | 1605 0, |
| 1608 &event); | 1606 &event); |
| 1609 HandleInputEventOnViewOrPopup(event); | 1607 HandleInputEventOnViewOrPopup(event); |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1997 | 1995 |
| 1998 WebMouseEvent event; | 1996 WebMouseEvent event; |
| 1999 InitMouseEvent(WebInputEvent::MouseLeave, | 1997 InitMouseEvent(WebInputEvent::MouseLeave, |
| 2000 WebMouseEvent::ButtonNone, | 1998 WebMouseEvent::ButtonNone, |
| 2001 0, | 1999 0, |
| 2002 last_mouse_pos_, | 2000 last_mouse_pos_, |
| 2003 GetCurrentEventTimeSec(), | 2001 GetCurrentEventTimeSec(), |
| 2004 click_count_, | 2002 click_count_, |
| 2005 0, | 2003 0, |
| 2006 &event); | 2004 &event); |
| 2007 HandleInputEventOnViewOrPopup(event); | 2005 HandleInputEventOnViewOrPopup(event); |
| 2008 } | 2006 } |
| 2009 | 2007 |
| 2010 | 2008 |
| 2011 void EventSender::TrackpadScrollBegin() { | 2009 void EventSender::TrackpadScrollBegin() { |
| 2012 WebMouseWheelEvent event; | 2010 WebMouseWheelEvent event; |
| 2013 InitMouseEvent(WebInputEvent::MouseWheel, | 2011 InitMouseEvent(WebInputEvent::MouseWheel, |
| 2014 WebMouseEvent::ButtonNone, | 2012 WebMouseEvent::ButtonNone, |
| 2015 0, | 2013 0, |
| 2016 last_mouse_pos_, | 2014 last_mouse_pos_, |
| 2017 GetCurrentEventTimeSec(), | 2015 GetCurrentEventTimeSec(), |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2040 GetCurrentEventTimeSec(), | 2038 GetCurrentEventTimeSec(), |
| 2041 click_count_, | 2039 click_count_, |
| 2042 0, | 2040 0, |
| 2043 &event); | 2041 &event); |
| 2044 event.phase = WebMouseWheelEvent::PhaseEnded; | 2042 event.phase = WebMouseWheelEvent::PhaseEnded; |
| 2045 event.hasPreciseScrollingDeltas = true; | 2043 event.hasPreciseScrollingDeltas = true; |
| 2046 HandleInputEventOnViewOrPopup(event); | 2044 HandleInputEventOnViewOrPopup(event); |
| 2047 } | 2045 } |
| 2048 | 2046 |
| 2049 void EventSender::MouseScrollBy(gin::Arguments* args) { | 2047 void EventSender::MouseScrollBy(gin::Arguments* args) { |
| 2050 WebMouseWheelEvent event; | 2048 WebMouseWheelEvent event; |
| 2051 InitMouseWheelEvent(args, false, &event); | 2049 InitMouseWheelEvent(args, false, &event); |
| 2052 HandleInputEventOnViewOrPopup(event); | 2050 HandleInputEventOnViewOrPopup(event); |
| 2053 } | 2051 } |
| 2054 | 2052 |
| 2055 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) { | 2053 void EventSender::ScheduleAsynchronousClick(int button_number, int modifiers) { |
| 2056 delegate_->PostTask(new MouseDownTask(this, button_number, modifiers)); | 2054 delegate_->PostTask(new MouseDownTask(this, button_number, modifiers)); |
| 2057 delegate_->PostTask(new MouseUpTask(this, button_number, modifiers)); | 2055 delegate_->PostTask(new MouseUpTask(this, button_number, modifiers)); |
| 2058 } | 2056 } |
| 2059 | 2057 |
| 2060 void EventSender::ScheduleAsynchronousKeyDown(const std::string& code_str, | 2058 void EventSender::ScheduleAsynchronousKeyDown(const std::string& code_str, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2089 for (size_t i = 0; i < touch_points_.size(); ++i) | 2087 for (size_t i = 0; i < touch_points_.size(); ++i) |
| 2090 touch_event.touches[i] = touch_points_[i]; | 2088 touch_event.touches[i] = touch_points_[i]; |
| 2091 HandleInputEventOnViewOrPopup(touch_event); | 2089 HandleInputEventOnViewOrPopup(touch_event); |
| 2092 | 2090 |
| 2093 for (size_t i = 0; i < touch_points_.size(); ++i) { | 2091 for (size_t i = 0; i < touch_points_.size(); ++i) { |
| 2094 WebTouchPoint* touch_point = &touch_points_[i]; | 2092 WebTouchPoint* touch_point = &touch_points_[i]; |
| 2095 if (touch_point->state == WebTouchPoint::StateReleased | 2093 if (touch_point->state == WebTouchPoint::StateReleased |
| 2096 || touch_point->state == WebTouchPoint::StateCancelled) { | 2094 || touch_point->state == WebTouchPoint::StateCancelled) { |
| 2097 touch_points_.erase(touch_points_.begin() + i); | 2095 touch_points_.erase(touch_points_.begin() + i); |
| 2098 --i; | 2096 --i; |
| 2099 } else | 2097 } else { |
| 2100 touch_point->state = WebTouchPoint::StateStationary; | 2098 touch_point->state = WebTouchPoint::StateStationary; |
| 2099 } |
| 2101 } | 2100 } |
| 2102 } | 2101 } |
| 2103 | 2102 |
| 2104 void EventSender::GestureEvent(WebInputEvent::Type type, | 2103 void EventSender::GestureEvent(WebInputEvent::Type type, |
| 2105 gin::Arguments* args) { | 2104 gin::Arguments* args) { |
| 2106 WebGestureEvent event; | 2105 WebGestureEvent event; |
| 2107 event.type = type; | 2106 event.type = type; |
| 2108 | 2107 |
| 2109 // If the first argument is a string, it is to specify the device, otherwise | 2108 // If the first argument is a string, it is to specify the device, otherwise |
| 2110 // the device is assumed to be a touchscreen (since most tests were written | 2109 // the device is assumed to be a touchscreen (since most tests were written |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2616 last_event_timestamp_ = event.timeStampSeconds; | 2615 last_event_timestamp_ = event.timeStampSeconds; |
| 2617 | 2616 |
| 2618 if (WebPagePopup* popup = view_->pagePopup()) { | 2617 if (WebPagePopup* popup = view_->pagePopup()) { |
| 2619 if (!WebInputEvent::isKeyboardEventType(event.type)) | 2618 if (!WebInputEvent::isKeyboardEventType(event.type)) |
| 2620 return popup->handleInputEvent(event); | 2619 return popup->handleInputEvent(event); |
| 2621 } | 2620 } |
| 2622 return view_->handleInputEvent(event); | 2621 return view_->handleInputEvent(event); |
| 2623 } | 2622 } |
| 2624 | 2623 |
| 2625 } // namespace test_runner | 2624 } // namespace test_runner |
| OLD | NEW |