Mark WebvttCue constructors private

Everyone should use the Builder.

PiperOrigin-RevId: 276468354
This commit is contained in:
ibaker 2019-10-24 13:35:09 +01:00 committed by Oliver Woodman
parent 47423b3100
commit d898122ec5
3 changed files with 54 additions and 23 deletions

View File

@ -16,7 +16,6 @@
package com.google.android.exoplayer2.text.webvtt; package com.google.android.exoplayer2.text.webvtt;
import android.text.Layout.Alignment; import android.text.Layout.Alignment;
import android.text.SpannableStringBuilder;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
@ -28,18 +27,17 @@ public final class WebvttCue extends Cue {
public final long startTime; public final long startTime;
public final long endTime; public final long endTime;
public WebvttCue(CharSequence text) { private WebvttCue(
this(0, 0, text); long startTime,
} long endTime,
CharSequence text,
public WebvttCue(long startTime, long endTime, CharSequence text) { Alignment textAlignment,
this(startTime, endTime, text, null, Cue.DIMEN_UNSET, Cue.TYPE_UNSET, Cue.TYPE_UNSET, float line,
Cue.DIMEN_UNSET, Cue.TYPE_UNSET, Cue.DIMEN_UNSET); @Cue.LineType int lineType,
} @Cue.AnchorType int lineAnchor,
float position,
public WebvttCue(long startTime, long endTime, CharSequence text, Alignment textAlignment, @Cue.AnchorType int positionAnchor,
float line, @Cue.LineType int lineType, @Cue.AnchorType int lineAnchor, float position, float width) {
@Cue.AnchorType int positionAnchor, float width) {
super(text, textAlignment, line, lineType, lineAnchor, position, positionAnchor, width); super(text, textAlignment, line, lineType, lineAnchor, position, positionAnchor, width);
this.startTime = startTime; this.startTime = startTime;
this.endTime = endTime; this.endTime = endTime;
@ -65,7 +63,7 @@ public final class WebvttCue extends Cue {
private long startTime; private long startTime;
private long endTime; private long endTime;
private SpannableStringBuilder text; private CharSequence text;
private Alignment textAlignment; private Alignment textAlignment;
private float line; private float line;
private int lineType; private int lineType;
@ -113,8 +111,8 @@ public final class WebvttCue extends Cue {
return this; return this;
} }
public Builder setText(SpannableStringBuilder aText) { public Builder setText(CharSequence text) {
text = aText; this.text = text;
return this; return this;
} }

View File

@ -102,7 +102,7 @@ import java.util.List;
} }
if (normalCueTextBuilder != null) { if (normalCueTextBuilder != null) {
// there were multiple normal cues, so create a new cue with all of the text // there were multiple normal cues, so create a new cue with all of the text
list.add(new WebvttCue(normalCueTextBuilder)); list.add(new WebvttCue.Builder().setText(normalCueTextBuilder).build());
} else if (firstNormalCue != null) { } else if (firstNormalCue != null) {
// there was only a single normal cue, so just add it to the list // there was only a single normal cue, so just add it to the list
list.add(firstNormalCue); list.add(firstNormalCue);

View File

@ -39,31 +39,64 @@ public class WebvttSubtitleTest {
private static final WebvttSubtitle emptySubtitle = new WebvttSubtitle(Collections.emptyList()); private static final WebvttSubtitle emptySubtitle = new WebvttSubtitle(Collections.emptyList());
private static final WebvttSubtitle simpleSubtitle; private static final WebvttSubtitle simpleSubtitle;
static { static {
ArrayList<WebvttCue> simpleSubtitleCues = new ArrayList<>(); ArrayList<WebvttCue> simpleSubtitleCues = new ArrayList<>();
WebvttCue firstCue = new WebvttCue(1000000, 2000000, FIRST_SUBTITLE_STRING); WebvttCue firstCue =
new WebvttCue.Builder()
.setStartTime(1000000)
.setEndTime(2000000)
.setText(FIRST_SUBTITLE_STRING)
.build();
simpleSubtitleCues.add(firstCue); simpleSubtitleCues.add(firstCue);
WebvttCue secondCue = new WebvttCue(3000000, 4000000, SECOND_SUBTITLE_STRING); WebvttCue secondCue =
new WebvttCue.Builder()
.setStartTime(3000000)
.setEndTime(4000000)
.setText(SECOND_SUBTITLE_STRING)
.build();
simpleSubtitleCues.add(secondCue); simpleSubtitleCues.add(secondCue);
simpleSubtitle = new WebvttSubtitle(simpleSubtitleCues); simpleSubtitle = new WebvttSubtitle(simpleSubtitleCues);
} }
private static final WebvttSubtitle overlappingSubtitle; private static final WebvttSubtitle overlappingSubtitle;
static { static {
ArrayList<WebvttCue> overlappingSubtitleCues = new ArrayList<>(); ArrayList<WebvttCue> overlappingSubtitleCues = new ArrayList<>();
WebvttCue firstCue = new WebvttCue(1000000, 3000000, FIRST_SUBTITLE_STRING); WebvttCue firstCue =
new WebvttCue.Builder()
.setStartTime(1000000)
.setEndTime(3000000)
.setText(FIRST_SUBTITLE_STRING)
.build();
overlappingSubtitleCues.add(firstCue); overlappingSubtitleCues.add(firstCue);
WebvttCue secondCue = new WebvttCue(2000000, 4000000, SECOND_SUBTITLE_STRING); WebvttCue secondCue =
new WebvttCue.Builder()
.setStartTime(2000000)
.setEndTime(4000000)
.setText(SECOND_SUBTITLE_STRING)
.build();
overlappingSubtitleCues.add(secondCue); overlappingSubtitleCues.add(secondCue);
overlappingSubtitle = new WebvttSubtitle(overlappingSubtitleCues); overlappingSubtitle = new WebvttSubtitle(overlappingSubtitleCues);
} }
private static final WebvttSubtitle nestedSubtitle; private static final WebvttSubtitle nestedSubtitle;
static { static {
ArrayList<WebvttCue> nestedSubtitleCues = new ArrayList<>(); ArrayList<WebvttCue> nestedSubtitleCues = new ArrayList<>();
WebvttCue firstCue = new WebvttCue(1000000, 4000000, FIRST_SUBTITLE_STRING); WebvttCue firstCue =
new WebvttCue.Builder()
.setStartTime(1000000)
.setEndTime(4000000)
.setText(FIRST_SUBTITLE_STRING)
.build();
nestedSubtitleCues.add(firstCue); nestedSubtitleCues.add(firstCue);
WebvttCue secondCue = new WebvttCue(2000000, 3000000, SECOND_SUBTITLE_STRING); WebvttCue secondCue =
new WebvttCue.Builder()
.setStartTime(2000000)
.setEndTime(3000000)
.setText(SECOND_SUBTITLE_STRING)
.build();
nestedSubtitleCues.add(secondCue); nestedSubtitleCues.add(secondCue);
nestedSubtitle = new WebvttSubtitle(nestedSubtitleCues); nestedSubtitle = new WebvttSubtitle(nestedSubtitleCues);
} }