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

Side by Side Diff: content/renderer/input/input_handler_proxy.cc

Issue 1403893003: Plumb gesture source value through Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Convert more tests (related to CL) to use Touchscreen. Created 5 years, 2 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 "content/renderer/input/input_handler_proxy.h" 5 #include "content/renderer/input/input_handler_proxy.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 #endif 492 #endif
493 input_handler_->ScrollEnd(); 493 input_handler_->ScrollEnd();
494 if (!gesture_scroll_on_impl_thread_) 494 if (!gesture_scroll_on_impl_thread_)
495 return DID_NOT_HANDLE; 495 return DID_NOT_HANDLE;
496 gesture_scroll_on_impl_thread_ = false; 496 gesture_scroll_on_impl_thread_ = false;
497 return DID_HANDLE; 497 return DID_HANDLE;
498 } 498 }
499 499
500 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart( 500 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart(
501 const WebGestureEvent& gesture_event) { 501 const WebGestureEvent& gesture_event) {
502 cc::InputHandler::ScrollStatus scroll_status; 502 cc::InputHandler::ScrollStatus scroll_status =
503 503 cc::InputHandler::SCROLL_ON_MAIN_THREAD;
504 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) { 504 switch (gesture_event.sourceDevice) {
505 case blink::WebGestureDeviceTouchpad:
505 if (gesture_event.data.flingStart.targetViewport) { 506 if (gesture_event.data.flingStart.targetViewport) {
506 scroll_status = input_handler_->RootScrollBegin( 507 scroll_status = input_handler_->RootScrollBegin(
507 cc::InputHandler::NON_BUBBLING_GESTURE); 508 cc::InputHandler::NON_BUBBLING_GESTURE);
508 } else { 509 } else {
509 scroll_status = input_handler_->ScrollBegin( 510 scroll_status = input_handler_->ScrollBegin(
510 gfx::Point(gesture_event.x, gesture_event.y), 511 gfx::Point(gesture_event.x, gesture_event.y),
511 cc::InputHandler::NON_BUBBLING_GESTURE); 512 cc::InputHandler::NON_BUBBLING_GESTURE);
512 } 513 }
513 } else { 514 break;
515 case blink::WebGestureDeviceTouchscreen:
514 if (!gesture_scroll_on_impl_thread_) 516 if (!gesture_scroll_on_impl_thread_)
515 scroll_status = cc::InputHandler::SCROLL_ON_MAIN_THREAD; 517 scroll_status = cc::InputHandler::SCROLL_ON_MAIN_THREAD;
516 else 518 else
517 scroll_status = input_handler_->FlingScrollBegin(); 519 scroll_status = input_handler_->FlingScrollBegin();
520 break;
521 case blink::WebGestureDeviceUninitialized:
522 NOTREACHED();
523 return DID_NOT_HANDLE;
518 } 524 }
519 525
520 #ifndef NDEBUG 526 #ifndef NDEBUG
521 expect_scroll_update_end_ = false; 527 expect_scroll_update_end_ = false;
522 #endif 528 #endif
523 529
524 switch (scroll_status) { 530 switch (scroll_status) {
525 case cc::InputHandler::SCROLL_STARTED: { 531 case cc::InputHandler::SCROLL_STARTED: {
526 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) 532 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad)
527 input_handler_->ScrollEnd(); 533 input_handler_->ScrollEnd();
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 case blink::WebGestureDeviceTouchpad: 1016 case blink::WebGestureDeviceTouchpad:
1011 did_scroll = TouchpadFlingScroll(clipped_increment); 1017 did_scroll = TouchpadFlingScroll(clipped_increment);
1012 break; 1018 break;
1013 case blink::WebGestureDeviceTouchscreen: { 1019 case blink::WebGestureDeviceTouchscreen: {
1014 clipped_increment = ToClientScrollIncrement(clipped_increment); 1020 clipped_increment = ToClientScrollIncrement(clipped_increment);
1015 cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollBy( 1021 cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollBy(
1016 fling_parameters_.point, clipped_increment); 1022 fling_parameters_.point, clipped_increment);
1017 HandleOverscroll(fling_parameters_.point, scroll_result); 1023 HandleOverscroll(fling_parameters_.point, scroll_result);
1018 did_scroll = scroll_result.did_scroll; 1024 did_scroll = scroll_result.did_scroll;
1019 } break; 1025 } break;
1026 case blink::WebGestureDeviceUninitialized:
1027 NOTREACHED();
1028 return false;
1020 } 1029 }
1021 1030
1022 if (did_scroll) { 1031 if (did_scroll) {
1023 fling_parameters_.cumulativeScroll.width += clipped_increment.width; 1032 fling_parameters_.cumulativeScroll.width += clipped_increment.width;
1024 fling_parameters_.cumulativeScroll.height += clipped_increment.height; 1033 fling_parameters_.cumulativeScroll.height += clipped_increment.height;
1025 } 1034 }
1026 1035
1027 // It's possible the provided |increment| is sufficiently small as to not 1036 // It's possible the provided |increment| is sufficiently small as to not
1028 // trigger a scroll, e.g., with a trivial time delta between fling updates. 1037 // trigger a scroll, e.g., with a trivial time delta between fling updates.
1029 // Return true in this case to prevent early fling termination. 1038 // Return true in this case to prevent early fling termination.
1030 if (std::abs(clipped_increment.width) < kScrollEpsilon && 1039 if (std::abs(clipped_increment.width) < kScrollEpsilon &&
1031 std::abs(clipped_increment.height) < kScrollEpsilon) 1040 std::abs(clipped_increment.height) < kScrollEpsilon)
1032 return true; 1041 return true;
1033 1042
1034 return did_scroll; 1043 return did_scroll;
1035 } 1044 }
1036 1045
1037 } // namespace content 1046 } // namespace content
OLDNEW
« no previous file with comments | « content/public/test/render_view_test.cc ('k') | content/renderer/input/input_handler_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698