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

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

Issue 2486673008: Touchpad scroll latching enabled for Mac behind flag. (Closed)
Patch Set: GSE/GSB are not sent when a scroll in inertial phase begins. Created 4 years 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 | « content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 return scroll_begin_event; 133 return scroll_begin_event;
134 } 134 }
135 135
136 cc::ScrollState CreateScrollStateForGesture(const WebGestureEvent& event) { 136 cc::ScrollState CreateScrollStateForGesture(const WebGestureEvent& event) {
137 cc::ScrollStateData scroll_state_data; 137 cc::ScrollStateData scroll_state_data;
138 switch (event.type) { 138 switch (event.type) {
139 case WebInputEvent::GestureScrollBegin: 139 case WebInputEvent::GestureScrollBegin:
140 scroll_state_data.position_x = event.x; 140 scroll_state_data.position_x = event.x;
141 scroll_state_data.position_y = event.y; 141 scroll_state_data.position_y = event.y;
142 scroll_state_data.is_beginning = true; 142 scroll_state_data.is_beginning = true;
143 // On Mac, a GestureScrollBegin in the inertial phase indicates a fling
144 // start.
145 if (event.data.scrollBegin.inertialPhase ==
146 WebGestureEvent::MomentumPhase) {
147 scroll_state_data.is_in_inertial_phase = true;
dtapuska 2016/12/13 21:16:42 Can we short hand this to: scroll_state_data.is_in
148 }
143 break; 149 break;
144 case WebInputEvent::GestureFlingStart: 150 case WebInputEvent::GestureFlingStart:
145 scroll_state_data.velocity_x = event.data.flingStart.velocityX; 151 scroll_state_data.velocity_x = event.data.flingStart.velocityX;
146 scroll_state_data.velocity_y = event.data.flingStart.velocityY; 152 scroll_state_data.velocity_y = event.data.flingStart.velocityY;
147 scroll_state_data.is_in_inertial_phase = true; 153 scroll_state_data.is_in_inertial_phase = true;
148 break; 154 break;
149 case WebInputEvent::GestureScrollUpdate: 155 case WebInputEvent::GestureScrollUpdate:
150 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX; 156 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX;
151 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY; 157 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY;
152 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX; 158 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX;
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_) 787 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
782 return DID_NOT_HANDLE; 788 return DID_NOT_HANDLE;
783 789
784 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event); 790 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event);
785 gfx::Point scroll_point(gesture_event.x, gesture_event.y); 791 gfx::Point scroll_point(gesture_event.x, gesture_event.y);
786 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX, 792 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX,
787 -gesture_event.data.scrollUpdate.deltaY); 793 -gesture_event.data.scrollUpdate.deltaY);
788 794
789 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits != 795 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits !=
790 blink::WebGestureEvent::ScrollUnits::Pixels)) { 796 blink::WebGestureEvent::ScrollUnits::Pixels)) {
797 DCHECK(!scroll_state.is_in_inertial_phase());
791 base::TimeTicks event_time = 798 base::TimeTicks event_time =
792 base::TimeTicks() + 799 base::TimeTicks() +
793 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds); 800 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds);
794 base::TimeDelta delay = base::TimeTicks::Now() - event_time; 801 base::TimeDelta delay = base::TimeTicks::Now() - event_time;
795 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay) 802 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay)
796 .thread) { 803 .thread) {
797 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: 804 case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
798 return DID_HANDLE; 805 return DID_HANDLE;
799 case cc::InputHandler::SCROLL_IGNORED: 806 case cc::InputHandler::SCROLL_IGNORED:
800 return DROP_EVENT; 807 return DROP_EVENT;
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, 1540 scroll_elasticity_controller_->GetWeakPtr(), gesture_event,
1534 scroll_result)); 1541 scroll_result));
1535 } 1542 }
1536 1543
1537 void InputHandlerProxy::SetTickClockForTesting( 1544 void InputHandlerProxy::SetTickClockForTesting(
1538 std::unique_ptr<base::TickClock> tick_clock) { 1545 std::unique_ptr<base::TickClock> tick_clock) {
1539 tick_clock_ = std::move(tick_clock); 1546 tick_clock_ = std::move(tick_clock);
1540 } 1547 }
1541 1548
1542 } // namespace ui 1549 } // namespace ui
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698