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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 if (touchpad_and_wheel_scroll_latching_enabled_) { | 699 if (touchpad_and_wheel_scroll_latching_enabled_) { |
699 if (gesture_scroll_on_impl_thread_) { | 700 if (gesture_scroll_on_impl_thread_) { |
700 TRACE_EVENT_INSTANT2("input", | 701 TRACE_EVENT_INSTANT2("input", |
701 "InputHandlerProxy::handle_input wheel scroll", | 702 "InputHandlerProxy::handle_input wheel scroll", |
702 TRACE_EVENT_SCOPE_THREAD, "deltaX", scroll_delta.x(), | 703 TRACE_EVENT_SCOPE_THREAD, "deltaX", scroll_delta.x(), |
703 "deltaY", scroll_delta.y()); | 704 "deltaY", scroll_delta.y()); |
704 | 705 |
705 cc::ScrollStateData scroll_state_update_data; | 706 cc::ScrollStateData scroll_state_update_data; |
706 scroll_state_update_data.delta_x = scroll_delta.x(); | 707 scroll_state_update_data.delta_x = scroll_delta.x(); |
707 scroll_state_update_data.delta_y = scroll_delta.y(); | 708 scroll_state_update_data.delta_y = scroll_delta.y(); |
708 scroll_state_update_data.position_x = wheel_event.x; | 709 scroll_state_update_data.position_x = wheel_event.positionInWidget().x; |
709 scroll_state_update_data.position_y = wheel_event.y; | 710 scroll_state_update_data.position_y = wheel_event.positionInWidget().y; |
710 cc::ScrollState scroll_state_update(scroll_state_update_data); | 711 cc::ScrollState scroll_state_update(scroll_state_update_data); |
711 | 712 |
712 cc::InputHandlerScrollResult scroll_result = | 713 cc::InputHandlerScrollResult scroll_result = |
713 input_handler_->ScrollBy(&scroll_state_update); | 714 input_handler_->ScrollBy(&scroll_state_update); |
714 HandleOverscroll(gfx::Point(wheel_event.x, wheel_event.y), scroll_result, | 715 HandleOverscroll(gfx::Point(wheel_event.positionInWidget().x, |
715 false); | 716 wheel_event.positionInWidget().y), |
| 717 scroll_result, false); |
716 if (scroll_result.did_scroll) { | 718 if (scroll_result.did_scroll) { |
717 return listener_properties == cc::EventListenerProperties::kPassive | 719 return listener_properties == cc::EventListenerProperties::kPassive |
718 ? DID_HANDLE_NON_BLOCKING | 720 ? DID_HANDLE_NON_BLOCKING |
719 : DID_HANDLE; | 721 : DID_HANDLE; |
720 } | 722 } |
721 | 723 |
722 return DROP_EVENT; | 724 return DROP_EVENT; |
723 } else { | 725 } else { |
724 return DID_NOT_HANDLE; | 726 return DID_NOT_HANDLE; |
725 } | 727 } |
726 } else { // !touchpad_and_wheel_scroll_latching_enabled_ | 728 } else { // !touchpad_and_wheel_scroll_latching_enabled_ |
727 cc::ScrollStateData scroll_state_begin_data; | 729 cc::ScrollStateData scroll_state_begin_data; |
728 scroll_state_begin_data.position_x = wheel_event.x; | 730 scroll_state_begin_data.position_x = wheel_event.positionInWidget().x; |
729 scroll_state_begin_data.position_y = wheel_event.y; | 731 scroll_state_begin_data.position_y = wheel_event.positionInWidget().y; |
730 scroll_state_begin_data.is_beginning = true; | 732 scroll_state_begin_data.is_beginning = true; |
731 cc::ScrollState scroll_state_begin(scroll_state_begin_data); | 733 cc::ScrollState scroll_state_begin(scroll_state_begin_data); |
732 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin( | 734 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin( |
733 &scroll_state_begin, cc::InputHandler::WHEEL); | 735 &scroll_state_begin, cc::InputHandler::WHEEL); |
734 | 736 |
735 RecordMainThreadScrollingReasons( | 737 RecordMainThreadScrollingReasons( |
736 blink::WebGestureDeviceTouchpad, | 738 blink::WebGestureDeviceTouchpad, |
737 scroll_status.main_thread_scrolling_reasons); | 739 scroll_status.main_thread_scrolling_reasons); |
738 | 740 |
739 mouse_wheel_result_ = | 741 mouse_wheel_result_ = |
740 (listener_properties == cc::EventListenerProperties::kPassive) | 742 (listener_properties == cc::EventListenerProperties::kPassive) |
741 ? DID_HANDLE_NON_BLOCKING | 743 ? DID_HANDLE_NON_BLOCKING |
742 : DROP_EVENT; | 744 : DROP_EVENT; |
743 RecordScrollingThreadStatus(blink::WebGestureDeviceTouchpad, | 745 RecordScrollingThreadStatus(blink::WebGestureDeviceTouchpad, |
744 scroll_status.main_thread_scrolling_reasons); | 746 scroll_status.main_thread_scrolling_reasons); |
745 | 747 |
746 switch (scroll_status.thread) { | 748 switch (scroll_status.thread) { |
747 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: { | 749 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: { |
748 TRACE_EVENT_INSTANT2("input", | 750 TRACE_EVENT_INSTANT2("input", |
749 "InputHandlerProxy::handle_input wheel scroll", | 751 "InputHandlerProxy::handle_input wheel scroll", |
750 TRACE_EVENT_SCOPE_THREAD, "deltaX", | 752 TRACE_EVENT_SCOPE_THREAD, "deltaX", |
751 scroll_delta.x(), "deltaY", scroll_delta.y()); | 753 scroll_delta.x(), "deltaY", scroll_delta.y()); |
752 | 754 |
753 cc::ScrollStateData scroll_state_update_data; | 755 cc::ScrollStateData scroll_state_update_data; |
754 scroll_state_update_data.delta_x = scroll_delta.x(); | 756 scroll_state_update_data.delta_x = scroll_delta.x(); |
755 scroll_state_update_data.delta_y = scroll_delta.y(); | 757 scroll_state_update_data.delta_y = scroll_delta.y(); |
756 scroll_state_update_data.position_x = wheel_event.x; | 758 scroll_state_update_data.position_x = wheel_event.positionInWidget().x; |
757 scroll_state_update_data.position_y = wheel_event.y; | 759 scroll_state_update_data.position_y = wheel_event.positionInWidget().y; |
758 cc::ScrollState scroll_state_update(scroll_state_update_data); | 760 cc::ScrollState scroll_state_update(scroll_state_update_data); |
759 | 761 |
760 cc::InputHandlerScrollResult scroll_result = | 762 cc::InputHandlerScrollResult scroll_result = |
761 input_handler_->ScrollBy(&scroll_state_update); | 763 input_handler_->ScrollBy(&scroll_state_update); |
762 HandleOverscroll(gfx::Point(wheel_event.x, wheel_event.y), | 764 HandleOverscroll(gfx::Point(wheel_event.positionInWidget().x, |
| 765 wheel_event.positionInWidget().y), |
763 scroll_result, false); | 766 scroll_result, false); |
764 | 767 |
765 cc::ScrollStateData scroll_state_end_data; | 768 cc::ScrollStateData scroll_state_end_data; |
766 scroll_state_end_data.is_ending = true; | 769 scroll_state_end_data.is_ending = true; |
767 cc::ScrollState scroll_state_end(scroll_state_end_data); | 770 cc::ScrollState scroll_state_end(scroll_state_end_data); |
768 input_handler_->ScrollEnd(&scroll_state_end); | 771 input_handler_->ScrollEnd(&scroll_state_end); |
769 | 772 |
770 if (scroll_result.did_scroll) { | 773 if (scroll_result.did_scroll) { |
771 return listener_properties == cc::EventListenerProperties::kPassive | 774 return listener_properties == cc::EventListenerProperties::kPassive |
772 ? DID_HANDLE_NON_BLOCKING | 775 ? DID_HANDLE_NON_BLOCKING |
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1481 disposition = DID_NOT_HANDLE; | 1484 disposition = DID_NOT_HANDLE; |
1482 break; | 1485 break; |
1483 case cc::EventListenerProperties::kPassive: | 1486 case cc::EventListenerProperties::kPassive: |
1484 case cc::EventListenerProperties::kNone: { | 1487 case cc::EventListenerProperties::kNone: { |
1485 WebMouseWheelEvent synthetic_wheel(WebInputEvent::MouseWheel, | 1488 WebMouseWheelEvent synthetic_wheel(WebInputEvent::MouseWheel, |
1486 fling_parameters_.modifiers, | 1489 fling_parameters_.modifiers, |
1487 InSecondsF(base::TimeTicks::Now())); | 1490 InSecondsF(base::TimeTicks::Now())); |
1488 synthetic_wheel.deltaX = increment.width; | 1491 synthetic_wheel.deltaX = increment.width; |
1489 synthetic_wheel.deltaY = increment.height; | 1492 synthetic_wheel.deltaY = increment.height; |
1490 synthetic_wheel.hasPreciseScrollingDeltas = true; | 1493 synthetic_wheel.hasPreciseScrollingDeltas = true; |
1491 synthetic_wheel.x = fling_parameters_.point.x; | 1494 synthetic_wheel.setPositionInWidget(fling_parameters_.point.x, |
1492 synthetic_wheel.y = fling_parameters_.point.y; | 1495 fling_parameters_.point.y); |
1493 synthetic_wheel.globalX = fling_parameters_.globalPoint.x; | 1496 synthetic_wheel.setPositionInScreen(fling_parameters_.globalPoint.x, |
1494 synthetic_wheel.globalY = fling_parameters_.globalPoint.y; | 1497 fling_parameters_.globalPoint.y); |
1495 | 1498 |
1496 disposition = FlingScrollByMouseWheel(synthetic_wheel, properties); | 1499 disposition = FlingScrollByMouseWheel(synthetic_wheel, properties); |
1497 | 1500 |
1498 // Send the event over to the main thread. | 1501 // Send the event over to the main thread. |
1499 if (disposition == DID_HANDLE_NON_BLOCKING) { | 1502 if (disposition == DID_HANDLE_NON_BLOCKING) { |
1500 client_->DispatchNonBlockingEventToMainThread( | 1503 client_->DispatchNonBlockingEventToMainThread( |
1501 ui::WebInputEventTraits::Clone(synthetic_wheel), ui::LatencyInfo()); | 1504 ui::WebInputEventTraits::Clone(synthetic_wheel), ui::LatencyInfo()); |
1502 } | 1505 } |
1503 break; | 1506 break; |
1504 } | 1507 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1616 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, | 1619 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, |
1617 scroll_result)); | 1620 scroll_result)); |
1618 } | 1621 } |
1619 | 1622 |
1620 void InputHandlerProxy::SetTickClockForTesting( | 1623 void InputHandlerProxy::SetTickClockForTesting( |
1621 std::unique_ptr<base::TickClock> tick_clock) { | 1624 std::unique_ptr<base::TickClock> tick_clock) { |
1622 tick_clock_ = std::move(tick_clock); | 1625 tick_clock_ = std::move(tick_clock); |
1623 } | 1626 } |
1624 | 1627 |
1625 } // namespace ui | 1628 } // namespace ui |
OLD | NEW |