| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/string16.h" | 10 #include "base/string16.h" |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 #endif | 493 #endif |
| 494 TEST_F(TextfieldViewsModelTest, MAYBE_Clipboard) { | 494 TEST_F(TextfieldViewsModelTest, MAYBE_Clipboard) { |
| 495 ui::Clipboard* clipboard | 495 ui::Clipboard* clipboard |
| 496 = views::ViewsDelegate::views_delegate->GetClipboard(); | 496 = views::ViewsDelegate::views_delegate->GetClipboard(); |
| 497 string16 initial_clipboard_text = ASCIIToUTF16("initial text"); | 497 string16 initial_clipboard_text = ASCIIToUTF16("initial text"); |
| 498 ui::ScopedClipboardWriter(clipboard).WriteText(initial_clipboard_text); | 498 ui::ScopedClipboardWriter(clipboard).WriteText(initial_clipboard_text); |
| 499 | 499 |
| 500 string16 clipboard_text; | 500 string16 clipboard_text; |
| 501 TextfieldViewsModel model(NULL); | 501 TextfieldViewsModel model(NULL); |
| 502 model.Append(ASCIIToUTF16("HELLO WORLD")); | 502 model.Append(ASCIIToUTF16("HELLO WORLD")); |
| 503 |
| 504 // Cut with an empty selection should do nothing. |
| 503 model.MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, false); | 505 model.MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, false); |
| 504 | |
| 505 // Test for cut: Empty selection. | |
| 506 EXPECT_FALSE(model.Cut()); | 506 EXPECT_FALSE(model.Cut()); |
| 507 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); | 507 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 508 EXPECT_STR_EQ(UTF16ToUTF8(initial_clipboard_text), clipboard_text); | 508 EXPECT_EQ(initial_clipboard_text, clipboard_text); |
| 509 EXPECT_STR_EQ("HELLO WORLD", model.GetText()); | 509 EXPECT_STR_EQ("HELLO WORLD", model.GetText()); |
| 510 EXPECT_EQ(11U, model.GetCursorPosition()); | 510 EXPECT_EQ(11U, model.GetCursorPosition()); |
| 511 | 511 |
| 512 // Test for cut: Non-empty selection. | 512 // Copy with an empty selection should do nothing. |
| 513 model.Copy(); |
| 514 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 515 EXPECT_EQ(initial_clipboard_text, clipboard_text); |
| 516 EXPECT_STR_EQ("HELLO WORLD", model.GetText()); |
| 517 EXPECT_EQ(11U, model.GetCursorPosition()); |
| 518 |
| 519 // Cut on obscured (password) text should do nothing. |
| 520 model.render_text()->SetObscured(true); |
| 521 model.SelectAll(); |
| 522 EXPECT_FALSE(model.Cut()); |
| 523 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 524 EXPECT_EQ(initial_clipboard_text, clipboard_text); |
| 525 EXPECT_STR_EQ("HELLO WORLD", model.GetText()); |
| 526 EXPECT_STR_EQ("HELLO WORLD", model.GetSelectedText()); |
| 527 |
| 528 // Copy on obscured text should do nothing. |
| 529 model.SelectAll(); |
| 530 EXPECT_FALSE(model.Copy()); |
| 531 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 532 EXPECT_EQ(initial_clipboard_text, clipboard_text); |
| 533 EXPECT_STR_EQ("HELLO WORLD", model.GetText()); |
| 534 EXPECT_STR_EQ("HELLO WORLD", model.GetSelectedText()); |
| 535 |
| 536 // Cut with non-empty selection. |
| 537 model.render_text()->SetObscured(false); |
| 538 model.MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, false); |
| 513 model.MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); | 539 model.MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); |
| 514 EXPECT_TRUE(model.Cut()); | 540 EXPECT_TRUE(model.Cut()); |
| 515 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); | 541 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 516 EXPECT_STR_EQ("WORLD", clipboard_text); | 542 EXPECT_STR_EQ("WORLD", clipboard_text); |
| 517 EXPECT_STR_EQ("HELLO ", model.GetText()); | 543 EXPECT_STR_EQ("HELLO ", model.GetText()); |
| 518 EXPECT_EQ(6U, model.GetCursorPosition()); | 544 EXPECT_EQ(6U, model.GetCursorPosition()); |
| 519 | 545 |
| 520 // Test for copy: Empty selection. | 546 // Copy with non-empty selection. |
| 521 model.Copy(); | |
| 522 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); | |
| 523 EXPECT_STR_EQ("WORLD", clipboard_text); | |
| 524 EXPECT_STR_EQ("HELLO ", model.GetText()); | |
| 525 EXPECT_EQ(6U, model.GetCursorPosition()); | |
| 526 | |
| 527 // Test for copy: Non-empty selection. | |
| 528 model.Append(ASCIIToUTF16("HELLO WORLD")); | 547 model.Append(ASCIIToUTF16("HELLO WORLD")); |
| 529 model.SelectAll(); | 548 model.SelectAll(); |
| 530 model.Copy(); | 549 model.Copy(); |
| 531 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); | 550 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 532 EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); | 551 EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); |
| 533 EXPECT_STR_EQ("HELLO HELLO WORLD", model.GetText()); | 552 EXPECT_STR_EQ("HELLO HELLO WORLD", model.GetText()); |
| 534 EXPECT_EQ(17U, model.GetCursorPosition()); | 553 EXPECT_EQ(17U, model.GetCursorPosition()); |
| 535 | 554 |
| 536 // Test for paste. | 555 // Test for paste. |
| 537 model.ClearSelection(); | 556 model.ClearSelection(); |
| 538 model.MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, false); | 557 model.MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, false); |
| 539 model.MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); | 558 model.MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); |
| 540 EXPECT_TRUE(model.Paste()); | 559 EXPECT_TRUE(model.Paste()); |
| 541 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); | 560 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 542 EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); | 561 EXPECT_STR_EQ("HELLO HELLO WORLD", clipboard_text); |
| 543 EXPECT_STR_EQ("HELLO HELLO HELLO HELLO WORLD", model.GetText()); | 562 EXPECT_STR_EQ("HELLO HELLO HELLO HELLO WORLD", model.GetText()); |
| 544 EXPECT_EQ(29U, model.GetCursorPosition()); | 563 EXPECT_EQ(29U, model.GetCursorPosition()); |
| 564 |
| 565 // Paste ignores the obscured bit. |
| 566 model.render_text()->SetObscured(true); |
| 567 model.MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true); |
| 568 ui::ScopedClipboardWriter(clipboard).WriteText(initial_clipboard_text); |
| 569 EXPECT_TRUE(model.Paste()); |
| 570 clipboard->ReadText(ui::Clipboard::BUFFER_STANDARD, &clipboard_text); |
| 571 EXPECT_STR_EQ("HELLO HELLO HELLO HELLO initial text", model.GetText()); |
| 545 } | 572 } |
| 546 | 573 |
| 547 static void SelectWordTestVerifier(const TextfieldViewsModel& model, | 574 static void SelectWordTestVerifier(const TextfieldViewsModel& model, |
| 548 const string16 &expected_selected_string, size_t expected_cursor_pos) { | 575 const string16 &expected_selected_string, size_t expected_cursor_pos) { |
| 549 EXPECT_EQ(expected_selected_string, model.GetSelectedText()); | 576 EXPECT_EQ(expected_selected_string, model.GetSelectedText()); |
| 550 EXPECT_EQ(expected_cursor_pos, model.GetCursorPosition()); | 577 EXPECT_EQ(expected_cursor_pos, model.GetCursorPosition()); |
| 551 } | 578 } |
| 552 | 579 |
| 553 TEST_F(TextfieldViewsModelTest, SelectWordTest) { | 580 TEST_F(TextfieldViewsModelTest, SelectWordTest) { |
| 554 TextfieldViewsModel model(NULL); | 581 TextfieldViewsModel model(NULL); |
| (...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1527 EXPECT_TRUE(model.Undo()); | 1554 EXPECT_TRUE(model.Undo()); |
| 1528 EXPECT_STR_EQ("ABCDE", model.GetText()); | 1555 EXPECT_STR_EQ("ABCDE", model.GetText()); |
| 1529 EXPECT_TRUE(model.Redo()); | 1556 EXPECT_TRUE(model.Redo()); |
| 1530 EXPECT_STR_EQ("1234", model.GetText()); | 1557 EXPECT_STR_EQ("1234", model.GetText()); |
| 1531 EXPECT_FALSE(model.Redo()); | 1558 EXPECT_FALSE(model.Redo()); |
| 1532 | 1559 |
| 1533 // TODO(oshima): We need MockInputMethod to test the behavior with IME. | 1560 // TODO(oshima): We need MockInputMethod to test the behavior with IME. |
| 1534 } | 1561 } |
| 1535 | 1562 |
| 1536 } // namespace views | 1563 } // namespace views |
| OLD | NEW |