OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 EXPECT_EQ(string16(), model.GetSelectedText()); | 273 EXPECT_EQ(string16(), model.GetSelectedText()); |
274 model.SelectAll(); | 274 model.SelectAll(); |
275 EXPECT_STR_EQ("HELLO", model.GetSelectedText()); | 275 EXPECT_STR_EQ("HELLO", model.GetSelectedText()); |
276 // SelectAll should select towards the end. | 276 // SelectAll should select towards the end. |
277 gfx::SelectionModel sel; | 277 gfx::SelectionModel sel; |
278 model.GetSelectionModel(&sel); | 278 model.GetSelectionModel(&sel); |
279 EXPECT_EQ(0U, sel.selection_start()); | 279 EXPECT_EQ(0U, sel.selection_start()); |
280 EXPECT_EQ(5U, sel.selection_end()); | 280 EXPECT_EQ(5U, sel.selection_end()); |
281 | 281 |
282 // Select and move cursor | 282 // Select and move cursor |
283 model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); | 283 model.SelectRange(ui::Range(1U, 3U)); |
284 EXPECT_STR_EQ("EL", model.GetSelectedText()); | 284 EXPECT_STR_EQ("EL", model.GetSelectedText()); |
285 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); | 285 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); |
286 EXPECT_EQ(1U, model.GetCursorPosition()); | 286 EXPECT_EQ(1U, model.GetCursorPosition()); |
287 model.MoveCursorTo(gfx::SelectionModel(1U, 3U)); | 287 model.SelectRange(ui::Range(1U, 3U)); |
288 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); | 288 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); |
289 EXPECT_EQ(3U, model.GetCursorPosition()); | 289 EXPECT_EQ(3U, model.GetCursorPosition()); |
290 | 290 |
291 // Select all and move cursor | 291 // Select all and move cursor |
292 model.SelectAll(); | 292 model.SelectAll(); |
293 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); | 293 model.MoveCursorLeft(gfx::CHARACTER_BREAK, false); |
294 EXPECT_EQ(0U, model.GetCursorPosition()); | 294 EXPECT_EQ(0U, model.GetCursorPosition()); |
295 model.SelectAll(); | 295 model.SelectAll(); |
296 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); | 296 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); |
297 EXPECT_EQ(5U, model.GetCursorPosition()); | 297 EXPECT_EQ(5U, model.GetCursorPosition()); |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 model.MoveCursorLeft(gfx::LINE_BREAK, false); | 629 model.MoveCursorLeft(gfx::LINE_BREAK, false); |
630 for (size_t j = 0; j < i; ++j) | 630 for (size_t j = 0; j < i; ++j) |
631 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); | 631 model.MoveCursorRight(gfx::CHARACTER_BREAK, false); |
632 model.SelectWord(); | 632 model.SelectWord(); |
633 SelectWordTestVerifier(model, WideToUTF16(word_and_cursor[i].word), | 633 SelectWordTestVerifier(model, WideToUTF16(word_and_cursor[i].word), |
634 word_and_cursor[i].cursor); | 634 word_and_cursor[i].cursor); |
635 } | 635 } |
636 } | 636 } |
637 #endif | 637 #endif |
638 | 638 |
| 639 TEST_F(TextfieldViewsModelTest, RangeTest) { |
| 640 TextfieldViewsModel model(NULL); |
| 641 model.Append(ASCIIToUTF16("HELLO WORLD")); |
| 642 model.MoveCursorLeft(gfx::LINE_BREAK, false); |
| 643 ui::Range range; |
| 644 model.GetSelectedRange(&range); |
| 645 EXPECT_TRUE(range.is_empty()); |
| 646 EXPECT_EQ(0U, range.start()); |
| 647 EXPECT_EQ(0U, range.end()); |
| 648 |
| 649 model.MoveCursorRight(gfx::WORD_BREAK, true); |
| 650 model.GetSelectedRange(&range); |
| 651 EXPECT_FALSE(range.is_empty()); |
| 652 EXPECT_FALSE(range.is_reversed()); |
| 653 EXPECT_EQ(0U, range.start()); |
| 654 EXPECT_EQ(5U, range.end()); |
| 655 |
| 656 model.MoveCursorLeft(gfx::CHARACTER_BREAK, true); |
| 657 model.GetSelectedRange(&range); |
| 658 EXPECT_FALSE(range.is_empty()); |
| 659 EXPECT_EQ(0U, range.start()); |
| 660 EXPECT_EQ(4U, range.end()); |
| 661 |
| 662 model.MoveCursorLeft(gfx::WORD_BREAK, true); |
| 663 model.GetSelectedRange(&range); |
| 664 EXPECT_TRUE(range.is_empty()); |
| 665 EXPECT_EQ(0U, range.start()); |
| 666 EXPECT_EQ(0U, range.end()); |
| 667 |
| 668 // now from the end. |
| 669 model.MoveCursorRight(gfx::LINE_BREAK, false); |
| 670 model.GetSelectedRange(&range); |
| 671 EXPECT_TRUE(range.is_empty()); |
| 672 EXPECT_EQ(11U, range.start()); |
| 673 EXPECT_EQ(11U, range.end()); |
| 674 |
| 675 model.MoveCursorLeft(gfx::WORD_BREAK, true); |
| 676 model.GetSelectedRange(&range); |
| 677 EXPECT_FALSE(range.is_empty()); |
| 678 EXPECT_TRUE(range.is_reversed()); |
| 679 EXPECT_EQ(11U, range.start()); |
| 680 EXPECT_EQ(6U, range.end()); |
| 681 |
| 682 model.MoveCursorRight(gfx::CHARACTER_BREAK, true); |
| 683 model.GetSelectedRange(&range); |
| 684 EXPECT_FALSE(range.is_empty()); |
| 685 EXPECT_TRUE(range.is_reversed()); |
| 686 EXPECT_EQ(11U, range.start()); |
| 687 EXPECT_EQ(7U, range.end()); |
| 688 |
| 689 model.MoveCursorRight(gfx::WORD_BREAK, true); |
| 690 model.GetSelectedRange(&range); |
| 691 EXPECT_TRUE(range.is_empty()); |
| 692 EXPECT_EQ(11U, range.start()); |
| 693 EXPECT_EQ(11U, range.end()); |
| 694 |
| 695 // Select All |
| 696 model.MoveCursorLeft(gfx::LINE_BREAK, true); |
| 697 model.GetSelectedRange(&range); |
| 698 EXPECT_FALSE(range.is_empty()); |
| 699 EXPECT_TRUE(range.is_reversed()); |
| 700 EXPECT_EQ(11U, range.start()); |
| 701 EXPECT_EQ(0U, range.end()); |
| 702 } |
| 703 |
| 704 TEST_F(TextfieldViewsModelTest, SelectRangeTest) { |
| 705 TextfieldViewsModel model(NULL); |
| 706 model.Append(ASCIIToUTF16("HELLO WORLD")); |
| 707 ui::Range range(0, 6); |
| 708 EXPECT_FALSE(range.is_reversed()); |
| 709 model.SelectRange(range); |
| 710 EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); |
| 711 |
| 712 range = ui::Range(6, 1); |
| 713 EXPECT_TRUE(range.is_reversed()); |
| 714 model.SelectRange(range); |
| 715 EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); |
| 716 |
| 717 range = ui::Range(2, 1000); |
| 718 EXPECT_FALSE(range.is_reversed()); |
| 719 model.SelectRange(range); |
| 720 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); |
| 721 |
| 722 range = ui::Range(1000, 3); |
| 723 EXPECT_TRUE(range.is_reversed()); |
| 724 model.SelectRange(range); |
| 725 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); |
| 726 |
| 727 range = ui::Range(0, 0); |
| 728 EXPECT_TRUE(range.is_empty()); |
| 729 model.SelectRange(range); |
| 730 EXPECT_TRUE(model.GetSelectedText().empty()); |
| 731 |
| 732 range = ui::Range(3, 3); |
| 733 EXPECT_TRUE(range.is_empty()); |
| 734 model.SelectRange(range); |
| 735 EXPECT_TRUE(model.GetSelectedText().empty()); |
| 736 |
| 737 range = ui::Range(1000, 100); |
| 738 EXPECT_FALSE(range.is_empty()); |
| 739 model.SelectRange(range); |
| 740 EXPECT_TRUE(model.GetSelectedText().empty()); |
| 741 |
| 742 range = ui::Range(1000, 1000); |
| 743 EXPECT_TRUE(range.is_empty()); |
| 744 model.SelectRange(range); |
| 745 EXPECT_TRUE(model.GetSelectedText().empty()); |
| 746 } |
| 747 |
639 TEST_F(TextfieldViewsModelTest, SelectionModelTest) { | 748 TEST_F(TextfieldViewsModelTest, SelectionModelTest) { |
640 TextfieldViewsModel model(NULL); | 749 TextfieldViewsModel model(NULL); |
641 model.Append(ASCIIToUTF16("HELLO WORLD")); | 750 model.Append(ASCIIToUTF16("HELLO WORLD")); |
642 model.MoveCursorLeft(gfx::LINE_BREAK, false); | 751 model.MoveCursorLeft(gfx::LINE_BREAK, false); |
643 gfx::SelectionModel sel; | 752 gfx::SelectionModel sel; |
644 model.GetSelectionModel(&sel); | 753 model.GetSelectionModel(&sel); |
645 EXPECT_EQ(sel.selection_start(), sel.selection_end()); | 754 EXPECT_EQ(sel.selection_start(), sel.selection_end()); |
646 EXPECT_EQ(0U, sel.selection_start()); | 755 EXPECT_EQ(0U, sel.selection_start()); |
647 EXPECT_EQ(0U, sel.selection_end()); | 756 EXPECT_EQ(0U, sel.selection_end()); |
648 | 757 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 model.GetSelectionModel(&sel); | 806 model.GetSelectionModel(&sel); |
698 EXPECT_NE(sel.selection_start(), sel.selection_end()); | 807 EXPECT_NE(sel.selection_start(), sel.selection_end()); |
699 EXPECT_GT(sel.selection_start(), sel.selection_end()); | 808 EXPECT_GT(sel.selection_start(), sel.selection_end()); |
700 EXPECT_EQ(11U, sel.selection_start()); | 809 EXPECT_EQ(11U, sel.selection_start()); |
701 EXPECT_EQ(0U, sel.selection_end()); | 810 EXPECT_EQ(0U, sel.selection_end()); |
702 } | 811 } |
703 | 812 |
704 TEST_F(TextfieldViewsModelTest, SelectSelectionModelTest) { | 813 TEST_F(TextfieldViewsModelTest, SelectSelectionModelTest) { |
705 TextfieldViewsModel model(NULL); | 814 TextfieldViewsModel model(NULL); |
706 model.Append(ASCIIToUTF16("HELLO WORLD")); | 815 model.Append(ASCIIToUTF16("HELLO WORLD")); |
707 model.SelectSelectionModel(gfx::SelectionModel(0, 6)); | 816 model.SelectSelectionModel(gfx::SelectionModel(0, 6, 5, |
| 817 gfx::SelectionModel::TRAILING)); |
708 EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); | 818 EXPECT_STR_EQ("HELLO ", model.GetSelectedText()); |
709 | 819 |
710 model.SelectSelectionModel(gfx::SelectionModel(6, 1)); | 820 model.SelectSelectionModel(gfx::SelectionModel(6, 1, 1, |
| 821 gfx::SelectionModel::LEADING)); |
711 EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); | 822 EXPECT_STR_EQ("ELLO ", model.GetSelectedText()); |
712 | 823 |
713 model.SelectSelectionModel(gfx::SelectionModel(2, 1000)); | 824 model.SelectSelectionModel(gfx::SelectionModel(2, 1000, 999, |
| 825 gfx::SelectionModel::TRAILING)); |
714 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); | 826 EXPECT_STR_EQ("LLO WORLD", model.GetSelectedText()); |
715 | 827 |
716 model.SelectSelectionModel(gfx::SelectionModel(1000, 3)); | 828 model.SelectSelectionModel(gfx::SelectionModel(1000, 3, 3, |
| 829 gfx::SelectionModel::LEADING)); |
717 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); | 830 EXPECT_STR_EQ("LO WORLD", model.GetSelectedText()); |
718 | 831 |
719 model.SelectSelectionModel(gfx::SelectionModel(0, 0)); | 832 model.SelectSelectionModel(gfx::SelectionModel(0, 0, 0, |
| 833 gfx::SelectionModel::LEADING)); |
720 EXPECT_TRUE(model.GetSelectedText().empty()); | 834 EXPECT_TRUE(model.GetSelectedText().empty()); |
721 | 835 |
722 model.SelectSelectionModel(gfx::SelectionModel(3, 3)); | 836 model.SelectSelectionModel(gfx::SelectionModel(3, 3, 3, |
| 837 gfx::SelectionModel::LEADING)); |
723 EXPECT_TRUE(model.GetSelectedText().empty()); | 838 EXPECT_TRUE(model.GetSelectedText().empty()); |
724 | 839 |
725 model.SelectSelectionModel(gfx::SelectionModel(1000, 100)); | 840 model.SelectSelectionModel(gfx::SelectionModel(1000, 100, 100, |
| 841 gfx::SelectionModel::LEADING)); |
726 EXPECT_TRUE(model.GetSelectedText().empty()); | 842 EXPECT_TRUE(model.GetSelectedText().empty()); |
727 | 843 |
728 model.SelectSelectionModel(gfx::SelectionModel(1000, 1000)); | 844 model.SelectSelectionModel(gfx::SelectionModel(1000, 1000, 1000, |
| 845 gfx::SelectionModel::TRAILING)); |
729 EXPECT_TRUE(model.GetSelectedText().empty()); | 846 EXPECT_TRUE(model.GetSelectedText().empty()); |
730 } | 847 } |
731 | 848 |
732 TEST_F(TextfieldViewsModelTest, CompositionTextTest) { | 849 TEST_F(TextfieldViewsModelTest, CompositionTextTest) { |
733 TextfieldViewsModel model(this); | 850 TextfieldViewsModel model(this); |
734 model.Append(ASCIIToUTF16("1234590")); | 851 model.Append(ASCIIToUTF16("1234590")); |
735 model.SelectSelectionModel(gfx::SelectionModel(5, 5)); | 852 model.SelectRange(ui::Range(5, 5)); |
736 EXPECT_FALSE(model.HasSelection()); | 853 EXPECT_FALSE(model.HasSelection()); |
737 EXPECT_EQ(5U, model.GetCursorPosition()); | 854 EXPECT_EQ(5U, model.GetCursorPosition()); |
738 | 855 |
739 ui::Range range; | 856 ui::Range range; |
740 model.GetTextRange(&range); | 857 model.GetTextRange(&range); |
741 EXPECT_EQ(0U, range.start()); | 858 EXPECT_EQ(0U, range.start()); |
742 EXPECT_EQ(7U, range.end()); | 859 EXPECT_EQ(7U, range.end()); |
743 | 860 |
744 ui::CompositionText composition; | 861 ui::CompositionText composition; |
745 composition.text = ASCIIToUTF16("678"); | 862 composition.text = ASCIIToUTF16("678"); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 composition_text_confirmed_or_cleared_ = false; | 970 composition_text_confirmed_or_cleared_ = false; |
854 EXPECT_STR_EQ("678678", model.GetText()); | 971 EXPECT_STR_EQ("678678", model.GetText()); |
855 | 972 |
856 model.SetCompositionText(composition); | 973 model.SetCompositionText(composition); |
857 model.MoveCursorRight(gfx::LINE_BREAK, false); | 974 model.MoveCursorRight(gfx::LINE_BREAK, false); |
858 EXPECT_TRUE(composition_text_confirmed_or_cleared_); | 975 EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
859 composition_text_confirmed_or_cleared_ = false; | 976 composition_text_confirmed_or_cleared_ = false; |
860 EXPECT_STR_EQ("678", model.GetText()); | 977 EXPECT_STR_EQ("678", model.GetText()); |
861 | 978 |
862 model.SetCompositionText(composition); | 979 model.SetCompositionText(composition); |
863 gfx::SelectionModel sel(0); | 980 gfx::SelectionModel sel(model.render_text()->GetSelectionStart(), |
864 sel.set_selection_start(model.render_text()->GetSelectionStart()); | 981 0, 0, gfx::SelectionModel::LEADING); |
865 model.MoveCursorTo(sel); | 982 model.MoveCursorTo(sel); |
866 EXPECT_TRUE(composition_text_confirmed_or_cleared_); | 983 EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
867 composition_text_confirmed_or_cleared_ = false; | 984 composition_text_confirmed_or_cleared_ = false; |
868 EXPECT_STR_EQ("678678", model.GetText()); | 985 EXPECT_STR_EQ("678678", model.GetText()); |
869 | 986 |
870 model.SetCompositionText(composition); | 987 model.SetCompositionText(composition); |
871 model.SelectSelectionModel(gfx::SelectionModel(0, 3)); | 988 model.SelectRange(ui::Range(0, 3)); |
872 EXPECT_TRUE(composition_text_confirmed_or_cleared_); | 989 EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
873 composition_text_confirmed_or_cleared_ = false; | 990 composition_text_confirmed_or_cleared_ = false; |
874 EXPECT_STR_EQ("678", model.GetText()); | 991 EXPECT_STR_EQ("678", model.GetText()); |
875 | 992 |
876 model.SetCompositionText(composition); | 993 model.SetCompositionText(composition); |
877 model.SelectAll(); | 994 model.SelectAll(); |
878 EXPECT_TRUE(composition_text_confirmed_or_cleared_); | 995 EXPECT_TRUE(composition_text_confirmed_or_cleared_); |
879 composition_text_confirmed_or_cleared_ = false; | 996 composition_text_confirmed_or_cleared_ = false; |
880 EXPECT_STR_EQ("678", model.GetText()); | 997 EXPECT_STR_EQ("678", model.GetText()); |
881 | 998 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
995 | 1112 |
996 TEST_F(TextfieldViewsModelTest, UndoRedo_SetText) { | 1113 TEST_F(TextfieldViewsModelTest, UndoRedo_SetText) { |
997 // This is to test the undo/redo behavior of omnibox. | 1114 // This is to test the undo/redo behavior of omnibox. |
998 TextfieldViewsModel model(NULL); | 1115 TextfieldViewsModel model(NULL); |
999 model.InsertChar('w'); | 1116 model.InsertChar('w'); |
1000 EXPECT_STR_EQ("w", model.GetText()); | 1117 EXPECT_STR_EQ("w", model.GetText()); |
1001 EXPECT_EQ(1U, model.GetCursorPosition()); | 1118 EXPECT_EQ(1U, model.GetCursorPosition()); |
1002 model.SetText(ASCIIToUTF16("www.google.com")); | 1119 model.SetText(ASCIIToUTF16("www.google.com")); |
1003 EXPECT_EQ(1U, model.GetCursorPosition()); | 1120 EXPECT_EQ(1U, model.GetCursorPosition()); |
1004 EXPECT_STR_EQ("www.google.com", model.GetText()); | 1121 EXPECT_STR_EQ("www.google.com", model.GetText()); |
1005 model.SelectSelectionModel(gfx::SelectionModel(14, 1)); | 1122 model.SelectRange(ui::Range(14, 1)); |
1006 model.InsertChar('w'); | 1123 model.InsertChar('w'); |
1007 EXPECT_STR_EQ("ww", model.GetText()); | 1124 EXPECT_STR_EQ("ww", model.GetText()); |
1008 model.SetText(ASCIIToUTF16("www.google.com")); | 1125 model.SetText(ASCIIToUTF16("www.google.com")); |
1009 model.SelectSelectionModel(gfx::SelectionModel(14, 2)); | 1126 model.SelectRange(ui::Range(14, 2)); |
1010 model.InsertChar('w'); | 1127 model.InsertChar('w'); |
1011 EXPECT_STR_EQ("www", model.GetText()); | 1128 EXPECT_STR_EQ("www", model.GetText()); |
1012 model.SetText(ASCIIToUTF16("www.google.com")); | 1129 model.SetText(ASCIIToUTF16("www.google.com")); |
1013 model.SelectSelectionModel(gfx::SelectionModel(14, 3)); | 1130 model.SelectRange(ui::Range(14, 3)); |
1014 model.InsertChar('.'); | 1131 model.InsertChar('.'); |
1015 EXPECT_STR_EQ("www.", model.GetText()); | 1132 EXPECT_STR_EQ("www.", model.GetText()); |
1016 model.SetText(ASCIIToUTF16("www.google.com")); | 1133 model.SetText(ASCIIToUTF16("www.google.com")); |
1017 model.SelectSelectionModel(gfx::SelectionModel(14, 4)); | 1134 model.SelectRange(ui::Range(14, 4)); |
1018 model.InsertChar('y'); | 1135 model.InsertChar('y'); |
1019 EXPECT_STR_EQ("www.y", model.GetText()); | 1136 EXPECT_STR_EQ("www.y", model.GetText()); |
1020 model.SetText(ASCIIToUTF16("www.youtube.com")); | 1137 model.SetText(ASCIIToUTF16("www.youtube.com")); |
1021 EXPECT_STR_EQ("www.youtube.com", model.GetText()); | 1138 EXPECT_STR_EQ("www.youtube.com", model.GetText()); |
1022 EXPECT_EQ(5U, model.GetCursorPosition()); | 1139 EXPECT_EQ(5U, model.GetCursorPosition()); |
1023 | 1140 |
1024 EXPECT_TRUE(model.Undo()); | 1141 EXPECT_TRUE(model.Undo()); |
1025 EXPECT_STR_EQ("www.google.com", model.GetText()); | 1142 EXPECT_STR_EQ("www.google.com", model.GetText()); |
1026 EXPECT_EQ(4U, model.GetCursorPosition()); | 1143 EXPECT_EQ(4U, model.GetCursorPosition()); |
1027 EXPECT_TRUE(model.Undo()); | 1144 EXPECT_TRUE(model.Undo()); |
(...skipping 25 matching lines...) Expand all Loading... |
1053 EXPECT_STR_EQ("www.youtube.com", model.GetText()); | 1170 EXPECT_STR_EQ("www.youtube.com", model.GetText()); |
1054 EXPECT_EQ(5U, model.GetCursorPosition()); | 1171 EXPECT_EQ(5U, model.GetCursorPosition()); |
1055 EXPECT_FALSE(model.Redo()); | 1172 EXPECT_FALSE(model.Redo()); |
1056 } | 1173 } |
1057 | 1174 |
1058 TEST_F(TextfieldViewsModelTest, UndoRedo_CutCopyPasteTest) { | 1175 TEST_F(TextfieldViewsModelTest, UndoRedo_CutCopyPasteTest) { |
1059 TextfieldViewsModel model(NULL); | 1176 TextfieldViewsModel model(NULL); |
1060 model.SetText(ASCIIToUTF16("ABCDE")); | 1177 model.SetText(ASCIIToUTF16("ABCDE")); |
1061 EXPECT_FALSE(model.Redo()); // nothing to redo | 1178 EXPECT_FALSE(model.Redo()); // nothing to redo |
1062 // Cut | 1179 // Cut |
1063 model.MoveCursorTo(gfx::SelectionModel(1, 3)); | 1180 model.SelectRange(ui::Range(1, 3)); |
1064 model.Cut(); | 1181 model.Cut(); |
1065 EXPECT_STR_EQ("ADE", model.GetText()); | 1182 EXPECT_STR_EQ("ADE", model.GetText()); |
1066 EXPECT_EQ(1U, model.GetCursorPosition()); | 1183 EXPECT_EQ(1U, model.GetCursorPosition()); |
1067 EXPECT_TRUE(model.Undo()); | 1184 EXPECT_TRUE(model.Undo()); |
1068 EXPECT_STR_EQ("ABCDE", model.GetText()); | 1185 EXPECT_STR_EQ("ABCDE", model.GetText()); |
1069 EXPECT_EQ(3U, model.GetCursorPosition()); | 1186 EXPECT_EQ(3U, model.GetCursorPosition()); |
1070 EXPECT_TRUE(model.Undo()); | 1187 EXPECT_TRUE(model.Undo()); |
1071 EXPECT_STR_EQ("", model.GetText()); | 1188 EXPECT_STR_EQ("", model.GetText()); |
1072 EXPECT_EQ(0U, model.GetCursorPosition()); | 1189 EXPECT_EQ(0U, model.GetCursorPosition()); |
1073 EXPECT_FALSE(model.Undo()); // no more undo | 1190 EXPECT_FALSE(model.Undo()); // no more undo |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1115 EXPECT_STR_EQ("ABCDE", model.GetText()); | 1232 EXPECT_STR_EQ("ABCDE", model.GetText()); |
1116 EXPECT_EQ(3U, model.GetCursorPosition()); | 1233 EXPECT_EQ(3U, model.GetCursorPosition()); |
1117 EXPECT_TRUE(model.Redo()); | 1234 EXPECT_TRUE(model.Redo()); |
1118 EXPECT_STR_EQ("ABCBCDE", model.GetText()); | 1235 EXPECT_STR_EQ("ABCBCDE", model.GetText()); |
1119 EXPECT_EQ(5U, model.GetCursorPosition()); | 1236 EXPECT_EQ(5U, model.GetCursorPosition()); |
1120 EXPECT_TRUE(model.Redo()); | 1237 EXPECT_TRUE(model.Redo()); |
1121 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); | 1238 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); |
1122 EXPECT_EQ(7U, model.GetCursorPosition()); | 1239 EXPECT_EQ(7U, model.GetCursorPosition()); |
1123 EXPECT_FALSE(model.Redo()); | 1240 EXPECT_FALSE(model.Redo()); |
1124 | 1241 |
1125 // with SelectSelectionModel | 1242 // with SelectRange |
1126 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); | 1243 model.SelectRange(ui::Range(1, 3)); |
1127 EXPECT_TRUE(model.Cut()); | 1244 EXPECT_TRUE(model.Cut()); |
1128 EXPECT_STR_EQ("ABCBCDE", model.GetText()); | 1245 EXPECT_STR_EQ("ABCBCDE", model.GetText()); |
1129 EXPECT_EQ(1U, model.GetCursorPosition()); | 1246 EXPECT_EQ(1U, model.GetCursorPosition()); |
1130 model.SelectSelectionModel(gfx::SelectionModel(1, 1)); | 1247 model.SelectRange(ui::Range(1, 1)); |
1131 EXPECT_FALSE(model.Cut()); | 1248 EXPECT_FALSE(model.Cut()); |
1132 model.MoveCursorRight(gfx::LINE_BREAK, false); | 1249 model.MoveCursorRight(gfx::LINE_BREAK, false); |
1133 EXPECT_TRUE(model.Paste()); | 1250 EXPECT_TRUE(model.Paste()); |
1134 EXPECT_STR_EQ("ABCBCDEBC", model.GetText()); | 1251 EXPECT_STR_EQ("ABCBCDEBC", model.GetText()); |
1135 EXPECT_EQ(9U, model.GetCursorPosition()); | 1252 EXPECT_EQ(9U, model.GetCursorPosition()); |
1136 EXPECT_TRUE(model.Undo()); | 1253 EXPECT_TRUE(model.Undo()); |
1137 EXPECT_STR_EQ("ABCBCDE", model.GetText()); | 1254 EXPECT_STR_EQ("ABCBCDE", model.GetText()); |
1138 EXPECT_EQ(7U, model.GetCursorPosition()); | 1255 EXPECT_EQ(7U, model.GetCursorPosition()); |
1139 // empty cut shouldn't create an edit. | 1256 // empty cut shouldn't create an edit. |
1140 EXPECT_TRUE(model.Undo()); | 1257 EXPECT_TRUE(model.Undo()); |
1141 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); | 1258 EXPECT_STR_EQ("ABCBCBCDE", model.GetText()); |
1142 EXPECT_EQ(3U, model.GetCursorPosition()); | 1259 EXPECT_EQ(3U, model.GetCursorPosition()); |
1143 | 1260 |
1144 // Copy | 1261 // Copy |
1145 ResetModel(&model); | 1262 ResetModel(&model); |
1146 model.SetText(ASCIIToUTF16("12345")); | 1263 model.SetText(ASCIIToUTF16("12345")); |
1147 EXPECT_STR_EQ("12345", model.GetText()); | 1264 EXPECT_STR_EQ("12345", model.GetText()); |
1148 EXPECT_EQ(0U, model.GetCursorPosition()); | 1265 EXPECT_EQ(0U, model.GetCursorPosition()); |
1149 model.MoveCursorTo(gfx::SelectionModel(1, 3)); | 1266 model.SelectRange(ui::Range(1, 3)); |
1150 model.Copy(); // Copy "23" | 1267 model.Copy(); // Copy "23" |
1151 EXPECT_STR_EQ("12345", model.GetText()); | 1268 EXPECT_STR_EQ("12345", model.GetText()); |
1152 EXPECT_EQ(3U, model.GetCursorPosition()); | 1269 EXPECT_EQ(3U, model.GetCursorPosition()); |
1153 model.Paste(); // Paste "23" into "23". | 1270 model.Paste(); // Paste "23" into "23". |
1154 EXPECT_STR_EQ("12345", model.GetText()); | 1271 EXPECT_STR_EQ("12345", model.GetText()); |
1155 EXPECT_EQ(3U, model.GetCursorPosition()); | 1272 EXPECT_EQ(3U, model.GetCursorPosition()); |
1156 model.Paste(); | 1273 model.Paste(); |
1157 EXPECT_STR_EQ("1232345", model.GetText()); | 1274 EXPECT_STR_EQ("1232345", model.GetText()); |
1158 EXPECT_EQ(5U, model.GetCursorPosition()); | 1275 EXPECT_EQ(5U, model.GetCursorPosition()); |
1159 EXPECT_TRUE(model.Undo()); | 1276 EXPECT_TRUE(model.Undo()); |
(...skipping 12 matching lines...) Expand all Loading... |
1172 EXPECT_EQ(0U, model.GetCursorPosition()); | 1289 EXPECT_EQ(0U, model.GetCursorPosition()); |
1173 EXPECT_TRUE(model.Redo()); | 1290 EXPECT_TRUE(model.Redo()); |
1174 EXPECT_STR_EQ("12345", model.GetText()); // For 1st paste | 1291 EXPECT_STR_EQ("12345", model.GetText()); // For 1st paste |
1175 EXPECT_EQ(3U, model.GetCursorPosition()); | 1292 EXPECT_EQ(3U, model.GetCursorPosition()); |
1176 EXPECT_TRUE(model.Redo()); | 1293 EXPECT_TRUE(model.Redo()); |
1177 EXPECT_STR_EQ("1232345", model.GetText()); | 1294 EXPECT_STR_EQ("1232345", model.GetText()); |
1178 EXPECT_EQ(5U, model.GetCursorPosition()); | 1295 EXPECT_EQ(5U, model.GetCursorPosition()); |
1179 EXPECT_FALSE(model.Redo()); | 1296 EXPECT_FALSE(model.Redo()); |
1180 EXPECT_STR_EQ("1232345", model.GetText()); | 1297 EXPECT_STR_EQ("1232345", model.GetText()); |
1181 | 1298 |
1182 // Test using SelectSelectionModel | 1299 // Test using SelectRange |
1183 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); | 1300 model.SelectRange(ui::Range(1, 3)); |
1184 model.Copy(); | 1301 model.Copy(); |
1185 EXPECT_STR_EQ("1232345", model.GetText()); | 1302 EXPECT_STR_EQ("1232345", model.GetText()); |
1186 model.MoveCursorRight(gfx::LINE_BREAK, false); | 1303 model.MoveCursorRight(gfx::LINE_BREAK, false); |
1187 EXPECT_TRUE(model.Paste()); | 1304 EXPECT_TRUE(model.Paste()); |
1188 EXPECT_STR_EQ("123234523", model.GetText()); | 1305 EXPECT_STR_EQ("123234523", model.GetText()); |
1189 EXPECT_EQ(9U, model.GetCursorPosition()); | 1306 EXPECT_EQ(9U, model.GetCursorPosition()); |
1190 EXPECT_TRUE(model.Undo()); | 1307 EXPECT_TRUE(model.Undo()); |
1191 EXPECT_STR_EQ("1232345", model.GetText()); | 1308 EXPECT_STR_EQ("1232345", model.GetText()); |
1192 EXPECT_EQ(7U, model.GetCursorPosition()); | 1309 EXPECT_EQ(7U, model.GetCursorPosition()); |
1193 } | 1310 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 EXPECT_EQ(5U, model.GetCursorPosition()); | 1380 EXPECT_EQ(5U, model.GetCursorPosition()); |
1264 EXPECT_FALSE(model.Redo()); | 1381 EXPECT_FALSE(model.Redo()); |
1265 } | 1382 } |
1266 | 1383 |
1267 TEST_F(TextfieldViewsModelTest, UndoRedo_ReplaceTest) { | 1384 TEST_F(TextfieldViewsModelTest, UndoRedo_ReplaceTest) { |
1268 // By Cursor | 1385 // By Cursor |
1269 { | 1386 { |
1270 SCOPED_TRACE("forward & insert by cursor"); | 1387 SCOPED_TRACE("forward & insert by cursor"); |
1271 TextfieldViewsModel model(NULL); | 1388 TextfieldViewsModel model(NULL); |
1272 model.SetText(ASCIIToUTF16("abcd")); | 1389 model.SetText(ASCIIToUTF16("abcd")); |
1273 model.MoveCursorTo(gfx::SelectionModel(1, 3)); | 1390 model.SelectRange(ui::Range(1, 3)); |
1274 RunInsertReplaceTest(model); | 1391 RunInsertReplaceTest(model); |
1275 } | 1392 } |
1276 { | 1393 { |
1277 SCOPED_TRACE("backward & insert by cursor"); | 1394 SCOPED_TRACE("backward & insert by cursor"); |
1278 TextfieldViewsModel model(NULL); | 1395 TextfieldViewsModel model(NULL); |
1279 model.SetText(ASCIIToUTF16("abcd")); | 1396 model.SetText(ASCIIToUTF16("abcd")); |
1280 model.MoveCursorTo(gfx::SelectionModel(3, 1)); | 1397 model.SelectRange(ui::Range(3, 1)); |
1281 RunInsertReplaceTest(model); | 1398 RunInsertReplaceTest(model); |
1282 } | 1399 } |
1283 { | 1400 { |
1284 SCOPED_TRACE("forward & overwrite by cursor"); | 1401 SCOPED_TRACE("forward & overwrite by cursor"); |
1285 TextfieldViewsModel model(NULL); | 1402 TextfieldViewsModel model(NULL); |
1286 model.SetText(ASCIIToUTF16("abcd")); | 1403 model.SetText(ASCIIToUTF16("abcd")); |
1287 model.MoveCursorTo(gfx::SelectionModel(1, 3)); | 1404 model.SelectRange(ui::Range(1, 3)); |
1288 RunOverwriteReplaceTest(model); | 1405 RunOverwriteReplaceTest(model); |
1289 } | 1406 } |
1290 { | 1407 { |
1291 SCOPED_TRACE("backward & overwrite by cursor"); | 1408 SCOPED_TRACE("backward & overwrite by cursor"); |
1292 TextfieldViewsModel model(NULL); | 1409 TextfieldViewsModel model(NULL); |
1293 model.SetText(ASCIIToUTF16("abcd")); | 1410 model.SetText(ASCIIToUTF16("abcd")); |
1294 model.MoveCursorTo(gfx::SelectionModel(3, 1)); | 1411 model.SelectRange(ui::Range(3, 1)); |
1295 RunOverwriteReplaceTest(model); | 1412 RunOverwriteReplaceTest(model); |
1296 } | 1413 } |
1297 // By SelectSelectionModel API | 1414 // By SelectRange API |
1298 { | 1415 { |
1299 SCOPED_TRACE("forward & insert by SelectSelectionModel"); | 1416 SCOPED_TRACE("forward & insert by SelectRange"); |
1300 TextfieldViewsModel model(NULL); | 1417 TextfieldViewsModel model(NULL); |
1301 model.SetText(ASCIIToUTF16("abcd")); | 1418 model.SetText(ASCIIToUTF16("abcd")); |
1302 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); | 1419 model.SelectRange(ui::Range(1, 3)); |
1303 RunInsertReplaceTest(model); | 1420 RunInsertReplaceTest(model); |
1304 } | 1421 } |
1305 { | 1422 { |
1306 SCOPED_TRACE("backward & insert by SelectSelectionModel"); | 1423 SCOPED_TRACE("backward & insert by SelectRange"); |
1307 TextfieldViewsModel model(NULL); | 1424 TextfieldViewsModel model(NULL); |
1308 model.SetText(ASCIIToUTF16("abcd")); | 1425 model.SetText(ASCIIToUTF16("abcd")); |
1309 model.SelectSelectionModel(gfx::SelectionModel(3, 1)); | 1426 model.SelectRange(ui::Range(3, 1)); |
1310 RunInsertReplaceTest(model); | 1427 RunInsertReplaceTest(model); |
1311 } | 1428 } |
1312 { | 1429 { |
1313 SCOPED_TRACE("forward & overwrite by SelectSelectionModel"); | 1430 SCOPED_TRACE("forward & overwrite by SelectRange"); |
1314 TextfieldViewsModel model(NULL); | 1431 TextfieldViewsModel model(NULL); |
1315 model.SetText(ASCIIToUTF16("abcd")); | 1432 model.SetText(ASCIIToUTF16("abcd")); |
1316 model.SelectSelectionModel(gfx::SelectionModel(1, 3)); | 1433 model.SelectRange(ui::Range(1, 3)); |
1317 RunOverwriteReplaceTest(model); | 1434 RunOverwriteReplaceTest(model); |
1318 } | 1435 } |
1319 { | 1436 { |
1320 SCOPED_TRACE("backward & overwrite by SelectSelectionModel"); | 1437 SCOPED_TRACE("backward & overwrite by SelectRange"); |
1321 TextfieldViewsModel model(NULL); | 1438 TextfieldViewsModel model(NULL); |
1322 model.SetText(ASCIIToUTF16("abcd")); | 1439 model.SetText(ASCIIToUTF16("abcd")); |
1323 model.SelectSelectionModel(gfx::SelectionModel(3, 1)); | 1440 model.SelectRange(ui::Range(3, 1)); |
1324 RunOverwriteReplaceTest(model); | 1441 RunOverwriteReplaceTest(model); |
1325 } | 1442 } |
1326 } | 1443 } |
1327 | 1444 |
1328 TEST_F(TextfieldViewsModelTest, UndoRedo_CompositionText) { | 1445 TEST_F(TextfieldViewsModelTest, UndoRedo_CompositionText) { |
1329 TextfieldViewsModel model(NULL); | 1446 TextfieldViewsModel model(NULL); |
1330 | 1447 |
1331 ui::CompositionText composition; | 1448 ui::CompositionText composition; |
1332 composition.text = ASCIIToUTF16("abc"); | 1449 composition.text = ASCIIToUTF16("abc"); |
1333 composition.underlines.push_back(ui::CompositionUnderline(0, 3, 0, false)); | 1450 composition.underlines.push_back(ui::CompositionUnderline(0, 3, 0, false)); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1396 EXPECT_TRUE(model.Undo()); | 1513 EXPECT_TRUE(model.Undo()); |
1397 EXPECT_STR_EQ("ABCDE", model.GetText()); | 1514 EXPECT_STR_EQ("ABCDE", model.GetText()); |
1398 EXPECT_TRUE(model.Redo()); | 1515 EXPECT_TRUE(model.Redo()); |
1399 EXPECT_STR_EQ("1234", model.GetText()); | 1516 EXPECT_STR_EQ("1234", model.GetText()); |
1400 EXPECT_FALSE(model.Redo()); | 1517 EXPECT_FALSE(model.Redo()); |
1401 | 1518 |
1402 // TODO(oshima): We need MockInputMethod to test the behavior with IME. | 1519 // TODO(oshima): We need MockInputMethod to test the behavior with IME. |
1403 } | 1520 } |
1404 | 1521 |
1405 } // namespace views | 1522 } // namespace views |
OLD | NEW |