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

Unified Diff: ui/events/blink/input_handler_proxy.cc

Issue 2630603002: Revert of Touchpad and wheel scroll latching for ChromeOS behind flag. (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/events/blink/input_handler_proxy.h ('k') | ui/events/blink/input_handler_proxy_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/blink/input_handler_proxy.cc
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc
index 4612648ab954813bea94efc1bf5ec1b783c65e86..fcd5b33aa14e40e0a52a464a801bac8369433f1f 100644
--- a/ui/events/blink/input_handler_proxy.cc
+++ b/ui/events/blink/input_handler_proxy.cc
@@ -254,7 +254,6 @@
has_fling_animation_started_(false),
smooth_scroll_enabled_(false),
uma_latency_reporting_enabled_(base::TimeTicks::IsHighResolution()),
- touchpad_and_wheel_scroll_latching_enabled_(false),
touch_start_result_(kEventDispositionUndefined),
current_overscroll_params_(nullptr),
has_ongoing_compositor_scroll_pinch_(false),
@@ -614,46 +613,53 @@
}
}
-InputHandlerProxy::EventDisposition InputHandlerProxy::FlingScrollByMouseWheel(
+InputHandlerProxy::EventDisposition InputHandlerProxy::ScrollByMouseWheel(
const WebMouseWheelEvent& wheel_event,
cc::EventListenerProperties listener_properties) {
DCHECK(listener_properties == cc::EventListenerProperties::kPassive ||
listener_properties == cc::EventListenerProperties::kNone);
- DCHECK(!wheel_event.railsMode);
- gfx::Vector2dF scroll_delta(-wheel_event.deltaX, -wheel_event.deltaY);
-
- DCHECK(!wheel_event.scrollByPage);
- DCHECK(wheel_event.hasPreciseScrollingDeltas);
- if (touchpad_and_wheel_scroll_latching_enabled_) {
- if (gesture_scroll_on_impl_thread_) {
- TRACE_EVENT_INSTANT2("input",
- "InputHandlerProxy::handle_input wheel scroll",
- TRACE_EVENT_SCOPE_THREAD, "deltaX", scroll_delta.x(),
- "deltaY", scroll_delta.y());
-
- cc::ScrollStateData scroll_state_update_data;
- scroll_state_update_data.delta_x = scroll_delta.x();
- scroll_state_update_data.delta_y = scroll_delta.y();
- scroll_state_update_data.position_x = wheel_event.x;
- scroll_state_update_data.position_y = wheel_event.y;
- cc::ScrollState scroll_state_update(scroll_state_update_data);
-
- cc::InputHandlerScrollResult scroll_result =
- input_handler_->ScrollBy(&scroll_state_update);
- HandleOverscroll(gfx::Point(wheel_event.x, wheel_event.y), scroll_result,
- false);
- if (scroll_result.did_scroll) {
- return listener_properties == cc::EventListenerProperties::kPassive
- ? DID_HANDLE_NON_BLOCKING
- : DID_HANDLE;
- }
-
- return DROP_EVENT;
- } else {
- return DID_NOT_HANDLE;
- }
- } else { // !touchpad_and_wheel_scroll_latching_enabled_
+ // TODO(ccameron): The rail information should be pushed down into
+ // InputHandler.
+ gfx::Vector2dF scroll_delta(
+ wheel_event.railsMode != WebInputEvent::RailsModeVertical
+ ? -wheel_event.deltaX
+ : 0,
+ wheel_event.railsMode != WebInputEvent::RailsModeHorizontal
+ ? -wheel_event.deltaY
+ : 0);
+
+ if (wheel_event.scrollByPage) {
+ // TODO(jamesr): We don't properly handle scroll by page in the compositor
+ // thread, so punt it to the main thread. http://crbug.com/236639
+ RecordMainThreadScrollingReasons(
+ blink::WebGestureDeviceTouchpad,
+ cc::MainThreadScrollingReason::kPageBasedScrolling);
+ return DID_NOT_HANDLE;
+
+ } else if (ShouldAnimate(wheel_event.hasPreciseScrollingDeltas)) {
+ base::TimeTicks event_time =
+ base::TimeTicks() +
+ base::TimeDelta::FromSecondsD(wheel_event.timeStampSeconds);
+ base::TimeDelta delay = base::TimeTicks::Now() - event_time;
+ cc::InputHandler::ScrollStatus scroll_status =
+ input_handler_->ScrollAnimated(gfx::Point(wheel_event.x, wheel_event.y),
+ scroll_delta, delay);
+
+ RecordMainThreadScrollingReasons(
+ blink::WebGestureDeviceTouchpad,
+ scroll_status.main_thread_scrolling_reasons);
+
+ switch (scroll_status.thread) {
+ case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
+ return DID_HANDLE;
+ case cc::InputHandler::SCROLL_IGNORED:
+ return DROP_EVENT;
+ default:
+ return DID_NOT_HANDLE;
+ }
+
+ } else {
cc::ScrollStateData scroll_state_begin_data;
scroll_state_begin_data.position_x = wheel_event.x;
scroll_state_begin_data.position_y = wheel_event.y;
@@ -874,8 +880,7 @@
switch (scroll_status.thread) {
case cc::InputHandler::SCROLL_ON_IMPL_THREAD: {
- if (!touchpad_and_wheel_scroll_latching_enabled_ &&
- gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) {
+ if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) {
scroll_state.set_is_ending(true);
input_handler_->ScrollEnd(&scroll_state);
}
@@ -1340,9 +1345,7 @@
bool InputHandlerProxy::CancelCurrentFlingWithoutNotifyingClient() {
bool had_fling_animation = !!fling_curve_;
if (had_fling_animation &&
- (fling_parameters_.sourceDevice == blink::WebGestureDeviceTouchscreen ||
- (touchpad_and_wheel_scroll_latching_enabled_ &&
- fling_parameters_.sourceDevice == blink::WebGestureDeviceTouchpad))) {
+ fling_parameters_.sourceDevice == blink::WebGestureDeviceTouchscreen) {
cc::ScrollStateData scroll_state_data;
scroll_state_data.is_ending = true;
cc::ScrollState scroll_state(scroll_state_data);
@@ -1413,7 +1416,7 @@
synthetic_wheel.globalX = fling_parameters_.globalPoint.x;
synthetic_wheel.globalY = fling_parameters_.globalPoint.y;
- disposition = FlingScrollByMouseWheel(synthetic_wheel, properties);
+ disposition = ScrollByMouseWheel(synthetic_wheel, properties);
// Send the event over to the main thread.
if (disposition == DID_HANDLE_NON_BLOCKING) {
« no previous file with comments | « ui/events/blink/input_handler_proxy.h ('k') | ui/events/blink/input_handler_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698