Fix aliased Edging in PaintFlags::ToSkFont()

PaintFlags::ToSkFont() assumes the default SkFont Edging is kAliased,
but that is no longer the case.

Set kAliased Edging explicitly when AA is disabled.

Bug: 918030
Change-Id: Ia8b38a1190a70eff109d4f9c9ddf50bdcb3b3f56
Reviewed-on: https://chromium-review.googlesource.com/c/1409343
Reviewed-by: enne <enne@chromium.org>
Reviewed-by: Michael Wasserman <msw@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622553}
diff --git a/cc/paint/paint_flags.cc b/cc/paint/paint_flags.cc
index 3103b7a..e2e1c7f 100644
--- a/cc/paint/paint_flags.cc
+++ b/cc/paint/paint_flags.cc
@@ -159,6 +159,8 @@
     } else {
       font.setEdging(SkFont::Edging::kAntiAlias);
     }
+  } else {
+    font.setEdging(SkFont::Edging::kAlias);
   }
   return font;
 }
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 192e9a3..38a7093 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -4511,6 +4511,47 @@
   EXPECT_FALSE(GetRendererPaint().isLCDRenderText());
 }
 
+// Ensure the SkFont Edging is computed accurately.
+TEST_F(RenderTextTest, SkFontEdging) {
+  const auto edging = [this]() {
+    return GetRendererPaint().ToSkFont().getEdging();
+  };
+
+  FontRenderParams params;
+  EXPECT_TRUE(params.antialiasing);
+  EXPECT_EQ(params.subpixel_rendering,
+            FontRenderParams::SUBPIXEL_RENDERING_NONE);
+
+  // aa: true, subpixel: false, subpixel_suppressed: false -> kAntiAlias
+  renderer()->SetFontRenderParams(params,
+                                  false /*subpixel_rendering_suppressed*/);
+  EXPECT_EQ(edging(), SkFont::Edging::kAntiAlias);
+
+  // aa: false, subpixel: false, subpixel_suppressed: false -> kAlias
+  params.antialiasing = false;
+  renderer()->SetFontRenderParams(params,
+                                  false /*subpixel_rendering_suppressed*/);
+  EXPECT_EQ(edging(), SkFont::Edging::kAlias);
+
+  // aa: true, subpixel: true, subpixel_suppressed: false -> kSubpixelAntiAlias
+  params.antialiasing = true;
+  params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB;
+  renderer()->SetFontRenderParams(params,
+                                  false /*subpixel_rendering_suppressed*/);
+  EXPECT_EQ(edging(), SkFont::Edging::kSubpixelAntiAlias);
+
+  // aa: true, subpixel: true, subpixel_suppressed: true -> kAntiAlias
+  renderer()->SetFontRenderParams(params,
+                                  true /*subpixel_rendering_suppressed*/);
+  EXPECT_EQ(edging(), SkFont::Edging::kAntiAlias);
+
+  // aa: false, subpixel: true, subpixel_suppressed: false -> kAlias
+  params.antialiasing = false;
+  renderer()->SetFontRenderParams(params,
+                                  false /*subpixel_rendering_suppressed*/);
+  EXPECT_EQ(edging(), SkFont::Edging::kAlias);
+}
+
 // Verify GetWordLookupDataAtPoint returns the correct baseline point and
 // decorated word for an LTR string.
 TEST_F(RenderTextTest, GetWordLookupDataAtPoint_LTR) {