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

Side by Side Diff: ui/events/gesture_detection/gesture_provider.cc

Issue 2054193002: Android mouse events shouldn't appear as TouchEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Kept old touch-like behavior in pre-M. 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/gesture_detection/gesture_provider.h" 5 #include "ui/events/gesture_detection/gesture_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 10
11 #include "base/auto_reset.h" 11 #include "base/auto_reset.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "ui/events/event_constants.h" 14 #include "ui/events/event_constants.h"
15 #include "ui/events/gesture_detection/gesture_event_data.h" 15 #include "ui/events/gesture_detection/gesture_event_data.h"
16 #include "ui/events/gesture_detection/gesture_listeners.h" 16 #include "ui/events/gesture_detection/gesture_listeners.h"
17 #include "ui/events/gesture_detection/motion_event.h" 17 #include "ui/events/gesture_detection/motion_event.h"
18 #include "ui/events/gesture_detection/motion_event_generic.h" 18 #include "ui/events/gesture_detection/motion_event_generic.h"
19 #include "ui/events/gesture_detection/scale_gesture_listeners.h" 19 #include "ui/events/gesture_detection/scale_gesture_listeners.h"
20 #include "ui/gfx/geometry/point_f.h" 20 #include "ui/gfx/geometry/point_f.h"
21 #include "ui/gfx/geometry/vector2d_f.h" 21 #include "ui/gfx/geometry/vector2d_f.h"
22 22
23 namespace ui { 23 namespace ui {
24 namespace { 24 namespace {
25 25
26 // Double-tap drag zoom sensitivity (speed). 26 // Double-tap drag zoom sensitivity (speed).
27 const float kDoubleTapDragZoomSpeed = 0.005f; 27 const float kDoubleTapDragZoomSpeed = 0.005f;
28 28
29 const char* GetMotionEventActionName(MotionEvent::Action action) { 29 const char* GetMotionEventActionName(MotionEvent::Action action) {
30
31 #define CASE_ACTION_TO_STRING(action) \
aelias_OOO_until_Jul13 2016/11/09 02:43:14 I'm not a big fan of clever macro magic unless the
mustaq 2016/11/09 17:04:33 Done.
32 case MotionEvent::action: \
33 return #action;
34
30 switch (action) { 35 switch (action) {
31 case MotionEvent::ACTION_NONE: 36 CASE_ACTION_TO_STRING(ACTION_NONE);
32 return "ACTION_NONE"; 37 CASE_ACTION_TO_STRING(ACTION_POINTER_DOWN);
33 case MotionEvent::ACTION_POINTER_DOWN: 38 CASE_ACTION_TO_STRING(ACTION_POINTER_UP);
34 return "ACTION_POINTER_DOWN"; 39 CASE_ACTION_TO_STRING(ACTION_DOWN);
35 case MotionEvent::ACTION_POINTER_UP: 40 CASE_ACTION_TO_STRING(ACTION_UP);
36 return "ACTION_POINTER_UP"; 41 CASE_ACTION_TO_STRING(ACTION_CANCEL);
37 case MotionEvent::ACTION_DOWN: 42 CASE_ACTION_TO_STRING(ACTION_MOVE);
38 return "ACTION_DOWN"; 43 CASE_ACTION_TO_STRING(ACTION_HOVER_ENTER);
39 case MotionEvent::ACTION_UP: 44 CASE_ACTION_TO_STRING(ACTION_HOVER_EXIT);
40 return "ACTION_UP"; 45 CASE_ACTION_TO_STRING(ACTION_HOVER_MOVE);
41 case MotionEvent::ACTION_CANCEL: 46 CASE_ACTION_TO_STRING(ACTION_BUTTON_PRESS);
42 return "ACTION_CANCEL"; 47 CASE_ACTION_TO_STRING(ACTION_BUTTON_RELEASE);
43 case MotionEvent::ACTION_MOVE:
44 return "ACTION_MOVE";
45 } 48 }
46 return ""; 49 return "";
50
51 #undef CASE_ACTION_TO_STRING
47 } 52 }
48 53
49 gfx::RectF ClampBoundingBox(const gfx::RectF& bounds, 54 gfx::RectF ClampBoundingBox(const gfx::RectF& bounds,
50 float min_length, 55 float min_length,
51 float max_length) { 56 float max_length) {
52 float width = bounds.width(); 57 float width = bounds.width();
53 float height = bounds.height(); 58 float height = bounds.height();
54 if (min_length) { 59 if (min_length) {
55 width = std::max(min_length, width); 60 width = std::max(min_length, width);
56 height = std::max(min_length, height); 61 height = std::max(min_length, height);
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 gesture_listener_->GetBoundingBox(event, ET_GESTURE_BEGIN), 851 gesture_listener_->GetBoundingBox(event, ET_GESTURE_BEGIN),
847 event.GetFlags())); 852 event.GetFlags()));
848 } 853 }
849 break; 854 break;
850 case MotionEvent::ACTION_POINTER_UP: 855 case MotionEvent::ACTION_POINTER_UP:
851 case MotionEvent::ACTION_UP: 856 case MotionEvent::ACTION_UP:
852 case MotionEvent::ACTION_CANCEL: 857 case MotionEvent::ACTION_CANCEL:
853 case MotionEvent::ACTION_MOVE: 858 case MotionEvent::ACTION_MOVE:
854 break; 859 break;
855 case MotionEvent::ACTION_NONE: 860 case MotionEvent::ACTION_NONE:
861 case MotionEvent::ACTION_HOVER_ENTER:
862 case MotionEvent::ACTION_HOVER_EXIT:
863 case MotionEvent::ACTION_HOVER_MOVE:
864 case MotionEvent::ACTION_BUTTON_PRESS:
865 case MotionEvent::ACTION_BUTTON_RELEASE:
856 NOTREACHED(); 866 NOTREACHED();
857 break; 867 break;
858 } 868 }
859 } 869 }
860 870
861 void GestureProvider::OnTouchEventHandlingEnd(const MotionEvent& event) { 871 void GestureProvider::OnTouchEventHandlingEnd(const MotionEvent& event) {
862 switch (event.GetAction()) { 872 switch (event.GetAction()) {
863 case MotionEvent::ACTION_UP: 873 case MotionEvent::ACTION_UP:
864 case MotionEvent::ACTION_CANCEL: { 874 case MotionEvent::ACTION_CANCEL: {
865 if (gesture_begin_end_types_enabled_) 875 if (gesture_begin_end_types_enabled_)
866 gesture_listener_->Send( 876 gesture_listener_->Send(
867 gesture_listener_->CreateGesture(ET_GESTURE_END, event)); 877 gesture_listener_->CreateGesture(ET_GESTURE_END, event));
868 878
869 current_down_event_.reset(); 879 current_down_event_.reset();
870 880
871 UpdateDoubleTapDetectionSupport(); 881 UpdateDoubleTapDetectionSupport();
872 break; 882 break;
873 } 883 }
874 case MotionEvent::ACTION_POINTER_UP: 884 case MotionEvent::ACTION_POINTER_UP:
875 if (gesture_begin_end_types_enabled_) 885 if (gesture_begin_end_types_enabled_)
876 gesture_listener_->Send( 886 gesture_listener_->Send(
877 gesture_listener_->CreateGesture(ET_GESTURE_END, event)); 887 gesture_listener_->CreateGesture(ET_GESTURE_END, event));
878 break; 888 break;
879 case MotionEvent::ACTION_DOWN: 889 case MotionEvent::ACTION_DOWN:
880 case MotionEvent::ACTION_POINTER_DOWN: 890 case MotionEvent::ACTION_POINTER_DOWN:
881 case MotionEvent::ACTION_MOVE: 891 case MotionEvent::ACTION_MOVE:
882 break; 892 break;
883 case MotionEvent::ACTION_NONE: 893 case MotionEvent::ACTION_NONE:
894 case MotionEvent::ACTION_HOVER_ENTER:
895 case MotionEvent::ACTION_HOVER_EXIT:
896 case MotionEvent::ACTION_HOVER_MOVE:
897 case MotionEvent::ACTION_BUTTON_PRESS:
898 case MotionEvent::ACTION_BUTTON_RELEASE:
884 NOTREACHED(); 899 NOTREACHED();
885 break; 900 break;
886 } 901 }
887 } 902 }
888 903
889 void GestureProvider::UpdateDoubleTapDetectionSupport() { 904 void GestureProvider::UpdateDoubleTapDetectionSupport() {
890 // The GestureDetector requires that any provided DoubleTapListener remain 905 // The GestureDetector requires that any provided DoubleTapListener remain
891 // attached to it for the duration of a touch sequence. Defer any potential 906 // attached to it for the duration of a touch sequence. Defer any potential
892 // null'ing of the listener until the sequence has ended. 907 // null'ing of the listener until the sequence has ended.
893 if (current_down_event_) 908 if (current_down_event_)
894 return; 909 return;
895 910
896 const bool double_tap_enabled = 911 const bool double_tap_enabled =
897 double_tap_support_for_page_ && double_tap_support_for_platform_; 912 double_tap_support_for_page_ && double_tap_support_for_platform_;
898 gesture_listener_->SetDoubleTapEnabled(double_tap_enabled); 913 gesture_listener_->SetDoubleTapEnabled(double_tap_enabled);
899 } 914 }
900 915
901 } // namespace ui 916 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698