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

Side by Side Diff: content/browser/renderer_host/input/gesture_text_selector_unittest.cc

Issue 407313002: Add a MotionEventGeneric implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: vesrion Created 6 years, 5 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
« no previous file with comments | « no previous file | content/browser/renderer_host/input/motion_event_web.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "content/browser/renderer_host/input/gesture_text_selector.h" 10 #include "content/browser/renderer_host/input/gesture_text_selector.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 protected: 59 protected:
60 scoped_ptr<GestureTextSelector> selector_; 60 scoped_ptr<GestureTextSelector> selector_;
61 std::vector<std::string> event_log_; 61 std::vector<std::string> event_log_;
62 }; 62 };
63 63
64 TEST_F(GestureTextSelectorTest, ShouldStartTextSelection) { 64 TEST_F(GestureTextSelectorTest, ShouldStartTextSelection) {
65 base::TimeTicks event_time = base::TimeTicks::Now(); 65 base::TimeTicks event_time = base::TimeTicks::Now();
66 { // Touched with a finger. 66 { // Touched with a finger.
67 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f); 67 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
68 e.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); 68 e.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER);
69 e.SetButtonState(0); 69 e.set_button_state(0);
70 EXPECT_FALSE(selector_->ShouldStartTextSelection(e)); 70 EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
71 } 71 }
72 72
73 { // Touched with a stylus, but no button pressed. 73 { // Touched with a stylus, but no button pressed.
74 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f); 74 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
75 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 75 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
76 e.SetButtonState(0); 76 e.set_button_state(0);
77 EXPECT_FALSE(selector_->ShouldStartTextSelection(e)); 77 EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
78 } 78 }
79 79
80 { // Touched with a stylus, with first button (BUTTON_SECONDARY) pressed. 80 { // Touched with a stylus, with first button (BUTTON_SECONDARY) pressed.
81 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f); 81 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
82 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 82 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
83 e.SetButtonState(MotionEvent::BUTTON_SECONDARY); 83 e.set_button_state(MotionEvent::BUTTON_SECONDARY);
84 EXPECT_TRUE(selector_->ShouldStartTextSelection(e)); 84 EXPECT_TRUE(selector_->ShouldStartTextSelection(e));
85 } 85 }
86 86
87 { // Touched with a stylus, with two buttons pressed. 87 { // Touched with a stylus, with two buttons pressed.
88 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f); 88 MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
89 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 89 e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
90 e.SetButtonState( 90 e.set_button_state(
91 MotionEvent::BUTTON_SECONDARY | MotionEvent::BUTTON_TERTIARY); 91 MotionEvent::BUTTON_SECONDARY | MotionEvent::BUTTON_TERTIARY);
92 EXPECT_FALSE(selector_->ShouldStartTextSelection(e)); 92 EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
93 } 93 }
94 } 94 }
95 95
96 TEST_F(GestureTextSelectorTest, FingerTouch) { 96 TEST_F(GestureTextSelectorTest, FingerTouch) {
97 base::TimeTicks event_time = base::TimeTicks::Now(); 97 base::TimeTicks event_time = base::TimeTicks::Now();
98 const float x = 50.0f; 98 const float x = 50.0f;
99 const float y = 30.0f; 99 const float y = 30.0f;
100 // 1. Touched with a finger: ignored 100 // 1. Touched with a finger: ignored
101 MockMotionEvent finger(MotionEvent::ACTION_DOWN, event_time, x, y); 101 MockMotionEvent finger(MotionEvent::ACTION_DOWN, event_time, x, y);
102 finger.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); 102 finger.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER);
103 EXPECT_FALSE(selector_->OnTouchEvent(finger)); 103 EXPECT_FALSE(selector_->OnTouchEvent(finger));
104 // We do not consume finger events. 104 // We do not consume finger events.
105 EXPECT_TRUE(event_log_.empty()); 105 EXPECT_TRUE(event_log_.empty());
106 } 106 }
107 107
108 TEST_F(GestureTextSelectorTest, PenDragging) { 108 TEST_F(GestureTextSelectorTest, PenDragging) {
109 base::TimeTicks event_time = base::TimeTicks::Now(); 109 base::TimeTicks event_time = base::TimeTicks::Now();
110 const float x1 = 50.0f; 110 const float x1 = 50.0f;
111 const float y1 = 30.0f; 111 const float y1 = 30.0f;
112 const float x2 = 100.0f; 112 const float x2 = 100.0f;
113 const float y2 = 90.0f; 113 const float y2 = 90.0f;
114 // 1. ACTION_DOWN with stylus + button 114 // 1. ACTION_DOWN with stylus + button
115 event_time += base::TimeDelta::FromMilliseconds(10); 115 event_time += base::TimeDelta::FromMilliseconds(10);
116 MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1); 116 MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1);
117 action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 117 action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
118 action_down.SetButtonState(MotionEvent::BUTTON_SECONDARY); 118 action_down.set_button_state(MotionEvent::BUTTON_SECONDARY);
119 EXPECT_TRUE(selector_->OnTouchEvent(action_down)); 119 EXPECT_TRUE(selector_->OnTouchEvent(action_down));
120 EXPECT_TRUE(event_log_.empty()); 120 EXPECT_TRUE(event_log_.empty());
121 121
122 // 2. ACTION_MOVE 122 // 2. ACTION_MOVE
123 event_time += base::TimeDelta::FromMilliseconds(10); 123 event_time += base::TimeDelta::FromMilliseconds(10);
124 MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2); 124 MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2);
125 action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 125 action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
126 action_move.SetButtonState(MotionEvent::BUTTON_SECONDARY); 126 action_move.set_button_state(MotionEvent::BUTTON_SECONDARY);
127 EXPECT_TRUE(selector_->OnTouchEvent(action_move)); 127 EXPECT_TRUE(selector_->OnTouchEvent(action_move));
128 EXPECT_TRUE(event_log_.empty()); 128 EXPECT_TRUE(event_log_.empty());
129 129
130 // 3. DOUBLE TAP 130 // 3. DOUBLE TAP
131 // Suppress most gesture events when in text selection mode. 131 // Suppress most gesture events when in text selection mode.
132 event_time += base::TimeDelta::FromMilliseconds(10); 132 event_time += base::TimeDelta::FromMilliseconds(10);
133 const GestureEventData double_tap( 133 const GestureEventData double_tap(
134 GestureEventDetails(ui::ET_GESTURE_DOUBLE_TAP, 0, 0), 0, event_time, 134 GestureEventDetails(ui::ET_GESTURE_DOUBLE_TAP, 0, 0), 0, event_time,
135 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0)); 135 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
136 EXPECT_TRUE(selector_->OnGestureEvent(double_tap)); 136 EXPECT_TRUE(selector_->OnGestureEvent(double_tap));
(...skipping 14 matching lines...) Expand all
151 GestureEventDetails(ui::ET_GESTURE_SCROLL_UPDATE, 0, 0), 0, event_time, 151 GestureEventDetails(ui::ET_GESTURE_SCROLL_UPDATE, 0, 0), 0, event_time,
152 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0)); 152 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
153 EXPECT_TRUE(selector_->OnGestureEvent(scroll_update)); 153 EXPECT_TRUE(selector_->OnGestureEvent(scroll_update));
154 EXPECT_EQ(3u, event_log_.size()); // Unselect, Show, SelectRange 154 EXPECT_EQ(3u, event_log_.size()); // Unselect, Show, SelectRange
155 EXPECT_STREQ("SelectRange", event_log_.back().c_str()); 155 EXPECT_STREQ("SelectRange", event_log_.back().c_str());
156 156
157 // 6. ACTION_UP 157 // 6. ACTION_UP
158 event_time += base::TimeDelta::FromMilliseconds(10); 158 event_time += base::TimeDelta::FromMilliseconds(10);
159 MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2); 159 MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2);
160 action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 160 action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
161 action_up.SetButtonState(0); 161 action_up.set_button_state(0);
162 EXPECT_TRUE(selector_->OnTouchEvent(action_up)); 162 EXPECT_TRUE(selector_->OnTouchEvent(action_up));
163 EXPECT_EQ(3u, event_log_.size()); // NO CHANGE 163 EXPECT_EQ(3u, event_log_.size()); // NO CHANGE
164 164
165 // 7. ET_GESTURE_SCROLL_END 165 // 7. ET_GESTURE_SCROLL_END
166 event_time += base::TimeDelta::FromMilliseconds(10); 166 event_time += base::TimeDelta::FromMilliseconds(10);
167 const GestureEventData scroll_end( 167 const GestureEventData scroll_end(
168 GestureEventDetails(ui::ET_GESTURE_SCROLL_END, 0, 0), 0, event_time, 168 GestureEventDetails(ui::ET_GESTURE_SCROLL_END, 0, 0), 0, event_time,
169 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0)); 169 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
170 EXPECT_TRUE(selector_->OnGestureEvent(scroll_end)); 170 EXPECT_TRUE(selector_->OnGestureEvent(scroll_end));
171 EXPECT_EQ(3u, event_log_.size()); // NO CHANGE 171 EXPECT_EQ(3u, event_log_.size()); // NO CHANGE
172 } 172 }
173 173
174 TEST_F(GestureTextSelectorTest, TapToSelectWord) { 174 TEST_F(GestureTextSelectorTest, TapToSelectWord) {
175 base::TimeTicks event_time = base::TimeTicks::Now(); 175 base::TimeTicks event_time = base::TimeTicks::Now();
176 const float x1 = 50.0f; 176 const float x1 = 50.0f;
177 const float y1 = 30.0f; 177 const float y1 = 30.0f;
178 const float x2 = 51.0f; 178 const float x2 = 51.0f;
179 const float y2 = 31.0f; 179 const float y2 = 31.0f;
180 // 1. ACTION_DOWN with stylus + button 180 // 1. ACTION_DOWN with stylus + button
181 event_time += base::TimeDelta::FromMilliseconds(10); 181 event_time += base::TimeDelta::FromMilliseconds(10);
182 MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1); 182 MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1);
183 action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 183 action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
184 action_down.SetButtonState(MotionEvent::BUTTON_SECONDARY); 184 action_down.set_button_state(MotionEvent::BUTTON_SECONDARY);
185 EXPECT_TRUE(selector_->OnTouchEvent(action_down)); 185 EXPECT_TRUE(selector_->OnTouchEvent(action_down));
186 EXPECT_TRUE(event_log_.empty()); 186 EXPECT_TRUE(event_log_.empty());
187 187
188 // 5. TAP_DOWN 188 // 5. TAP_DOWN
189 event_time += base::TimeDelta::FromMilliseconds(10); 189 event_time += base::TimeDelta::FromMilliseconds(10);
190 const GestureEventData tap_down( 190 const GestureEventData tap_down(
191 GestureEventDetails(ui::ET_GESTURE_TAP_DOWN, 0, 0), 0, event_time, 191 GestureEventDetails(ui::ET_GESTURE_TAP_DOWN, 0, 0), 0, event_time,
192 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0)); 192 x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
193 EXPECT_TRUE(selector_->OnGestureEvent(tap_down)); 193 EXPECT_TRUE(selector_->OnGestureEvent(tap_down));
194 EXPECT_TRUE(event_log_.empty()); 194 EXPECT_TRUE(event_log_.empty());
195 195
196 // 2. ACTION_MOVE 196 // 2. ACTION_MOVE
197 event_time += base::TimeDelta::FromMilliseconds(10); 197 event_time += base::TimeDelta::FromMilliseconds(10);
198 MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2); 198 MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2);
199 action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 199 action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
200 action_move.SetButtonState(MotionEvent::BUTTON_SECONDARY); 200 action_move.set_button_state(MotionEvent::BUTTON_SECONDARY);
201 EXPECT_TRUE(selector_->OnTouchEvent(action_move)); 201 EXPECT_TRUE(selector_->OnTouchEvent(action_move));
202 EXPECT_TRUE(event_log_.empty()); 202 EXPECT_TRUE(event_log_.empty());
203 203
204 // 3. ACTION_UP 204 // 3. ACTION_UP
205 event_time += base::TimeDelta::FromMilliseconds(10); 205 event_time += base::TimeDelta::FromMilliseconds(10);
206 MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2); 206 MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2);
207 action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); 207 action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
208 action_up.SetButtonState(0); 208 action_up.set_button_state(0);
209 EXPECT_TRUE(selector_->OnTouchEvent(action_up)); 209 EXPECT_TRUE(selector_->OnTouchEvent(action_up));
210 EXPECT_TRUE(event_log_.empty()); 210 EXPECT_TRUE(event_log_.empty());
211 211
212 // 4. TAP 212 // 4. TAP
213 event_time += base::TimeDelta::FromMilliseconds(10); 213 event_time += base::TimeDelta::FromMilliseconds(10);
214 const GestureEventData tap( 214 const GestureEventData tap(
215 GestureEventDetails(ui::ET_GESTURE_TAP, 0, 0), 0, event_time, 215 GestureEventDetails(ui::ET_GESTURE_TAP, 0, 0), 0, event_time,
216 x1, y1, x1, y1, 1, gfx::RectF(0, 0, 0, 0)); 216 x1, y1, x1, y1, 1, gfx::RectF(0, 0, 0, 0));
217 EXPECT_TRUE(selector_->OnGestureEvent(tap)); 217 EXPECT_TRUE(selector_->OnGestureEvent(tap));
218 EXPECT_EQ(1u, event_log_.size()); // Unselect, Show 218 EXPECT_EQ(1u, event_log_.size()); // Unselect, Show
219 EXPECT_STREQ("LongPress", event_log_.back().c_str()); 219 EXPECT_STREQ("LongPress", event_log_.back().c_str());
220 } 220 }
221 221
222 } // namespace content 222 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/renderer_host/input/motion_event_web.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698