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

Side by Side Diff: ui/views/touchui/touch_selection_controller_impl_unittest.cc

Issue 16580009: Change touch selection handles to images given by UX. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « ui/views/touchui/touch_selection_controller_impl.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "grit/ui_resources.h"
8 #include "ui/base/resource/resource_bundle.h"
7 #include "ui/base/touch/touch_editing_controller.h" 9 #include "ui/base/touch/touch_editing_controller.h"
8 #include "ui/base/ui_base_switches.h" 10 #include "ui/base/ui_base_switches.h"
9 #include "ui/gfx/point.h" 11 #include "ui/gfx/point.h"
10 #include "ui/gfx/rect.h" 12 #include "ui/gfx/rect.h"
11 #include "ui/gfx/render_text.h" 13 #include "ui/gfx/render_text.h"
12 #include "ui/views/controls/textfield/native_textfield_views.h" 14 #include "ui/views/controls/textfield/native_textfield_views.h"
13 #include "ui/views/controls/textfield/textfield.h" 15 #include "ui/views/controls/textfield/textfield.h"
14 #include "ui/views/test/views_test_base.h" 16 #include "ui/views/test/views_test_base.h"
15 #include "ui/views/touchui/touch_selection_controller_impl.h" 17 #include "ui/views/touchui/touch_selection_controller_impl.h"
16 #include "ui/views/widget/widget.h" 18 #include "ui/views/widget/widget.h"
17 19
18 #if defined(USE_AURA) 20 #if defined(USE_AURA)
19 #include "ui/aura/test/event_generator.h" 21 #include "ui/aura/test/event_generator.h"
20 #include "ui/aura/window.h" 22 #include "ui/aura/window.h"
21 #endif 23 #endif
22 24
25 namespace {
26 // Should match kSelectionHandlePadding in touch_selection_controller.
27 const int kPadding = 10;
28
29 gfx::Image* GetHandleImage() {
30 static gfx::Image* handle_image = NULL;
31 if (!handle_image) {
32 handle_image = &ui::ResourceBundle::GetSharedInstance().GetImageNamed(
33 IDR_TEXT_SELECTION_HANDLE);
34 }
35 return handle_image;
36 }
37
38 gfx::Size GetHandleImageSize() {
39 return GetHandleImage()->Size();
40 }
41 } // namespace
42
23 namespace views { 43 namespace views {
24 44
25 class TouchSelectionControllerImplTest : public ViewsTestBase { 45 class TouchSelectionControllerImplTest : public ViewsTestBase {
26 public: 46 public:
27 TouchSelectionControllerImplTest() 47 TouchSelectionControllerImplTest()
28 : widget_(NULL), 48 : widget_(NULL),
29 textfield_(NULL), 49 textfield_(NULL),
30 textfield_view_(NULL), 50 textfield_view_(NULL),
31 views_tsc_factory_(new ViewsTouchSelectionControllerFactory) { 51 views_tsc_factory_(new ViewsTouchSelectionControllerFactory) {
32 CommandLine::ForCurrentProcess()->AppendSwitch( 52 CommandLine::ForCurrentProcess()->AppendSwitch(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 void SimulateSelectionHandleDrag(gfx::Point p, int selection_handle) { 100 void SimulateSelectionHandleDrag(gfx::Point p, int selection_handle) {
81 TouchSelectionControllerImpl* controller = GetSelectionController(); 101 TouchSelectionControllerImpl* controller = GetSelectionController();
82 // Do the work of OnMousePressed(). 102 // Do the work of OnMousePressed().
83 if (selection_handle == 1) 103 if (selection_handle == 1)
84 controller->SetDraggingHandle(controller->selection_handle_1_.get()); 104 controller->SetDraggingHandle(controller->selection_handle_1_.get());
85 else 105 else
86 controller->SetDraggingHandle(controller->selection_handle_2_.get()); 106 controller->SetDraggingHandle(controller->selection_handle_2_.get());
87 107
88 // Offset the drag position by the selection handle radius since it is 108 // Offset the drag position by the selection handle radius since it is
89 // supposed to be in the coordinate system of the handle. 109 // supposed to be in the coordinate system of the handle.
90 p.Offset(10, 0); 110 p.Offset(GetHandleImageSize().width() / 2 + kPadding, 0);
91 controller->SelectionHandleDragged(p); 111 controller->SelectionHandleDragged(p);
92 112
93 // Do the work of OnMouseReleased(). 113 // Do the work of OnMouseReleased().
94 controller->dragging_handle_ = NULL; 114 controller->dragging_handle_ = NULL;
95 } 115 }
96 116
97 gfx::Point GetSelectionHandle1Position() { 117 gfx::Point GetSelectionHandle1Position() {
98 return GetSelectionController()->GetSelectionHandle1Position(); 118 return GetSelectionController()->GetSelectionHandle1Position();
99 } 119 }
100 120
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 if (textfield_->HasSelection()) { \ 162 if (textfield_->HasSelection()) { \
143 EXPECT_TRUE(IsSelectionHandle1Visible()); \ 163 EXPECT_TRUE(IsSelectionHandle1Visible()); \
144 EXPECT_TRUE(IsSelectionHandle2Visible()); \ 164 EXPECT_TRUE(IsSelectionHandle2Visible()); \
145 EXPECT_FALSE(IsCursorHandleVisible()); \ 165 EXPECT_FALSE(IsCursorHandleVisible()); \
146 gfx::SelectionModel sel_start = GetRenderText()-> \ 166 gfx::SelectionModel sel_start = GetRenderText()-> \
147 GetSelectionModelForSelectionStart(); \ 167 GetSelectionModelForSelectionStart(); \
148 gfx::Point selection_start = GetCursorPosition(sel_start); \ 168 gfx::Point selection_start = GetCursorPosition(sel_start); \
149 gfx::Point selection_end = GetCursorPosition(sel); \ 169 gfx::Point selection_end = GetCursorPosition(sel); \
150 gfx::Point sh1 = GetSelectionHandle1Position(); \ 170 gfx::Point sh1 = GetSelectionHandle1Position(); \
151 gfx::Point sh2 = GetSelectionHandle2Position(); \ 171 gfx::Point sh2 = GetSelectionHandle2Position(); \
152 sh1.Offset(10, 0); \ 172 sh1.Offset(GetHandleImageSize().width() / 2 + kPadding, 0); \
153 sh2.Offset(10, 0); \ 173 sh2.Offset(GetHandleImageSize().width() / 2 + kPadding, 0); \
154 if (cursor_at_selection_handle_1) { \ 174 if (cursor_at_selection_handle_1) { \
155 EXPECT_EQ(sh1, selection_end); \ 175 EXPECT_EQ(sh1, selection_end); \
156 EXPECT_EQ(sh2, selection_start); \ 176 EXPECT_EQ(sh2, selection_start); \
157 } else { \ 177 } else { \
158 EXPECT_EQ(sh1, selection_start); \ 178 EXPECT_EQ(sh1, selection_start); \
159 EXPECT_EQ(sh2, selection_end); \ 179 EXPECT_EQ(sh2, selection_end); \
160 } \ 180 } \
161 } else { \ 181 } else { \
162 EXPECT_FALSE(IsSelectionHandle1Visible()); \ 182 EXPECT_FALSE(IsSelectionHandle1Visible()); \
163 EXPECT_FALSE(IsSelectionHandle2Visible()); \ 183 EXPECT_FALSE(IsSelectionHandle2Visible()); \
164 EXPECT_TRUE(IsCursorHandleVisible()); \ 184 EXPECT_TRUE(IsCursorHandleVisible()); \
165 gfx::Point cursor_pos = GetCursorPosition(sel); \ 185 gfx::Point cursor_pos = GetCursorPosition(sel); \
166 gfx::Point ch_pos = GetCursorHandlePosition(); \ 186 gfx::Point ch_pos = GetCursorHandlePosition(); \
167 ch_pos.Offset(10, 0); \ 187 ch_pos.Offset(GetHandleImageSize().width() / 2 + kPadding, 0); \
168 EXPECT_EQ(ch_pos, cursor_pos); \ 188 EXPECT_EQ(ch_pos, cursor_pos); \
169 } \ 189 } \
170 } 190 }
171 191
172 // Tests that the selection handles are placed appropriately when selection in 192 // Tests that the selection handles are placed appropriately when selection in
173 // a Textfield changes. 193 // a Textfield changes.
174 TEST_F(TouchSelectionControllerImplTest, SelectionInTextfieldTest) { 194 TEST_F(TouchSelectionControllerImplTest, SelectionInTextfieldTest) {
175 CreateTextfield(); 195 CreateTextfield();
176 textfield_->SetText(ASCIIToUTF16("some text")); 196 textfield_->SetText(ASCIIToUTF16("some text"));
177 // Tap the textfield to invoke touch selection. 197 // Tap the textfield to invoke touch selection.
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 generator.GestureTapAt(gfx::Point(10, 10)); 442 generator.GestureTapAt(gfx::Point(10, 10));
423 443
424 // Cursor handle should be visible. 444 // Cursor handle should be visible.
425 EXPECT_FALSE(textfield_->HasSelection()); 445 EXPECT_FALSE(textfield_->HasSelection());
426 VERIFY_HANDLE_POSITIONS(false); 446 VERIFY_HANDLE_POSITIONS(false);
427 447
428 // Double tap on the cursor handle position. We want to check that the cursor 448 // Double tap on the cursor handle position. We want to check that the cursor
429 // handle is not eating the event and that the event is falling through to the 449 // handle is not eating the event and that the event is falling through to the
430 // textfield. 450 // textfield.
431 gfx::Point cursor_pos = GetCursorHandlePosition(); 451 gfx::Point cursor_pos = GetCursorHandlePosition();
452 cursor_pos.Offset(GetHandleImageSize().width() / 2 + kPadding, 0);
432 generator.GestureTapAt(cursor_pos); 453 generator.GestureTapAt(cursor_pos);
433 generator.GestureTapAt(cursor_pos); 454 generator.GestureTapAt(cursor_pos);
434 EXPECT_TRUE(textfield_->HasSelection()); 455 EXPECT_TRUE(textfield_->HasSelection());
435 VERIFY_HANDLE_POSITIONS(false); 456 VERIFY_HANDLE_POSITIONS(false);
436 } 457 }
437 #endif 458 #endif
438 459
439 } // namespace views 460 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/touchui/touch_selection_controller_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698