| 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 render_text->SetObscured(true); | 276 render_text->SetObscured(true); |
| 277 EXPECT_EQ(seuss, render_text->text()); | 277 EXPECT_EQ(seuss, render_text->text()); |
| 278 EXPECT_EQ(no_seuss, render_text->GetLayoutText()); | 278 EXPECT_EQ(no_seuss, render_text->GetLayoutText()); |
| 279 render_text->SetObscured(false); | 279 render_text->SetObscured(false); |
| 280 EXPECT_EQ(seuss, render_text->text()); | 280 EXPECT_EQ(seuss, render_text->text()); |
| 281 EXPECT_EQ(seuss, render_text->GetLayoutText()); | 281 EXPECT_EQ(seuss, render_text->GetLayoutText()); |
| 282 | 282 |
| 283 render_text->SetObscured(true); | 283 render_text->SetObscured(true); |
| 284 | 284 |
| 285 // Surrogate pairs are counted as one code point. | 285 // Surrogate pairs are counted as one code point. |
| 286 const char16 invalid_surrogates[] = {0xDC00, 0xD800, 0}; | 286 const base::char16 invalid_surrogates[] = {0xDC00, 0xD800, 0}; |
| 287 render_text->SetText(invalid_surrogates); | 287 render_text->SetText(invalid_surrogates); |
| 288 EXPECT_EQ(ASCIIToUTF16("**"), render_text->GetLayoutText()); | 288 EXPECT_EQ(ASCIIToUTF16("**"), render_text->GetLayoutText()); |
| 289 const char16 valid_surrogates[] = {0xD800, 0xDC00, 0}; | 289 const base::char16 valid_surrogates[] = {0xD800, 0xDC00, 0}; |
| 290 render_text->SetText(valid_surrogates); | 290 render_text->SetText(valid_surrogates); |
| 291 EXPECT_EQ(ASCIIToUTF16("*"), render_text->GetLayoutText()); | 291 EXPECT_EQ(ASCIIToUTF16("*"), render_text->GetLayoutText()); |
| 292 EXPECT_EQ(0U, render_text->cursor_position()); | 292 EXPECT_EQ(0U, render_text->cursor_position()); |
| 293 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); | 293 render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false); |
| 294 EXPECT_EQ(2U, render_text->cursor_position()); | 294 EXPECT_EQ(2U, render_text->cursor_position()); |
| 295 | 295 |
| 296 // Test index conversion and cursor validity with a valid surrogate pair. | 296 // Test index conversion and cursor validity with a valid surrogate pair. |
| 297 EXPECT_EQ(0U, render_text->TextIndexToLayoutIndex(0U)); | 297 EXPECT_EQ(0U, render_text->TextIndexToLayoutIndex(0U)); |
| 298 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(1U)); | 298 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(1U)); |
| 299 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(2U)); | 299 EXPECT_EQ(1U, render_text->TextIndexToLayoutIndex(2U)); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 | 363 |
| 364 // SetText clears the revealed index. | 364 // SetText clears the revealed index. |
| 365 render_text->SetText(ASCIIToUTF16("new")); | 365 render_text->SetText(ASCIIToUTF16("new")); |
| 366 EXPECT_EQ(ASCIIToUTF16("***"), render_text->GetLayoutText()); | 366 EXPECT_EQ(ASCIIToUTF16("***"), render_text->GetLayoutText()); |
| 367 render_text->RenderText::SetObscuredRevealIndex(2); | 367 render_text->RenderText::SetObscuredRevealIndex(2); |
| 368 EXPECT_EQ(ASCIIToUTF16("**w"), render_text->GetLayoutText()); | 368 EXPECT_EQ(ASCIIToUTF16("**w"), render_text->GetLayoutText()); |
| 369 render_text->SetText(ASCIIToUTF16("new longer")); | 369 render_text->SetText(ASCIIToUTF16("new longer")); |
| 370 EXPECT_EQ(ASCIIToUTF16("**********"), render_text->GetLayoutText()); | 370 EXPECT_EQ(ASCIIToUTF16("**********"), render_text->GetLayoutText()); |
| 371 | 371 |
| 372 // Text with invalid surrogates. | 372 // Text with invalid surrogates. |
| 373 const char16 invalid_surrogates[] = {0xDC00, 0xD800, 'h', 'o', 'p', 0}; | 373 const base::char16 invalid_surrogates[] = {0xDC00, 0xD800, 'h', 'o', 'p', 0}; |
| 374 render_text->SetText(invalid_surrogates); | 374 render_text->SetText(invalid_surrogates); |
| 375 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText()); | 375 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText()); |
| 376 render_text->RenderText::SetObscuredRevealIndex(0); | 376 render_text->RenderText::SetObscuredRevealIndex(0); |
| 377 const char16 invalid_expect_0[] = {0xDC00, '*', '*', '*', '*', 0}; | 377 const base::char16 invalid_expect_0[] = {0xDC00, '*', '*', '*', '*', 0}; |
| 378 EXPECT_EQ(invalid_expect_0, render_text->GetLayoutText()); | 378 EXPECT_EQ(invalid_expect_0, render_text->GetLayoutText()); |
| 379 render_text->RenderText::SetObscuredRevealIndex(1); | 379 render_text->RenderText::SetObscuredRevealIndex(1); |
| 380 const char16 invalid_expect_1[] = {'*', 0xD800, '*', '*', '*', 0}; | 380 const base::char16 invalid_expect_1[] = {'*', 0xD800, '*', '*', '*', 0}; |
| 381 EXPECT_EQ(invalid_expect_1, render_text->GetLayoutText()); | 381 EXPECT_EQ(invalid_expect_1, render_text->GetLayoutText()); |
| 382 render_text->RenderText::SetObscuredRevealIndex(2); | 382 render_text->RenderText::SetObscuredRevealIndex(2); |
| 383 EXPECT_EQ(ASCIIToUTF16("**h**"), render_text->GetLayoutText()); | 383 EXPECT_EQ(ASCIIToUTF16("**h**"), render_text->GetLayoutText()); |
| 384 | 384 |
| 385 // Text with valid surrogates before and after the reveal index. | 385 // Text with valid surrogates before and after the reveal index. |
| 386 const char16 valid_surrogates[] = | 386 const base::char16 valid_surrogates[] = |
| 387 {0xD800, 0xDC00, 'h', 'o', 'p', 0xD800, 0xDC00, 0}; | 387 {0xD800, 0xDC00, 'h', 'o', 'p', 0xD800, 0xDC00, 0}; |
| 388 render_text->SetText(valid_surrogates); | 388 render_text->SetText(valid_surrogates); |
| 389 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText()); | 389 EXPECT_EQ(ASCIIToUTF16("*****"), render_text->GetLayoutText()); |
| 390 render_text->RenderText::SetObscuredRevealIndex(0); | 390 render_text->RenderText::SetObscuredRevealIndex(0); |
| 391 const char16 valid_expect_0_and_1[] = {0xD800, 0xDC00, '*', '*', '*', '*', 0}; | 391 const base::char16 valid_expect_0_and_1[] = |
| 392 {0xD800, 0xDC00, '*', '*', '*', '*', 0}; |
| 392 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText()); | 393 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText()); |
| 393 render_text->RenderText::SetObscuredRevealIndex(1); | 394 render_text->RenderText::SetObscuredRevealIndex(1); |
| 394 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText()); | 395 EXPECT_EQ(valid_expect_0_and_1, render_text->GetLayoutText()); |
| 395 render_text->RenderText::SetObscuredRevealIndex(2); | 396 render_text->RenderText::SetObscuredRevealIndex(2); |
| 396 EXPECT_EQ(ASCIIToUTF16("*h***"), render_text->GetLayoutText()); | 397 EXPECT_EQ(ASCIIToUTF16("*h***"), render_text->GetLayoutText()); |
| 397 render_text->RenderText::SetObscuredRevealIndex(5); | 398 render_text->RenderText::SetObscuredRevealIndex(5); |
| 398 const char16 valid_expect_5_and_6[] = {'*', '*', '*', '*', 0xD800, 0xDC00, 0}; | 399 const base::char16 valid_expect_5_and_6[] = |
| 400 {'*', '*', '*', '*', 0xD800, 0xDC00, 0}; |
| 399 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText()); | 401 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText()); |
| 400 render_text->RenderText::SetObscuredRevealIndex(6); | 402 render_text->RenderText::SetObscuredRevealIndex(6); |
| 401 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText()); | 403 EXPECT_EQ(valid_expect_5_and_6, render_text->GetLayoutText()); |
| 402 } | 404 } |
| 403 | 405 |
| 404 TEST_F(RenderTextTest, TruncatedText) { | 406 TEST_F(RenderTextTest, TruncatedText) { |
| 405 struct { | 407 struct { |
| 406 const wchar_t* text; | 408 const wchar_t* text; |
| 407 const wchar_t* layout_text; | 409 const wchar_t* layout_text; |
| 408 } cases[] = { | 410 } cases[] = { |
| (...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1357 render_text->GetStringSize().height()); | 1359 render_text->GetStringSize().height()); |
| 1358 Rect display_rect(font_size); | 1360 Rect display_rect(font_size); |
| 1359 render_text->SetDisplayRect(display_rect); | 1361 render_text->SetDisplayRect(display_rect); |
| 1360 Vector2d offset = render_text->GetLineOffset(0); | 1362 Vector2d offset = render_text->GetLineOffset(0); |
| 1361 EXPECT_EQ(kEnlargement, offset.x()); | 1363 EXPECT_EQ(kEnlargement, offset.x()); |
| 1362 SetRTL(was_rtl); | 1364 SetRTL(was_rtl); |
| 1363 } | 1365 } |
| 1364 | 1366 |
| 1365 TEST_F(RenderTextTest, SameFontForParentheses) { | 1367 TEST_F(RenderTextTest, SameFontForParentheses) { |
| 1366 struct { | 1368 struct { |
| 1367 const char16 left_char; | 1369 const base::char16 left_char; |
| 1368 const char16 right_char; | 1370 const base::char16 right_char; |
| 1369 } punctuation_pairs[] = { | 1371 } punctuation_pairs[] = { |
| 1370 { '(', ')' }, | 1372 { '(', ')' }, |
| 1371 { '{', '}' }, | 1373 { '{', '}' }, |
| 1372 { '<', '>' }, | 1374 { '<', '>' }, |
| 1373 }; | 1375 }; |
| 1374 struct { | 1376 struct { |
| 1375 base::string16 text; | 1377 base::string16 text; |
| 1376 } cases[] = { | 1378 } cases[] = { |
| 1377 // English(English) | 1379 // English(English) |
| 1378 { WideToUTF16(L"Hello World(a)") }, | 1380 { WideToUTF16(L"Hello World(a)") }, |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1798 render_text->SetText(WideToUTF16(L"x \x25B6 y")); | 1800 render_text->SetText(WideToUTF16(L"x \x25B6 y")); |
| 1799 render_text->EnsureLayout(); | 1801 render_text->EnsureLayout(); |
| 1800 ASSERT_EQ(3U, render_text->runs_.size()); | 1802 ASSERT_EQ(3U, render_text->runs_.size()); |
| 1801 EXPECT_EQ(Range(0, 2), render_text->runs_[0]->range); | 1803 EXPECT_EQ(Range(0, 2), render_text->runs_[0]->range); |
| 1802 EXPECT_EQ(Range(2, 3), render_text->runs_[1]->range); | 1804 EXPECT_EQ(Range(2, 3), render_text->runs_[1]->range); |
| 1803 EXPECT_EQ(Range(3, 5), render_text->runs_[2]->range); | 1805 EXPECT_EQ(Range(3, 5), render_text->runs_[2]->range); |
| 1804 } | 1806 } |
| 1805 #endif // defined(OS_WIN) | 1807 #endif // defined(OS_WIN) |
| 1806 | 1808 |
| 1807 } // namespace gfx | 1809 } // namespace gfx |
| OLD | NEW |