Make download action custom data a byte[]
This may be preferable for using custom binary data, and it's still easy to store Strings if needed. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=195486817
This commit is contained in:
parent
9e122cbaf9
commit
4ee1daef0e
@ -73,7 +73,7 @@ public class DemoDownloadService extends DownloadService {
|
|||||||
R.drawable.exo_controls_play,
|
R.drawable.exo_controls_play,
|
||||||
CHANNEL_ID,
|
CHANNEL_ID,
|
||||||
/* contentIntent= */ null,
|
/* contentIntent= */ null,
|
||||||
taskState.action.data);
|
Util.fromUtf8Bytes(taskState.action.data));
|
||||||
} else if (taskState.state == TaskState.STATE_FAILED) {
|
} else if (taskState.state == TaskState.STATE_FAILED) {
|
||||||
notification =
|
notification =
|
||||||
DownloadNotificationUtil.buildDownloadFailedNotification(
|
DownloadNotificationUtil.buildDownloadFailedNotification(
|
||||||
@ -81,7 +81,7 @@ public class DemoDownloadService extends DownloadService {
|
|||||||
R.drawable.exo_controls_play,
|
R.drawable.exo_controls_play,
|
||||||
CHANNEL_ID,
|
CHANNEL_ID,
|
||||||
/* contentIntent= */ null,
|
/* contentIntent= */ null,
|
||||||
taskState.action.data);
|
Util.fromUtf8Bytes(taskState.action.data));
|
||||||
}
|
}
|
||||||
int notificationId = FOREGROUND_NOTIFICATION_ID + 1 + taskState.taskId;
|
int notificationId = FOREGROUND_NOTIFICATION_ID + 1 + taskState.taskId;
|
||||||
NotificationUtil.setNotification(this, notificationId, notification);
|
NotificationUtil.setNotification(this, notificationId, notification);
|
||||||
|
@ -275,7 +275,8 @@ public class DownloadActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public DownloadAction getDownloadAction(
|
public DownloadAction getDownloadAction(
|
||||||
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
||||||
return new DashDownloadAction(uri, isRemoveAction, sampleName, getTrackKeys(trackIndices));
|
return new DashDownloadAction(
|
||||||
|
uri, isRemoveAction, Util.getUtf8Bytes(sampleName), getTrackKeys(trackIndices));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,7 +311,8 @@ public class DownloadActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public DownloadAction getDownloadAction(
|
public DownloadAction getDownloadAction(
|
||||||
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
||||||
return new HlsDownloadAction(uri, isRemoveAction, sampleName, getTrackKeys(trackIndices));
|
return new HlsDownloadAction(
|
||||||
|
uri, isRemoveAction, Util.getUtf8Bytes(sampleName), getTrackKeys(trackIndices));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,7 +339,8 @@ public class DownloadActivity extends Activity {
|
|||||||
@Override
|
@Override
|
||||||
public DownloadAction getDownloadAction(
|
public DownloadAction getDownloadAction(
|
||||||
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
||||||
return new SsDownloadAction(uri, isRemoveAction, sampleName, getTrackKeys(trackIndices));
|
return new SsDownloadAction(
|
||||||
|
uri, isRemoveAction, Util.getUtf8Bytes(sampleName), getTrackKeys(trackIndices));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,7 +359,7 @@ public class DownloadActivity extends Activity {
|
|||||||
public DownloadAction getDownloadAction(
|
public DownloadAction getDownloadAction(
|
||||||
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
boolean isRemoveAction, String sampleName, int... trackIndices) {
|
||||||
return new ProgressiveDownloadAction(
|
return new ProgressiveDownloadAction(
|
||||||
uri, isRemoveAction, sampleName, /* customCacheKey= */ null);
|
uri, isRemoveAction, Util.getUtf8Bytes(sampleName), /* customCacheKey= */ null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import java.io.DataOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
/** Contains the necessary parameters for a download or remove action. */
|
/** Contains the necessary parameters for a download or remove action. */
|
||||||
public abstract class DownloadAction {
|
public abstract class DownloadAction {
|
||||||
@ -95,8 +96,8 @@ public abstract class DownloadAction {
|
|||||||
public final Uri uri;
|
public final Uri uri;
|
||||||
/** Whether this is a remove action. If false, this is a download action. */
|
/** Whether this is a remove action. If false, this is a download action. */
|
||||||
public final boolean isRemoveAction;
|
public final boolean isRemoveAction;
|
||||||
/** Custom data for this action, or the empty string if no custom data was specified. */
|
/** Custom data for this action. May be empty. */
|
||||||
public final String data;
|
public final byte[] data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param type The type of the action.
|
* @param type The type of the action.
|
||||||
@ -106,12 +107,12 @@ public abstract class DownloadAction {
|
|||||||
* @param data Optional custom data for this action.
|
* @param data Optional custom data for this action.
|
||||||
*/
|
*/
|
||||||
protected DownloadAction(
|
protected DownloadAction(
|
||||||
String type, int version, Uri uri, boolean isRemoveAction, @Nullable String data) {
|
String type, int version, Uri uri, boolean isRemoveAction, @Nullable byte[] data) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.uri = uri;
|
this.uri = uri;
|
||||||
this.isRemoveAction = isRemoveAction;
|
this.isRemoveAction = isRemoveAction;
|
||||||
this.data = data != null ? data : "";
|
this.data = data != null ? data : new byte[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Serializes itself into a byte array. */
|
/** Serializes itself into a byte array. */
|
||||||
@ -148,14 +149,14 @@ public abstract class DownloadAction {
|
|||||||
&& version == that.version
|
&& version == that.version
|
||||||
&& uri.equals(that.uri)
|
&& uri.equals(that.uri)
|
||||||
&& isRemoveAction == that.isRemoveAction
|
&& isRemoveAction == that.isRemoveAction
|
||||||
&& data.equals(that.data);
|
&& Arrays.equals(data, that.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int result = uri.hashCode();
|
int result = uri.hashCode();
|
||||||
result = 31 * result + (isRemoveAction ? 1 : 0);
|
result = 31 * result + (isRemoveAction ? 1 : 0);
|
||||||
result = 31 * result + data.hashCode();
|
result = 31 * result + Arrays.hashCode(data);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -654,8 +654,6 @@ public final class DownloadManager {
|
|||||||
+ ' '
|
+ ' '
|
||||||
+ (action.isRemoveAction ? "remove" : "download")
|
+ (action.isRemoveAction ? "remove" : "download")
|
||||||
+ ' '
|
+ ' '
|
||||||
+ action.data
|
|
||||||
+ ' '
|
|
||||||
+ getStateString();
|
+ getStateString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,9 @@ public final class ProgressiveDownloadAction extends DownloadAction {
|
|||||||
throws IOException {
|
throws IOException {
|
||||||
Uri uri = Uri.parse(input.readUTF());
|
Uri uri = Uri.parse(input.readUTF());
|
||||||
boolean isRemoveAction = input.readBoolean();
|
boolean isRemoveAction = input.readBoolean();
|
||||||
String data = input.readUTF();
|
int dataLength = input.readInt();
|
||||||
|
byte[] data = new byte[dataLength];
|
||||||
|
input.readFully(data);
|
||||||
String customCacheKey = input.readBoolean() ? input.readUTF() : null;
|
String customCacheKey = input.readBoolean() ? input.readUTF() : null;
|
||||||
return new ProgressiveDownloadAction(uri, isRemoveAction, data, customCacheKey);
|
return new ProgressiveDownloadAction(uri, isRemoveAction, data, customCacheKey);
|
||||||
}
|
}
|
||||||
@ -47,12 +49,12 @@ public final class ProgressiveDownloadAction extends DownloadAction {
|
|||||||
/**
|
/**
|
||||||
* @param uri Uri of the data to be downloaded.
|
* @param uri Uri of the data to be downloaded.
|
||||||
* @param isRemoveAction Whether this is a remove action. If false, this is a download action.
|
* @param isRemoveAction Whether this is a remove action. If false, this is a download action.
|
||||||
* @param data Optional custom data for this action. If null, an empty string is used.
|
* @param data Optional custom data for this action.
|
||||||
* @param customCacheKey A custom key that uniquely identifies the original stream. If not null it
|
* @param customCacheKey A custom key that uniquely identifies the original stream. If not null it
|
||||||
* is used for cache indexing.
|
* is used for cache indexing.
|
||||||
*/
|
*/
|
||||||
public ProgressiveDownloadAction(
|
public ProgressiveDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, @Nullable String data, @Nullable String customCacheKey) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, @Nullable String customCacheKey) {
|
||||||
super(TYPE, VERSION, uri, isRemoveAction, data);
|
super(TYPE, VERSION, uri, isRemoveAction, data);
|
||||||
this.customCacheKey = customCacheKey;
|
this.customCacheKey = customCacheKey;
|
||||||
}
|
}
|
||||||
@ -66,7 +68,8 @@ public final class ProgressiveDownloadAction extends DownloadAction {
|
|||||||
protected void writeToStream(DataOutputStream output) throws IOException {
|
protected void writeToStream(DataOutputStream output) throws IOException {
|
||||||
output.writeUTF(uri.toString());
|
output.writeUTF(uri.toString());
|
||||||
output.writeBoolean(isRemoveAction);
|
output.writeBoolean(isRemoveAction);
|
||||||
output.writeUTF(data);
|
output.writeInt(data.length);
|
||||||
|
output.write(data);
|
||||||
boolean customCacheKeySet = customCacheKey != null;
|
boolean customCacheKeySet = customCacheKey != null;
|
||||||
output.writeBoolean(customCacheKeySet);
|
output.writeBoolean(customCacheKeySet);
|
||||||
if (customCacheKeySet) {
|
if (customCacheKeySet) {
|
||||||
|
@ -48,7 +48,9 @@ public abstract class SegmentDownloadAction<K extends Comparable<K>> extends Dow
|
|||||||
throws IOException {
|
throws IOException {
|
||||||
Uri uri = Uri.parse(input.readUTF());
|
Uri uri = Uri.parse(input.readUTF());
|
||||||
boolean isRemoveAction = input.readBoolean();
|
boolean isRemoveAction = input.readBoolean();
|
||||||
String data = input.readUTF();
|
int dataLength = input.readInt();
|
||||||
|
byte[] data = new byte[dataLength];
|
||||||
|
input.readFully(data);
|
||||||
int keyCount = input.readInt();
|
int keyCount = input.readInt();
|
||||||
List<K> keys = new ArrayList<>();
|
List<K> keys = new ArrayList<>();
|
||||||
for (int i = 0; i < keyCount; i++) {
|
for (int i = 0; i < keyCount; i++) {
|
||||||
@ -62,7 +64,7 @@ public abstract class SegmentDownloadAction<K extends Comparable<K>> extends Dow
|
|||||||
|
|
||||||
/** Returns a {@link DownloadAction}. */
|
/** Returns a {@link DownloadAction}. */
|
||||||
protected abstract DownloadAction createDownloadAction(
|
protected abstract DownloadAction createDownloadAction(
|
||||||
Uri manifestUri, boolean isRemoveAction, String data, List<K> keys);
|
Uri manifestUri, boolean isRemoveAction, byte[] data, List<K> keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final List<K> keys;
|
public final List<K> keys;
|
||||||
@ -72,7 +74,7 @@ public abstract class SegmentDownloadAction<K extends Comparable<K>> extends Dow
|
|||||||
* @param version The action version.
|
* @param version The action version.
|
||||||
* @param uri The URI of the media being downloaded.
|
* @param uri The URI of the media being downloaded.
|
||||||
* @param isRemoveAction Whether the data will be removed. If {@code false} it will be downloaded.
|
* @param isRemoveAction Whether the data will be removed. If {@code false} it will be downloaded.
|
||||||
* @param data Optional custom data for this action.
|
* @param data Optional custom data for this action. If {@code null} an empty array will be used.
|
||||||
* @param keys Keys of tracks to be downloaded. If empty, all tracks will be downloaded. If {@code
|
* @param keys Keys of tracks to be downloaded. If empty, all tracks will be downloaded. If {@code
|
||||||
* removeAction} is true, {@code keys} must be empty.
|
* removeAction} is true, {@code keys} must be empty.
|
||||||
*/
|
*/
|
||||||
@ -81,7 +83,7 @@ public abstract class SegmentDownloadAction<K extends Comparable<K>> extends Dow
|
|||||||
int version,
|
int version,
|
||||||
Uri uri,
|
Uri uri,
|
||||||
boolean isRemoveAction,
|
boolean isRemoveAction,
|
||||||
@Nullable String data,
|
@Nullable byte[] data,
|
||||||
List<K> keys) {
|
List<K> keys) {
|
||||||
super(type, version, uri, isRemoveAction, data);
|
super(type, version, uri, isRemoveAction, data);
|
||||||
if (isRemoveAction) {
|
if (isRemoveAction) {
|
||||||
@ -98,7 +100,8 @@ public abstract class SegmentDownloadAction<K extends Comparable<K>> extends Dow
|
|||||||
public final void writeToStream(DataOutputStream output) throws IOException {
|
public final void writeToStream(DataOutputStream output) throws IOException {
|
||||||
output.writeUTF(uri.toString());
|
output.writeUTF(uri.toString());
|
||||||
output.writeBoolean(isRemoveAction);
|
output.writeBoolean(isRemoveAction);
|
||||||
output.writeUTF(data);
|
output.writeInt(data.length);
|
||||||
|
output.write(data);
|
||||||
output.writeInt(keys.size());
|
output.writeInt(keys.size());
|
||||||
for (int i = 0; i < keys.size(); i++) {
|
for (int i = 0; i < keys.size(); i++) {
|
||||||
writeKey(output, keys.get(i));
|
writeKey(output, keys.get(i));
|
||||||
|
@ -80,6 +80,7 @@ public class ActionFileTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLoadAction() throws Exception {
|
public void testLoadAction() throws Exception {
|
||||||
|
byte[] data = Util.getUtf8Bytes("321");
|
||||||
DownloadAction[] actions =
|
DownloadAction[] actions =
|
||||||
loadActions(
|
loadActions(
|
||||||
new Object[] {
|
new Object[] {
|
||||||
@ -87,16 +88,18 @@ public class ActionFileTest {
|
|||||||
1, // Action count
|
1, // Action count
|
||||||
"type2", // Action 1
|
"type2", // Action 1
|
||||||
FakeDownloadAction.VERSION,
|
FakeDownloadAction.VERSION,
|
||||||
"321"
|
data,
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type2"));
|
new FakeDeserializer("type2"));
|
||||||
assertThat(actions).isNotNull();
|
assertThat(actions).isNotNull();
|
||||||
assertThat(actions).hasLength(1);
|
assertThat(actions).hasLength(1);
|
||||||
assertAction(actions[0], "type2", FakeDownloadAction.VERSION, "321");
|
assertAction(actions[0], "type2", FakeDownloadAction.VERSION, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLoadActions() throws Exception {
|
public void testLoadActions() throws Exception {
|
||||||
|
byte[] data1 = Util.getUtf8Bytes("123");
|
||||||
|
byte[] data2 = Util.getUtf8Bytes("321");
|
||||||
DownloadAction[] actions =
|
DownloadAction[] actions =
|
||||||
loadActions(
|
loadActions(
|
||||||
new Object[] {
|
new Object[] {
|
||||||
@ -104,17 +107,17 @@ public class ActionFileTest {
|
|||||||
2, // Action count
|
2, // Action count
|
||||||
"type1", // Action 1
|
"type1", // Action 1
|
||||||
FakeDownloadAction.VERSION,
|
FakeDownloadAction.VERSION,
|
||||||
"123",
|
data1,
|
||||||
"type2", // Action 2
|
"type2", // Action 2
|
||||||
FakeDownloadAction.VERSION,
|
FakeDownloadAction.VERSION,
|
||||||
"321"
|
data2,
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type1"),
|
new FakeDeserializer("type1"),
|
||||||
new FakeDeserializer("type2"));
|
new FakeDeserializer("type2"));
|
||||||
assertThat(actions).isNotNull();
|
assertThat(actions).isNotNull();
|
||||||
assertThat(actions).hasLength(2);
|
assertThat(actions).hasLength(2);
|
||||||
assertAction(actions[0], "type1", FakeDownloadAction.VERSION, "123");
|
assertAction(actions[0], "type1", FakeDownloadAction.VERSION, data1);
|
||||||
assertAction(actions[1], "type2", FakeDownloadAction.VERSION, "321");
|
assertAction(actions[1], "type2", FakeDownloadAction.VERSION, data2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -126,7 +129,7 @@ public class ActionFileTest {
|
|||||||
1, // Action count
|
1, // Action count
|
||||||
"type2", // Action 1
|
"type2", // Action 1
|
||||||
FakeDownloadAction.VERSION,
|
FakeDownloadAction.VERSION,
|
||||||
321
|
Util.getUtf8Bytes("321"),
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type2"));
|
new FakeDeserializer("type2"));
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
@ -144,7 +147,7 @@ public class ActionFileTest {
|
|||||||
1, // Action count
|
1, // Action count
|
||||||
"type2", // Action 1
|
"type2", // Action 1
|
||||||
FakeDownloadAction.VERSION + 1,
|
FakeDownloadAction.VERSION + 1,
|
||||||
321
|
Util.getUtf8Bytes("321"),
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type2"));
|
new FakeDeserializer("type2"));
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
@ -162,7 +165,7 @@ public class ActionFileTest {
|
|||||||
1, // Action count
|
1, // Action count
|
||||||
"type2", // Action 1
|
"type2", // Action 1
|
||||||
FakeDownloadAction.VERSION,
|
FakeDownloadAction.VERSION,
|
||||||
321
|
Util.getUtf8Bytes("321"),
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type1"));
|
new FakeDeserializer("type1"));
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
@ -180,7 +183,8 @@ public class ActionFileTest {
|
|||||||
public void testStoreAndLoadActions() throws Exception {
|
public void testStoreAndLoadActions() throws Exception {
|
||||||
doTestSerializationRoundTrip(
|
doTestSerializationRoundTrip(
|
||||||
new DownloadAction[] {
|
new DownloadAction[] {
|
||||||
new FakeDownloadAction("type1", "123"), new FakeDownloadAction("type2", "321"),
|
new FakeDownloadAction("type1", Util.getUtf8Bytes("123")),
|
||||||
|
new FakeDownloadAction("type2", Util.getUtf8Bytes("321")),
|
||||||
},
|
},
|
||||||
new FakeDeserializer("type1"),
|
new FakeDeserializer("type1"),
|
||||||
new FakeDeserializer("type2"));
|
new FakeDeserializer("type2"));
|
||||||
@ -203,6 +207,10 @@ public class ActionFileTest {
|
|||||||
dataOutputStream.writeInt((Integer) value);
|
dataOutputStream.writeInt((Integer) value);
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
dataOutputStream.writeUTF((String) value);
|
dataOutputStream.writeUTF((String) value);
|
||||||
|
} else if (value instanceof byte[]) {
|
||||||
|
byte[] data = (byte[]) value;
|
||||||
|
dataOutputStream.writeInt(data.length);
|
||||||
|
dataOutputStream.write(data);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
@ -213,7 +221,7 @@ public class ActionFileTest {
|
|||||||
return new ActionFile(tempFile).load(deserializers);
|
return new ActionFile(tempFile).load(deserializers);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertAction(DownloadAction action, String type, int version, String data) {
|
private static void assertAction(DownloadAction action, String type, int version, byte[] data) {
|
||||||
assertThat(action).isInstanceOf(FakeDownloadAction.class);
|
assertThat(action).isInstanceOf(FakeDownloadAction.class);
|
||||||
assertThat(action.type).isEqualTo(type);
|
assertThat(action.type).isEqualTo(type);
|
||||||
assertThat(((FakeDownloadAction) action).version).isEqualTo(version);
|
assertThat(((FakeDownloadAction) action).version).isEqualTo(version);
|
||||||
@ -228,7 +236,10 @@ public class ActionFileTest {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DownloadAction readFromStream(int version, DataInputStream input) throws IOException {
|
public DownloadAction readFromStream(int version, DataInputStream input) throws IOException {
|
||||||
return new FakeDownloadAction(type, input.readUTF());
|
int dataLength = input.readInt();
|
||||||
|
byte[] data = new byte[dataLength];
|
||||||
|
input.readFully(data);
|
||||||
|
return new FakeDownloadAction(type, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,13 +247,14 @@ public class ActionFileTest {
|
|||||||
|
|
||||||
public static final int VERSION = 0;
|
public static final int VERSION = 0;
|
||||||
|
|
||||||
private FakeDownloadAction(String type, String data) {
|
private FakeDownloadAction(String type, byte[] data) {
|
||||||
super(type, VERSION, Uri.parse("http://test.com"), /* isRemoveAction= */ false, data);
|
super(type, VERSION, Uri.parse("http://test.com"), /* isRemoveAction= */ false, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeToStream(DataOutputStream output) throws IOException {
|
protected void writeToStream(DataOutputStream output) throws IOException {
|
||||||
output.writeUTF(data);
|
output.writeInt(data.length);
|
||||||
|
output.write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -42,7 +42,7 @@ public final class DashDownloadAction extends SegmentDownloadAction<Representati
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DownloadAction createDownloadAction(
|
protected DownloadAction createDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, List<RepresentationKey> keys) {
|
Uri uri, boolean isRemoveAction, byte[] data, List<RepresentationKey> keys) {
|
||||||
return new DashDownloadAction(uri, isRemoveAction, data, keys);
|
return new DashDownloadAction(uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -50,12 +50,12 @@ public final class DashDownloadAction extends SegmentDownloadAction<Representati
|
|||||||
/**
|
/**
|
||||||
* @param uri The DASH manifest URI.
|
* @param uri The DASH manifest URI.
|
||||||
* @param isRemoveAction Whether the data will be removed. If {@code false} it will be downloaded.
|
* @param isRemoveAction Whether the data will be removed. If {@code false} it will be downloaded.
|
||||||
* @param data Optional custom data for this action. If null, an empty string is used.
|
* @param data Optional custom data for this action.
|
||||||
* @param keys Keys of representations to be downloaded. If empty, all representations are
|
* @param keys Keys of representations to be downloaded. If empty, all representations are
|
||||||
* downloaded. If {@code removeAction} is true, {@code keys} must be empty.
|
* downloaded. If {@code removeAction} is true, {@code keys} must be empty.
|
||||||
*/
|
*/
|
||||||
public DashDownloadAction(
|
public DashDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, @Nullable String data, List<RepresentationKey> keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, List<RepresentationKey> keys) {
|
||||||
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ package com.google.android.exoplayer2.source.dash.offline;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.offline.DownloadAction;
|
import com.google.android.exoplayer2.offline.DownloadAction;
|
||||||
import com.google.android.exoplayer2.offline.DownloaderConstructorHelper;
|
import com.google.android.exoplayer2.offline.DownloaderConstructorHelper;
|
||||||
import com.google.android.exoplayer2.source.dash.manifest.RepresentationKey;
|
import com.google.android.exoplayer2.source.dash.manifest.RepresentationKey;
|
||||||
@ -196,7 +197,7 @@ public class DashDownloadActionTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DashDownloadAction newAction(
|
private static DashDownloadAction newAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, RepresentationKey... keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, RepresentationKey... keys) {
|
||||||
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
||||||
Collections.addAll(keysList, keys);
|
Collections.addAll(keysList, keys);
|
||||||
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
||||||
|
@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.ConditionVariable;
|
import android.os.ConditionVariable;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.offline.DownloadManager;
|
import com.google.android.exoplayer2.offline.DownloadManager;
|
||||||
import com.google.android.exoplayer2.offline.DownloaderConstructorHelper;
|
import com.google.android.exoplayer2.offline.DownloaderConstructorHelper;
|
||||||
import com.google.android.exoplayer2.source.dash.manifest.RepresentationKey;
|
import com.google.android.exoplayer2.source.dash.manifest.RepresentationKey;
|
||||||
@ -279,7 +280,7 @@ public class DownloadManagerDashTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DashDownloadAction newAction(
|
private static DashDownloadAction newAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, RepresentationKey... keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, RepresentationKey... keys) {
|
||||||
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
||||||
Collections.addAll(keysList, keys);
|
Collections.addAll(keysList, keys);
|
||||||
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
||||||
|
@ -237,7 +237,7 @@ public class DownloadServiceDashTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static DashDownloadAction newAction(
|
private static DashDownloadAction newAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, RepresentationKey... keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, RepresentationKey... keys) {
|
||||||
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
ArrayList<RepresentationKey> keysList = new ArrayList<>();
|
||||||
Collections.addAll(keysList, keys);
|
Collections.addAll(keysList, keys);
|
||||||
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
return new DashDownloadAction(uri, isRemoveAction, data, keysList);
|
||||||
|
@ -44,7 +44,7 @@ public final class HlsDownloadAction extends SegmentDownloadAction<RenditionKey>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DownloadAction createDownloadAction(
|
protected DownloadAction createDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, List<RenditionKey> keys) {
|
Uri uri, boolean isRemoveAction, byte[] data, List<RenditionKey> keys) {
|
||||||
return new HlsDownloadAction(uri, isRemoveAction, data, keys);
|
return new HlsDownloadAction(uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -57,7 +57,7 @@ public final class HlsDownloadAction extends SegmentDownloadAction<RenditionKey>
|
|||||||
* {@code removeAction} is true, {@code keys} must empty.
|
* {@code removeAction} is true, {@code keys} must empty.
|
||||||
*/
|
*/
|
||||||
public HlsDownloadAction(
|
public HlsDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, @Nullable String data, List<RenditionKey> keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, List<RenditionKey> keys) {
|
||||||
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public final class SsDownloadAction extends SegmentDownloadAction<TrackKey> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DownloadAction createDownloadAction(
|
protected DownloadAction createDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, String data, List<TrackKey> keys) {
|
Uri uri, boolean isRemoveAction, byte[] data, List<TrackKey> keys) {
|
||||||
return new SsDownloadAction(uri, isRemoveAction, data, keys);
|
return new SsDownloadAction(uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -55,7 +55,7 @@ public final class SsDownloadAction extends SegmentDownloadAction<TrackKey> {
|
|||||||
* removeAction} is true, {@code keys} must be empty.
|
* removeAction} is true, {@code keys} must be empty.
|
||||||
*/
|
*/
|
||||||
public SsDownloadAction(
|
public SsDownloadAction(
|
||||||
Uri uri, boolean isRemoveAction, @Nullable String data, List<TrackKey> keys) {
|
Uri uri, boolean isRemoveAction, @Nullable byte[] data, List<TrackKey> keys) {
|
||||||
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
super(TYPE, VERSION, uri, isRemoveAction, data, keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user