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