OLD | NEW |
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 "ui/aura/client/screen_position_client.h" | 7 #include "ui/aura/client/screen_position_client.h" |
8 #include "ui/aura/window.h" | 8 #include "ui/aura/window.h" |
9 #include "ui/base/resource/resource_bundle.h" | 9 #include "ui/base/resource/resource_bundle.h" |
10 #include "ui/base/touch/touch_editing_controller.h" | 10 #include "ui/base/touch/touch_editing_controller.h" |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 EXPECT_EQ(ch_pos, cursor_pos); \ | 245 EXPECT_EQ(ch_pos, cursor_pos); \ |
246 } \ | 246 } \ |
247 } | 247 } |
248 | 248 |
249 // Tests that the selection handles are placed appropriately when selection in | 249 // Tests that the selection handles are placed appropriately when selection in |
250 // a Textfield changes. | 250 // a Textfield changes. |
251 TEST_F(TouchSelectionControllerImplTest, SelectionInTextfieldTest) { | 251 TEST_F(TouchSelectionControllerImplTest, SelectionInTextfieldTest) { |
252 CreateTextfield(); | 252 CreateTextfield(); |
253 textfield_->SetText(ASCIIToUTF16("some text")); | 253 textfield_->SetText(ASCIIToUTF16("some text")); |
254 // Tap the textfield to invoke touch selection. | 254 // Tap the textfield to invoke touch selection. |
255 ui::GestureEvent tap(0, | 255 ui::GestureEventDetails details(ui::ET_GESTURE_TAP); |
256 0, | 256 details.set_tap_count(1); |
257 0, | 257 ui::GestureEvent tap(0, 0, 0, base::TimeDelta(), details); |
258 base::TimeDelta(), | |
259 ui::GestureEventDetails(ui::ET_GESTURE_TAP, 1.0f, 0.0f)); | |
260 textfield_->OnGestureEvent(&tap); | 258 textfield_->OnGestureEvent(&tap); |
261 | 259 |
262 // Test selecting a range. | 260 // Test selecting a range. |
263 textfield_->SelectRange(gfx::Range(3, 7)); | 261 textfield_->SelectRange(gfx::Range(3, 7)); |
264 VERIFY_HANDLE_POSITIONS(false); | 262 VERIFY_HANDLE_POSITIONS(false); |
265 | 263 |
266 // Test selecting everything. | 264 // Test selecting everything. |
267 textfield_->SelectAll(false); | 265 textfield_->SelectAll(false); |
268 VERIFY_HANDLE_POSITIONS(false); | 266 VERIFY_HANDLE_POSITIONS(false); |
269 | 267 |
(...skipping 10 matching lines...) Expand all Loading... |
280 EXPECT_FALSE(GetSelectionController()); | 278 EXPECT_FALSE(GetSelectionController()); |
281 textfield_->OnGestureEvent(&tap); | 279 textfield_->OnGestureEvent(&tap); |
282 VERIFY_HANDLE_POSITIONS(false); | 280 VERIFY_HANDLE_POSITIONS(false); |
283 } | 281 } |
284 | 282 |
285 // Tests that the selection handles are placed appropriately in bidi text. | 283 // Tests that the selection handles are placed appropriately in bidi text. |
286 TEST_F(TouchSelectionControllerImplTest, SelectionInBidiTextfieldTest) { | 284 TEST_F(TouchSelectionControllerImplTest, SelectionInBidiTextfieldTest) { |
287 CreateTextfield(); | 285 CreateTextfield(); |
288 textfield_->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2")); | 286 textfield_->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2")); |
289 // Tap the textfield to invoke touch selection. | 287 // Tap the textfield to invoke touch selection. |
290 ui::GestureEvent tap(0, | 288 ui::GestureEventDetails details(ui::ET_GESTURE_TAP); |
291 0, | 289 details.set_tap_count(1); |
292 0, | 290 ui::GestureEvent tap(0, 0, 0, base::TimeDelta(), details); |
293 base::TimeDelta(), | |
294 ui::GestureEventDetails(ui::ET_GESTURE_TAP, 1.0f, 0.0f)); | |
295 textfield_->OnGestureEvent(&tap); | 291 textfield_->OnGestureEvent(&tap); |
296 | 292 |
297 // Test cursor at run boundary and with empty selection. | 293 // Test cursor at run boundary and with empty selection. |
298 textfield_->SelectSelectionModel( | 294 textfield_->SelectSelectionModel( |
299 gfx::SelectionModel(3, gfx::CURSOR_BACKWARD)); | 295 gfx::SelectionModel(3, gfx::CURSOR_BACKWARD)); |
300 VERIFY_HANDLE_POSITIONS(false); | 296 VERIFY_HANDLE_POSITIONS(false); |
301 | 297 |
302 // Test selection range inside one run and starts or ends at run boundary. | 298 // Test selection range inside one run and starts or ends at run boundary. |
303 textfield_->SelectRange(gfx::Range(2, 3)); | 299 textfield_->SelectRange(gfx::Range(2, 3)); |
304 VERIFY_HANDLE_POSITIONS(false); | 300 VERIFY_HANDLE_POSITIONS(false); |
(...skipping 26 matching lines...) Expand all Loading... |
331 textfield_->SelectRange(gfx::Range(4, 1)); | 327 textfield_->SelectRange(gfx::Range(4, 1)); |
332 VERIFY_HANDLE_POSITIONS(false); | 328 VERIFY_HANDLE_POSITIONS(false); |
333 } | 329 } |
334 | 330 |
335 // Tests if the SelectRect callback is called appropriately when selection | 331 // Tests if the SelectRect callback is called appropriately when selection |
336 // handles are moved. | 332 // handles are moved. |
337 TEST_F(TouchSelectionControllerImplTest, SelectRectCallbackTest) { | 333 TEST_F(TouchSelectionControllerImplTest, SelectRectCallbackTest) { |
338 CreateTextfield(); | 334 CreateTextfield(); |
339 textfield_->SetText(ASCIIToUTF16("textfield with selected text")); | 335 textfield_->SetText(ASCIIToUTF16("textfield with selected text")); |
340 // Tap the textfield to invoke touch selection. | 336 // Tap the textfield to invoke touch selection. |
341 ui::GestureEvent tap(0, | 337 ui::GestureEventDetails details(ui::ET_GESTURE_TAP); |
342 0, | 338 details.set_tap_count(1); |
343 0, | 339 ui::GestureEvent tap(0, 0, 0, base::TimeDelta(), details); |
344 base::TimeDelta(), | |
345 ui::GestureEventDetails(ui::ET_GESTURE_TAP, 1.0f, 0.0f)); | |
346 textfield_->OnGestureEvent(&tap); | 340 textfield_->OnGestureEvent(&tap); |
347 textfield_->SelectRange(gfx::Range(3, 7)); | 341 textfield_->SelectRange(gfx::Range(3, 7)); |
348 | 342 |
349 EXPECT_EQ(UTF16ToUTF8(textfield_->GetSelectedText()), "tfie"); | 343 EXPECT_EQ(UTF16ToUTF8(textfield_->GetSelectedText()), "tfie"); |
350 VERIFY_HANDLE_POSITIONS(false); | 344 VERIFY_HANDLE_POSITIONS(false); |
351 | 345 |
352 // Drag selection handle 2 to right by 3 chars. | 346 // Drag selection handle 2 to right by 3 chars. |
353 const gfx::FontList& font_list = textfield_->GetFontList(); | 347 const gfx::FontList& font_list = textfield_->GetFontList(); |
354 int x = gfx::Canvas::GetStringWidth(ASCIIToUTF16("ld "), font_list); | 348 int x = gfx::Canvas::GetStringWidth(ASCIIToUTF16("ld "), font_list); |
355 SimulateSelectionHandleDrag(gfx::Point(x, 0), 2); | 349 SimulateSelectionHandleDrag(gfx::Point(x, 0), 2); |
(...skipping 16 matching lines...) Expand all Loading... |
372 x = gfx::Canvas::GetStringWidth(ASCIIToUTF16("with selected "), font_list); | 366 x = gfx::Canvas::GetStringWidth(ASCIIToUTF16("with selected "), font_list); |
373 SimulateSelectionHandleDrag(gfx::Point(x, 0), 2); | 367 SimulateSelectionHandleDrag(gfx::Point(x, 0), 2); |
374 EXPECT_EQ(UTF16ToUTF8(textfield_->GetSelectedText()), "selected "); | 368 EXPECT_EQ(UTF16ToUTF8(textfield_->GetSelectedText()), "selected "); |
375 VERIFY_HANDLE_POSITIONS(false); | 369 VERIFY_HANDLE_POSITIONS(false); |
376 } | 370 } |
377 | 371 |
378 TEST_F(TouchSelectionControllerImplTest, SelectRectInBidiCallbackTest) { | 372 TEST_F(TouchSelectionControllerImplTest, SelectRectInBidiCallbackTest) { |
379 CreateTextfield(); | 373 CreateTextfield(); |
380 textfield_->SetText(WideToUTF16(L"abc\x05e1\x05e2\x05e3" L"def")); | 374 textfield_->SetText(WideToUTF16(L"abc\x05e1\x05e2\x05e3" L"def")); |
381 // Tap the textfield to invoke touch selection. | 375 // Tap the textfield to invoke touch selection. |
382 ui::GestureEvent tap(0, | 376 ui::GestureEventDetails details(ui::ET_GESTURE_TAP); |
383 0, | 377 details.set_tap_count(1); |
384 0, | 378 ui::GestureEvent tap(0, 0, 0, base::TimeDelta(), details); |
385 base::TimeDelta(), | |
386 ui::GestureEventDetails(ui::ET_GESTURE_TAP, 1.0f, 0.0f)); | |
387 textfield_->OnGestureEvent(&tap); | 379 textfield_->OnGestureEvent(&tap); |
388 | 380 |
389 // Select [c] from left to right. | 381 // Select [c] from left to right. |
390 textfield_->SelectRange(gfx::Range(2, 3)); | 382 textfield_->SelectRange(gfx::Range(2, 3)); |
391 EXPECT_EQ(WideToUTF16(L"c"), textfield_->GetSelectedText()); | 383 EXPECT_EQ(WideToUTF16(L"c"), textfield_->GetSelectedText()); |
392 VERIFY_HANDLE_POSITIONS(false); | 384 VERIFY_HANDLE_POSITIONS(false); |
393 | 385 |
394 // Drag selection handle 2 to right by 1 char. | 386 // Drag selection handle 2 to right by 1 char. |
395 const gfx::FontList& font_list = textfield_->GetFontList(); | 387 const gfx::FontList& font_list = textfield_->GetFontList(); |
396 int x = gfx::Canvas::GetStringWidth(WideToUTF16(L"\x05e3"), font_list); | 388 int x = gfx::Canvas::GetStringWidth(WideToUTF16(L"\x05e3"), font_list); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 TEST_F(TouchSelectionControllerImplTest, | 496 TEST_F(TouchSelectionControllerImplTest, |
505 HiddenSelectionHandleRetainsCursorPosition) { | 497 HiddenSelectionHandleRetainsCursorPosition) { |
506 // Create a textfield with lots of text in it. | 498 // Create a textfield with lots of text in it. |
507 CreateTextfield(); | 499 CreateTextfield(); |
508 std::string textfield_text("some text"); | 500 std::string textfield_text("some text"); |
509 for (int i = 0; i < 10; ++i) | 501 for (int i = 0; i < 10; ++i) |
510 textfield_text += textfield_text; | 502 textfield_text += textfield_text; |
511 textfield_->SetText(ASCIIToUTF16(textfield_text)); | 503 textfield_->SetText(ASCIIToUTF16(textfield_text)); |
512 | 504 |
513 // Tap the textfield to invoke selection. | 505 // Tap the textfield to invoke selection. |
514 ui::GestureEvent tap(0, | 506 ui::GestureEventDetails details(ui::ET_GESTURE_TAP); |
515 0, | 507 details.set_tap_count(1); |
516 0, | 508 ui::GestureEvent tap(0, 0, 0, base::TimeDelta(), details); |
517 base::TimeDelta(), | |
518 ui::GestureEventDetails(ui::ET_GESTURE_TAP, 1.0f, 0.0f)); | |
519 textfield_->OnGestureEvent(&tap); | 509 textfield_->OnGestureEvent(&tap); |
520 | 510 |
521 // Select some text such that one handle is hidden. | 511 // Select some text such that one handle is hidden. |
522 textfield_->SelectRange(gfx::Range(10, textfield_text.length())); | 512 textfield_->SelectRange(gfx::Range(10, textfield_text.length())); |
523 | 513 |
524 // Check that one selection handle is hidden. | 514 // Check that one selection handle is hidden. |
525 EXPECT_FALSE(IsSelectionHandle1Visible()); | 515 EXPECT_FALSE(IsSelectionHandle1Visible()); |
526 EXPECT_TRUE(IsSelectionHandle2Visible()); | 516 EXPECT_TRUE(IsSelectionHandle2Visible()); |
527 EXPECT_EQ(gfx::Range(10, textfield_text.length()), | 517 EXPECT_EQ(gfx::Range(10, textfield_text.length()), |
528 textfield_->GetSelectedRange()); | 518 textfield_->GetSelectedRange()); |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 // Start touch editing; then press a key and ensure it deactivates touch | 843 // Start touch editing; then press a key and ensure it deactivates touch |
854 // selection. | 844 // selection. |
855 StartTouchEditing(); | 845 StartTouchEditing(); |
856 EXPECT_TRUE(GetSelectionController()); | 846 EXPECT_TRUE(GetSelectionController()); |
857 generator.PressKey(ui::VKEY_A, 0); | 847 generator.PressKey(ui::VKEY_A, 0); |
858 RunPendingMessages(); | 848 RunPendingMessages(); |
859 EXPECT_FALSE(GetSelectionController()); | 849 EXPECT_FALSE(GetSelectionController()); |
860 } | 850 } |
861 | 851 |
862 } // namespace views | 852 } // namespace views |
OLD | NEW |