diff --git a/library/core/jacoco.exec b/library/core/jacoco.exec new file mode 100644 index 0000000000..874c67f359 Binary files /dev/null and b/library/core/jacoco.exec differ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TextEmphasis.java b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TextEmphasis.java index d7b874d511..8b03cc12df 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TextEmphasis.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TextEmphasis.java @@ -55,20 +55,19 @@ import java.util.Set; MARK_AUTO }) - /* package */ @interface Mark { + @interface Mark { } /** * The mark style of the text emphasis. */ - /* package */@Mark - final int mark; + @Mark final int mark; /** * Position to be resolved at rendering time. Hence, it is not defined in * {@link TextAnnotation.Position} */ - public static final int POSITION_OUTSIDE = 1 << 8; + static final int POSITION_OUTSIDE = 1 << 8; @Documented @Retention(SOURCE) @@ -78,13 +77,12 @@ import java.util.Set; // Extending the definition in TextAnnotation.Position for intermediate values POSITION_OUTSIDE }) - public @interface Position {} + @interface Position {} /** * The position of the text emphasis relative to the base text. */ - @Position - public final int position; + @Position final int position; private static Set markValues = ImmutableSet.of( TtmlNode.TEXT_EMPHASIS_AUTO, @@ -99,9 +97,9 @@ import java.util.Set; ); private static Set positionValues = ImmutableSet.of( - TtmlNode.TEXT_EMPHASIS_POSITION_AFTER, - TtmlNode.TEXT_EMPHASIS_POSITION_BEFORE, - TtmlNode.TEXT_EMPHASIS_POSITION_OUTSIDE + TtmlNode.ANNOTATION_POSITION_AFTER, + TtmlNode.ANNOTATION_POSITION_BEFORE, + TtmlNode.ANNOTATION_POSITION_OUTSIDE ); private TextEmphasis(@Mark int mark, @TextAnnotation.Position int position) { @@ -175,13 +173,13 @@ import java.util.Set; @Position int position = POSITION_OUTSIDE; if (positionSet.size() == 1) { switch ((String) positionSet.iterator().next()) { - case TtmlNode.TEXT_EMPHASIS_POSITION_AFTER: + case TtmlNode.ANNOTATION_POSITION_AFTER: position = TextAnnotation.POSITION_AFTER; break; - case TtmlNode.TEXT_EMPHASIS_POSITION_OUTSIDE: + case TtmlNode.ANNOTATION_POSITION_OUTSIDE: position = POSITION_OUTSIDE; break; - case TtmlNode.TEXT_EMPHASIS_POSITION_BEFORE: + case TtmlNode.ANNOTATION_POSITION_BEFORE: default: position = TextAnnotation.POSITION_BEFORE; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlDecoder.java b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlDecoder.java index 873105b9c7..7aa46ddada 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlDecoder.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlDecoder.java @@ -582,10 +582,10 @@ public final class TtmlDecoder extends SimpleSubtitleDecoder { break; case TtmlNode.ATTR_TTS_RUBY_POSITION: switch (Util.toLowerInvariant(attributeValue)) { - case TtmlNode.RUBY_BEFORE: + case TtmlNode.ANNOTATION_POSITION_BEFORE: style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_BEFORE); break; - case TtmlNode.RUBY_AFTER: + case TtmlNode.ANNOTATION_POSITION_AFTER: style = createIfNull(style).setRubyPosition(TextAnnotation.POSITION_AFTER); break; default: diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlNode.java b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlNode.java index 0a22c76575..ba3dc90863 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlNode.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlNode.java @@ -80,9 +80,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; public static final String RUBY_TEXT_CONTAINER = "textContainer"; public static final String RUBY_DELIMITER = "delimiter"; - // Values for rubyPosition - public static final String RUBY_BEFORE = "before"; - public static final String RUBY_AFTER = "after"; + // Values for text annotation (i.e. ruby, text emphasis) position + public static final String ANNOTATION_POSITION_BEFORE = "before"; + public static final String ANNOTATION_POSITION_AFTER = "after"; + public static final String ANNOTATION_POSITION_OUTSIDE = "outside"; + // Values for textDecoration public static final String LINETHROUGH = "linethrough"; public static final String NO_LINETHROUGH = "nolinethrough"; @@ -116,10 +118,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; public static final String TEXT_EMPHASIS_MARK_FILLED = "filled"; public static final String TEXT_EMPHASIS_MARK_OPEN = "open"; - public static final String TEXT_EMPHASIS_POSITION_AFTER = "after"; - public static final String TEXT_EMPHASIS_POSITION_BEFORE = "before"; - public static final String TEXT_EMPHASIS_POSITION_OUTSIDE = "outside"; - @Nullable public final String tag; @Nullable public final String text; public final boolean isTextNode; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/truth/SpannedSubject.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/truth/SpannedSubject.java index fd0b484fcf..20109d29b9 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/truth/SpannedSubject.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/truth/SpannedSubject.java @@ -1218,6 +1218,25 @@ public final class SpannedSubject extends Subject { this.position = position; } + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + TextEmphasisSubject.MarkAndPosition that = (TextEmphasisSubject.MarkAndPosition) o; + return (position == that.position) && (mark == that.mark); + } + + @Override + public int hashCode() { + int result = 34613 * mark + position; + return result; + } + @Override public String toString() { return String.format("{mark=%s,position=%s}", mark, position);