Revert "hide deprecated underline and strikethru"

This reverts commit a01bf9ab748836fc4bf271bd5024151bf1ce2e88.

Reason for revert: Breaking Android merge. They access setUnderlineText on their <shudder> subclass of SkPaint.

Original change's description:
> hide deprecated underline and strikethru
> 
> BUG=skia:6250
> 
> Change-Id: I85395e4960b16ab91237a74ff35e5b7588965512
> Reviewed-on: https://skia-review.googlesource.com/8600
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
> 

TBR=bungeman@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:6250

Change-Id: If55f69f061dc4439ca2faa62807a9c5694ebbeb4
Reviewed-on: https://skia-review.googlesource.com/8687
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/fuzz/FilterFuzz.cpp b/fuzz/FilterFuzz.cpp
index bd9e5fd..e3d30b5 100644
--- a/fuzz/FilterFuzz.cpp
+++ b/fuzz/FilterFuzz.cpp
@@ -525,6 +525,8 @@
     paint.setEmbeddedBitmapText(make_bool());
     paint.setAutohinted(make_bool());
     paint.setVerticalText(make_bool());
+    paint.setUnderlineText(make_bool());
+    paint.setStrikeThruText(make_bool());
     paint.setFakeBoldText(make_bool());
     paint.setDevKernText(make_bool());
     paint.setFilterQuality(make_filter_quality());
diff --git a/fuzz/FuzzDrawFunctions.cpp b/fuzz/FuzzDrawFunctions.cpp
index 521e44b..a30804f 100644
--- a/fuzz/FuzzDrawFunctions.cpp
+++ b/fuzz/FuzzDrawFunctions.cpp
@@ -137,6 +137,8 @@
     fuzz->next(&b);
     p.setLinearText(b);
     fuzz->next(&b);
+    p.setStrikeThruText(b);
+    fuzz->next(&b);
     p.setSubpixelText(b);
     fuzz->next(&x);
     p.setTextScaleX(x);
@@ -145,6 +147,8 @@
     fuzz->next(&x);
     p.setTextSize(x);
     fuzz->next(&b);
+    p.setUnderlineText(b);
+    fuzz->next(&b);
     p.setVerticalText(b);
 
     SkCanvas* cnv = surface->getCanvas();
diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp
index e74d7a9..c4c389a 100644
--- a/gm/texteffects.cpp
+++ b/gm/texteffects.cpp
@@ -195,6 +195,38 @@
         canvas->restore();
 }
 
+DEF_SIMPLE_GM(textunderstrike, canvas, 460, 680) {
+    canvas->clear(SK_ColorYELLOW);
+    SkPaint paint;
+    sk_tool_utils::set_portable_typeface(&paint);
+    paint.setTextSize(50);
+    paint.setStrokeWidth(5);
+    paint.setAntiAlias(true);
+
+    auto drawText = [&]() {
+        paint.setStyle(SkPaint::kFill_Style);
+        canvas->drawText("Hello", 5, 100, 50, paint);
+        paint.setStyle(SkPaint::kStroke_Style);
+        canvas->drawText("Hello", 5, 100, 100, paint);
+        canvas->translate(0, 100);
+    };
+
+    drawText();
+    paint.setUnderlineText(true);
+    drawText();
+    paint.setUnderlineText(false);
+    paint.setStrikeThruText(true);
+    drawText();
+    paint.setUnderlineText(true);
+    drawText();
+    paint.setColor(SK_ColorWHITE);
+    paint.setStyle(SkPaint::kStroke_Style);
+    canvas->drawText("Hello", 5, 100, 50, paint);
+    paint.setColor(SK_ColorBLUE);
+    paint.setStyle(SkPaint::kFill_Style);
+    canvas->drawText("Hello", 5, 100, 50, paint);
+}
+
 static SkPath create_underline(const SkTDArray<SkScalar>& intersections,
         SkScalar last, SkScalar finalPos,
         SkScalar uPos, SkScalar uWidth, SkScalar textSize) {
diff --git a/gn/android_framework_defines.gni b/gn/android_framework_defines.gni
index 43a309e..b693d28 100644
--- a/gn/android_framework_defines.gni
+++ b/gn/android_framework_defines.gni
@@ -16,5 +16,4 @@
   "SK_SUPPORT_LEGACY_SHADER_ISABITMAP",
   "SK_SUPPORT_LEGACY_EMBOSSMASKFILTER",
   "SK_SUPPORT_EXOTIC_CLIPOPS",
-  "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION",
 ]
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index f4b6db9..7a42238 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -101,6 +101,8 @@
     enum Flags {
         kAntiAlias_Flag       = 0x01,   //!< mask to enable antialiasing
         kDither_Flag          = 0x04,   //!< mask to enable dithering
+        kUnderlineText_Flag   = 0x08,   //!< mask to enable underline text
+        kStrikeThruText_Flag  = 0x10,   //!< mask to enable strike-thru text
         kFakeBoldText_Flag    = 0x20,   //!< mask to enable fake-bold text
         kLinearText_Flag      = 0x40,   //!< mask to enable linear-text
         kSubpixelText_Flag    = 0x80,   //!< mask to enable subpixel text positioning
@@ -113,12 +115,7 @@
         // when adding extra flags, note that the fFlags member is specified
         // with a bit-width and you'll have to expand it.
 
-        kAllFlags = 0xFFFF,
-
-#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
-        kUnderlineText_Flag   = 0x08,
-        kStrikeThruText_Flag  = 0x10,
-#endif
+        kAllFlags = 0xFFFF
     };
 
     /** Return the paint's flags. Use the Flag enum to test flag values.
@@ -232,16 +229,28 @@
     /** Helper for getFlags(), returning true if kUnderlineText_Flag bit is set
         @return true if the underlineText bit is set in the paint's flags.
     */
-#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
-    bool isUnderlineText() const { return false; }
-#endif
+    bool isUnderlineText() const {
+        return SkToBool(this->getFlags() & kUnderlineText_Flag);
+    }
+
+    /** Helper for setFlags(), setting or clearing the kUnderlineText_Flag bit
+        @param underlineText true to set the underlineText bit in the paint's
+                             flags, false to clear it.
+    */
+    void setUnderlineText(bool underlineText);
 
     /** Helper for getFlags(), returns true if kStrikeThruText_Flag bit is set
         @return true if the strikeThruText bit is set in the paint's flags.
     */
-#ifdef SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION
-    bool isStrikeThruText() const { return false; }
-#endif
+    bool isStrikeThruText() const {
+        return SkToBool(this->getFlags() & kStrikeThruText_Flag);
+    }
+
+    /** Helper for setFlags(), setting or clearing the kStrikeThruText_Flag bit
+        @param strikeThruText   true to set the strikeThruText bit in the
+                                paint's flags, false to clear it.
+    */
+    void setStrikeThruText(bool strikeThruText);
 
     /** Helper for getFlags(), returns true if kFakeBoldText_Flag bit is set
         @return true if the kFakeBoldText_Flag bit is set in the paint's flags.
diff --git a/public.bzl b/public.bzl
index 7975875..a69b760 100644
--- a/public.bzl
+++ b/public.bzl
@@ -596,7 +596,6 @@
     "SK_NO_ANALYTIC_AA",
     "SK_SUPPORT_LEGACY_BITMAP_SETPIXELREF",
     "SK_SUPPORT_LEGACY_CLIPOP_EXOTIC_NAMES",
-    "SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION",
 ]
 
 ################################################################################
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index d90476a..ef4eee8 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -495,6 +495,8 @@
     paint.setEmbeddedBitmapText(make_bool());
     paint.setAutohinted(make_bool());
     paint.setVerticalText(make_bool());
+    paint.setUnderlineText(make_bool());
+    paint.setStrikeThruText(make_bool());
     paint.setFakeBoldText(make_bool());
     paint.setDevKernText(make_bool());
     paint.setFilterQuality(make_filter_quality());
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 568ba6a..a2dfa73 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -245,6 +245,14 @@
     this->setFlags(set_clear_mask(fBitfields.fFlags, doVertical, kVerticalText_Flag));
 }
 
+void SkPaint::setUnderlineText(bool doUnderline) {
+    this->setFlags(set_clear_mask(fBitfields.fFlags, doUnderline, kUnderlineText_Flag));
+}
+
+void SkPaint::setStrikeThruText(bool doStrikeThru) {
+    this->setFlags(set_clear_mask(fBitfields.fFlags, doStrikeThru, kStrikeThruText_Flag));
+}
+
 void SkPaint::setFakeBoldText(bool doFakeBold) {
     this->setFlags(set_clear_mask(fBitfields.fFlags, doFakeBold, kFakeBoldText_Flag));
 }
@@ -2134,6 +2142,8 @@
         bool needSeparator = false;
         SkAddFlagToString(str, this->isAntiAlias(), "AntiAlias", &needSeparator);
         SkAddFlagToString(str, this->isDither(), "Dither", &needSeparator);
+        SkAddFlagToString(str, this->isUnderlineText(), "UnderlineText", &needSeparator);
+        SkAddFlagToString(str, this->isStrikeThruText(), "StrikeThruText", &needSeparator);
         SkAddFlagToString(str, this->isFakeBoldText(), "FakeBoldText", &needSeparator);
         SkAddFlagToString(str, this->isLinearText(), "LinearText", &needSeparator);
         SkAddFlagToString(str, this->isSubpixelText(), "SubpixelText", &needSeparator);
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index 817fc62..4065771 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -56,6 +56,8 @@
 private:
     const static uint32_t kFlagsMask =
         SkPaint::kAntiAlias_Flag          |
+        SkPaint::kUnderlineText_Flag      |
+        SkPaint::kStrikeThruText_Flag     |
         SkPaint::kFakeBoldText_Flag       |
         SkPaint::kLinearText_Flag         |
         SkPaint::kSubpixelText_Flag       |
diff --git a/tests/TextBlobTest.cpp b/tests/TextBlobTest.cpp
index 09389a4..dafbe74 100644
--- a/tests/TextBlobTest.cpp
+++ b/tests/TextBlobTest.cpp
@@ -186,6 +186,8 @@
         font.setTextAlign(SkPaint::kCenter_Align);
         font.setHinting(SkPaint::kFull_Hinting);
         font.setAntiAlias(true);
+        font.setUnderlineText(true);
+        font.setStrikeThruText(true);
         font.setFakeBoldText(true);
         font.setLinearText(true);
         font.setSubpixelText(true);
@@ -205,6 +207,8 @@
         REPORTER_ASSERT(reporter, defaultPaint.getTextAlign() != font.getTextAlign());
         REPORTER_ASSERT(reporter, defaultPaint.getHinting() != font.getHinting());
         REPORTER_ASSERT(reporter, defaultPaint.isAntiAlias() != font.isAntiAlias());
+        REPORTER_ASSERT(reporter, defaultPaint.isUnderlineText() != font.isUnderlineText());
+        REPORTER_ASSERT(reporter, defaultPaint.isStrikeThruText() != font.isStrikeThruText());
         REPORTER_ASSERT(reporter, defaultPaint.isFakeBoldText() != font.isFakeBoldText());
         REPORTER_ASSERT(reporter, defaultPaint.isLinearText() != font.isLinearText());
         REPORTER_ASSERT(reporter, defaultPaint.isSubpixelText() != font.isSubpixelText());
@@ -234,6 +238,8 @@
             REPORTER_ASSERT(reporter, paint.getTextAlign() == font.getTextAlign());
             REPORTER_ASSERT(reporter, paint.getHinting() == font.getHinting());
             REPORTER_ASSERT(reporter, paint.isAntiAlias() == font.isAntiAlias());
+            REPORTER_ASSERT(reporter, paint.isUnderlineText() == font.isUnderlineText());
+            REPORTER_ASSERT(reporter, paint.isStrikeThruText() == font.isStrikeThruText());
             REPORTER_ASSERT(reporter, paint.isFakeBoldText() == font.isFakeBoldText());
             REPORTER_ASSERT(reporter, paint.isLinearText() == font.isLinearText());
             REPORTER_ASSERT(reporter, paint.isSubpixelText() == font.isSubpixelText());
diff --git a/tools/viewer/sk_app/CommandSet.cpp b/tools/viewer/sk_app/CommandSet.cpp
index 689b97f..f6568ec 100644
--- a/tools/viewer/sk_app/CommandSet.cpp
+++ b/tools/viewer/sk_app/CommandSet.cpp
@@ -112,6 +112,7 @@
 
     SkPaint groupPaint;
     groupPaint.setTextSize(18);
+    groupPaint.setUnderlineText(true);
     groupPaint.setAntiAlias(true);
     groupPaint.setColor(0xFFFFFFFF);