Index: ui/gfx/render_text_unittest.cc |
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc |
index ec33d957519196474fc9c6c8ae1ff0bed5792be2..5404dbcaf2409b39d42f88095a15d8032f542b6e 100644 |
--- a/ui/gfx/render_text_unittest.cc |
+++ b/ui/gfx/render_text_unittest.cc |
@@ -326,13 +326,14 @@ TEST_F(RenderTextTest, SetStyles) { |
const SkColor color = SK_ColorRED; |
render_text->SetColor(color); |
render_text->SetBaselineStyle(SUPERSCRIPT); |
- render_text->SetStyle(BOLD, true); |
+ render_text->SetWeight(Font::Weight::BOLD); |
render_text->SetStyle(UNDERLINE, false); |
const wchar_t* const cases[] = { kWeak, kLtr, L"Hello", kRtl, L"", L"" }; |
for (size_t i = 0; i < arraysize(cases); ++i) { |
EXPECT_TRUE(render_text->colors().EqualsValueForTesting(color)); |
EXPECT_TRUE(render_text->baselines().EqualsValueForTesting(SUPERSCRIPT)); |
- EXPECT_TRUE(render_text->styles()[BOLD].EqualsValueForTesting(true)); |
+ EXPECT_TRUE( |
+ render_text->weights().EqualsValueForTesting(Font::Weight::BOLD)); |
EXPECT_TRUE(render_text->styles()[UNDERLINE].EqualsValueForTesting(false)); |
render_text->SetText(WideToUTF16(cases[i])); |
@@ -351,7 +352,7 @@ TEST_F(RenderTextTest, ApplyStyles) { |
// Apply a ranged color and style and check the resulting breaks. |
render_text->ApplyColor(SK_ColorRED, Range(1, 4)); |
render_text->ApplyBaselineStyle(SUPERIOR, Range(2, 4)); |
- render_text->ApplyStyle(BOLD, true, Range(2, 5)); |
+ render_text->ApplyWeight(Font::Weight::BOLD, Range(2, 5)); |
std::vector<std::pair<size_t, SkColor> > expected_color; |
expected_color.push_back(std::pair<size_t, SkColor>(0, SK_ColorBLACK)); |
expected_color.push_back(std::pair<size_t, SkColor>(1, SK_ColorRED)); |
@@ -366,26 +367,30 @@ TEST_F(RenderTextTest, ApplyStyles) { |
std::pair<size_t, BaselineStyle>(4, NORMAL_BASELINE)); |
EXPECT_TRUE( |
render_text->baselines().EqualsForTesting(expected_baseline_style)); |
- std::vector<std::pair<size_t, bool> > expected_style; |
- expected_style.push_back(std::pair<size_t, bool>(0, false)); |
- expected_style.push_back(std::pair<size_t, bool>(2, true)); |
- expected_style.push_back(std::pair<size_t, bool>(5, false)); |
- EXPECT_TRUE(render_text->styles()[BOLD].EqualsForTesting(expected_style)); |
+ std::vector<std::pair<size_t, Font::Weight>> expected_weight; |
+ expected_weight.push_back( |
+ std::pair<size_t, Font::Weight>(0, Font::Weight::NORMAL)); |
+ expected_weight.push_back( |
+ std::pair<size_t, Font::Weight>(2, Font::Weight::BOLD)); |
+ expected_weight.push_back( |
+ std::pair<size_t, Font::Weight>(5, Font::Weight::NORMAL)); |
+ EXPECT_TRUE(render_text->weights().EqualsForTesting(expected_weight)); |
// Ensure that setting a value overrides the ranged values. |
render_text->SetColor(SK_ColorBLUE); |
EXPECT_TRUE(render_text->colors().EqualsValueForTesting(SK_ColorBLUE)); |
render_text->SetBaselineStyle(SUBSCRIPT); |
EXPECT_TRUE(render_text->baselines().EqualsValueForTesting(SUBSCRIPT)); |
- render_text->SetStyle(BOLD, false); |
- EXPECT_TRUE(render_text->styles()[BOLD].EqualsValueForTesting(false)); |
+ render_text->SetWeight(Font::Weight::NORMAL); |
+ EXPECT_TRUE( |
+ render_text->weights().EqualsValueForTesting(Font::Weight::NORMAL)); |
// Apply a value over the text end and check the resulting breaks (INT_MAX |
// should be used instead of the text length for the range end) |
const size_t text_length = render_text->text().length(); |
render_text->ApplyColor(SK_ColorRED, Range(0, text_length)); |
render_text->ApplyBaselineStyle(SUPERIOR, Range(0, text_length)); |
- render_text->ApplyStyle(BOLD, true, Range(2, text_length)); |
+ render_text->ApplyWeight(Font::Weight::BOLD, Range(2, text_length)); |
std::vector<std::pair<size_t, SkColor> > expected_color_end; |
expected_color_end.push_back(std::pair<size_t, SkColor>(0, SK_ColorRED)); |
EXPECT_TRUE(render_text->colors().EqualsForTesting(expected_color_end)); |
@@ -393,10 +398,12 @@ TEST_F(RenderTextTest, ApplyStyles) { |
expected_baseline_end.push_back( |
std::pair<size_t, BaselineStyle>(0, SUPERIOR)); |
EXPECT_TRUE(render_text->baselines().EqualsForTesting(expected_baseline_end)); |
- std::vector<std::pair<size_t, bool> > expected_style_end; |
- expected_style_end.push_back(std::pair<size_t, bool>(0, false)); |
- expected_style_end.push_back(std::pair<size_t, bool>(2, true)); |
- EXPECT_TRUE(render_text->styles()[BOLD].EqualsForTesting(expected_style_end)); |
+ std::vector<std::pair<size_t, Font::Weight>> expected_weight_end; |
+ expected_weight_end.push_back( |
+ std::pair<size_t, Font::Weight>(0, Font::Weight::NORMAL)); |
+ expected_weight_end.push_back( |
+ std::pair<size_t, Font::Weight>(2, Font::Weight::BOLD)); |
+ EXPECT_TRUE(render_text->weights().EqualsForTesting(expected_weight_end)); |
// Ensure ranged values adjust to accommodate text length changes. |
render_text->ApplyStyle(ITALIC, true, Range(0, 2)); |
@@ -753,16 +760,16 @@ TEST_F(RenderTextTest, MultilineElide) { |
// Apply a style that tweaks the layout to make sure elision is calculated |
// with these styles. This can expose a behavior in layout where text is |
// slightly different width. This must be done after |SetText()|. |
- render_text->ApplyStyle(gfx::BOLD, true, gfx::Range(1, 20)); |
- render_text->ApplyStyle(gfx::ITALIC, true, gfx::Range(1, 20)); |
- render_text->ApplyStyle(gfx::DIAGONAL_STRIKE, true, gfx::Range(1, 20)); |
+ render_text->ApplyWeight(Font::Weight::BOLD, Range(1, 20)); |
+ render_text->ApplyStyle(ITALIC, true, Range(1, 20)); |
+ render_text->ApplyStyle(DIAGONAL_STRIKE, true, Range(1, 20)); |
render_text->SetMultiline(true); |
render_text->SetElideBehavior(ELIDE_TAIL); |
render_text->SetMaxLines(3); |
- const gfx::Size size = render_text->GetStringSize(); |
+ const Size size = render_text->GetStringSize(); |
// Fit in 3 lines. (If we knew the width of a word, we could |
// anticipate word wrap better.) |
- render_text->SetDisplayRect(gfx::Rect((size.width() + 96) / 3, 0)); |
+ render_text->SetDisplayRect(Rect((size.width() + 96) / 3, 0)); |
// Trigger rendering. |
render_text->GetStringSize(); |
EXPECT_EQ(input_text, render_text->GetDisplayText()); |
@@ -774,7 +781,7 @@ TEST_F(RenderTextTest, MultilineElide) { |
// the edge of a word getting truncated, the estimate would be wrong |
// and it would wrap instead. |
for (int i = (size.width() - 12) / 3; i < (size.width() + 30) / 3; ++i) { |
- render_text->SetDisplayRect(gfx::Rect(i, 0)); |
+ render_text->SetDisplayRect(Rect(i, 0)); |
// Trigger rendering. |
render_text->GetStringSize(); |
actual_text = render_text->GetDisplayText(); |
@@ -801,13 +808,13 @@ TEST_F(RenderTextTest, MultilineElide) { |
TEST_F(RenderTextTest, ElidedEmail) { |
std::unique_ptr<RenderText> render_text(RenderText::CreateInstance()); |
render_text->SetText(ASCIIToUTF16("test@example.com")); |
- const gfx::Size size = render_text->GetStringSize(); |
+ const Size size = render_text->GetStringSize(); |
const base::string16 long_email = |
ASCIIToUTF16("longemailaddresstest@example.com"); |
render_text->SetText(long_email); |
render_text->SetElideBehavior(ELIDE_EMAIL); |
- render_text->SetDisplayRect(gfx::Rect(size)); |
+ render_text->SetDisplayRect(Rect(size)); |
EXPECT_GE(size.width(), render_text->GetStringSize().width()); |
EXPECT_GT(long_email.size(), render_text->GetDisplayText().size()); |
} |
@@ -1737,6 +1744,8 @@ TEST_F(RenderTextTest, SetFontList) { |
} |
TEST_F(RenderTextTest, StringSizeBoldWidth) { |
+ // TODO(mboc): Add some unittests for other weights (currently not |
+ // implemented because of test system font configuration). |
std::unique_ptr<RenderText> render_text(RenderText::CreateInstance()); |
render_text->SetText(UTF8ToUTF16("Hello World")); |
@@ -1744,12 +1753,18 @@ TEST_F(RenderTextTest, StringSizeBoldWidth) { |
EXPECT_GT(plain_width, 0); |
// Apply a bold style and check that the new width is greater. |
- render_text->SetStyle(BOLD, true); |
+ render_text->SetWeight(Font::Weight::BOLD); |
const int bold_width = render_text->GetStringSize().width(); |
EXPECT_GT(bold_width, plain_width); |
+#if defined(OS_WIN) |
+ render_text->SetWeight(Font::Weight::SEMIBOLD); |
+ const int semibold_width = render_text->GetStringSize().width(); |
+ EXPECT_GT(bold_width, semibold_width); |
+#endif |
+ |
// Now, apply a plain style over the first word only. |
- render_text->ApplyStyle(BOLD, false, Range(0, 5)); |
+ render_text->ApplyWeight(Font::Weight::NORMAL, Range(0, 5)); |
const int plain_bold_width = render_text->GetStringSize().width(); |
EXPECT_GT(plain_bold_width, plain_width); |
EXPECT_LT(plain_bold_width, bold_width); |
@@ -2431,26 +2446,26 @@ TEST_F(RenderTextTest, Multiline_NewlineCharacterReplacement) { |
TEST_F(RenderTextTest, Multiline_HorizontalAlignment) { |
const struct { |
const wchar_t* const text; |
- const gfx::HorizontalAlignment alignment; |
+ const HorizontalAlignment alignment; |
} kTestStrings[] = { |
- { L"abcdefghij\nhijkl", gfx::ALIGN_LEFT }, |
- { L"nhijkl\nabcdefghij", gfx::ALIGN_LEFT }, |
+ { L"abcdefghij\nhijkl", ALIGN_LEFT }, |
+ { L"nhijkl\nabcdefghij", ALIGN_LEFT }, |
// hebrew, 2nd line shorter |
{ L"\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7\n\x5d0\x5d1\x5d2\x5d3", |
- gfx::ALIGN_RIGHT }, |
+ ALIGN_RIGHT }, |
// hebrew, 2nd line longer |
{ L"\x5d0\x5d1\x5d2\x5d3\n\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7", |
- gfx::ALIGN_RIGHT }, |
+ ALIGN_RIGHT }, |
// arabic, 2nd line shorter |
{ L"\x62a\x62b\x62c\x62d\x62e\x62f\x630\n\x660\x661\x662\x663\x664", |
- gfx::ALIGN_RIGHT }, |
+ ALIGN_RIGHT }, |
// arabic, 2nd line longer |
{ L"\x660\x661\x662\x663\x664\n\x62a\x62b\x62c\x62d\x62e\x62f\x630", |
- gfx::ALIGN_RIGHT }, |
+ ALIGN_RIGHT }, |
}; |
const int kGlyphSize = 5; |
RenderTextHarfBuzz render_text; |
- render_text.SetHorizontalAlignment(gfx::ALIGN_TO_HEAD); |
+ render_text.SetHorizontalAlignment(ALIGN_TO_HEAD); |
render_text.set_glyph_width_for_test(kGlyphSize); |
render_text.SetDisplayRect(Rect(100, 1000)); |
render_text.SetMultiline(true); |
@@ -2462,7 +2477,7 @@ TEST_F(RenderTextTest, Multiline_HorizontalAlignment) { |
render_text.SetText(WideToUTF16(kTestStrings[i].text)); |
render_text.Draw(&canvas); |
ASSERT_LE(2u, render_text.lines().size()); |
- if (kTestStrings[i].alignment == gfx::ALIGN_LEFT) { |
+ if (kTestStrings[i].alignment == ALIGN_LEFT) { |
EXPECT_EQ(0, render_text.GetAlignmentOffset(0).x()); |
EXPECT_EQ(0, render_text.GetAlignmentOffset(1).x()); |
} else { |
@@ -3029,13 +3044,13 @@ TEST_F(RenderTextTest, HarfBuzz_WordWidthWithDiacritics) { |
RenderTextHarfBuzz render_text; |
const base::string16 kWord = WideToUTF16(L"\u0906\u092A\u0915\u0947 "); |
render_text.SetText(kWord); |
- const gfx::SizeF text_size = render_text.GetStringSizeF(); |
+ const SizeF text_size = render_text.GetStringSizeF(); |
render_text.SetText(kWord + kWord); |
render_text.SetMultiline(true); |
EXPECT_EQ(text_size.width() * 2, render_text.GetStringSizeF().width()); |
EXPECT_EQ(text_size.height(), render_text.GetStringSizeF().height()); |
- render_text.SetDisplayRect(gfx::Rect(0, 0, std::ceil(text_size.width()), 0)); |
+ render_text.SetDisplayRect(Rect(0, 0, std::ceil(text_size.width()), 0)); |
EXPECT_NEAR(text_size.width(), render_text.GetStringSizeF().width(), 1.0f); |
EXPECT_EQ(text_size.height() * 2, render_text.GetStringSizeF().height()); |
} |
@@ -3046,7 +3061,7 @@ TEST_F(RenderTextTest, StringFitsOwnWidth) { |
const base::string16 kString = ASCIIToUTF16("www.example.com"); |
render_text->SetText(kString); |
- render_text->ApplyStyle(BOLD, true, Range(0, 3)); |
+ render_text->ApplyWeight(Font::Weight::BOLD, Range(0, 3)); |
render_text->SetElideBehavior(ELIDE_TAIL); |
render_text->SetDisplayRect(Rect(0, 0, 500, 100)); |
@@ -3154,7 +3169,7 @@ TEST_F(RenderTextTest, TextDoesntClip) { |
render_text->ApplyBaselineStyle(SUPERIOR, Range(3, 4)); |
render_text->ApplyBaselineStyle(INFERIOR, Range(5, 6)); |
render_text->ApplyBaselineStyle(SUBSCRIPT, Range(7, 8)); |
- render_text->SetStyle(BOLD, true); |
+ render_text->SetWeight(Font::Weight::BOLD); |
render_text->SetDisplayRect( |
Rect(kTestSize, kTestSize, string_size.width(), string_size.height())); |
// Allow the RenderText to paint outside of its display rect. |
@@ -3284,8 +3299,8 @@ TEST_F(RenderTextTest, Mac_ElidedText) { |
RenderTextMac render_text; |
base::string16 text(ASCIIToUTF16("This is an example.")); |
render_text.SetText(text); |
- gfx::Size string_size = render_text.GetStringSize(); |
- render_text.SetDisplayRect(gfx::Rect(string_size)); |
+ Size string_size = render_text.GetStringSize(); |
+ render_text.SetDisplayRect(Rect(string_size)); |
render_text.EnsureLayout(); |
// NOTE: Character and glyph counts are only comparable for simple text. |
EXPECT_EQ(text.size(), |
@@ -3293,7 +3308,7 @@ TEST_F(RenderTextTest, Mac_ElidedText) { |
render_text.SetElideBehavior(ELIDE_TAIL); |
string_size.set_width(string_size.width() / 2); |
- render_text.SetDisplayRect(gfx::Rect(string_size)); |
+ render_text.SetDisplayRect(Rect(string_size)); |
render_text.EnsureLayout(); |
CFIndex glyph_count = CTLineGetGlyphCount(render_text.line_); |
EXPECT_GT(text.size(), static_cast<size_t>(glyph_count)); |
@@ -3332,7 +3347,7 @@ TEST_F(RenderTextTest, StylePropagated) { |
// of weird weights and style, which are preserved by PlatformFontMac, but do |
// not map simply to a SkTypeface::Style (the full details in SkFontStyle is |
// needed). They also vary depending on the OS version, so set a known font. |
- gfx::FontList font_list(gfx::Font("Arial", 10)); |
+ FontList font_list(Font("Arial", 10)); |
while (backend.Advance()) { |
SCOPED_TRACE(testing::Message() << "backend: " << backend.GetName()); |
@@ -3342,7 +3357,7 @@ TEST_F(RenderTextTest, StylePropagated) { |
backend.DrawVisualText(); |
EXPECT_EQ(SkTypeface::kNormal, backend.paint().getTypeface()->style()); |
- backend->SetStyle(TextStyle::BOLD, true); |
+ backend->SetWeight(Font::Weight::BOLD); |
backend.DrawVisualText(); |
EXPECT_EQ(SkTypeface::kBold, backend.paint().getTypeface()->style()); |
@@ -3350,7 +3365,7 @@ TEST_F(RenderTextTest, StylePropagated) { |
backend.DrawVisualText(); |
EXPECT_EQ(SkTypeface::kBoldItalic, backend.paint().getTypeface()->style()); |
- backend->SetStyle(TextStyle::BOLD, false); |
+ backend->SetWeight(Font::Weight::NORMAL); |
backend.DrawVisualText(); |
EXPECT_EQ(SkTypeface::kItalic, backend.paint().getTypeface()->style()); |
} |