diff --git a/extensions/cronet/src/androidTest/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java b/extensions/cronet/src/androidTest/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java index 7efc542dd0..31def44d36 100644 --- a/extensions/cronet/src/androidTest/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java +++ b/extensions/cronet/src/androidTest/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java @@ -57,8 +57,8 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; import org.chromium.net.CronetEngine; +import org.chromium.net.NetworkException; import org.chromium.net.UrlRequest; -import org.chromium.net.UrlRequestException; import org.chromium.net.UrlResponseInfo; import org.chromium.net.impl.UrlResponseInfoImpl; import org.junit.Before; @@ -99,7 +99,7 @@ public final class CronetDataSourceTest { @Mock private Executor mockExecutor; @Mock - private UrlRequestException mockUrlRequestException; + private NetworkException mockNetworkException; @Mock private CronetEngine mockCronetEngine; private CronetDataSource dataSourceUnderTest; @@ -172,7 +172,7 @@ public final class CronetDataSourceTest { dataSourceUnderTest.onFailed( mockUrlRequest, testUrlResponseInfo, - mockUrlRequestException); + mockNetworkException); dataSourceUnderTest.onResponseStarted( mockUrlRequest2, testUrlResponseInfo); @@ -245,8 +245,8 @@ public final class CronetDataSourceTest { @Test public void testRequestOpenFailDueToDnsFailure() { mockResponseStartFailure(); - when(mockUrlRequestException.getErrorCode()).thenReturn( - UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED); + when(mockNetworkException.getErrorCode()).thenReturn( + NetworkException.ERROR_HOSTNAME_NOT_RESOLVED); try { dataSourceUnderTest.open(testDataSpec); @@ -728,7 +728,7 @@ public final class CronetDataSourceTest { dataSourceUnderTest.onFailed( mockUrlRequest, createUrlResponseInfo(500), // statusCode - mockUrlRequestException); + mockNetworkException); return null; } }).when(mockUrlRequest).start(); @@ -764,7 +764,7 @@ public final class CronetDataSourceTest { dataSourceUnderTest.onFailed( mockUrlRequest, createUrlResponseInfo(500), // statusCode - mockUrlRequestException); + mockNetworkException); return null; } }).when(mockUrlRequest).read(any(ByteBuffer.class)); diff --git a/extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java b/extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java index 83f46bd488..f6202c6e1e 100644 --- a/extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java +++ b/extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java @@ -40,9 +40,10 @@ import java.util.concurrent.Executor; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.chromium.net.CronetEngine; +import org.chromium.net.CronetException; +import org.chromium.net.NetworkException; import org.chromium.net.UrlRequest; import org.chromium.net.UrlRequest.Status; -import org.chromium.net.UrlRequestException; import org.chromium.net.UrlResponseInfo; /** @@ -400,12 +401,17 @@ public class CronetDataSource extends UrlRequest.Callback implements HttpDataSou @Override public synchronized void onFailed(UrlRequest request, UrlResponseInfo info, - UrlRequestException error) { + CronetException error) { if (request != currentUrlRequest) { return; } - exception = error.getErrorCode() == UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED - ? new UnknownHostException() : error; + if (error instanceof NetworkException + && ((NetworkException) error).getErrorCode() + == NetworkException.ERROR_HOSTNAME_NOT_RESOLVED) { + exception = new UnknownHostException(); + } else { + exception = error; + } operation.open(); }