Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(346)

Unified Diff: ui/gfx/render_text_unittest.cc

Issue 2164483006: [MacViews] Implemented text context menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/render_text.cc ('k') | ui/strings/ui_strings.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/render_text_unittest.cc
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 9f884c73cc58ba6cc748c012f2d415dc068841a9..7002801a3bd467ca0bd2aa27ac93708935fbb3d0 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -3998,9 +3998,84 @@ TEST_P(RenderTextTest, SubpixelRenderingSuppressed) {
EXPECT_FALSE(GetRendererPaint().isLCDRenderText());
}
-// Verify GetDecoratedWordAtPoint returns the correct baseline point and
-// decorated word for an LTR string.
-TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) {
+// Verify GetDecoratedTextAndBaselineForRange returns the correct baseline
+// point and decorated word.
+TEST_P(RenderTextHarfBuzzTest, GetDecoratedTextAndBaselineForRange) {
+ const base::string16 text = ASCIIToUTF16("yellow boxfish");
+ const Range kWordOneRange = Range(0, 6);
+ const Range kWordTwoRange = Range(7, 14);
+ const Range kTextRange = Range(0, 14);
+
+ RenderText* render_text = GetRenderText();
+ render_text->SetDisplayRect(Rect(100, 30));
+ render_text->SetText(text);
+ render_text->ApplyWeight(Font::Weight::NORMAL, kWordOneRange);
+ render_text->ApplyWeight(Font::Weight::SEMIBOLD, kWordTwoRange);
+ render_text->ApplyStyle(UNDERLINE, true, kWordOneRange);
+ render_text->ApplyStyle(STRIKE, true, Range(6, 7));
+ render_text->ApplyStyle(ITALIC, true, kWordTwoRange);
+
+ const std::vector<RenderText::FontSpan> font_spans =
+ render_text->GetFontSpansForTesting();
+ DecoratedText decorated_text;
+ Point baseline_point;
+
+ // Tests the range of the first word.
+ DecoratedText expected_text_1;
+ expected_text_1.text = ASCIIToUTF16("yellow");
+ for (size_t i = 0; i < expected_text_1.text.length(); i++) {
+ expected_text_1.attributes.push_back(CreateRangedAttribute(
+ font_spans, i, i, Font::Weight::NORMAL, UNDERLINE_MASK));
+ }
+
+ const Rect left_glyph_1 =
+ render_text->GetCursorBounds(SelectionModel(0, CURSOR_FORWARD), false);
+
+ EXPECT_TRUE(render_text->GetDecoratedTextAndBaselineForRange(
+ kWordOneRange, &decorated_text, &baseline_point));
+ VerifyDecoratedWordsAreEqual(expected_text_1, decorated_text);
+ EXPECT_TRUE(left_glyph_1.Contains(baseline_point));
+
+ // Tests the range of the second word.
+ DecoratedText expected_text_2;
+ expected_text_2.text = ASCIIToUTF16("boxfish");
+ for (size_t i = 0; i < expected_text_2.text.length(); i++) {
+ expected_text_2.attributes.push_back(CreateRangedAttribute(
+ font_spans, i, i, Font::Weight::SEMIBOLD, ITALIC_MASK));
+ }
+
+ const Rect left_glyph_2 = render_text->GetCursorBounds(
+ SelectionModel(kWordTwoRange.start(), CURSOR_FORWARD), false);
+
+ EXPECT_TRUE(render_text->GetDecoratedTextAndBaselineForRange(
+ kWordTwoRange, &decorated_text, &baseline_point));
+ VerifyDecoratedWordsAreEqual(expected_text_2, decorated_text);
+ EXPECT_TRUE(left_glyph_2.Contains(baseline_point));
+
+ // Tests the range of the entire text.
+ DecoratedText expected_text_3;
+ expected_text_3.text = ASCIIToUTF16("yellow boxfish");
+ expected_text_3.attributes.insert(expected_text_3.attributes.begin(),
+ expected_text_1.attributes.begin(),
+ expected_text_1.attributes.end());
+
+ expected_text_3.attributes.push_back(CreateRangedAttribute(
+ font_spans, 6, 6, Font::Weight::NORMAL, STRIKE_MASK));
+
+ for (size_t i = kWordTwoRange.start(); i < kWordTwoRange.end(); i++) {
+ expected_text_3.attributes.push_back(CreateRangedAttribute(
+ font_spans, i, i, Font::Weight::SEMIBOLD, ITALIC_MASK));
+ }
+
+ EXPECT_TRUE(render_text->GetDecoratedTextAndBaselineForRange(
+ kTextRange, &decorated_text, &baseline_point));
+ VerifyDecoratedWordsAreEqual(expected_text_3, decorated_text);
+ EXPECT_TRUE(left_glyph_1.Contains(baseline_point));
+}
+
+// Verify GetDecoratedWordAndBaselineAtPoint returns the correct baseline point
+// and decorated word for an LTR string.
+TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAndBaselineAtPoint_LTR) {
const base::string16 ltr = ASCIIToUTF16(" ab c ");
const int kWordOneStartIndex = 2;
const int kWordTwoStartIndex = 6;
@@ -4046,14 +4121,14 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) {
{
SCOPED_TRACE(base::StringPrintf("Query to the left of text bounds"));
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
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(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
Point(105, cursor_y), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_2, decorated_word);
EXPECT_TRUE(left_glyph_word_2.Contains(baseline_point));
@@ -4066,8 +4141,8 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) {
render_text->GetCursorBounds(SelectionModel(i, CURSOR_FORWARD), false)
.origin();
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(query, &decorated_word,
- &baseline_point));
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
+ query, &decorated_word, &baseline_point));
if (i < kWordTwoStartIndex) {
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word);
@@ -4079,9 +4154,10 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_LTR) {
}
}
-// Verify GetDecoratedWordAtPoint returns the correct baseline point and
+// Verify GetDecoratedWordAndBaselineAtPoint returns the correct baseline point
+// and
// decorated word for an RTL string.
-TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) {
+TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAndBaselineAtPoint_RTL) {
const base::string16 rtl = WideToUTF16(
L" "
L"\x0634\x0632"
@@ -4130,14 +4206,14 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) {
{
SCOPED_TRACE(base::StringPrintf("Query to the left of text bounds"));
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
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(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
Point(105, cursor_y), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word);
EXPECT_TRUE(left_glyph_word_1.Contains(baseline_point));
@@ -4152,8 +4228,8 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) {
render_text->GetCursorBounds(SelectionModel(i, CURSOR_FORWARD), false)
.top_right();
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(query, &decorated_word,
- &baseline_point));
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
+ query, &decorated_word, &baseline_point));
if (i < kWordTwoStartIndex) {
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word);
EXPECT_TRUE(left_glyph_word_1.Contains(baseline_point));
@@ -4164,8 +4240,9 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_RTL) {
}
}
-// Test that GetDecoratedWordAtPoint behaves correctly for multiline text.
-TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_Multiline) {
+// Test that GetDecoratedWordAndBaselineAtPoint behaves correctly for multiline
+// text.
+TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAndBaselineAtPoint_Multiline) {
const base::string16 text = ASCIIToUTF16("a b\n..\ncd.");
const size_t kWordOneIndex = 0; // Index of character 'a'.
const size_t kWordTwoIndex = 2; // Index of character 'b'.
@@ -4215,36 +4292,36 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_Multiline) {
Point baseline_point;
{
// Query to the left of the first line.
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
Point(-5, GetCursorYForTesting(0)), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_1, decorated_word);
EXPECT_TRUE(left_glyph_word_1.Contains(baseline_point));
}
{
// Query on the second line.
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
Point(5, GetCursorYForTesting(1)), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_2, decorated_word);
EXPECT_TRUE(left_glyph_word_2.Contains(baseline_point));
}
{
// Query at the center point of the character 'c'.
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
left_glyph_word_3.CenterPoint(), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_3, decorated_word);
EXPECT_TRUE(left_glyph_word_3.Contains(baseline_point));
}
{
// Query to the right of the third line.
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
Point(505, GetCursorYForTesting(2)), &decorated_word, &baseline_point));
VerifyDecoratedWordsAreEqual(expected_word_3, decorated_word);
EXPECT_TRUE(left_glyph_word_3.Contains(baseline_point));
}
}
-// Verify the boolean return value of GetDecoratedWordAtPoint.
-TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_Return) {
+// Verify the boolean return value of GetDecoratedWordAndBaselineAtPoint.
+TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAndBaselineAtPoint_Return) {
RenderText* render_text = GetRenderText();
render_text->SetText(ASCIIToUTF16("..."));
@@ -4255,21 +4332,21 @@ TEST_P(RenderTextHarfBuzzTest, GetDecoratedWordAtPoint_Return) {
Point query =
render_text->GetCursorBounds(SelectionModel(0, CURSOR_FORWARD), false)
.origin();
- EXPECT_FALSE(render_text->GetDecoratedWordAtPoint(query, &decorated_word,
- &baseline_point));
+ EXPECT_FALSE(render_text->GetDecoratedWordAndBaselineAtPoint(
+ query, &decorated_word, &baseline_point));
render_text->SetText(ASCIIToUTF16("abc"));
query = render_text->GetCursorBounds(SelectionModel(0, CURSOR_FORWARD), false)
.origin();
- EXPECT_TRUE(render_text->GetDecoratedWordAtPoint(query, &decorated_word,
- &baseline_point));
+ EXPECT_TRUE(render_text->GetDecoratedWordAndBaselineAtPoint(
+ query, &decorated_word, &baseline_point));
// False should be returned for obscured text.
render_text->SetObscured(true);
query = render_text->GetCursorBounds(SelectionModel(0, CURSOR_FORWARD), false)
.origin();
- EXPECT_FALSE(render_text->GetDecoratedWordAtPoint(query, &decorated_word,
- &baseline_point));
+ EXPECT_FALSE(render_text->GetDecoratedWordAndBaselineAtPoint(
+ query, &decorated_word, &baseline_point));
}
// Tests text selection made at end points of individual lines of multiline
« no previous file with comments | « ui/gfx/render_text.cc ('k') | ui/strings/ui_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698