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 "ui/gfx/render_text.h" | 5 #include "ui/gfx/render_text.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range); | 300 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range); |
301 | 301 |
302 SetTextWith2ExtraStyles(render_text.get()); | 302 SetTextWith2ExtraStyles(render_text.get()); |
303 EXPECT_EQ(3U, render_text->style_ranges().size()); | 303 EXPECT_EQ(3U, render_text->style_ranges().size()); |
304 | 304 |
305 render_text->SetText(ASCIIToUTF16("a")); | 305 render_text->SetText(ASCIIToUTF16("a")); |
306 EXPECT_EQ(1U, render_text->style_ranges().size()); | 306 EXPECT_EQ(1U, render_text->style_ranges().size()); |
307 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range); | 307 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range); |
308 } | 308 } |
309 | 309 |
| 310 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac |
| 311 // does not implement this yet. http://crbug.com/131618 |
| 312 #if !defined(OS_MACOSX) |
310 void TestVisualCursorMotionInObscuredField(RenderText* render_text, | 313 void TestVisualCursorMotionInObscuredField(RenderText* render_text, |
311 const string16& text, | 314 const string16& text, |
312 bool select) { | 315 bool select) { |
313 render_text->SetText(text); | 316 render_text->SetText(text); |
314 int len = text.length(); | 317 int len = text.length(); |
315 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select); | 318 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select); |
316 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD), | 319 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD), |
317 render_text->selection_model()); | 320 render_text->selection_model()); |
318 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select); | 321 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select); |
319 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model()); | 322 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model()); |
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 EXPECT_EQ(ui::Range(5), render_text->selection()); | 793 EXPECT_EQ(ui::Range(5), render_text->selection()); |
791 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); | 794 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); |
792 EXPECT_EQ(ui::Range(4), render_text->selection()); | 795 EXPECT_EQ(ui::Range(4), render_text->selection()); |
793 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); | 796 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); |
794 EXPECT_EQ(ui::Range(4, 5), render_text->selection()); | 797 EXPECT_EQ(ui::Range(4, 5), render_text->selection()); |
795 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); | 798 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); |
796 EXPECT_EQ(ui::Range(4, 6), render_text->selection()); | 799 EXPECT_EQ(ui::Range(4, 6), render_text->selection()); |
797 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); | 800 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); |
798 EXPECT_EQ(ui::Range(4), render_text->selection()); | 801 EXPECT_EQ(ui::Range(4), render_text->selection()); |
799 } | 802 } |
| 803 #endif // !defined(OS_MACOSX) |
800 | 804 |
801 // TODO(xji): Make these work on Windows. | 805 // TODO(xji): Make these work on Windows. |
802 #if defined(OS_LINUX) | 806 #if defined(OS_LINUX) |
803 void MoveLeftRightByWordVerifier(RenderText* render_text, | 807 void MoveLeftRightByWordVerifier(RenderText* render_text, |
804 const wchar_t* str) { | 808 const wchar_t* str) { |
805 render_text->SetText(WideToUTF16(str)); | 809 render_text->SetText(WideToUTF16(str)); |
806 | 810 |
807 // Test moving by word from left ro right. | 811 // Test moving by word from left ro right. |
808 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false); | 812 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false); |
809 bool first_word = true; | 813 bool first_word = true; |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 #endif | 965 #endif |
962 | 966 |
963 TEST_F(RenderTextTest, StringSizeSanity) { | 967 TEST_F(RenderTextTest, StringSizeSanity) { |
964 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); | 968 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); |
965 render_text->SetText(UTF8ToUTF16("Hello World")); | 969 render_text->SetText(UTF8ToUTF16("Hello World")); |
966 const Size string_size = render_text->GetStringSize(); | 970 const Size string_size = render_text->GetStringSize(); |
967 EXPECT_GT(string_size.width(), 0); | 971 EXPECT_GT(string_size.width(), 0); |
968 EXPECT_GT(string_size.height(), 0); | 972 EXPECT_GT(string_size.height(), 0); |
969 } | 973 } |
970 | 974 |
| 975 // TODO(asvitkine): This test fails because PlatformFontMac uses point font |
| 976 // sizes instead of pixel sizes like other implementations. |
| 977 #if !defined(OS_MACOSX) |
971 TEST_F(RenderTextTest, StringSizeEmptyString) { | 978 TEST_F(RenderTextTest, StringSizeEmptyString) { |
972 const Font font; | 979 const Font font; |
973 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); | 980 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); |
974 render_text->SetFontList(FontList(font)); | 981 render_text->SetFontList(FontList(font)); |
975 | 982 |
976 render_text->SetText(string16()); | 983 render_text->SetText(string16()); |
977 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); | 984 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); |
978 EXPECT_EQ(0, render_text->GetStringSize().width()); | 985 EXPECT_EQ(0, render_text->GetStringSize().width()); |
979 | 986 |
980 render_text->SetText(UTF8ToUTF16(" ")); | 987 render_text->SetText(UTF8ToUTF16(" ")); |
981 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); | 988 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); |
982 } | 989 } |
| 990 #endif // !defined(OS_MACOSX) |
983 | 991 |
984 TEST_F(RenderTextTest, StringSizeBoldWidth) { | 992 TEST_F(RenderTextTest, StringSizeBoldWidth) { |
985 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); | 993 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); |
986 render_text->SetText(UTF8ToUTF16("Hello World")); | 994 render_text->SetText(UTF8ToUTF16("Hello World")); |
987 | 995 |
988 const int plain_width = render_text->GetStringSize().width(); | 996 const int plain_width = render_text->GetStringSize().width(); |
989 EXPECT_GT(plain_width, 0); | 997 EXPECT_GT(plain_width, 0); |
990 | 998 |
991 // Apply a bold style and check that the new width is greater. | 999 // Apply a bold style and check that the new width is greater. |
992 StyleRange bold; | 1000 StyleRange bold; |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 | 1156 |
1149 const Font& start_font = spans[start_paren_span_index].first; | 1157 const Font& start_font = spans[start_paren_span_index].first; |
1150 const Font& end_font = spans[end_paren_span_index].first; | 1158 const Font& end_font = spans[end_paren_span_index].first; |
1151 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName()); | 1159 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName()); |
1152 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize()); | 1160 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize()); |
1153 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle()); | 1161 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle()); |
1154 } | 1162 } |
1155 } | 1163 } |
1156 } | 1164 } |
1157 | 1165 |
| 1166 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac |
| 1167 // does not implement this yet. http://crbug.com/131618 |
| 1168 #if !defined(OS_MACOSX) |
1158 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) { | 1169 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) { |
1159 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); | 1170 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); |
1160 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg")); | 1171 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg")); |
1161 render_text->MoveCursorTo(SelectionModel(render_text->text().length(), | 1172 render_text->MoveCursorTo(SelectionModel(render_text->text().length(), |
1162 CURSOR_FORWARD)); | 1173 CURSOR_FORWARD)); |
1163 int width = render_text->GetStringSize().width(); | 1174 int width = render_text->GetStringSize().width(); |
1164 ASSERT_GT(width, 10); | 1175 ASSERT_GT(width, 10); |
1165 | 1176 |
1166 // Ensure that the cursor is placed at the width of its preceding text. | 1177 // Ensure that the cursor is placed at the width of its preceding text. |
1167 render_text->SetDisplayRect(Rect(width + 10, 1)); | 1178 render_text->SetDisplayRect(Rect(width + 10, 1)); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 | 1270 |
1260 // Ensure that a sufficiently large display rectangle shows all the text. | 1271 // Ensure that a sufficiently large display rectangle shows all the text. |
1261 render_text->SetDisplayRect(Rect(width + 10, 1)); | 1272 render_text->SetDisplayRect(Rect(width + 10, 1)); |
1262 EXPECT_EQ(render_text->display_rect().width() - width - 1, | 1273 EXPECT_EQ(render_text->display_rect().width() - width - 1, |
1263 render_text->GetUpdatedCursorBounds().x()); | 1274 render_text->GetUpdatedCursorBounds().x()); |
1264 | 1275 |
1265 // Reset the application default text direction to LTR. | 1276 // Reset the application default text direction to LTR. |
1266 SetRTL(was_rtl); | 1277 SetRTL(was_rtl); |
1267 EXPECT_EQ(was_rtl, base::i18n::IsRTL()); | 1278 EXPECT_EQ(was_rtl, base::i18n::IsRTL()); |
1268 } | 1279 } |
| 1280 #endif // !defined(OS_MACOSX) |
1269 | 1281 |
1270 } // namespace gfx | 1282 } // namespace gfx |
OLD | NEW |