Commit 50b6fa15 authored by karandeepb's avatar karandeepb Committed by Commit bot

Use parameterized tests to test multiple render text implementations.

Currently, on Mac most of the tests in render_text_unittest.cc use
RenderText::CreateInstance to create their render text instance. Also, many
tests which would fail on Mac with RenderTextMac are not compiled on Mac. As a
result there is negligible test coverage for RenderTextHarfBuzz on Mac.

This CL uses parameterized tests to test both RenderTextMac and
RenderTextHarfBuzz on Mac. It does this by introducing three new test fixture
classes which support parameterized tests-
-RenderTextTest
-RenderTextHarfBuzzTest
-RenderTextMacTest
The test helper class RenderTextAllBackends is removed.

Before this CL, 65 tests in render_text_unittest.cc are run on Mac. After this
CL, a total of 129 tests in render_text_unittest.cc are run on Mac.

BUG=639194

Review-Url: https://codereview.chromium.org/2251893004
Cr-Commit-Position: refs/heads/master@{#414644}
parent ad86c212
# http://crbug.com/222606 # http://crbug.com/222606
RenderTextTest.DisplayRectShowsCursorLTR RenderTextHarfBuzzTest.DisplayRectShowsCursorLTR
# http://crbug.com/370168 # http://crbug.com/370168
TouchExplorationTest.* TouchExplorationTest.*
......
...@@ -80,7 +80,7 @@ class GFX_EXPORT PlatformFontWin : public PlatformFont { ...@@ -80,7 +80,7 @@ class GFX_EXPORT PlatformFontWin : public PlatformFont {
static int GetFontSize(const LOGFONT& font_info); static int GetFontSize(const LOGFONT& font_info);
private: private:
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_UniscribeFallback); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_UniscribeFallback);
FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, Metrics_SkiaVersusGDI); FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, Metrics_SkiaVersusGDI);
FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, DirectWriteFontSubstitution); FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, DirectWriteFontSubstitution);
...@@ -128,7 +128,8 @@ class GFX_EXPORT PlatformFontWin : public PlatformFont { ...@@ -128,7 +128,8 @@ class GFX_EXPORT PlatformFontWin : public PlatformFont {
private: private:
friend class base::RefCounted<HFontRef>; friend class base::RefCounted<HFontRef>;
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_UniscribeFallback); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
HarfBuzz_UniscribeFallback);
FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, Metrics_SkiaVersusGDI); FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, Metrics_SkiaVersusGDI);
FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, DirectWriteFontSubstitution); FRIEND_TEST_ALL_PREFIXES(PlatformFontWinTest, DirectWriteFontSubstitution);
......
...@@ -654,7 +654,7 @@ class GFX_EXPORT RenderText { ...@@ -654,7 +654,7 @@ class GFX_EXPORT RenderText {
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, SetStyles); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, SetStyles);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ApplyStyles); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ApplyStyles);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, AppendTextKeepsStyles); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, AppendTextKeepsStyles);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ObscuredText); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, ObscuredText);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, RevealObscuredText); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, RevealObscuredText);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedText); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedText);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedObscuredText); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedObscuredText);
...@@ -665,18 +665,18 @@ class GFX_EXPORT RenderText { ...@@ -665,18 +665,18 @@ class GFX_EXPORT RenderText {
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_MinWidth);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_NormalWidth);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_SufficientWidth);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_Newline);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_WordWrapBehavior); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_WordWrapBehavior);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_LineBreakerBehavior); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_LineBreakerBehavior);
FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
Multiline_SurrogatePairsOrCombiningChars); Multiline_SurrogatePairsOrCombiningChars);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_ZeroWidthChars); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_ZeroWidthChars);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, NewlineWithoutMultilineFlag); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, NewlineWithoutMultilineFlag);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GlyphBounds); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, GlyphBounds);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_GlyphBounds);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, FRIEND_TEST_ALL_PREFIXES(RenderTextTest,
MoveCursorLeftRight_MeiryoUILigatures); MoveCursorLeftRight_MeiryoUILigatures);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Win_LogicalClusters); FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Win_LogicalClusters);
......
...@@ -474,7 +474,7 @@ class HarfBuzzLineBreaker { ...@@ -474,7 +474,7 @@ class HarfBuzzLineBreaker {
// |max_width_| might be smaller than a single character. In this case we // |max_width_| might be smaller than a single character. In this case we
// need to put at least one character in the line. Note that, we should // need to put at least one character in the line. Note that, we should
// not separate surrogate pair or combining characters. // not separate surrogate pair or combining characters.
// See RenderTextTest.Multiline_MinWidth for an example. // See RenderTextHarfBuzzTest.Multiline_MinWidth for an example.
if (width == 0 && available_width_ == max_width_) { if (width == 0 && available_width_ == max_width_) {
end_pos = std::min( end_pos = std::min(
segment.char_range.end(), segment.char_range.end(),
......
...@@ -179,25 +179,29 @@ class GFX_EXPORT RenderTextHarfBuzz : public RenderText { ...@@ -179,25 +179,29 @@ class GFX_EXPORT RenderTextHarfBuzz : public RenderText {
private: private:
friend class test::RenderTextTestApi; friend class test::RenderTextTestApi;
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_HorizontalAlignment); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth); Multiline_HorizontalAlignment);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_WordWrapBehavior); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_NormalWidth);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_RunDirection); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_WordWrapBehavior);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_HorizontalPositions); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_RunDirection);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
HarfBuzz_TextPositionWithFractionalSize); HarfBuzz_HorizontalPositions);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_BreakRunsByUnicodeBlocks); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_BreakRunsByEmoji); HarfBuzz_BreakRunsByUnicodeBlocks);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_BreakRunsByAscii); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_BreakRunsByEmoji);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_SubglyphGraphemeCases); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_BreakRunsByAscii);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_SubglyphGraphemePartition); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_NonExistentFont); HarfBuzz_SubglyphGraphemeCases);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_UniscribeFallback); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, HarfBuzz_UnicodeFallback); HarfBuzz_SubglyphGraphemePartition);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_LineBreakerBehavior); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_NonExistentFont);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_UniscribeFallback);
FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, HarfBuzz_UnicodeFallback);
FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
Multiline_LineBreakerBehavior);
FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest,
Multiline_SurrogatePairsOrCombiningChars); Multiline_SurrogatePairsOrCombiningChars);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_ZeroWidthChars); FRIEND_TEST_ALL_PREFIXES(RenderTextHarfBuzzTest, Multiline_ZeroWidthChars);
// Specify the width of a glyph for test. The width of glyphs is very // Specify the width of a glyph for test. The width of glyphs is very
// platform-dependent and environment-dependent. Otherwise multiline test // platform-dependent and environment-dependent. Otherwise multiline test
......
...@@ -60,7 +60,7 @@ class GFX_EXPORT RenderTextMac : public RenderText { ...@@ -60,7 +60,7 @@ class GFX_EXPORT RenderTextMac : public RenderText {
void DrawVisualText(internal::SkiaTextRenderer* renderer) override; void DrawVisualText(internal::SkiaTextRenderer* renderer) override;
private: private:
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Mac_ElidedText); FRIEND_TEST_ALL_PREFIXES(RenderTextMacTest, Mac_ElidedText);
struct TextRun { struct TextRun {
CTRunRef ct_run; CTRunRef ct_run;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment