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 e06edd8ded..496598bead 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 @@ -22,6 +22,7 @@ import android.text.Spanned; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; import android.text.style.UnderlineSpan; @@ -145,6 +146,9 @@ import java.util.regex.Pattern; ? absoluteSizeSpan.getSize() : absoluteSizeSpan.getSize() / displayDensity; return Util.formatInvariant("", sizeCssPx); + } else if (span instanceof RelativeSizeSpan) { + return Util.formatInvariant( + "", ((RelativeSizeSpan) span).getSizeChange()); } else if (span instanceof TypefaceSpan) { @Nullable String fontFamily = ((TypefaceSpan) span).getFamily(); return fontFamily != null @@ -185,7 +189,8 @@ import java.util.regex.Pattern; if (span instanceof ForegroundColorSpan || span instanceof BackgroundColorSpan || span instanceof HorizontalTextInVerticalContextSpan - || span instanceof AbsoluteSizeSpan) { + || span instanceof AbsoluteSizeSpan + || span instanceof RelativeSizeSpan) { return ""; } else if (span instanceof TypefaceSpan) { @Nullable String fontFamily = ((TypefaceSpan) span).getFamily(); 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 c64d5cabcf..fc4d044a53 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 @@ -25,6 +25,7 @@ import android.text.Spanned; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; import android.text.style.UnderlineSpan; @@ -130,6 +131,20 @@ public class SpannedToHtmlConverterTest { assertThat(html).isEqualTo("String with 10dp section"); } + @Test + public void convert_supportsRelativeSizeSpan() { + SpannableString spanned = new SpannableString("String with 10% section"); + spanned.setSpan( + new RelativeSizeSpan(/* proportion= */ 10), + "String with ".length(), + "String with 10%".length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + String html = SpannedToHtmlConverter.convert(spanned, displayDensity); + + assertThat(html).isEqualTo("String with 10% section"); + } + @Test public void convert_supportsTypefaceSpan() { SpannableString spanned = new SpannableString("String with Times New Roman section");