OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ui/events/blink/input_handler_proxy.h" | 5 #include "ui/events/blink/input_handler_proxy.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 input_handler_->MouseUp(); | 507 input_handler_->MouseUp(); |
508 } | 508 } |
509 return DID_NOT_HANDLE; | 509 return DID_NOT_HANDLE; |
510 } | 510 } |
511 case WebInputEvent::MouseMove: { | 511 case WebInputEvent::MouseMove: { |
512 const WebMouseEvent& mouse_event = | 512 const WebMouseEvent& mouse_event = |
513 static_cast<const WebMouseEvent&>(event); | 513 static_cast<const WebMouseEvent&>(event); |
514 // TODO(davemoore): This should never happen, but bug #326635 showed some | 514 // TODO(davemoore): This should never happen, but bug #326635 showed some |
515 // surprising crashes. | 515 // surprising crashes. |
516 CHECK(input_handler_); | 516 CHECK(input_handler_); |
517 input_handler_->MouseMoveAt(gfx::Point(mouse_event.x, mouse_event.y)); | 517 input_handler_->MouseMoveAt(gfx::Point(mouse_event.positionInWidget().x, |
| 518 mouse_event.positionInWidget().y)); |
518 return DID_NOT_HANDLE; | 519 return DID_NOT_HANDLE; |
519 } | 520 } |
520 case WebInputEvent::MouseLeave: { | 521 case WebInputEvent::MouseLeave: { |
521 CHECK(input_handler_); | 522 CHECK(input_handler_); |
522 input_handler_->MouseLeave(); | 523 input_handler_->MouseLeave(); |
523 return DID_NOT_HANDLE; | 524 return DID_NOT_HANDLE; |
524 } | 525 } |
525 | 526 |
526 default: | 527 default: |
527 if (WebInputEvent::isKeyboardEventType(event.type())) { | 528 if (WebInputEvent::isKeyboardEventType(event.type())) { |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 if (touchpad_and_wheel_scroll_latching_enabled_) { | 700 if (touchpad_and_wheel_scroll_latching_enabled_) { |
700 if (gesture_scroll_on_impl_thread_) { | 701 if (gesture_scroll_on_impl_thread_) { |
701 TRACE_EVENT_INSTANT2("input", | 702 TRACE_EVENT_INSTANT2("input", |
702 "InputHandlerProxy::handle_input wheel scroll", | 703 "InputHandlerProxy::handle_input wheel scroll", |
703 TRACE_EVENT_SCOPE_THREAD, "deltaX", scroll_delta.x(), | 704 TRACE_EVENT_SCOPE_THREAD, "deltaX", scroll_delta.x(), |
704 "deltaY", scroll_delta.y()); | 705 "deltaY", scroll_delta.y()); |
705 | 706 |
706 cc::ScrollStateData scroll_state_update_data; | 707 cc::ScrollStateData scroll_state_update_data; |
707 scroll_state_update_data.delta_x = scroll_delta.x(); | 708 scroll_state_update_data.delta_x = scroll_delta.x(); |
708 scroll_state_update_data.delta_y = scroll_delta.y(); | 709 scroll_state_update_data.delta_y = scroll_delta.y(); |
709 scroll_state_update_data.position_x = wheel_event.x; | 710 scroll_state_update_data.position_x = wheel_event.positionInWidget().x; |
710 scroll_state_update_data.position_y = wheel_event.y; | 711 scroll_state_update_data.position_y = wheel_event.positionInWidget().y; |
711 cc::ScrollState scroll_state_update(scroll_state_update_data); | 712 cc::ScrollState scroll_state_update(scroll_state_update_data); |
712 | 713 |
713 cc::InputHandlerScrollResult scroll_result = | 714 cc::InputHandlerScrollResult scroll_result = |
714 input_handler_->ScrollBy(&scroll_state_update); | 715 input_handler_->ScrollBy(&scroll_state_update); |
715 | 716 |
716 if (!scroll_result.did_scroll && | 717 if (!scroll_result.did_scroll && |
717 input_handler_->ScrollingShouldSwitchtoMainThread()) { | 718 input_handler_->ScrollingShouldSwitchtoMainThread()) { |
718 gesture_scroll_on_impl_thread_ = false; | 719 gesture_scroll_on_impl_thread_ = false; |
719 return DID_NOT_HANDLE; | 720 return DID_NOT_HANDLE; |
720 } | 721 } |
721 | 722 |
722 HandleOverscroll(gfx::Point(wheel_event.x, wheel_event.y), scroll_result, | 723 HandleOverscroll(gfx::Point(wheel_event.positionInWidget().x, |
723 false); | 724 wheel_event.positionInWidget().y), |
| 725 scroll_result, false); |
724 if (scroll_result.did_scroll) { | 726 if (scroll_result.did_scroll) { |
725 return listener_properties == cc::EventListenerProperties::kPassive | 727 return listener_properties == cc::EventListenerProperties::kPassive |
726 ? DID_HANDLE_NON_BLOCKING | 728 ? DID_HANDLE_NON_BLOCKING |
727 : DID_HANDLE; | 729 : DID_HANDLE; |
728 } | 730 } |
729 | 731 |
730 return DROP_EVENT; | 732 return DROP_EVENT; |
731 } else { | 733 } else { |
732 return DID_NOT_HANDLE; | 734 return DID_NOT_HANDLE; |
733 } | 735 } |
734 } else { // !touchpad_and_wheel_scroll_latching_enabled_ | 736 } else { // !touchpad_and_wheel_scroll_latching_enabled_ |
735 cc::ScrollStateData scroll_state_begin_data; | 737 cc::ScrollStateData scroll_state_begin_data; |
736 scroll_state_begin_data.position_x = wheel_event.x; | 738 scroll_state_begin_data.position_x = wheel_event.positionInWidget().x; |
737 scroll_state_begin_data.position_y = wheel_event.y; | 739 scroll_state_begin_data.position_y = wheel_event.positionInWidget().y; |
738 scroll_state_begin_data.is_beginning = true; | 740 scroll_state_begin_data.is_beginning = true; |
739 cc::ScrollState scroll_state_begin(scroll_state_begin_data); | 741 cc::ScrollState scroll_state_begin(scroll_state_begin_data); |
740 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin( | 742 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin( |
741 &scroll_state_begin, cc::InputHandler::WHEEL); | 743 &scroll_state_begin, cc::InputHandler::WHEEL); |
742 | 744 |
743 RecordMainThreadScrollingReasons( | 745 RecordMainThreadScrollingReasons( |
744 blink::WebGestureDeviceTouchpad, | 746 blink::WebGestureDeviceTouchpad, |
745 scroll_status.main_thread_scrolling_reasons); | 747 scroll_status.main_thread_scrolling_reasons); |
746 | 748 |
747 mouse_wheel_result_ = | 749 mouse_wheel_result_ = |
748 (listener_properties == cc::EventListenerProperties::kPassive) | 750 (listener_properties == cc::EventListenerProperties::kPassive) |
749 ? DID_HANDLE_NON_BLOCKING | 751 ? DID_HANDLE_NON_BLOCKING |
750 : DROP_EVENT; | 752 : DROP_EVENT; |
751 RecordScrollingThreadStatus(blink::WebGestureDeviceTouchpad, | 753 RecordScrollingThreadStatus(blink::WebGestureDeviceTouchpad, |
752 scroll_status.main_thread_scrolling_reasons); | 754 scroll_status.main_thread_scrolling_reasons); |
753 | 755 |
754 switch (scroll_status.thread) { | 756 switch (scroll_status.thread) { |
755 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: { | 757 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: { |
756 TRACE_EVENT_INSTANT2("input", | 758 TRACE_EVENT_INSTANT2("input", |
757 "InputHandlerProxy::handle_input wheel scroll", | 759 "InputHandlerProxy::handle_input wheel scroll", |
758 TRACE_EVENT_SCOPE_THREAD, "deltaX", | 760 TRACE_EVENT_SCOPE_THREAD, "deltaX", |
759 scroll_delta.x(), "deltaY", scroll_delta.y()); | 761 scroll_delta.x(), "deltaY", scroll_delta.y()); |
760 | 762 |
761 cc::ScrollStateData scroll_state_update_data; | 763 cc::ScrollStateData scroll_state_update_data; |
762 scroll_state_update_data.delta_x = scroll_delta.x(); | 764 scroll_state_update_data.delta_x = scroll_delta.x(); |
763 scroll_state_update_data.delta_y = scroll_delta.y(); | 765 scroll_state_update_data.delta_y = scroll_delta.y(); |
764 scroll_state_update_data.position_x = wheel_event.x; | 766 scroll_state_update_data.position_x = wheel_event.positionInWidget().x; |
765 scroll_state_update_data.position_y = wheel_event.y; | 767 scroll_state_update_data.position_y = wheel_event.positionInWidget().y; |
766 cc::ScrollState scroll_state_update(scroll_state_update_data); | 768 cc::ScrollState scroll_state_update(scroll_state_update_data); |
767 | 769 |
768 cc::InputHandlerScrollResult scroll_result = | 770 cc::InputHandlerScrollResult scroll_result = |
769 input_handler_->ScrollBy(&scroll_state_update); | 771 input_handler_->ScrollBy(&scroll_state_update); |
770 HandleOverscroll(gfx::Point(wheel_event.x, wheel_event.y), | 772 HandleOverscroll(gfx::Point(wheel_event.positionInWidget().x, |
| 773 wheel_event.positionInWidget().y), |
771 scroll_result, false); | 774 scroll_result, false); |
772 | 775 |
773 cc::ScrollStateData scroll_state_end_data; | 776 cc::ScrollStateData scroll_state_end_data; |
774 scroll_state_end_data.is_ending = true; | 777 scroll_state_end_data.is_ending = true; |
775 cc::ScrollState scroll_state_end(scroll_state_end_data); | 778 cc::ScrollState scroll_state_end(scroll_state_end_data); |
776 input_handler_->ScrollEnd(&scroll_state_end); | 779 input_handler_->ScrollEnd(&scroll_state_end); |
777 | 780 |
778 if (scroll_result.did_scroll) { | 781 if (scroll_result.did_scroll) { |
779 return listener_properties == cc::EventListenerProperties::kPassive | 782 return listener_properties == cc::EventListenerProperties::kPassive |
780 ? DID_HANDLE_NON_BLOCKING | 783 ? DID_HANDLE_NON_BLOCKING |
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1499 disposition = DID_NOT_HANDLE; | 1502 disposition = DID_NOT_HANDLE; |
1500 break; | 1503 break; |
1501 case cc::EventListenerProperties::kPassive: | 1504 case cc::EventListenerProperties::kPassive: |
1502 case cc::EventListenerProperties::kNone: { | 1505 case cc::EventListenerProperties::kNone: { |
1503 WebMouseWheelEvent synthetic_wheel(WebInputEvent::MouseWheel, | 1506 WebMouseWheelEvent synthetic_wheel(WebInputEvent::MouseWheel, |
1504 fling_parameters_.modifiers, | 1507 fling_parameters_.modifiers, |
1505 InSecondsF(base::TimeTicks::Now())); | 1508 InSecondsF(base::TimeTicks::Now())); |
1506 synthetic_wheel.deltaX = increment.width; | 1509 synthetic_wheel.deltaX = increment.width; |
1507 synthetic_wheel.deltaY = increment.height; | 1510 synthetic_wheel.deltaY = increment.height; |
1508 synthetic_wheel.hasPreciseScrollingDeltas = true; | 1511 synthetic_wheel.hasPreciseScrollingDeltas = true; |
1509 synthetic_wheel.x = fling_parameters_.point.x; | 1512 synthetic_wheel.setPositionInWidget(fling_parameters_.point.x, |
1510 synthetic_wheel.y = fling_parameters_.point.y; | 1513 fling_parameters_.point.y); |
1511 synthetic_wheel.globalX = fling_parameters_.globalPoint.x; | 1514 synthetic_wheel.setPositionInScreen(fling_parameters_.globalPoint.x, |
1512 synthetic_wheel.globalY = fling_parameters_.globalPoint.y; | 1515 fling_parameters_.globalPoint.y); |
1513 | 1516 |
1514 disposition = FlingScrollByMouseWheel(synthetic_wheel, properties); | 1517 disposition = FlingScrollByMouseWheel(synthetic_wheel, properties); |
1515 | 1518 |
1516 // Send the event over to the main thread. | 1519 // Send the event over to the main thread. |
1517 if (disposition == DID_HANDLE_NON_BLOCKING) { | 1520 if (disposition == DID_HANDLE_NON_BLOCKING) { |
1518 client_->DispatchNonBlockingEventToMainThread( | 1521 client_->DispatchNonBlockingEventToMainThread( |
1519 ui::WebInputEventTraits::Clone(synthetic_wheel), ui::LatencyInfo()); | 1522 ui::WebInputEventTraits::Clone(synthetic_wheel), ui::LatencyInfo()); |
1520 } | 1523 } |
1521 break; | 1524 break; |
1522 } | 1525 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1634 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, | 1637 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, |
1635 scroll_result)); | 1638 scroll_result)); |
1636 } | 1639 } |
1637 | 1640 |
1638 void InputHandlerProxy::SetTickClockForTesting( | 1641 void InputHandlerProxy::SetTickClockForTesting( |
1639 std::unique_ptr<base::TickClock> tick_clock) { | 1642 std::unique_ptr<base::TickClock> tick_clock) { |
1640 tick_clock_ = std::move(tick_clock); | 1643 tick_clock_ = std::move(tick_clock); |
1641 } | 1644 } |
1642 | 1645 |
1643 } // namespace ui | 1646 } // namespace ui |
OLD | NEW |