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 6aa0493dc4..8d0760e35c 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 @@ -174,7 +174,7 @@ import java.util.regex.Pattern; } } else if (span instanceof RubySpan) { RubySpan rubySpan = (RubySpan) span; - return "" + rubySpan.rubyText + ""; + return "" + escapeHtml(rubySpan.rubyText) + ""; } else if (span instanceof UnderlineSpan) { return ""; } 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 11eda1012e..5e572fa623 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 @@ -95,38 +95,35 @@ public class SpannedToHtmlConverterTest { } @Test - public void convert_supportsRubySpan_over() { - SpannableString spanned = new SpannableString("String with over-annotated section"); + public void convert_supportsRubySpan() { + SpannableString spanned = + new SpannableString("String with over-annotated and under-annotated section"); spanned.setSpan( new RubySpan("ruby-text", RubySpan.POSITION_OVER), "String with ".length(), "String with over-annotated".length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - - String html = SpannedToHtmlConverter.convert(spanned); - - assertThat(html) - .isEqualTo( - "String with over-annotatedruby-text" - + " section"); - } - - @Test - public void convert_supportsRubySpan_under() { - SpannableString spanned = new SpannableString("String with under-annotated section"); spanned.setSpan( - new RubySpan("ruby-text", RubySpan.POSITION_UNDER), - "String with ".length(), - "String with under-annotated".length(), + new RubySpan("non-àscìì-text", RubySpan.POSITION_UNDER), + "String with over-annotated and ".length(), + "String with over-annotated and under-annotated".length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); String html = SpannedToHtmlConverter.convert(spanned); assertThat(html) .isEqualTo( - "String with" - + " under-annotatedruby-text" - + " section"); + "String with " + + "" + + "over-annotated" + + "ruby-text" + + " " + + "and " + + "" + + "under-annotated" + + "non-àscìì-text" + + " " + + "section"); } @Test