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

Side by Side Diff: ui/touch_selection/touch_selection_controller_unittest.cc

Issue 2230413002: Remove unnecessary |show_on_tap_for_empty_editable| flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixing naming nit Created 4 years, 4 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 | « ui/touch_selection/touch_selection_controller.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 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/touch_selection/touch_selection_controller.h" 5 #include "ui/touch_selection/touch_selection_controller.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 events_.push_back(event); 99 events_.push_back(event);
100 last_event_start_ = controller_->GetStartPosition(); 100 last_event_start_ = controller_->GetStartPosition();
101 last_event_end_ = controller_->GetEndPosition(); 101 last_event_end_ = controller_->GetEndPosition();
102 last_event_bounds_rect_ = controller_->GetRectBetweenBounds(); 102 last_event_bounds_rect_ = controller_->GetRectBetweenBounds();
103 } 103 }
104 104
105 std::unique_ptr<TouchHandleDrawable> CreateDrawable() override { 105 std::unique_ptr<TouchHandleDrawable> CreateDrawable() override {
106 return base::WrapUnique(new MockTouchHandleDrawable(&dragging_enabled_)); 106 return base::WrapUnique(new MockTouchHandleDrawable(&dragging_enabled_));
107 } 107 }
108 108
109 void AllowShowingOnTapForEmptyEditable() {
110 TouchSelectionController::Config config = DefaultConfig();
111 config.show_on_tap_for_empty_editable = true;
112 controller_.reset(new TouchSelectionController(this, config));
113 }
114
115 void EnableLongPressDragSelection() { 109 void EnableLongPressDragSelection() {
116 TouchSelectionController::Config config = DefaultConfig(); 110 TouchSelectionController::Config config = DefaultConfig();
117 config.enable_longpress_drag_selection = true; 111 config.enable_longpress_drag_selection = true;
118 controller_.reset(new TouchSelectionController(this, config)); 112 controller_.reset(new TouchSelectionController(this, config));
119 } 113 }
120 114
121 void SetAnimationEnabled(bool enabled) { animation_enabled_ = enabled; } 115 void SetAnimationEnabled(bool enabled) { animation_enabled_ = enabled; }
122 void SetDraggingEnabled(bool enabled) { dragging_enabled_ = enabled; } 116 void SetDraggingEnabled(bool enabled) { dragging_enabled_ = enabled; }
123 117
124 void ClearSelection() { 118 void ClearSelection() {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 std::vector<SelectionEventType> GetAndResetEvents() { 201 std::vector<SelectionEventType> GetAndResetEvents() {
208 std::vector<SelectionEventType> events; 202 std::vector<SelectionEventType> events;
209 events.swap(events_); 203 events.swap(events_);
210 return events; 204 return events;
211 } 205 }
212 206
213 TouchSelectionController& controller() { return *controller_; } 207 TouchSelectionController& controller() { return *controller_; }
214 208
215 private: 209 private:
216 TouchSelectionController::Config DefaultConfig() { 210 TouchSelectionController::Config DefaultConfig() {
217 // Both |show_on_tap_for_empty_editable| and 211 // |enable_longpress_drag_selection| is set to false by default, and should
218 // |enable_longpress_drag_selection| are set to false by default, and should
219 // be overriden for explicit testing. 212 // be overriden for explicit testing.
220 TouchSelectionController::Config config; 213 TouchSelectionController::Config config;
221 config.max_tap_duration = 214 config.max_tap_duration =
222 base::TimeDelta::FromMilliseconds(kDefaultTapTimeoutMs); 215 base::TimeDelta::FromMilliseconds(kDefaultTapTimeoutMs);
223 config.tap_slop = kDefaulTapSlop; 216 config.tap_slop = kDefaulTapSlop;
224 config.show_on_tap_for_empty_editable = false;
225 config.enable_longpress_drag_selection = false; 217 config.enable_longpress_drag_selection = false;
226 return config; 218 return config;
227 } 219 }
228 220
229 gfx::PointF last_event_start_; 221 gfx::PointF last_event_start_;
230 gfx::PointF last_event_end_; 222 gfx::PointF last_event_end_;
231 gfx::PointF caret_position_; 223 gfx::PointF caret_position_;
232 gfx::PointF selection_start_; 224 gfx::PointF selection_start_;
233 gfx::PointF selection_end_; 225 gfx::PointF selection_end_;
234 gfx::RectF last_event_bounds_rect_; 226 gfx::RectF last_event_bounds_rect_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 281
290 ChangeInsertion(insertion_rect, visible); 282 ChangeInsertion(insertion_rect, visible);
291 EXPECT_THAT(GetAndResetEvents(), 283 EXPECT_THAT(GetAndResetEvents(),
292 ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN)); 284 ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN));
293 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); 285 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart());
294 286
295 controller().OnSelectionEditable(false); 287 controller().OnSelectionEditable(false);
296 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); 288 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED));
297 } 289 }
298 290
299 TEST_F(TouchSelectionControllerTest, InsertionWithNoShowOnTapForEmptyEditable) { 291 TEST_F(TouchSelectionControllerTest, InsertionNotShownForEmptyEditable) {
mohsen 2016/08/11 17:52:10 Insertion is not shown for empty editables only on
300 gfx::RectF insertion_rect(5, 5, 0, 10); 292 gfx::RectF insertion_rect(5, 5, 0, 10);
301 bool visible = true; 293 bool visible = true;
302 controller().OnSelectionEditable(true); 294 controller().OnSelectionEditable(true);
303 295
304 // Taps on an empty editable region should be ignored if the controller is 296 // Taps on an empty editable region should be ignored
305 // created with |show_on_tap_for_empty_editable| set to false.
306 OnTapEvent(); 297 OnTapEvent();
307 controller().OnSelectionEmpty(true); 298 controller().OnSelectionEmpty(true);
308 ChangeInsertion(insertion_rect, visible); 299 ChangeInsertion(insertion_rect, visible);
309 EXPECT_EQ(gfx::PointF(), GetLastEventStart()); 300 EXPECT_EQ(gfx::PointF(), GetLastEventStart());
310 301
311 // Once the region becomes non-empty, taps should show the insertion handle. 302 // Once the region becomes non-empty, taps should show the insertion handle.
312 OnTapEvent(); 303 OnTapEvent();
313 controller().OnSelectionEmpty(false); 304 controller().OnSelectionEmpty(false);
314 ChangeInsertion(insertion_rect, visible); 305 ChangeInsertion(insertion_rect, visible);
315 EXPECT_THAT(GetAndResetEvents(), 306 EXPECT_THAT(GetAndResetEvents(),
(...skipping 10 matching lines...) Expand all
326 controller().OnSelectionEmpty(true); 317 controller().OnSelectionEmpty(true);
327 ChangeInsertion(insertion_rect, visible); 318 ChangeInsertion(insertion_rect, visible);
328 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_SHOWN)); 319 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_SHOWN));
329 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart()); 320 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart());
330 321
331 // Single Tap on an empty edit field should clear insertion handle. 322 // Single Tap on an empty edit field should clear insertion handle.
332 OnTapEvent(); 323 OnTapEvent();
333 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED)); 324 EXPECT_THAT(GetAndResetEvents(), ElementsAre(INSERTION_HANDLE_CLEARED));
334 } 325 }
335 326
336 TEST_F(TouchSelectionControllerTest, InsertionWithShowOnTapForEmptyEditable) {
337 AllowShowingOnTapForEmptyEditable();
338
339 gfx::RectF insertion_rect(5, 5, 0, 10);
340 bool visible = true;
341 controller().OnSelectionEditable(true);
342
343 // Taps on an empty editable region should show the insertion handle if the
344 // controller is created with |show_on_tap_for_empty_editable| set to true.
345 OnTapEvent();
346 controller().OnSelectionEmpty(true);
347 ChangeInsertion(insertion_rect, visible);
348 EXPECT_THAT(GetAndResetEvents(),
349 ElementsAre(SELECTION_ESTABLISHED, INSERTION_HANDLE_SHOWN));
350 EXPECT_EQ(insertion_rect.bottom_left(), GetLastEventStart());
351
352 // Additional taps should not hide the insertion handle in this case.
353 OnTapEvent();
354 ChangeInsertion(insertion_rect, visible);
355 EXPECT_THAT(GetAndResetEvents(), IsEmpty());
356 }
357
358 TEST_F(TouchSelectionControllerTest, InsertionAppearsAfterTapFollowingTyping) { 327 TEST_F(TouchSelectionControllerTest, InsertionAppearsAfterTapFollowingTyping) {
359 gfx::RectF insertion_rect(5, 5, 0, 10); 328 gfx::RectF insertion_rect(5, 5, 0, 10);
360 bool visible = true; 329 bool visible = true;
361 330
362 // Simulate the user tapping an empty text field. 331 // Simulate the user tapping an empty text field.
363 OnTapEvent(); 332 OnTapEvent();
364 controller().OnSelectionEditable(true); 333 controller().OnSelectionEditable(true);
365 controller().OnSelectionEmpty(true); 334 controller().OnSelectionEmpty(true);
366 ChangeInsertion(insertion_rect, visible); 335 ChangeInsertion(insertion_rect, visible);
367 EXPECT_EQ(gfx::PointF(), GetLastEventStart()); 336 EXPECT_EQ(gfx::PointF(), GetLastEventStart());
(...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 offset_rect.x(), offset_rect.bottom()); 1444 offset_rect.x(), offset_rect.bottom());
1476 EXPECT_TRUE(controller().WillHandleTouchEvent(event)); 1445 EXPECT_TRUE(controller().WillHandleTouchEvent(event));
1477 EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLE_DRAG_STOPPED)); 1446 EXPECT_THAT(GetAndResetEvents(), ElementsAre(SELECTION_HANDLE_DRAG_STOPPED));
1478 EXPECT_EQ(test_controller.GetStartHandleOrientation(), 1447 EXPECT_EQ(test_controller.GetStartHandleOrientation(),
1479 TouchHandleOrientation::LEFT); 1448 TouchHandleOrientation::LEFT);
1480 EXPECT_EQ(test_controller.GetEndHandleOrientation(), 1449 EXPECT_EQ(test_controller.GetEndHandleOrientation(),
1481 TouchHandleOrientation::RIGHT); 1450 TouchHandleOrientation::RIGHT);
1482 } 1451 }
1483 1452
1484 } // namespace ui 1453 } // namespace ui
OLDNEW
« no previous file with comments | « ui/touch_selection/touch_selection_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698