| Index: ui/gfx/render_text_unittest.cc
|
| diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
|
| index 4686066f088953085ff1df8d5e7bb381efa47866..3cd3b98e75e0eea0e30a426aeb57a2aefdd21ce2 100644
|
| --- a/ui/gfx/render_text_unittest.cc
|
| +++ b/ui/gfx/render_text_unittest.cc
|
| @@ -1040,7 +1040,7 @@ TEST_F(RenderTextTest, SelectAll) {
|
| EXPECT_EQ(was_rtl, base::i18n::IsRTL());
|
| }
|
|
|
| - TEST_F(RenderTextTest, MoveCursorLeftRightWithSelection) {
|
| +TEST_F(RenderTextTest, MoveCursorLeftRightWithSelection) {
|
| scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
|
| render_text->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
|
| // Left arrow on select ranging (6, 4).
|
| @@ -1488,6 +1488,80 @@ TEST_F(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL) {
|
| SetRTL(was_rtl);
|
| }
|
|
|
| +TEST_F(RenderTextTest, SetDisplayOffset) {
|
| + scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
|
| + render_text->SetText(ASCIIToUTF16("abcdefg"));
|
| + render_text->SetFontList(FontList("Arial, 13px"));
|
| +
|
| + const Size font_size(render_text->GetContentWidth(),
|
| + render_text->font_list().GetHeight());
|
| + const int kEnlargement = 10;
|
| +
|
| + // Set display width |kEnlargement| pixels greater than content width and test
|
| + // different possible situations. In this case the only possible display
|
| + // offset is zero.
|
| + Rect display_rect(font_size);
|
| + display_rect.Inset(0, 0, -kEnlargement, 0);
|
| + render_text->SetDisplayRect(display_rect);
|
| +
|
| + struct {
|
| + HorizontalAlignment alignment;
|
| + int offset;
|
| + } small_content_cases[] = {
|
| + { ALIGN_LEFT, -kEnlargement },
|
| + { ALIGN_LEFT, 0 },
|
| + { ALIGN_LEFT, kEnlargement },
|
| + { ALIGN_RIGHT, -kEnlargement },
|
| + { ALIGN_RIGHT, 0 },
|
| + { ALIGN_RIGHT, kEnlargement },
|
| + { ALIGN_CENTER, -kEnlargement },
|
| + { ALIGN_CENTER, 0 },
|
| + { ALIGN_CENTER, kEnlargement },
|
| + };
|
| +
|
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(small_content_cases); i++) {
|
| + render_text->SetHorizontalAlignment(small_content_cases[i].alignment);
|
| + render_text->SetDisplayOffset(small_content_cases[i].offset);
|
| + EXPECT_EQ(0, render_text->GetUpdatedDisplayOffset().x());
|
| + }
|
| +
|
| + // Set display width |kEnlargement| pixels less than content width and test
|
| + // different possible situations.
|
| + display_rect = Rect(font_size);
|
| + display_rect.Inset(0, 0, kEnlargement, 0);
|
| + render_text->SetDisplayRect(display_rect);
|
| +
|
| + struct {
|
| + HorizontalAlignment alignment;
|
| + int offset;
|
| + int expected_offset;
|
| + } large_content_cases[] = {
|
| + // When text is left-aligned, display offset can be in range
|
| + // [-kEnlargement, 0].
|
| + { ALIGN_LEFT, -2 * kEnlargement, -kEnlargement },
|
| + { ALIGN_LEFT, -kEnlargement / 2, -kEnlargement / 2 },
|
| + { ALIGN_LEFT, kEnlargement, 0 },
|
| + // When text is right-aligned, display offset can be in range
|
| + // [0, kEnlargement].
|
| + { ALIGN_RIGHT, -kEnlargement, 0 },
|
| + { ALIGN_RIGHT, kEnlargement / 2, kEnlargement / 2 },
|
| + { ALIGN_RIGHT, 2 * kEnlargement, kEnlargement },
|
| + // When text is center-aligned, display offset can be in range
|
| + // [-kEnlargement / 2, kEnlargement / 2].
|
| + { ALIGN_CENTER, -kEnlargement, -kEnlargement / 2 },
|
| + { ALIGN_CENTER, -kEnlargement / 4, -kEnlargement / 4 },
|
| + { ALIGN_CENTER, kEnlargement / 4, kEnlargement / 4 },
|
| + { ALIGN_CENTER, kEnlargement, kEnlargement / 2 },
|
| + };
|
| +
|
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(large_content_cases); i++) {
|
| + render_text->SetHorizontalAlignment(large_content_cases[i].alignment);
|
| + render_text->SetDisplayOffset(large_content_cases[i].offset);
|
| + EXPECT_EQ(large_content_cases[i].expected_offset,
|
| + render_text->GetUpdatedDisplayOffset().x());
|
| + }
|
| +}
|
| +
|
| TEST_F(RenderTextTest, SameFontForParentheses) {
|
| struct {
|
| const base::char16 left_char;
|
|
|