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

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

Issue 2486673008: Touchpad scroll latching enabled for Mac behind flag. (Closed)
Patch Set: merge conflicts resolved. Created 4 years, 1 month 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 return scroll_begin_event; 126 return scroll_begin_event;
127 } 127 }
128 128
129 cc::ScrollState CreateScrollStateForGesture(const WebGestureEvent& event) { 129 cc::ScrollState CreateScrollStateForGesture(const WebGestureEvent& event) {
130 cc::ScrollStateData scroll_state_data; 130 cc::ScrollStateData scroll_state_data;
131 switch (event.type) { 131 switch (event.type) {
132 case WebInputEvent::GestureScrollBegin: 132 case WebInputEvent::GestureScrollBegin:
133 scroll_state_data.position_x = event.x; 133 scroll_state_data.position_x = event.x;
134 scroll_state_data.position_y = event.y; 134 scroll_state_data.position_y = event.y;
135 scroll_state_data.is_beginning = true; 135 scroll_state_data.is_beginning = true;
136 // On Mac, a GestureScrollBegin in the inertial phase indicates a fling
137 // start.
138 if (event.data.scrollBegin.inertialPhase ==
139 WebGestureEvent::MomentumPhase) {
140 scroll_state_data.is_in_inertial_phase = true;
141 }
136 break; 142 break;
137 case WebInputEvent::GestureFlingStart: 143 case WebInputEvent::GestureFlingStart:
138 scroll_state_data.velocity_x = event.data.flingStart.velocityX; 144 scroll_state_data.velocity_x = event.data.flingStart.velocityX;
139 scroll_state_data.velocity_y = event.data.flingStart.velocityY; 145 scroll_state_data.velocity_y = event.data.flingStart.velocityY;
140 scroll_state_data.is_in_inertial_phase = true; 146 scroll_state_data.is_in_inertial_phase = true;
141 break; 147 break;
142 case WebInputEvent::GestureScrollUpdate: 148 case WebInputEvent::GestureScrollUpdate:
143 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX; 149 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX;
144 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY; 150 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY;
145 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX; 151 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX;
146 scroll_state_data.velocity_y = event.data.scrollUpdate.velocityY; 152 scroll_state_data.velocity_y = event.data.scrollUpdate.velocityY;
147 scroll_state_data.is_in_inertial_phase = 153 scroll_state_data.is_in_inertial_phase =
148 event.data.scrollUpdate.inertialPhase == 154 event.data.scrollUpdate.inertialPhase ==
149 WebGestureEvent::MomentumPhase; 155 WebGestureEvent::MomentumPhase;
150 break; 156 break;
151 case WebInputEvent::GestureScrollEnd: 157 case WebInputEvent::GestureScrollEnd:
152 case WebInputEvent::GestureFlingCancel: 158 case WebInputEvent::GestureFlingCancel:
153 scroll_state_data.is_ending = true; 159 scroll_state_data.is_ending = true;
160 scroll_state_data.may_precede_fling =
161 event.data.scrollEnd.mayPrecedeFling;
154 break; 162 break;
155 default: 163 default:
156 NOTREACHED(); 164 NOTREACHED();
157 break; 165 break;
158 } 166 }
159 return cc::ScrollState(scroll_state_data); 167 return cc::ScrollState(scroll_state_data);
160 } 168 }
161 169
162 void ReportInputEventLatencyUma(const WebInputEvent& event, 170 void ReportInputEventLatencyUma(const WebInputEvent& event,
163 const ui::LatencyInfo& latency_info) { 171 const ui::LatencyInfo& latency_info) {
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_) 689 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
682 return DID_NOT_HANDLE; 690 return DID_NOT_HANDLE;
683 691
684 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event); 692 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event);
685 gfx::Point scroll_point(gesture_event.x, gesture_event.y); 693 gfx::Point scroll_point(gesture_event.x, gesture_event.y);
686 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX, 694 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX,
687 -gesture_event.data.scrollUpdate.deltaY); 695 -gesture_event.data.scrollUpdate.deltaY);
688 696
689 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits != 697 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits !=
690 blink::WebGestureEvent::ScrollUnits::Pixels)) { 698 blink::WebGestureEvent::ScrollUnits::Pixels)) {
699 DCHECK(!scroll_state.is_in_inertial_phase());
691 base::TimeTicks event_time = 700 base::TimeTicks event_time =
692 base::TimeTicks() + 701 base::TimeTicks() +
693 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds); 702 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds);
694 base::TimeDelta delay = base::TimeTicks::Now() - event_time; 703 base::TimeDelta delay = base::TimeTicks::Now() - event_time;
695 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay) 704 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay)
696 .thread) { 705 .thread) {
697 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: 706 case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
698 return DID_HANDLE; 707 return DID_HANDLE;
699 case cc::InputHandler::SCROLL_IGNORED: 708 case cc::InputHandler::SCROLL_IGNORED:
700 return DROP_EVENT; 709 return DROP_EVENT;
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 // is made asynchronously, to minimize divergence between main thread and 1425 // is made asynchronously, to minimize divergence between main thread and
1417 // impl thread event handling paths. 1426 // impl thread event handling paths.
1418 base::ThreadTaskRunnerHandle::Get()->PostTask( 1427 base::ThreadTaskRunnerHandle::Get()->PostTask(
1419 FROM_HERE, 1428 FROM_HERE,
1420 base::Bind(&InputScrollElasticityController::ObserveGestureEventAndResult, 1429 base::Bind(&InputScrollElasticityController::ObserveGestureEventAndResult,
1421 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, 1430 scroll_elasticity_controller_->GetWeakPtr(), gesture_event,
1422 scroll_result)); 1431 scroll_result));
1423 } 1432 }
1424 1433
1425 } // namespace ui 1434 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698