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

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

Issue 1604053002: cc: Fix enum style conformance in InputHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 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
11 #include "base/auto_reset.h" 11 #include "base/auto_reset.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "base/single_thread_task_runner.h" 16 #include "base/single_thread_task_runner.h"
17 #include "base/thread_task_runner_handle.h" 17 #include "base/thread_task_runner_handle.h"
18 #include "base/trace_event/trace_event.h" 18 #include "base/trace_event/trace_event.h"
19 #include "cc/input/main_thread_scrolling_reason.h"
19 #include "third_party/WebKit/public/web/WebInputEvent.h" 20 #include "third_party/WebKit/public/web/WebInputEvent.h"
20 #include "ui/events/blink/input_handler_proxy_client.h" 21 #include "ui/events/blink/input_handler_proxy_client.h"
21 #include "ui/events/blink/input_scroll_elasticity_controller.h" 22 #include "ui/events/blink/input_scroll_elasticity_controller.h"
22 #include "ui/events/latency_info.h" 23 #include "ui/events/latency_info.h"
23 #include "ui/gfx/geometry/point_conversions.h" 24 #include "ui/gfx/geometry/point_conversions.h"
24 25
25 using blink::WebFloatPoint; 26 using blink::WebFloatPoint;
26 using blink::WebFloatSize; 27 using blink::WebFloatSize;
27 using blink::WebGestureEvent; 28 using blink::WebGestureEvent;
28 using blink::WebInputEvent; 29 using blink::WebInputEvent;
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // otherwise disrupt an in-progress touch scroll. 353 // otherwise disrupt an in-progress touch scroll.
353 if (fling_curve_) 354 if (fling_curve_)
354 CancelCurrentFling(); 355 CancelCurrentFling();
355 } 356 }
356 break; 357 break;
357 } 358 }
358 359
359 return DID_NOT_HANDLE; 360 return DID_NOT_HANDLE;
360 } 361 }
361 362
362 void RecordMainThreadScrollingReasons( 363 void RecordMainThreadScrollingReasons(WebInputEvent::Type type,
363 WebInputEvent::Type type, 364 uint32_t reasons) {
364 cc::InputHandler::MainThreadScrollingReason reasons) {
365 static const char* kGestureHistogramName = 365 static const char* kGestureHistogramName =
366 "Renderer4.MainThreadGestureScrollReason"; 366 "Renderer4.MainThreadGestureScrollReason";
367 static const char* kWheelHistogramName = 367 static const char* kWheelHistogramName =
368 "Renderer4.MainThreadWheelScrollReason"; 368 "Renderer4.MainThreadWheelScrollReason";
369 369
370 DCHECK(type == WebInputEvent::GestureScrollBegin || 370 DCHECK(type == WebInputEvent::GestureScrollBegin ||
371 type == WebInputEvent::MouseWheel); 371 type == WebInputEvent::MouseWheel);
372 372
373 if (type != WebInputEvent::GestureScrollBegin && 373 if (type != WebInputEvent::GestureScrollBegin &&
374 type != WebInputEvent::MouseWheel) { 374 type != WebInputEvent::MouseWheel) {
375 return; 375 return;
376 } 376 }
377 377
378 if (reasons == cc::InputHandler::NOT_SCROLLING_ON_MAIN) { 378 if (reasons == cc::MainThreadScrollingReason::kNotScrollingOnMain) {
379 if (type == WebInputEvent::GestureScrollBegin) { 379 if (type == WebInputEvent::GestureScrollBegin) {
380 UMA_HISTOGRAM_ENUMERATION( 380 UMA_HISTOGRAM_ENUMERATION(
381 kGestureHistogramName, cc::InputHandler::NOT_SCROLLING_ON_MAIN, 381 kGestureHistogramName,
382 cc::InputHandler::MainThreadScrollingReasonCount); 382 cc::MainThreadScrollingReason::kNotScrollingOnMain,
383 cc::MainThreadScrollingReason::kMainThreadScrollingReasonCount);
383 } else { 384 } else {
384 UMA_HISTOGRAM_ENUMERATION( 385 UMA_HISTOGRAM_ENUMERATION(
385 kWheelHistogramName, cc::InputHandler::NOT_SCROLLING_ON_MAIN, 386 kWheelHistogramName,
386 cc::InputHandler::MainThreadScrollingReasonCount); 387 cc::MainThreadScrollingReason::kNotScrollingOnMain,
388 cc::MainThreadScrollingReason::kMainThreadScrollingReasonCount);
387 } 389 }
388 } 390 }
389 391
390 for (int i = 0; i < cc::InputHandler::MainThreadScrollingReasonCount - 1; 392 for (uint32_t i = 0;
393 i < cc::MainThreadScrollingReason::kMainThreadScrollingReasonCount - 1;
391 ++i) { 394 ++i) {
392 unsigned val = 1 << i; 395 unsigned val = 1 << i;
393 if (reasons & val) { 396 if (reasons & val) {
394 if (type == WebInputEvent::GestureScrollBegin) { 397 if (type == WebInputEvent::GestureScrollBegin) {
395 UMA_HISTOGRAM_ENUMERATION( 398 UMA_HISTOGRAM_ENUMERATION(
396 kGestureHistogramName, i + 1, 399 kGestureHistogramName, i + 1,
397 cc::InputHandler::MainThreadScrollingReasonCount); 400 cc::MainThreadScrollingReason::kMainThreadScrollingReasonCount);
398 } else { 401 } else {
399 UMA_HISTOGRAM_ENUMERATION( 402 UMA_HISTOGRAM_ENUMERATION(
400 kWheelHistogramName, i + 1, 403 kWheelHistogramName, i + 1,
401 cc::InputHandler::MainThreadScrollingReasonCount); 404 cc::MainThreadScrollingReason::kMainThreadScrollingReasonCount);
402 } 405 }
403 } 406 }
404 } 407 }
405 } 408 }
406 409
407 bool InputHandlerProxy::ShouldAnimate( 410 bool InputHandlerProxy::ShouldAnimate(
408 const blink::WebMouseWheelEvent& event) const { 411 const blink::WebMouseWheelEvent& event) const {
409 #if defined(OS_MACOSX) 412 #if defined(OS_MACOSX)
410 // Mac does not smooth scroll wheel events (crbug.com/574283). 413 // Mac does not smooth scroll wheel events (crbug.com/574283).
411 return false; 414 return false;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 // TODO(jamesr): This should be DROP_EVENT, but in cases where we fail 493 // TODO(jamesr): This should be DROP_EVENT, but in cases where we fail
491 // to properly sync scrollability it's safer to send the event to the 494 // to properly sync scrollability it's safer to send the event to the
492 // main thread. Change back to DROP_EVENT once we have synchronization 495 // main thread. Change back to DROP_EVENT once we have synchronization
493 // bugs sorted out. 496 // bugs sorted out.
494 result = DID_NOT_HANDLE; 497 result = DID_NOT_HANDLE;
495 break; 498 break;
496 case cc::InputHandler::SCROLL_UNKNOWN: 499 case cc::InputHandler::SCROLL_UNKNOWN:
497 case cc::InputHandler::SCROLL_ON_MAIN_THREAD: 500 case cc::InputHandler::SCROLL_ON_MAIN_THREAD:
498 result = DID_NOT_HANDLE; 501 result = DID_NOT_HANDLE;
499 break; 502 break;
500 case cc::InputHandler::ScrollStatusCount:
501 NOTREACHED();
502 break;
503 } 503 }
504 } 504 }
505 505
506 // Send the event and its disposition to the elasticity controller to update 506 // Send the event and its disposition to the elasticity controller to update
507 // the over-scroll animation. If the event is to be handled on the main 507 // the over-scroll animation. If the event is to be handled on the main
508 // thread, the event and its disposition will be sent to the elasticity 508 // thread, the event and its disposition will be sent to the elasticity
509 // controller after being handled on the main thread. 509 // controller after being handled on the main thread.
510 if (scroll_elasticity_controller_ && result != DID_NOT_HANDLE) { 510 if (scroll_elasticity_controller_ && result != DID_NOT_HANDLE) {
511 // Note that the call to the elasticity controller is made asynchronously, 511 // Note that the call to the elasticity controller is made asynchronously,
512 // to minimize divergence between main thread and impl thread event 512 // to minimize divergence between main thread and impl thread event
(...skipping 20 matching lines...) Expand all
533 cc::InputHandler::ScrollStatus scroll_status; 533 cc::InputHandler::ScrollStatus scroll_status;
534 if (gesture_event.data.scrollBegin.targetViewport) { 534 if (gesture_event.data.scrollBegin.targetViewport) {
535 scroll_status = input_handler_->RootScrollBegin(&scroll_state, 535 scroll_status = input_handler_->RootScrollBegin(&scroll_state,
536 cc::InputHandler::GESTURE); 536 cc::InputHandler::GESTURE);
537 } else { 537 } else {
538 scroll_status = 538 scroll_status =
539 input_handler_->ScrollBegin(&scroll_state, cc::InputHandler::GESTURE); 539 input_handler_->ScrollBegin(&scroll_state, cc::InputHandler::GESTURE);
540 } 540 }
541 UMA_HISTOGRAM_ENUMERATION("Renderer4.CompositorScrollHitTestResult", 541 UMA_HISTOGRAM_ENUMERATION("Renderer4.CompositorScrollHitTestResult",
542 scroll_status.thread, 542 scroll_status.thread,
543 cc::InputHandler::ScrollStatusCount); 543 cc::InputHandler::LAST_SCROLL_STATUS + 1);
544 544
545 RecordMainThreadScrollingReasons(gesture_event.type, 545 RecordMainThreadScrollingReasons(gesture_event.type,
546 scroll_status.main_thread_scrolling_reasons); 546 scroll_status.main_thread_scrolling_reasons);
547 547
548 switch (scroll_status.thread) { 548 switch (scroll_status.thread) {
549 case cc::InputHandler::SCROLL_ON_IMPL_THREAD: 549 case cc::InputHandler::SCROLL_ON_IMPL_THREAD:
550 TRACE_EVENT_INSTANT0("input", 550 TRACE_EVENT_INSTANT0("input",
551 "InputHandlerProxy::handle_input gesture scroll", 551 "InputHandlerProxy::handle_input gesture scroll",
552 TRACE_EVENT_SCOPE_THREAD); 552 TRACE_EVENT_SCOPE_THREAD);
553 gesture_scroll_on_impl_thread_ = true; 553 gesture_scroll_on_impl_thread_ = true;
554 return DID_HANDLE; 554 return DID_HANDLE;
555 case cc::InputHandler::SCROLL_UNKNOWN: 555 case cc::InputHandler::SCROLL_UNKNOWN:
556 case cc::InputHandler::SCROLL_ON_MAIN_THREAD: 556 case cc::InputHandler::SCROLL_ON_MAIN_THREAD:
557 return DID_NOT_HANDLE; 557 return DID_NOT_HANDLE;
558 case cc::InputHandler::SCROLL_IGNORED: 558 case cc::InputHandler::SCROLL_IGNORED:
559 return DROP_EVENT; 559 return DROP_EVENT;
560 case cc::InputHandler::ScrollStatusCount:
561 NOTREACHED();
562 break;
563 } 560 }
564 return DID_NOT_HANDLE; 561 return DID_NOT_HANDLE;
565 } 562 }
566 563
567 InputHandlerProxy::EventDisposition 564 InputHandlerProxy::EventDisposition
568 InputHandlerProxy::HandleGestureScrollUpdate( 565 InputHandlerProxy::HandleGestureScrollUpdate(
569 const WebGestureEvent& gesture_event) { 566 const WebGestureEvent& gesture_event) {
570 #ifndef NDEBUG 567 #ifndef NDEBUG
571 DCHECK(expect_scroll_update_end_); 568 DCHECK(expect_scroll_update_end_);
572 #endif 569 #endif
(...skipping 20 matching lines...) Expand all
593 return DID_NOT_HANDLE; 590 return DID_NOT_HANDLE;
594 gesture_scroll_on_impl_thread_ = false; 591 gesture_scroll_on_impl_thread_ = false;
595 return DID_HANDLE; 592 return DID_HANDLE;
596 } 593 }
597 594
598 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart( 595 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart(
599 const WebGestureEvent& gesture_event) { 596 const WebGestureEvent& gesture_event) {
600 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event); 597 cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event);
601 cc::InputHandler::ScrollStatus scroll_status; 598 cc::InputHandler::ScrollStatus scroll_status;
602 scroll_status.main_thread_scrolling_reasons = 599 scroll_status.main_thread_scrolling_reasons =
603 cc::InputHandler::NOT_SCROLLING_ON_MAIN; 600 cc::MainThreadScrollingReason::kNotScrollingOnMain;
604 switch (gesture_event.sourceDevice) { 601 switch (gesture_event.sourceDevice) {
605 case blink::WebGestureDeviceTouchpad: 602 case blink::WebGestureDeviceTouchpad:
606 if (gesture_event.data.flingStart.targetViewport) { 603 if (gesture_event.data.flingStart.targetViewport) {
607 scroll_status = input_handler_->RootScrollBegin( 604 scroll_status = input_handler_->RootScrollBegin(
608 &scroll_state, cc::InputHandler::NON_BUBBLING_GESTURE); 605 &scroll_state, cc::InputHandler::NON_BUBBLING_GESTURE);
609 } else { 606 } else {
610 scroll_status = input_handler_->ScrollBegin( 607 scroll_status = input_handler_->ScrollBegin(
611 &scroll_state, cc::InputHandler::NON_BUBBLING_GESTURE); 608 &scroll_state, cc::InputHandler::NON_BUBBLING_GESTURE);
612 } 609 }
613 break; 610 break;
614 case blink::WebGestureDeviceTouchscreen: 611 case blink::WebGestureDeviceTouchscreen:
615 if (!gesture_scroll_on_impl_thread_) { 612 if (!gesture_scroll_on_impl_thread_) {
616 scroll_status.thread = cc::InputHandler::SCROLL_ON_MAIN_THREAD; 613 scroll_status.thread = cc::InputHandler::SCROLL_ON_MAIN_THREAD;
617 scroll_status.main_thread_scrolling_reasons = 614 scroll_status.main_thread_scrolling_reasons =
618 cc::InputHandler::CONTINUING_MAIN_THREAD_SCROLL; 615 cc::MainThreadScrollingReason::kContinuingMainThreadScroll;
619 } else { 616 } else {
620 scroll_status = input_handler_->FlingScrollBegin(); 617 scroll_status = input_handler_->FlingScrollBegin();
621 } 618 }
622 break; 619 break;
623 case blink::WebGestureDeviceUninitialized: 620 case blink::WebGestureDeviceUninitialized:
624 NOTREACHED(); 621 NOTREACHED();
625 return DID_NOT_HANDLE; 622 return DID_NOT_HANDLE;
626 } 623 }
627 624
628 #ifndef NDEBUG 625 #ifndef NDEBUG
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 TRACE_EVENT_SCOPE_THREAD); 676 TRACE_EVENT_SCOPE_THREAD);
680 gesture_scroll_on_impl_thread_ = false; 677 gesture_scroll_on_impl_thread_ = false;
681 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) { 678 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad) {
682 // We still pass the curve to the main thread if there's nothing 679 // We still pass the curve to the main thread if there's nothing
683 // scrollable, in case something 680 // scrollable, in case something
684 // registers a handler before the curve is over. 681 // registers a handler before the curve is over.
685 return DID_NOT_HANDLE; 682 return DID_NOT_HANDLE;
686 } 683 }
687 return DROP_EVENT; 684 return DROP_EVENT;
688 } 685 }
689 case cc::InputHandler::ScrollStatusCount:
690 NOTREACHED();
691 break;
692 } 686 }
693 return DID_NOT_HANDLE; 687 return DID_NOT_HANDLE;
694 } 688 }
695 689
696 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( 690 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
697 const blink::WebTouchEvent& touch_event) { 691 const blink::WebTouchEvent& touch_event) {
698 for (size_t i = 0; i < touch_event.touchesLength; ++i) { 692 for (size_t i = 0; i < touch_event.touchesLength; ++i) {
699 if (touch_event.touches[i].state != WebTouchPoint::StatePressed) 693 if (touch_event.touches[i].state != WebTouchPoint::StatePressed)
700 continue; 694 continue;
701 if (input_handler_->DoTouchEventsBlockScrollAt( 695 if (input_handler_->DoTouchEventsBlockScrollAt(
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1145 // trigger a scroll, e.g., with a trivial time delta between fling updates. 1139 // trigger a scroll, e.g., with a trivial time delta between fling updates.
1146 // Return true in this case to prevent early fling termination. 1140 // Return true in this case to prevent early fling termination.
1147 if (std::abs(clipped_increment.width) < kScrollEpsilon && 1141 if (std::abs(clipped_increment.width) < kScrollEpsilon &&
1148 std::abs(clipped_increment.height) < kScrollEpsilon) 1142 std::abs(clipped_increment.height) < kScrollEpsilon)
1149 return true; 1143 return true;
1150 1144
1151 return did_scroll; 1145 return did_scroll;
1152 } 1146 }
1153 1147
1154 } // namespace ui 1148 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698