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

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

Issue 2472943003: Revert "Touchpad scroll latching enabled for Mac behind flag." (Closed)
Patch Set: Better merge. 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
« 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 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 }
142 break; 136 break;
143 case WebInputEvent::GestureFlingStart: 137 case WebInputEvent::GestureFlingStart:
144 scroll_state_data.velocity_x = event.data.flingStart.velocityX; 138 scroll_state_data.velocity_x = event.data.flingStart.velocityX;
145 scroll_state_data.velocity_y = event.data.flingStart.velocityY; 139 scroll_state_data.velocity_y = event.data.flingStart.velocityY;
146 scroll_state_data.is_in_inertial_phase = true; 140 scroll_state_data.is_in_inertial_phase = true;
147 break; 141 break;
148 case WebInputEvent::GestureScrollUpdate: 142 case WebInputEvent::GestureScrollUpdate:
149 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX; 143 scroll_state_data.delta_x = -event.data.scrollUpdate.deltaX;
150 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY; 144 scroll_state_data.delta_y = -event.data.scrollUpdate.deltaY;
151 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX; 145 scroll_state_data.velocity_x = event.data.scrollUpdate.velocityX;
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 ? -wheel_event.deltaY 518 ? -wheel_event.deltaY
525 : 0); 519 : 0);
526 520
527 if (wheel_event.scrollByPage) { 521 if (wheel_event.scrollByPage) {
528 // TODO(jamesr): We don't properly handle scroll by page in the compositor 522 // TODO(jamesr): We don't properly handle scroll by page in the compositor
529 // thread, so punt it to the main thread. http://crbug.com/236639 523 // thread, so punt it to the main thread. http://crbug.com/236639
530 RecordMainThreadScrollingReasons( 524 RecordMainThreadScrollingReasons(
531 blink::WebGestureDeviceTouchpad, 525 blink::WebGestureDeviceTouchpad,
532 cc::MainThreadScrollingReason::kPageBasedScrolling); 526 cc::MainThreadScrollingReason::kPageBasedScrolling);
533 return DID_NOT_HANDLE; 527 return DID_NOT_HANDLE;
528
529 } else if (ShouldAnimate(wheel_event.hasPreciseScrollingDeltas)) {
530 base::TimeTicks event_time =
531 base::TimeTicks() +
532 base::TimeDelta::FromSecondsD(wheel_event.timeStampSeconds);
533 base::TimeDelta delay = base::TimeTicks::Now() - event_time;
534 cc::InputHandler::ScrollStatus scroll_status =
535 input_handler_->ScrollAnimated(gfx::Point(wheel_event.x, wheel_event.y),
536 scroll_delta, delay);
537
538 RecordMainThreadScrollingReasons(
539 blink::WebGestureDeviceTouchpad,
540 scroll_status.main_thread_scrolling_reasons);
541
542 switch (scroll_status.thread) {
543 case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
544 return DID_HANDLE;
545 case cc::InputHandler::SCROLL_IGNORED:
546 return DROP_EVENT;
547 default:
548 return DID_NOT_HANDLE;
549 }
550
534 } else { 551 } else {
535 DCHECK(!ShouldAnimate(wheel_event.hasPreciseScrollingDeltas));
536 cc::ScrollStateData scroll_state_begin_data; 552 cc::ScrollStateData scroll_state_begin_data;
537 scroll_state_begin_data.position_x = wheel_event.x; 553 scroll_state_begin_data.position_x = wheel_event.x;
538 scroll_state_begin_data.position_y = wheel_event.y; 554 scroll_state_begin_data.position_y = wheel_event.y;
539 scroll_state_begin_data.is_beginning = true; 555 scroll_state_begin_data.is_beginning = true;
540 cc::ScrollState scroll_state_begin(scroll_state_begin_data); 556 cc::ScrollState scroll_state_begin(scroll_state_begin_data);
541 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin( 557 cc::InputHandler::ScrollStatus scroll_status = input_handler_->ScrollBegin(
542 &scroll_state_begin, cc::InputHandler::WHEEL); 558 &scroll_state_begin, cc::InputHandler::WHEEL);
543 559
544 RecordMainThreadScrollingReasons( 560 RecordMainThreadScrollingReasons(
545 blink::WebGestureDeviceTouchpad, 561 blink::WebGestureDeviceTouchpad,
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_) 676 if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_)
661 return DID_NOT_HANDLE; 677 return DID_NOT_HANDLE;
662 678
663 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event); 679 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event);
664 gfx::Point scroll_point(gesture_event.x, gesture_event.y); 680 gfx::Point scroll_point(gesture_event.x, gesture_event.y);
665 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX, 681 gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX,
666 -gesture_event.data.scrollUpdate.deltaY); 682 -gesture_event.data.scrollUpdate.deltaY);
667 683
668 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits != 684 if (ShouldAnimate(gesture_event.data.scrollUpdate.deltaUnits !=
669 blink::WebGestureEvent::ScrollUnits::Pixels)) { 685 blink::WebGestureEvent::ScrollUnits::Pixels)) {
670 DCHECK(!scroll_state.is_in_inertial_phase());
671 base::TimeTicks event_time = 686 base::TimeTicks event_time =
672 base::TimeTicks() + 687 base::TimeTicks() +
673 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds); 688 base::TimeDelta::FromSecondsD(gesture_event.timeStampSeconds);
674 base::TimeDelta delay = base::TimeTicks::Now() - event_time; 689 base::TimeDelta delay = base::TimeTicks::Now() - event_time;
675 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay) 690 switch (input_handler_->ScrollAnimated(scroll_point, scroll_delta, delay)
676 .thread) { 691 .thread) {
677 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: 692 case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
678 return DID_HANDLE; 693 return DID_HANDLE;
679 case cc::InputHandler::SCROLL_IGNORED: 694 case cc::InputHandler::SCROLL_IGNORED:
680 return DROP_EVENT; 695 return DROP_EVENT;
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
1391 // is made asynchronously, to minimize divergence between main thread and 1406 // is made asynchronously, to minimize divergence between main thread and
1392 // impl thread event handling paths. 1407 // impl thread event handling paths.
1393 base::ThreadTaskRunnerHandle::Get()->PostTask( 1408 base::ThreadTaskRunnerHandle::Get()->PostTask(
1394 FROM_HERE, 1409 FROM_HERE,
1395 base::Bind(&InputScrollElasticityController::ObserveGestureEventAndResult, 1410 base::Bind(&InputScrollElasticityController::ObserveGestureEventAndResult,
1396 scroll_elasticity_controller_->GetWeakPtr(), gesture_event, 1411 scroll_elasticity_controller_->GetWeakPtr(), gesture_event,
1397 scroll_result)); 1412 scroll_result));
1398 } 1413 }
1399 1414
1400 } // namespace ui 1415 } // 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