From c4c826fbfe535cc5466812f4db2173c798049121 Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 7 May 2020 12:18:51 +0100 Subject: [PATCH] Add StrikethroughSpan support to SpannedToHtmlConverter PiperOrigin-RevId: 310332708 --- .../exoplayer2/ui/SpannedToHtmlConverter.java | 8 ++++++-- .../ui/SpannedToHtmlConverterTest.java | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverter.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverter.java index 8f61902205..4faab3107b 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverter.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverter.java @@ -23,6 +23,7 @@ import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; +import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; import android.text.style.UnderlineSpan; @@ -128,7 +129,9 @@ import java.util.regex.Pattern; @Nullable private static String getOpeningTag(Object span, float displayDensity) { - if (span instanceof ForegroundColorSpan) { + if (span instanceof StrikethroughSpan) { + return ""; + } else if (span instanceof ForegroundColorSpan) { ForegroundColorSpan colorSpan = (ForegroundColorSpan) span; return Util.formatInvariant( "", HtmlUtils.toCssRgba(colorSpan.getForegroundColor())); @@ -186,7 +189,8 @@ import java.util.regex.Pattern; @Nullable private static String getClosingTag(Object span) { - if (span instanceof ForegroundColorSpan + if (span instanceof StrikethroughSpan + || span instanceof ForegroundColorSpan || span instanceof BackgroundColorSpan || span instanceof HorizontalTextInVerticalContextSpan || span instanceof AbsoluteSizeSpan diff --git a/library/ui/src/test/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverterTest.java b/library/ui/src/test/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverterTest.java index ad62506324..f595d4233b 100644 --- a/library/ui/src/test/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverterTest.java +++ b/library/ui/src/test/java/com/google/android/exoplayer2/ui/SpannedToHtmlConverterTest.java @@ -26,6 +26,7 @@ import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; +import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; import android.text.style.UnderlineSpan; @@ -176,6 +177,22 @@ public class SpannedToHtmlConverterTest { assertThat(html).isEqualTo("String with unstyled section"); } + @Test + public void convert_supportsStrikethroughSpan() { + SpannableString spanned = new SpannableString("String with crossed-out section"); + spanned.setSpan( + new StrikethroughSpan(), + "String with ".length(), + "String with crossed-out".length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + String html = SpannedToHtmlConverter.convert(spanned, displayDensity); + + assertThat(html) + .isEqualTo( + "String with crossed-out section"); + } + @Test public void convert_supportsStyleSpan() { SpannableString spanned =