Index: ui/gfx/render_text_unittest.cc |
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc |
index c51ef30315f664206e9501ccc234b411236c93a4..459cd257bbeccde3c63a7fba5d3bc836a80b0bd5 100644 |
--- a/ui/gfx/render_text_unittest.cc |
+++ b/ui/gfx/render_text_unittest.cc |
@@ -453,6 +453,11 @@ class RenderTextTest : public testing::Test, |
return test_api_->GetHarfBuzzRunList(); |
} |
+ int GetCursorYForTesting(int line_num = 0) { |
+ const internal::Line& line = test_api_->lines()[line_num]; |
+ return render_text_->GetLineOffset(line_num).y() + line.size.height() / 2; |
+ } |
+ |
void ResetRenderTextInstance() { |
render_text_ = CreateRenderTextInstance(); |
test_api_.reset(new test::RenderTextTestApi(GetRenderText())); |
@@ -788,10 +793,14 @@ TEST_P(RenderTextHarfBuzzTest, ObscuredText) { |
// FindCursorPosition() should not return positions between a surrogate pair. |
render_text->SetDisplayRect(Rect(0, 0, 20, 20)); |
- EXPECT_EQ(render_text->FindCursorPosition(Point(0, 0)).caret_pos(), 0U); |
- EXPECT_EQ(render_text->FindCursorPosition(Point(20, 0)).caret_pos(), 2U); |
+ const int cursor_y = GetCursorYForTesting(); |
+ EXPECT_EQ(render_text->FindCursorPosition(Point(0, cursor_y)).caret_pos(), |
+ 0U); |
+ EXPECT_EQ(render_text->FindCursorPosition(Point(20, cursor_y)).caret_pos(), |
+ 2U); |
for (int x = -1; x <= 20; ++x) { |
- SelectionModel selection = render_text->FindCursorPosition(Point(x, 0)); |
+ SelectionModel selection = |
+ render_text->FindCursorPosition(Point(x, cursor_y)); |
EXPECT_TRUE(selection.caret_pos() == 0U || selection.caret_pos() == 2U); |
} |
@@ -1783,7 +1792,9 @@ TEST_P(RenderTextHarfBuzzTest, FindCursorPosition) { |
const Range range(render_text->GetGlyphBounds(j)); |
// Test a point just inside the leading edge of the glyph bounds. |
int x = range.is_reversed() ? range.GetMax() - 1 : range.GetMin() + 1; |
- EXPECT_EQ(j, render_text->FindCursorPosition(Point(x, 0)).caret_pos()); |
+ EXPECT_EQ( |
+ j, render_text->FindCursorPosition(Point(x, GetCursorYForTesting())) |
+ .caret_pos()); |
} |
} |
} |
@@ -2863,12 +2874,12 @@ TEST_P(RenderTextHarfBuzzTest, Multiline_Newline) { |
// Ranges of the characters on each line preceding the newline. |
const Range line_char_ranges[3]; |
} kTestStrings[] = { |
- {L"abc\ndef", 2ul, { Range(0, 3), Range(4, 7), Range::InvalidRange() } }, |
- {L"a \n b ", 2ul, { Range(0, 2), Range(3, 6), Range::InvalidRange() } }, |
- {L"ab\n", 2ul, { Range(0, 2), Range(), Range::InvalidRange() } }, |
- {L"a\n\nb", 3ul, { Range(0, 1), Range(), Range(3, 4) } }, |
- {L"\nab", 2ul, { Range(), Range(1, 3), Range::InvalidRange() } }, |
- {L"\n", 2ul, { Range(), Range(), Range::InvalidRange() } }, |
+ {L"abc\ndef", 2ul, {Range(0, 3), Range(4, 7), Range::InvalidRange()}}, |
+ {L"a \n b ", 2ul, {Range(0, 2), Range(3, 6), Range::InvalidRange()}}, |
+ {L"ab\n", 2ul, {Range(0, 2), Range(), Range::InvalidRange()}}, |
+ {L"a\n\nb", 3ul, {Range(0, 1), Range(2, 3), Range(3, 4)}}, |
+ {L"\nab", 2ul, {Range(0, 1), Range(1, 3), Range::InvalidRange()}}, |
+ {L"\n", 2ul, {Range(0, 1), Range(), Range::InvalidRange()}}, |
}; |
RenderText* render_text = GetRenderText(); |
@@ -3898,6 +3909,7 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) { |
render_text->ApplyStyle(ITALIC, true, Range(3, 8)); |
render_text->ApplyStyle(DIAGONAL_STRIKE, true, Range(5, 7)); |
render_text->ApplyStyle(STRIKE, true, Range(1, 7)); |
+ const int cursor_y = GetCursorYForTesting(); |
const std::vector<RenderText::FontSpan> font_spans = |
render_text->GetFontSpansForTesting(); |
@@ -3931,14 +3943,14 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) { |
{ |
SCOPED_TRACE(base::StringPrintf("Query to the left of text bounds")); |
EXPECT_TRUE(render_text->GetDecoratedWordAtPoint( |
- Point(-5, 5), &decorated_word, &baseline_point)); |
+ Point(-5, cursor_y), &decorated_word, &baseline_point)); |
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word); |
EXPECT_TRUE(left_glyph_word_1.Contains(baseline_point)); |
} |
{ |
SCOPED_TRACE(base::StringPrintf("Query to the right of text bounds")); |
EXPECT_TRUE(render_text->GetDecoratedWordAtPoint( |
- Point(105, 5), &decorated_word, &baseline_point)); |
+ Point(105, cursor_y), &decorated_word, &baseline_point)); |
VerifyDecoratedWordsAreEqual(expected_word_2, decorated_word); |
EXPECT_TRUE(left_glyph_word_2.Contains(baseline_point)); |
} |
@@ -3982,6 +3994,7 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) { |
render_text->ApplyStyle(ITALIC, true, Range(0, 3)); |
render_text->ApplyStyle(DIAGONAL_STRIKE, true, Range(0, 2)); |
render_text->ApplyStyle(STRIKE, true, Range(2, 5)); |
+ const int cursor_y = GetCursorYForTesting(); |
const std::vector<RenderText::FontSpan> font_spans = |
render_text->GetFontSpansForTesting(); |
@@ -4014,14 +4027,14 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) { |
{ |
SCOPED_TRACE(base::StringPrintf("Query to the left of text bounds")); |
EXPECT_TRUE(render_text->GetDecoratedWordAtPoint( |
- Point(-5, 5), &decorated_word, &baseline_point)); |
+ Point(-5, cursor_y), &decorated_word, &baseline_point)); |
VerifyDecoratedWordsAreEqual(expected_word_2, decorated_word); |
EXPECT_TRUE(left_glyph_word_2.Contains(baseline_point)); |
} |
{ |
SCOPED_TRACE(base::StringPrintf("Query to the right of text bounds")); |
EXPECT_TRUE(render_text->GetDecoratedWordAtPoint( |
- Point(105, 5), &decorated_word, &baseline_point)); |
+ Point(105, cursor_y), &decorated_word, &baseline_point)); |
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word); |
EXPECT_TRUE(left_glyph_word_1.Contains(baseline_point)); |
} |