Fix broken unit test in TtmlDecoder.textEmphasis()

- Merge RUBY_POSITION with TEXT_EMPHASIS_POSITION in TtmlNode
This commit is contained in:
Denise LaFayette 2021-03-04 16:06:56 -08:00
parent 4ad6454713
commit 60a3af8d77
5 changed files with 37 additions and 22 deletions

BIN
library/core/jacoco.exec Normal file

Binary file not shown.

View File

@ -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;
}

View File

@ -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:

View File

@ -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;

View File

@ -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);