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

Side by Side Diff: ui/events/blink/input_handler_proxy.cc

Issue 2782893002: WebMouseEvent coordinates are now fractional & private (Closed)
Patch Set: Fixed a compile failure Created 3 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
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698