Home | History | Annotate | Download | only in gfx

Lines Matching refs:render_text

5 #include "ui/gfx/render_text.h"
53 base::string16 GetSelectedText(RenderText* render_text) {
54 return render_text->text().substr(render_text->selection().GetMin(),
55 render_text->selection().length());
67 void RunMoveCursorLeftRightTest(RenderText* render_text,
73 EXPECT_EQ(expected[i], render_text->selection_model());
74 render_text->MoveCursor(CHARACTER_BREAK, direction, false);
77 EXPECT_EQ(expected.back(), render_text->selection_model());
79 render_text->MoveCursor(LINE_BREAK, direction, false);
80 EXPECT_EQ(expected.back(), render_text->selection_model());
91 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
92 EXPECT_TRUE(render_text->text().empty());
95 EXPECT_TRUE(render_text->colors().EqualsValueForTesting(SK_ColorBLACK));
97 EXPECT_TRUE(render_text->styles()[style].EqualsValueForTesting(false));
98 render_text->SetText(WideToUTF16(cases[i]));
104 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
106 render_text->SetColor(color);
107 render_text->SetStyle(BOLD, true);
108 render_text->SetStyle(UNDERLINE, false);
111 EXPECT_TRUE(render_text->colors().EqualsValueForTesting(color));
112 EXPECT_TRUE(render_text->styles()[BOLD].EqualsValueForTesting(true));
113 EXPECT_TRUE(render_text->styles()[UNDERLINE].EqualsValueForTesting(false));
114 render_text->SetText(WideToUTF16(cases[i]));
118 render_text->SetStyle(STRIKE, true);
120 EXPECT_TRUE(render_text->styles()[STRIKE].EqualsValueForTesting(true));
125 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
126 render_text->SetText(ASCIIToUTF16("012345678"));
129 render_text->ApplyColor(SK_ColorRED, Range(1, 4));
130 render_text->ApplyStyle(BOLD, true, Range(2, 5));
135 EXPECT_TRUE(render_text->colors().EqualsForTesting(expected_color));
140 EXPECT_TRUE(render_text->styles()[BOLD].EqualsForTesting(expected_style));
143 render_text->SetColor(SK_ColorBLUE);
144 EXPECT_TRUE(render_text->colors().EqualsValueForTesting(SK_ColorBLUE));
145 render_text->SetStyle(BOLD, false);
146 EXPECT_TRUE(render_text->styles()[BOLD].EqualsValueForTesting(false));
150 const size_t text_length = render_text->text().length();
151 render_text->ApplyColor(SK_ColorRED, Range(0, text_length));
152 render_text->ApplyStyle(BOLD, true, Range(2, text_length));
155 EXPECT_TRUE(render_text->colors().EqualsForTesting(expected_color_end));
159 EXPECT_TRUE(render_text->styles()[BOLD].EqualsForTesting(expected_style_end));
162 render_text->ApplyStyle(ITALIC, true, Range(0, 2));
163 render_text->ApplyStyle(ITALIC, true, Range(3, 6));
164 render_text->ApplyStyle(ITALIC, true, Range(7, text_length));
171 EXPECT_TRUE(render_text->styles()[ITALIC].EqualsForTesting(expected_italic));
174 render_text->SetText(ASCIIToUTF16("0123456"));
176 EXPECT_TRUE(render_text->styles()[ITALIC].EqualsForTesting(expected_italic));
177 render_text->SetText(ASCIIToUTF16("01234"));
179 EXPECT_TRUE(render_text->styles()[ITALIC].EqualsForTesting(expected_italic));
182 render_text->SetText(ASCIIToUTF16("012345678"));
183 EXPECT_TRUE(render_text->styles()[ITALIC].EqualsForTesting(expected_italic));
188 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
189 render_text->SetText(ASCIIToUTF16("012345678"));
192 render_text->ApplyStyle(BOLD, true, Range(2, 4));
193 render_text->ApplyStyle(ITALIC, true, Range(1, 3));
209 RenderTextPango* rt_linux = static_cast<RenderTextPango*>(render_text.get());
237 void TestVisualCursorMotionInObscuredField(RenderText* render_text,
240 ASSERT_TRUE(render_text->obscured());
241 render_text->SetText(text);
243 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select);
245 render_text->selection_model());
246 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select);
247 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
249 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, select);
251 render_text->selection_model());
254 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, select);
256 render_text->selection_model());
258 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, select);
260 render_text->selection_model());
261 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, select);
262 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
268 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
271 render_text->SetText(seuss);
272 render_text->SetObscured(true);
273 EXPECT_EQ(seuss, render_text->text());
274 EXPECT_EQ(no_seuss, render_text->GetLayoutText());
275 render_text->SetObscured(false);
276 EXPECT_EQ(seuss, render_text->text());
277 EXPECT_EQ(seuss, render_text->GetLayoutText());
279 render_text->SetObscured(true);
283 render_text->SetText(invalid_surrogates);
284 EXPECT_EQ(ASCIIToUTF16("**"), render_text->GetLayoutText());
286 render_text->SetText(valid_surrogates);
287 EXPECT_EQ(ASCIIToUTF16("*"), render_text->GetLayoutText());
288 EXPECT_EQ(0U, render_text->cursor_position());
289 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
290 EXPECT_EQ(2U, render_text->cursor_position());
293 EXPECT_EQ(0U, render_text->TextIndexToLayoutIndex(0U));
294 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(1U));
295 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(2U));
296 EXPECT_EQ(0U, render_text->LayoutIndexToTextIndex(0U));
297 EXPECT_EQ(2U, render_text->LayoutIndexToTextIndex(1U));
298 EXPECT_TRUE(render_text->IsValidCursorIndex(0U));
299 EXPECT_FALSE(render_text->IsValidCursorIndex(1U));
300 EXPECT_TRUE(render_text->IsValidCursorIndex(2U));
303 render_text->SetDisplayRect(Rect(0, 0, 20, 20));
304 EXPECT_EQ(render_text->FindCursorPosition(Point(0, 0)).caret_pos(), 0U);
305 EXPECT_EQ(render_text->FindCursorPosition(Point(20, 0)).caret_pos(), 2U);
307 SelectionModel selection = render_text->FindCursorPosition(Point(x, 0));
312 EXPECT_EQ(render_text->GetStringSize().width(),
313 static_cast<int>(render_text->GetGlyphBounds(0U).length()));
323 TestVisualCursorMotionInObscuredField(render_text.get(), text, false);
324 TestVisualCursorMotionInObscuredField(render_text.get(), text, true);
331 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
333 render_text->SetText(seuss);
334 render_text->SetObscured(true);
335 EXPECT_EQ(seuss, render_text->text());
336 EXPECT_EQ(no_seuss, render_text->GetLayoutText());
339 render_text->RenderText::SetObscuredRevealIndex(0);
340 EXPECT_EQ(ASCIIToUTF16("h*********"), render_text->GetLayoutText());
341 render_text->RenderText::SetObscuredRevealIndex(1);
342 EXPECT_EQ(ASCIIToUTF16("*o********"), render_text->GetLayoutText());
343 render_text->RenderText::SetObscuredRevealIndex(2);
344 EXPECT_EQ(ASCIIToUTF16("**p*******"), render_text->GetLayoutText());
347 render_text->RenderText::SetObscuredRevealIndex(-1);
348 EXPECT_EQ(no_seuss, render_text->GetLayoutText());
349 render_text->RenderText::SetObscuredRevealIndex(seuss.length() + 1);
350 EXPECT_EQ(no_seuss, render_text->GetLayoutText());
353 render_text->RenderText::SetObscuredRevealIndex(0);
354 EXPECT_EQ(ASCIIToUTF16("h*********"), render_text->GetLayoutText());
355 render_text->SetObscured(false);
356 EXPECT_EQ(seuss, render_text->GetLayoutText());
357 render_text->SetObscured(true);
358 EXPECT_EQ(no_seuss, render_text->GetLayoutText());
361 render_text->SetText(ASCIIToUTF16("new"));
362 EXPECT_EQ(ASCIIToUTF16("***"), render_text->GetLayoutText());
363 render_text->RenderText::SetObscuredRevealIndex(2);
364 EXPECT_EQ(ASCIIToUTF16("**w"), render_text->GetLayoutText());
365 render_text->SetText(ASCIIToUTF16("new longer"));
366 EXPECT_EQ(ASCIIToUTF16("**********"), render_text->GetLayoutText());
370 render_text
371 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText());
372 render_text->RenderText::SetObscuredRevealIndex(0);
374 EXPECT_EQ(invalid_expect_0, render_text->GetLayoutText());
375 render_text->RenderText::SetObscuredRevealIndex(1);
377 EXPECT_EQ(invalid_expect_1, render_text->GetLayoutText());
378 render_text->RenderText::SetObscuredRevealIndex(2);
379 EXPECT_EQ(ASCIIToUTF16("**h**"), render_text->GetLayoutText());
384 render_text->SetText(valid_surrogates);
385 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText());
386 render_text->RenderText::SetObscuredRevealIndex(0);
389 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText());
390 render_text->RenderText::SetObscuredRevealIndex(1);
391 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText());
392 render_text->RenderText::SetObscuredRevealIndex(2);
393 EXPECT_EQ(ASCIIToUTF16("*h***"), render_text->GetLayoutText());
394 render_text->RenderText::SetObscuredRevealIndex(5);
397 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText());
398 render_text->RenderText::SetObscuredRevealIndex(6);
399 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText());
448 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
449 render_text->SetFontList(FontList("serif, Sans serif, 12px"));
450 render_text->SetElideBehavior(ELIDE_TAIL);
463 render_text->SetText(input);
464 render_text->SetDisplayRect(Rect(0, 0, expected_width, 100));
465 EXPECT_EQ(input, render_text->text())
467 EXPECT_EQ(WideToUTF16(cases[i].layout_text), render_text->GetLayoutText())
479 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
480 render_text->SetFontList(FontList("serif, Sans serif, 12px"));
481 render_text->SetElideBehavior(ELIDE_TAIL);
482 render_text->SetDisplayRect(
484 render_text->SetObscured(true);
485 render_text->SetText(WideToUTF16(L"abcdef"));
486 EXPECT_EQ(WideToUTF16(L"abcdef"), render_text->text());
487 EXPECT_EQ(WideToUTF16(L"**\x2026"), render_text->GetLayoutText());
525 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
526 render_text->set_truncate_length(5);
528 render_text->SetText(WideToUTF16(cases[i].text));
529 EXPECT_EQ(WideToUTF16(cases[i].text), render_text->text());
530 EXPECT_EQ(WideToUTF16(cases[i].layout_text), render_text->GetLayoutText())
536 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
537 render_text->set_truncate_length(3);
538 render_text->SetObscured(true);
539 render_text->SetText(WideToUTF16(L"abcdef"));
540 EXPECT_EQ(WideToUTF16(L"abcdef"), render_text->text());
541 EXPECT_EQ(WideToUTF16(L"**\x2026"), render_text->GetLayoutText());
545 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
546 render_text->set_truncate_length(2);
547 render_text->SetText(WideToUTF16(L"abcd"));
549 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
550 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
551 EXPECT_EQ(SelectionModel(4, CURSOR_FORWARD), render_text->selection_model());
552 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
553 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
561 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
569 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
573 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
574 render_text->set_truncate_length(2);
575 render_text->SetText(WideToUTF16(L"\x5d0\x5d1\x5d2\x5d3"));
577 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
578 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
579 EXPECT_EQ(SelectionModel(4, CURSOR_FORWARD), render_text->selection_model());
580 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
581 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model());
589 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
597 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
618 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
629 render_text->SetText(WideToUTF16(cases[j].text));
630 render_text->SetDirectionalityMode(DIRECTIONALITY_FROM_TEXT);
631 EXPECT_EQ(render_text->GetTextDirection(), cases[j].text_direction);
632 render_text->SetDirectionalityMode(DIRECTIONALITY_FROM_UI);
633 EXPECT_EQ(render_text->GetTextDirection(), ui_direction);
634 render_text->SetDirectionalityMode(DIRECTIONALITY_FORCE_LTR);
635 EXPECT_EQ(render_text->GetTextDirection(), base::i18n::LEFT_TO_RIGHT);
636 render_text->SetDirectionalityMode(DIRECTIONALITY_FORCE_RTL);
637 EXPECT_EQ(render_text->GetTextDirection(), base::i18n::RIGHT_TO_LEFT);
644 render_text->SetDirectionalityMode(DIRECTIONALITY_FROM_TEXT);
645 render_text->SetText(WideToUTF16(kLtr));
646 EXPECT_EQ(render_text->GetTextDirection(), base::i18n::LEFT_TO_RIGHT);
647 render_text->SetText(WideToUTF16(kRtl));
648 EXPECT_EQ(render_text->GetTextDirection(), base::i18n::RIGHT_TO_LEFT);
652 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
655 render_text->SetText(ASCIIToUTF16("abc"));
664 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
672 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
676 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
678 render_text->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
689 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
700 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
704 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
706 render_text->SetText(WideToUTF16(L"a" L"\x05d1" L"b"));
713 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
721 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
725 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
727 render_text->SetText(WideToUTF16(L"\x05d0\x05d1\x05d2"));
728 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
736 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
745 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
749 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
751 render_text->SetText(WideToUTF16(L"\x05d0\x05d1\x05d2" L"abc"));
752 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
762 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
773 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
777 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
779 render_text->SetText(WideToUTF16(L"\x05d0" L"a" L"\x05d1"));
780 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
787 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
795 RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
803 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
805 render_text->SetText(WideToUTF16(L"\x0915\x093f\x0915\x094d\x0915"));
806 EXPECT_EQ(0U, render_text->cursor_position());
807 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
808 EXPECT_EQ(2U, render_text->cursor_position());
809 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
810 EXPECT_EQ(4U, render_text->cursor_position());
811 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
812 EXPECT_EQ(5U, render_text->cursor_position());
813 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
814 EXPECT_EQ(5U, render_text->cursor_position());
816 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
817 EXPECT_EQ(4U, render_text->cursor_position());
818 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
819 EXPECT_EQ(2U, render_text->cursor_position());
820 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
821 EXPECT_EQ(0U, render_text->cursor_position());
822 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
823 EXPECT_EQ(0U, render_text->cursor_position());
828 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
831 render_text->SetFontList(FontList("Meiryo UI, 12px"));
832 render_text->SetText(WideToUTF16(L"ff ffi"));
833 EXPECT_EQ(0U, render_text->cursor_position());
834 for (size_t i = 0; i < render_text->text().length(); ++i) {
835 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
836 EXPECT_EQ(i + 1, render_text->cursor_position());
838 EXPECT_EQ(6U, render_text->cursor_position());
901 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
904 render_text->SetText(cases[i].text);
906 size_t next = render_text->IndexOfAdjacentGrapheme(cases[i].index,
909 EXPECT_TRUE(render_text->IsValidCursorIndex(next));
911 size_t previous = render_text->IndexOfAdjacentGrapheme(cases[i].index,
914 EXPECT_TRUE(render_text->IsValidCursorIndex(previous));
930 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
933 render_text->SetText(cases[i]);
934 EXPECT_TRUE(render_text->IsValidLogicalIndex(1));
936 EXPECT_FALSE(render_text->IsValidCursorIndex(1));
938 EXPECT_TRUE(render_text->SelectRange(Range(2, 1)));
939 EXPECT_EQ(Range(2, 1), render_text->selection());
940 EXPECT_EQ(1U, render_text->cursor_position());
943 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
944 EXPECT_EQ(0U, render_text->cursor_position());
945 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
946 EXPECT_EQ(2U, render_text->cursor_position());
952 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
953 render_text->SetDisplayRect(Rect(0, 0, 100, 20));
956 render_text->SetText(WideToUTF16(kTestStrings[i]));
957 for(size_t j = 0; j < render_text->text().length(); ++j) {
958 const Range range(render_text->GetGlyphBounds(j));
961 EXPECT_EQ(j, render_text->FindCursorPosition(Point(x, 0)).caret_pos());
998 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1000 render_text->SetText(cases[i].text);
1004 render_text->EdgeSelectionModel(ltr ? CURSOR_LEFT : CURSOR_RIGHT);
1008 render_text->EdgeSelectionModel(ltr ? CURSOR_RIGHT : CURSOR_LEFT);
1019 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1027 render_text->SetText(base::string16());
1028 EXPECT_EQ(render_text->selection_model(), SelectionModel());
1032 render_text->SetText(WideToUTF16(cases[j]));
1033 render_text->SelectAll(false);
1034 EXPECT_EQ(render_text->selection_model(), expected_forwards);
1035 render_text->SelectAll(true);
1036 EXPECT_EQ(render_text->selection_model(), expected_reversed);
1044 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1045 render_text->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
1047 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
1048 EXPECT_EQ(Range(6), render_text->selection());
1049 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1050 EXPECT_EQ(Range(4), render_text->selection());
1051 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1052 EXPECT_EQ(Range(5), render_text->selection());
1053 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1054 EXPECT_EQ(Range(6), render_text->selection());
1055 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, true);
1056 EXPECT_EQ(Range(6, 5), render_text->selection());
1057 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, true);
1058 EXPECT_EQ(Range(6, 4), render_text->selection());
1059 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1060 EXPECT_EQ(Range(6), render_text->selection());
1063 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
1064 EXPECT_EQ(Range(0), render_text->selection());
1065 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1066 EXPECT_EQ(Range(1), render_text->selection());
1067 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1068 EXPECT_EQ(Range(2), render_text->selection());
1069 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1070 EXPECT_EQ(Range(3), render_text->selection());
1071 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1072 EXPECT_EQ(Range(5), render_text->selection());
1073 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1074 EXPECT_EQ(Range(4), render_text->selection());
1075 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
1076 EXPECT_EQ(Range(4, 5), render_text->selection());
1077 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
1078 EXPECT_EQ(Range(4, 6), render_text->selection());
1079 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1080 EXPECT_EQ(Range(4), render_text->selection());
1086 void MoveLeftRightByWordVerifier(RenderText* render_text,
1088 render_text->SetText(WideToUTF16(str));
1091 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
1096 SelectionModel start = render_text->selection_model();
1097 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1098 SelectionModel end = render_text->selection_model();
1105 render_text->MoveCursorTo(start);
1107 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1108 EXPECT_EQ(end, render_text->selection_model());
1113 render_text->MoveCursorTo(start);
1115 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
1116 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1117 EXPECT_EQ(end, render_text->selection_model());
1122 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
1125 SelectionModel start = render_text->selection_model();
1126 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
1127 SelectionModel end = render_text->selection_model();
1133 render_text->MoveCursorTo(start);
1135 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1136 EXPECT_EQ(end, render_text->selection_model());
1139 render_text->MoveCursorTo(start);
1141 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
1142 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
1143 EXPECT_EQ(end, render_text->selection_model());
1149 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1180 MoveLeftRightByWordVerifier(render_text.get(), test[i]);
1184 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1186 render_text->SetText(WideToUTF16(L"ab\x05E1"));
1191 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
1192 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
1193 // EXPECT_EQ(SelectionModel(), render_text->selection_model());
1196 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
1197 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1198 EXPECT_EQ(SelectionModel(3, CURSOR_FORWARD), render_text->selection_model());
1200 render_text->SetText(WideToUTF16(L"\x05E1\x05E2" L"a"));
1203 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
1204 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
1205 EXPECT_EQ(SelectionModel(3, CURSOR_FORWARD), render_text->selection_model());
1211 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
1212 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1213 // EXPECT_EQ(SelectionModel(), render_text->selection_model());
1217 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1218 render_text->SetText(WideToUTF16(L"abc def"));
1219 render_text->MoveCursorTo(SelectionModel(5, CURSOR_FORWARD));
1220 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1221 EXPECT_EQ(11U, render_text->cursor_position());
1223 render_text->MoveCursorTo(SelectionModel(5, CURSOR_FORWARD));
1224 render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
1225 EXPECT_EQ(0U, render_text->cursor_position());
1229 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1230 render_text->SetText(WideToUTF16(L"\x6211\x4EEC\x53BB\x516C\x56ED\x73A9"));
1231 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
1232 EXPECT_EQ(0U, render_text->cursor_position());
1233 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1234 EXPECT_EQ(2U, render_text->cursor_position());
1235 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1236 EXPECT_EQ(3U, render_text->cursor_position());
1237 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1238 EXPECT_EQ(5U, render_text->cursor_position());
1239 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1240 EXPECT_EQ(6U, render_text->cursor_position());
1241 render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
1242 EXPECT_EQ(6U, render_text->cursor_position());
1248 scoped_ptr<RenderTextWin> render_text(
1253 render_text->SetText(test_string);
1254 render_text->EnsureLayout();
1255 ASSERT_EQ(1U, render_text->runs_.size());
1256 WORD* logical_clusters = render_text->runs_[0]->logical_clusters.get();
1263 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1264 render_text->SetText(UTF8ToUTF16("Hello World"));
1265 const Size string_size = render_text->GetStringSize();
1276 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1277 render_text->SetFontList(font_list);
1278 render_text->SetDisplayRect(Rect(0, 0, 0, font_list.GetHeight()));
1282 render_text->SetText(base::string16());
1283 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height());
1284 EXPECT_EQ(0, render_text->GetStringSize().width());
1285 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1287 render_text->SetText(UTF8ToUTF16(" "));
1288 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height());
1289 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1322 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1323 render_text->SetText(UTF8ToUTF16(smaller_font_text));
1324 render_text->SetFontList(FontList(smaller_font));
1325 render_text->SetDisplayRect(Rect(0, 0, 0,
1326 render_text->font_list().GetHeight()));
1327 EXPECT_EQ(smaller_font.GetHeight(), render_text->GetStringSize().height());
1328 EXPECT_EQ(smaller_font.GetBaseline(), render_text->GetBaseline());
1337 render_text->SetFontList(font_list);
1338 render_text->SetDisplayRect(Rect(0, 0, 0,
1339 render_text->font_list().GetHeight()));
1340 EXPECT_LT(smaller_font.GetHeight(), render_text->GetStringSize().height());
1341 EXPECT_LT(smaller_font.GetBaseline(), render_text->GetBaseline());
1342 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height());
1343 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1347 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1348 render_text->SetFontList(FontList("Arial,Symbol, 13px"));
1349 const std::vector<Font>& fonts = render_text->font_list().GetFonts();
1353 EXPECT_EQ(13, render_text->font_list().GetFontSize());
1357 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1358 render_text->SetText(UTF8ToUTF16("Hello World"));
1360 const int plain_width = render_text->GetStringSize().width();
1364 render_text->SetStyle(BOLD, true);
1365 const int bold_width = render_text->GetStringSize().width();
1369 render_text->ApplyStyle(BOLD, false, Range(0, 5));
1370 const int plain_bold_width = render_text->GetStringSize().width();
1388 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1389 render_text->SetFontList(default_font_list);
1390 render_text->SetText(cases[i]);
1392 const int height1 = render_text->GetStringSize().height();
1396 render_text->SetFontList(larger_font_list);
1397 const int height2 = render_text->GetStringSize().height();
1403 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1404 render_text->SetText(UTF8ToUTF16("Hello World"));
1405 const int baseline = render_text->GetBaseline();
1410 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1411 render_text->SetText(ASCIIToUTF16("abcdefg"));
1412 render_text->SetDisplayRect(Rect(100, 17));
1415 Rect cursor_around_b = render_text->GetCursorBounds(sel_b, false);
1416 Rect cursor_before_b = render_text->GetCursorBounds(sel_b, true);
1417 Rect cursor_before_c = render_text->GetCursorBounds(sel_c, true);
1428 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1429 render_text->SetText(ASCIIToUTF16("abcdefg"));
1430 render_text->SetFontList(FontList("Arial, 13px"));
1433 const Size font_size(render_text->GetContentWidth(),
1434 render_text->font_list().GetHeight());
1436 render_text->SetDisplayRect(display_rect);
1438 Vector2d offset = render_text->GetLineOffset(0);
1443 render_text->SetDisplayRect(display_rect);
1446 offset = render_text->GetLineOffset(0);
1450 render_text->SetHorizontalAlignment(ALIGN_LEFT);
1451 offset = render_text->GetLineOffset(0);
1453 render_text->SetHorizontalAlignment(ALIGN_CENTER);
1454 offset = render_text->GetLineOffset(0);
1456 render_text->SetHorizontalAlignment(ALIGN_RIGHT);
1457 offset = render_text->GetLineOffset(0);
1463 render_text->SetDisplayRect(display_rect);
1464 const Vector2d prev_offset = render_text->GetLineOffset(0);
1466 render_text->SetDisplayRect(display_rect);
1467 offset = render_text->GetLineOffset(0);
1478 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1479 render_text->SetText(ASCIIToUTF16("abcdefg"));
1480 render_text->SetFontList(FontList("Arial, 13px"));
1482 const Size font_size(render_text->GetContentWidth() + kEnlargement,
1483 render_text->GetStringSize().height());
1485 render_text->SetDisplayRect(display_rect);
1486 Vector2d offset = render_text->GetLineOffset(0);
1530 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1541 render_text->SetText(text);
1544 render_text->GetFontSpansForTesting();
1569 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1570 render_text->SetText(ASCIIToUTF16("abcdefg"));
1571 EXPECT_GE(render_text->GetUpdatedCursorBounds().width(), 1);
1575 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1576 render_text->SetText(ASCIIToUTF16(" foo a.bc.d bar"));
1603 render_text->SetCursorPosition(cases[i].cursor);
1604 render_text->SelectWord();
1606 render_text->selection());
1615 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1617 render_text->SetText(ASCIIToUTF16(kTestURL1));
1618 render_text->SetCursorPosition(kTestURL1.length());
1619 render_text->SelectWord();
1620 EXPECT_EQ(ASCIIToUTF16("com"), GetSelectedText(render_text.get()));
1621 EXPECT_FALSE(render_text->selection().is_reversed());
1623 render_text->SetText(ASCIIToUTF16(kTestURL2));
1624 render_text->SetCursorPosition(kTestURL2.length());
1625 render_text->SelectWord();
1626 EXPECT_EQ(ASCIIToUTF16("/"), GetSelectedText(render_text.get()));
1627 EXPECT_FALSE(render_text->selection().is_reversed());
1635 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1637 render_text->SetText(ASCIIToUTF16(kTestURL));
1638 render_text->SelectRange(Range(16, 20));
1639 render_text->SelectWord();
1640 EXPECT_EQ(ASCIIToUTF16("google.com"), GetSelectedText(render_text.get()));
1641 EXPECT_FALSE(render_text->selection().is_reversed());
1644 render_text->SelectRange(Range(20, 16));
1645 render_text->SelectWord();
1646 EXPECT_EQ(ASCIIToUTF16("google.com"), GetSelectedText(render_text.get()));
1647 EXPECT_TRUE(render_text->selection().is_reversed());
1657 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1658 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg"));
1659 render_text->MoveCursorTo(SelectionModel(render_text->text().length(),
1661 int width = render_text->GetStringSize().width();
1665 render_text->SetDisplayRect(Rect(width + 10, 1));
1666 EXPECT_EQ(width, render_text->GetUpdatedCursorBounds().x());
1669 render_text->SetDisplayRect(Rect(width - 10, 1));
1670 EXPECT_EQ(render_text->display_rect().width(),
1671 render_text->GetUpdatedCursorBounds().right());
1674 render_text->SetDisplayRect(Rect(width - 5, 1));
1675 EXPECT_EQ(render_text->display_rect().width(),
1676 render_text->GetUpdatedCursorBounds().right());
1679 render_text->SetDisplayRect(Rect(width + 10, 1));
1680 EXPECT_EQ(width, render_text->GetUpdatedCursorBounds().x());
1683 render_text->SetText(WideToUTF16(L"\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7"
1685 render_text->MoveCursorTo(SelectionModel(0, CURSOR_FORWARD));
1686 width = render_text->GetStringSize().width();
1690 render_text->SetDisplayRect(Rect(width + 10, 1));
1691 EXPECT_EQ(width, render_text->GetUpdatedCursorBounds().x());
1694 render_text->SetDisplayRect(Rect(width - 10, 1));
1695 EXPECT_EQ(render_text->display_rect().width(),
1696 render_text->GetUpdatedCursorBounds().right());
1699 render_text->SetDisplayRect(Rect(width - 5, 1));
1700 EXPECT_EQ(render_text->display_rect().width(),
1701 render_text->GetUpdatedCursorBounds().right());
1704 render_text->SetDisplayRect(Rect(width + 10, 1));
1705 EXPECT_EQ(width, render_text->GetUpdatedCursorBounds().x());
1713 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1714 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg"));
1715 render_text->MoveCursorTo(SelectionModel(0, CURSOR_FORWARD));
1716 int width = render_text->GetStringSize().width();
1720 render_text->SetDisplayRect(Rect(width + 10, 1));
1721 EXPECT_EQ(render_text->display_rect().width() - width - 1,
1722 render_text->GetUpdatedCursorBounds().x());
1725 render_text->SetDisplayRect(Rect(width - 10, 1));
1726 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x());
1729 render_text->SetDisplayRect(Rect(width - 5, 1));
1730 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x());
1733 render_text->SetDisplayRect(Rect(width + 10, 1));
1734 EXPECT_EQ(render_text->display_rect().width() - width - 1,
1735 render_text->GetUpdatedCursorBounds().x());
1738 render_text->SetText(WideToUTF16(L"\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7"
1740 render_text->MoveCursorTo(SelectionModel(render_text->text().length(),
1742 width = render_text->GetStringSize().width();
1746 render_text->SetDisplayRect(Rect(width + 10, 1));
1747 EXPECT_EQ(render_text->display_rect().width() - width - 1,
1748 render_text->GetUpdatedCursorBounds().x());
1751 render_text->SetDisplayRect(Rect(width - 10, 1));
1752 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x());
1755 render_text->SetDisplayRect(Rect(width - 5, 1));
1756 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x());
1759 render_text->SetDisplayRect(Rect(width + 10, 1));
1760 EXPECT_EQ(render_text->display_rect().width() - width - 1,
1761 render_text->GetUpdatedCursorBounds().x());
1772 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1773 render_text->set_selection_color(SK_ColorRED);
1777 render_text->SetText(WideToUTF16(kTestStrings[i]));
1778 const int expected_width = render_text->GetStringSize().width();
1779 render_text->MoveCursorTo(SelectionModel(Range(0, 1), CURSOR_FORWARD));
1780 EXPECT_EQ(expected_width, render_text->GetStringSize().width());
1782 render_text->Draw(&canvas);
1783 render_text->MoveCursorTo(SelectionModel(0, CURSOR_FORWARD));
1793 scoped_ptr<RenderTextWin> render_text(
1795 render_text->SetDisplayRect(Rect(1, 1000));
1796 render_text->SetMultiline(true);
1801 render_text->SetText(WideToUTF16(kTestStrings[i]));
1802 render_text->Draw(&canvas);
1803 EXPECT_GT(render_text->lines_.size(), 1U);
1820 scoped_ptr<RenderTextWin> render_text(
1822 render_text->SetDisplayRect(Rect(50, 1000));
1823 render_text->SetMultiline(true);
1828 render_text->SetText(WideToUTF16(kTestStrings[i].text));
1829 render_text->Draw(&canvas);
1830 ASSERT_EQ(2U, render_text->lines_.size());
1831 ASSERT_EQ(1U, render_text->lines_[0].segments.size());
1833 render_text->lines_[0].segments[0].char_range);
1834 ASSERT_EQ(1U, render_text->lines_[1].segments.size());
1836 render_text->lines_[1].segments[0].char_range);
1846 scoped_ptr<RenderTextWin> render_text(
1848 render_text->SetDisplayRect(Rect(30, 1000));
1849 render_text->SetMultiline(true);
1854 render_text->SetText(WideToUTF16(kTestStrings[i]));
1855 render_text->Draw(&canvas);
1856 EXPECT_EQ(1U, render_text->lines_.size());
1872 scoped_ptr<RenderTextWin> render_text(
1874 render_text->SetDisplayRect(Rect(200, 1000));
1875 render_text->SetMultiline(true);
1880 render_text->SetText(WideToUTF16(kTestStrings[i].text));
1881 render_text->Draw(&canvas);
1883 ASSERT_EQ(2U, render_text->lines_.size());
1887 render_text->lines_[0].segments.size());
1890 render_text->lines_[0].segments[0].char_range);
1893 render_text
1899 render_text->lines_[1].segments.size());
1902 render_text->lines_[1].segments[0].char_range);
1907 scoped_ptr<RenderTextWin> render_text(
1911 render_text->SetText(WideToUTF16(L"x\x25B6y"));
1912 render_text->EnsureLayout();
1913 ASSERT_EQ(3U, render_text->runs_.size());
1914 EXPECT_EQ(Range(0, 1), render_text->runs_[0]->range);
1915 EXPECT_EQ(Range(1, 2), render_text->runs_[1]->range);
1916 EXPECT_EQ(Range(2, 3), render_text->runs_[2]->range);
1918 render_text->SetText(WideToUTF16(L"x \x25B6 y"));
1919 render_text->EnsureLayout();
1920 ASSERT_EQ(3U, render_text->runs_.size());
1921 EXPECT_EQ(Range(0, 2), render_text->runs_[0]->range);
1922 EXPECT_EQ(Range(2, 3), render_text->runs_[1]->range);
1923 EXPECT_EQ(Range(3, 5), render_text->runs_[2]->range);
1979 RenderTextHarfBuzz render_text;
1982 render_text.SetText(mixed);
1983 render_text.EnsureLayout();
1984 ASSERT_EQ(3U, render_text.runs_.size());
1985 EXPECT_TRUE(render_text.runs_[0]->is_rtl);
1986 EXPECT_FALSE(render_text.runs_[1]->is_rtl);
1987 EXPECT_TRUE(render_text.runs_[2]->is_rtl);
1991 RenderTextHarfBuzz render_text;
1994 render_text.SetText(WideToUTF16(L"x\x25B6y"));
1995 render_text.EnsureLayout();
1996 ASSERT_EQ(3U, render_text.runs_.size());
1997 EXPECT_EQ(Range(0, 1), render_text.runs_[0]->range);
1998 EXPECT_EQ(Range(1, 2), render_text.runs_[1]->range);
1999 EXPECT_EQ(Range(2, 3), render_text.runs_[2]->range);
2001 render_text.SetText(WideToUTF16(L"x \x25B6 y"));
2002 render_text.EnsureLayout();
2003 ASSERT_EQ(3U, render_text.runs_.size());
2004 EXPECT_EQ(Range(0, 2), render_text.runs_[0]->range);
2005 EXPECT_EQ(Range(2, 3), render_text.runs_[1]->range);
2006 EXPECT_EQ(Range(3, 5), render_text.runs_[2]->range);
2015 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
2018 render_text->SetText(WideToUTF16(kTestStrings[i]));
2019 render_text->EnsureLayout();
2021 for (size_t j = 0; j < render_text->text().length(); ++j)
2022 EXPECT_FALSE(render_text->GetGlyphBounds(j).is_empty());
2032 scoped_ptr<RenderText> render_text(new RenderTextHarfBuzz);
2035 render_text->SetText(WideToUTF16(kTestStrings[i]));
2036 render_text->EnsureLayout();
2038 for (size_t j = 0; j < render_text->text().length(); ++j)
2039 EXPECT_FALSE(render_text->GetGlyphBounds(j).is_empty());