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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range); | 285 EXPECT_EQ(ui::Range(0, 3), render_text->style_ranges()[0].range); |
286 | 286 |
287 SetTextWith2ExtraStyles(render_text.get()); | 287 SetTextWith2ExtraStyles(render_text.get()); |
288 EXPECT_EQ(3U, render_text->style_ranges().size()); | 288 EXPECT_EQ(3U, render_text->style_ranges().size()); |
289 | 289 |
290 render_text->SetText(ASCIIToUTF16("a")); | 290 render_text->SetText(ASCIIToUTF16("a")); |
291 EXPECT_EQ(1U, render_text->style_ranges().size()); | 291 EXPECT_EQ(1U, render_text->style_ranges().size()); |
292 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range); | 292 EXPECT_EQ(ui::Range(0, 1), render_text->style_ranges()[0].range); |
293 } | 293 } |
294 | 294 |
| 295 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac |
| 296 // does not implement this yet. http://crbug.com/131618 |
| 297 #if !defined(OS_MACOSX) |
295 void TestVisualCursorMotionInObscuredField(RenderText* render_text, | 298 void TestVisualCursorMotionInObscuredField(RenderText* render_text, |
296 const string16& text, | 299 const string16& text, |
297 bool select) { | 300 bool select) { |
298 render_text->SetText(text); | 301 render_text->SetText(text); |
299 int len = text.length(); | 302 int len = text.length(); |
300 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select); | 303 render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, select); |
301 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD), | 304 EXPECT_EQ(SelectionModel(ui::Range(select ? 0 : len, len), CURSOR_FORWARD), |
302 render_text->selection_model()); | 305 render_text->selection_model()); |
303 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select); | 306 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, select); |
304 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model()); | 307 EXPECT_EQ(SelectionModel(0, CURSOR_BACKWARD), render_text->selection_model()); |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 EXPECT_EQ(ui::Range(5), render_text->selection()); | 773 EXPECT_EQ(ui::Range(5), render_text->selection()); |
771 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); | 774 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); |
772 EXPECT_EQ(ui::Range(4), render_text->selection()); | 775 EXPECT_EQ(ui::Range(4), render_text->selection()); |
773 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); | 776 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); |
774 EXPECT_EQ(ui::Range(4, 5), render_text->selection()); | 777 EXPECT_EQ(ui::Range(4, 5), render_text->selection()); |
775 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); | 778 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true); |
776 EXPECT_EQ(ui::Range(4, 6), render_text->selection()); | 779 EXPECT_EQ(ui::Range(4, 6), render_text->selection()); |
777 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); | 780 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); |
778 EXPECT_EQ(ui::Range(4), render_text->selection()); | 781 EXPECT_EQ(ui::Range(4), render_text->selection()); |
779 } | 782 } |
| 783 #endif // !defined(OS_MACOSX) |
780 | 784 |
781 // TODO(xji): Make these work on Windows. | 785 // TODO(xji): Make these work on Windows. |
782 #if defined(OS_LINUX) | 786 #if defined(OS_LINUX) |
783 void MoveLeftRightByWordVerifier(RenderText* render_text, | 787 void MoveLeftRightByWordVerifier(RenderText* render_text, |
784 const wchar_t* str) { | 788 const wchar_t* str) { |
785 render_text->SetText(WideToUTF16(str)); | 789 render_text->SetText(WideToUTF16(str)); |
786 | 790 |
787 // Test moving by word from left ro right. | 791 // Test moving by word from left ro right. |
788 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false); | 792 render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false); |
789 bool first_word = true; | 793 bool first_word = true; |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
941 #endif | 945 #endif |
942 | 946 |
943 TEST_F(RenderTextTest, StringSizeSanity) { | 947 TEST_F(RenderTextTest, StringSizeSanity) { |
944 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); | 948 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); |
945 render_text->SetText(UTF8ToUTF16("Hello World")); | 949 render_text->SetText(UTF8ToUTF16("Hello World")); |
946 const Size string_size = render_text->GetStringSize(); | 950 const Size string_size = render_text->GetStringSize(); |
947 EXPECT_GT(string_size.width(), 0); | 951 EXPECT_GT(string_size.width(), 0); |
948 EXPECT_GT(string_size.height(), 0); | 952 EXPECT_GT(string_size.height(), 0); |
949 } | 953 } |
950 | 954 |
| 955 // TODO(asvitkine): This test fails because PlatformFontMac uses point font |
| 956 // sizes instead of pixel sizes like other implementations. |
| 957 #if !defined(OS_MACOSX) |
951 TEST_F(RenderTextTest, StringSizeEmptyString) { | 958 TEST_F(RenderTextTest, StringSizeEmptyString) { |
952 const Font font; | 959 const Font font; |
953 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); | 960 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); |
954 render_text->SetFontList(FontList(font)); | 961 render_text->SetFontList(FontList(font)); |
955 | 962 |
956 render_text->SetText(string16()); | 963 render_text->SetText(string16()); |
957 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); | 964 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); |
958 EXPECT_EQ(0, render_text->GetStringSize().width()); | 965 EXPECT_EQ(0, render_text->GetStringSize().width()); |
959 | 966 |
960 render_text->SetText(UTF8ToUTF16(" ")); | 967 render_text->SetText(UTF8ToUTF16(" ")); |
961 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); | 968 EXPECT_EQ(font.GetHeight(), render_text->GetStringSize().height()); |
962 } | 969 } |
| 970 #endif // !defined(OS_MACOSX) |
963 | 971 |
964 TEST_F(RenderTextTest, StringSizeBoldWidth) { | 972 TEST_F(RenderTextTest, StringSizeBoldWidth) { |
965 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); | 973 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); |
966 render_text->SetText(UTF8ToUTF16("Hello World")); | 974 render_text->SetText(UTF8ToUTF16("Hello World")); |
967 | 975 |
968 const int plain_width = render_text->GetStringSize().width(); | 976 const int plain_width = render_text->GetStringSize().width(); |
969 EXPECT_GT(plain_width, 0); | 977 EXPECT_GT(plain_width, 0); |
970 | 978 |
971 // Apply a bold style and check that the new width is greater. | 979 // Apply a bold style and check that the new width is greater. |
972 StyleRange bold; | 980 StyleRange bold; |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1121 | 1129 |
1122 const Font& start_font = spans[start_paren_span_index].first; | 1130 const Font& start_font = spans[start_paren_span_index].first; |
1123 const Font& end_font = spans[end_paren_span_index].first; | 1131 const Font& end_font = spans[end_paren_span_index].first; |
1124 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName()); | 1132 EXPECT_EQ(start_font.GetFontName(), end_font.GetFontName()); |
1125 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize()); | 1133 EXPECT_EQ(start_font.GetFontSize(), end_font.GetFontSize()); |
1126 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle()); | 1134 EXPECT_EQ(start_font.GetStyle(), end_font.GetStyle()); |
1127 } | 1135 } |
1128 } | 1136 } |
1129 } | 1137 } |
1130 | 1138 |
| 1139 // TODO(asvitkine): Cursor movements tests disabled on Mac because RenderTextMac |
| 1140 // does not implement this yet. http://crbug.com/131618 |
| 1141 #if !defined(OS_MACOSX) |
1131 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) { | 1142 TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) { |
1132 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); | 1143 scoped_ptr<RenderText> render_text(RenderText::CreateRenderText()); |
1133 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg")); | 1144 render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg")); |
1134 render_text->MoveCursorTo(SelectionModel(render_text->text().length(), | 1145 render_text->MoveCursorTo(SelectionModel(render_text->text().length(), |
1135 CURSOR_FORWARD)); | 1146 CURSOR_FORWARD)); |
1136 int width = render_text->GetStringSize().width(); | 1147 int width = render_text->GetStringSize().width(); |
1137 ASSERT_GT(width, 10); | 1148 ASSERT_GT(width, 10); |
1138 | 1149 |
1139 // Ensure that the cursor is placed at the width of its preceding text. | 1150 // Ensure that the cursor is placed at the width of its preceding text. |
1140 render_text->SetDisplayRect(Rect(width + 10, 1)); | 1151 render_text->SetDisplayRect(Rect(width + 10, 1)); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x()); | 1242 EXPECT_EQ(0, render_text->GetUpdatedCursorBounds().x()); |
1232 | 1243 |
1233 // Ensure that a sufficiently large display rectangle shows all the text. | 1244 // Ensure that a sufficiently large display rectangle shows all the text. |
1234 render_text->SetDisplayRect(Rect(width + 10, 1)); | 1245 render_text->SetDisplayRect(Rect(width + 10, 1)); |
1235 EXPECT_EQ(render_text->display_rect().width() - width - 1, | 1246 EXPECT_EQ(render_text->display_rect().width() - width - 1, |
1236 render_text->GetUpdatedCursorBounds().x()); | 1247 render_text->GetUpdatedCursorBounds().x()); |
1237 | 1248 |
1238 // Reset locale. | 1249 // Reset locale. |
1239 base::i18n::SetICUDefaultLocale(locale); | 1250 base::i18n::SetICUDefaultLocale(locale); |
1240 } | 1251 } |
| 1252 #endif // !defined(OS_MACOSX) |
1241 | 1253 |
1242 } // namespace gfx | 1254 } // namespace gfx |
OLD | NEW |