Make HttpDataSourceException use PlaybackException error codes.
PiperOrigin-RevId: 382710409
This commit is contained in:
parent
747b0f057b
commit
6035932fa3
@ -52,6 +52,7 @@ public class PlaybackException extends Exception implements Bundleable {
|
|||||||
ERROR_CODE_IO_NETWORK_CONNECTION_FAILED,
|
ERROR_CODE_IO_NETWORK_CONNECTION_FAILED,
|
||||||
ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT,
|
ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT,
|
||||||
ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED,
|
ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED,
|
||||||
|
ERROR_CODE_IO_BAD_HTTP_REQUEST,
|
||||||
ERROR_CODE_IO_BAD_HTTP_STATUS,
|
ERROR_CODE_IO_BAD_HTTP_STATUS,
|
||||||
ERROR_CODE_IO_DNS_FAILED,
|
ERROR_CODE_IO_DNS_FAILED,
|
||||||
ERROR_CODE_IO_FILE_NOT_FOUND,
|
ERROR_CODE_IO_FILE_NOT_FOUND,
|
||||||
@ -106,17 +107,19 @@ public class PlaybackException extends Exception implements Bundleable {
|
|||||||
public static final int ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT = 2003;
|
public static final int ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT = 2003;
|
||||||
/** Caused by an existing connection being unexpectedly closed. */
|
/** Caused by an existing connection being unexpectedly closed. */
|
||||||
public static final int ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED = 2004;
|
public static final int ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED = 2004;
|
||||||
|
/** Caused by creating a malformed HTTP request. */
|
||||||
|
public static final int ERROR_CODE_IO_BAD_HTTP_REQUEST = 2005;
|
||||||
/** Caused by an HTTP server returning an unexpected HTTP response status code. */
|
/** Caused by an HTTP server returning an unexpected HTTP response status code. */
|
||||||
public static final int ERROR_CODE_IO_BAD_HTTP_STATUS = 2005;
|
public static final int ERROR_CODE_IO_BAD_HTTP_STATUS = 2006;
|
||||||
/** Caused by the player failing to resolve a hostname. */
|
/** Caused by the player failing to resolve a hostname. */
|
||||||
public static final int ERROR_CODE_IO_DNS_FAILED = 2006;
|
public static final int ERROR_CODE_IO_DNS_FAILED = 2007;
|
||||||
/** Caused by a non-existent file. */
|
/** Caused by a non-existent file. */
|
||||||
public static final int ERROR_CODE_IO_FILE_NOT_FOUND = 2007;
|
public static final int ERROR_CODE_IO_FILE_NOT_FOUND = 2008;
|
||||||
/**
|
/**
|
||||||
* Caused by lack of permission to perform an IO operation. For example, lack of permission to
|
* Caused by lack of permission to perform an IO operation. For example, lack of permission to
|
||||||
* access internet or external storage.
|
* access internet or external storage.
|
||||||
*/
|
*/
|
||||||
public static final int ERROR_CODE_IO_NO_PERMISSION = 2008;
|
public static final int ERROR_CODE_IO_NO_PERMISSION = 2009;
|
||||||
/**
|
/**
|
||||||
* Caused by the player trying to access cleartext HTTP traffic (meaning http:// rather than
|
* Caused by the player trying to access cleartext HTTP traffic (meaning http:// rather than
|
||||||
* https://) when the app's Network Security Configuration does not permit it.
|
* https://) when the app's Network Security Configuration does not permit it.
|
||||||
@ -124,9 +127,9 @@ public class PlaybackException extends Exception implements Bundleable {
|
|||||||
* <p>See <a href="https://exoplayer.dev/issues/cleartext-not-permitted">this corresponding
|
* <p>See <a href="https://exoplayer.dev/issues/cleartext-not-permitted">this corresponding
|
||||||
* troubleshooting topic</a>.
|
* troubleshooting topic</a>.
|
||||||
*/
|
*/
|
||||||
public static final int ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED = 2009;
|
public static final int ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED = 2010;
|
||||||
/** Caused by reading data out of the data bound. */
|
/** Caused by reading data out of the data bound. */
|
||||||
public static final int ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE = 2010;
|
public static final int ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE = 2011;
|
||||||
|
|
||||||
// Content parsing errors (3xxx).
|
// Content parsing errors (3xxx).
|
||||||
|
|
||||||
@ -217,6 +220,8 @@ public class PlaybackException extends Exception implements Bundleable {
|
|||||||
return "ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT";
|
return "ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT";
|
||||||
case ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED:
|
case ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED:
|
||||||
return "ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED";
|
return "ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED";
|
||||||
|
case ERROR_CODE_IO_BAD_HTTP_REQUEST:
|
||||||
|
return "ERROR_CODE_IO_BAD_HTTP_REQUEST";
|
||||||
case ERROR_CODE_IO_BAD_HTTP_STATUS:
|
case ERROR_CODE_IO_BAD_HTTP_STATUS:
|
||||||
return "ERROR_CODE_IO_BAD_HTTP_STATUS";
|
return "ERROR_CODE_IO_BAD_HTTP_STATUS";
|
||||||
case ERROR_CODE_IO_DNS_FAILED:
|
case ERROR_CODE_IO_DNS_FAILED:
|
||||||
|
@ -190,24 +190,113 @@ public interface HttpDataSource extends DataSource {
|
|||||||
/** The {@link DataSpec} associated with the current connection. */
|
/** The {@link DataSpec} associated with the current connection. */
|
||||||
public final DataSpec dataSpec;
|
public final DataSpec dataSpec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #HttpDataSourceException(DataSpec, int, int)
|
||||||
|
* HttpDataSourceException(DataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, int)}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpDataSourceException(DataSpec dataSpec, @Type int type) {
|
public HttpDataSourceException(DataSpec dataSpec, @Type int type) {
|
||||||
super(PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
this(dataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs an HttpDataSourceException.
|
||||||
|
*
|
||||||
|
* @param dataSpec The {@link DataSpec}.
|
||||||
|
* @param errorCode Reason of the error, should be one of the {@code ERROR_CODE_IO_*} in {@link
|
||||||
|
* PlaybackException.ErrorCode}.
|
||||||
|
* @param type See {@link Type}.
|
||||||
|
*/
|
||||||
|
public HttpDataSourceException(
|
||||||
|
DataSpec dataSpec, @PlaybackException.ErrorCode int errorCode, @Type int type) {
|
||||||
|
super(errorCode, type);
|
||||||
this.dataSpec = dataSpec;
|
this.dataSpec = dataSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #HttpDataSourceException(String, DataSpec, int, int)
|
||||||
|
* HttpDataSourceException(String, DataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED,
|
||||||
|
* int)}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpDataSourceException(String message, DataSpec dataSpec, @Type int type) {
|
public HttpDataSourceException(String message, DataSpec dataSpec, @Type int type) {
|
||||||
super(message, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
this(message, dataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs an HttpDataSourceException.
|
||||||
|
*
|
||||||
|
* @param message The error message.
|
||||||
|
* @param dataSpec The {@link DataSpec}.
|
||||||
|
* @param errorCode Reason of the error, should be one of the {@code ERROR_CODE_IO_*} in {@link
|
||||||
|
* PlaybackException.ErrorCode}.
|
||||||
|
* @param type See {@link Type}.
|
||||||
|
*/
|
||||||
|
public HttpDataSourceException(
|
||||||
|
String message,
|
||||||
|
DataSpec dataSpec,
|
||||||
|
@PlaybackException.ErrorCode int errorCode,
|
||||||
|
@Type int type) {
|
||||||
|
super(message, errorCode, type);
|
||||||
this.dataSpec = dataSpec;
|
this.dataSpec = dataSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #HttpDataSourceException(IOException, DataSpec, int, int)
|
||||||
|
* HttpDataSourceException(IOException, DataSpec,
|
||||||
|
* PlaybackException.ERROR_CODE_IO_UNSPECIFIED, int)}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpDataSourceException(IOException cause, DataSpec dataSpec, @Type int type) {
|
public HttpDataSourceException(IOException cause, DataSpec dataSpec, @Type int type) {
|
||||||
super(cause, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
this(cause, dataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs an HttpDataSourceException.
|
||||||
|
*
|
||||||
|
* @param cause The error cause.
|
||||||
|
* @param dataSpec The {@link DataSpec}.
|
||||||
|
* @param errorCode Reason of the error, should be one of the {@code ERROR_CODE_IO_*} in {@link
|
||||||
|
* PlaybackException.ErrorCode}.
|
||||||
|
* @param type See {@link Type}.
|
||||||
|
*/
|
||||||
|
public HttpDataSourceException(
|
||||||
|
IOException cause,
|
||||||
|
DataSpec dataSpec,
|
||||||
|
@PlaybackException.ErrorCode int errorCode,
|
||||||
|
@Type int type) {
|
||||||
|
super(cause, errorCode, type);
|
||||||
this.dataSpec = dataSpec;
|
this.dataSpec = dataSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #HttpDataSourceException(String, IOException, DataSpec, int, int)
|
||||||
|
* HttpDataSourceException(String, IOException, DataSpec,
|
||||||
|
* PlaybackException.ERROR_CODE_IO_UNSPECIFIED, int)}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpDataSourceException(
|
public HttpDataSourceException(
|
||||||
String message, IOException cause, DataSpec dataSpec, @Type int type) {
|
String message, IOException cause, DataSpec dataSpec, @Type int type) {
|
||||||
super(message, cause, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
this(message, cause, dataSpec, PlaybackException.ERROR_CODE_IO_UNSPECIFIED, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs an HttpDataSourceException.
|
||||||
|
*
|
||||||
|
* @param message The error message.
|
||||||
|
* @param cause The error cause.
|
||||||
|
* @param dataSpec The {@link DataSpec}.
|
||||||
|
* @param errorCode Reason of the error, should be one of the {@code ERROR_CODE_IO_*} in {@link
|
||||||
|
* PlaybackException.ErrorCode}.
|
||||||
|
* @param type See {@link Type}.
|
||||||
|
*/
|
||||||
|
public HttpDataSourceException(
|
||||||
|
String message,
|
||||||
|
IOException cause,
|
||||||
|
DataSpec dataSpec,
|
||||||
|
@PlaybackException.ErrorCode int errorCode,
|
||||||
|
@Type int type) {
|
||||||
|
super(message, cause, errorCode, type);
|
||||||
this.dataSpec = dataSpec;
|
this.dataSpec = dataSpec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -226,6 +315,7 @@ public interface HttpDataSource extends DataSource {
|
|||||||
+ " https://exoplayer.dev/issues/cleartext-not-permitted",
|
+ " https://exoplayer.dev/issues/cleartext-not-permitted",
|
||||||
cause,
|
cause,
|
||||||
dataSpec,
|
dataSpec,
|
||||||
|
PlaybackException.ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED,
|
||||||
TYPE_OPEN);
|
TYPE_OPEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -236,7 +326,11 @@ public interface HttpDataSource extends DataSource {
|
|||||||
public final String contentType;
|
public final String contentType;
|
||||||
|
|
||||||
public InvalidContentTypeException(String contentType, DataSpec dataSpec) {
|
public InvalidContentTypeException(String contentType, DataSpec dataSpec) {
|
||||||
super("Invalid content type: " + contentType, dataSpec, TYPE_OPEN);
|
super(
|
||||||
|
"Invalid content type: " + contentType,
|
||||||
|
dataSpec,
|
||||||
|
PlaybackException.ERROR_CODE_IO_BAD_HTTP_REQUEST,
|
||||||
|
TYPE_OPEN);
|
||||||
this.contentType = contentType;
|
this.contentType = contentType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,7 +389,11 @@ public interface HttpDataSource extends DataSource {
|
|||||||
Map<String, List<String>> headerFields,
|
Map<String, List<String>> headerFields,
|
||||||
DataSpec dataSpec,
|
DataSpec dataSpec,
|
||||||
byte[] responseBody) {
|
byte[] responseBody) {
|
||||||
super("Response code: " + responseCode, dataSpec, TYPE_OPEN);
|
super(
|
||||||
|
"Response code: " + responseCode,
|
||||||
|
dataSpec,
|
||||||
|
PlaybackException.ERROR_CODE_IO_BAD_HTTP_STATUS,
|
||||||
|
TYPE_OPEN);
|
||||||
this.responseCode = responseCode;
|
this.responseCode = responseCode;
|
||||||
this.responseMessage = responseMessage;
|
this.responseMessage = responseMessage;
|
||||||
this.headerFields = headerFields;
|
this.headerFields = headerFields;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user