| 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 |