Index: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java |
diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java |
index ce4b574633545e36439c14202768319cf32b3a59..69440cf74baad176c96180a71814f5b9b5ee165a 100644 |
--- a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java |
+++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java |
@@ -6,15 +6,14 @@ package org.chromium.net.impl; |
import android.os.SystemClock; |
import android.support.annotation.Nullable; |
-import android.util.Log; |
+import org.chromium.base.Log; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.annotations.JNIAdditionalImport; |
import org.chromium.base.annotations.JNINamespace; |
import org.chromium.base.annotations.NativeClassQualifiedName; |
import org.chromium.net.InlineExecutionProhibitedException; |
-import org.chromium.net.Preconditions; |
import org.chromium.net.QuicException; |
import org.chromium.net.RequestFinishedInfo; |
import org.chromium.net.RequestPriority; |
@@ -47,7 +46,7 @@ import javax.annotation.concurrent.GuardedBy; |
// Qualifies UrlRequest.StatusListener which is used in onStatus, a JNI method. |
@JNIAdditionalImport(UrlRequest.class) |
@VisibleForTesting |
-public final class CronetUrlRequest implements UrlRequest { |
+public final class CronetUrlRequest extends UrlRequestBase { |
private static final RequestFinishedInfo.Metrics EMPTY_METRICS = |
new CronetMetrics(null, null, null, null); |
private final boolean mAllowDirectExecutor; |
@@ -641,8 +640,9 @@ public final class CronetUrlRequest implements UrlRequest { |
/** |
* Called when error has occured, no callbacks will be called afterwards. |
* |
- * @param errorCode error code from {@link UrlRequestException.ERROR_LISTENER_EXCEPTION_THROWN |
- * UrlRequestException.ERROR_*}. |
+ * @param errorCode Error code represented by {@code UrlRequestError} that should be mapped |
+ * to one of {@link UrlRequestException#ERROR_LISTENER_EXCEPTION_THROWN |
+ * UrlRequestException.ERROR_*}. |
* @param nativeError native net error code. |
* @param errorString textual representation of the error code. |
* @param receivedBytesCount number of bytes received. |
@@ -659,8 +659,9 @@ public final class CronetUrlRequest implements UrlRequest { |
failWithException(new QuicException( |
"Exception in CronetUrlRequest: " + errorString, nativeError, nativeQuicError)); |
} else { |
+ int javaError = mapUrlRequestErrorToApiErrorCode(errorCode); |
failWithException(new UrlRequestException( |
- "Exception in CronetUrlRequest: " + errorString, errorCode, nativeError)); |
+ "Exception in CronetUrlRequest: " + errorString, javaError, nativeError)); |
} |
} |
@@ -693,7 +694,7 @@ public final class CronetUrlRequest implements UrlRequest { |
Runnable task = new Runnable() { |
@Override |
public void run() { |
- listener.onStatus(UrlRequest.Status.convertLoadState(loadState)); |
+ listener.onStatus(UrlRequestBase.Status.convertLoadState(loadState)); |
} |
}; |
postTaskToExecutor(task); |
@@ -748,6 +749,38 @@ public final class CronetUrlRequest implements UrlRequest { |
} |
} |
+ private int mapUrlRequestErrorToApiErrorCode(int errorCode) { |
+ switch (errorCode) { |
+ case UrlRequestError.LISTENER_EXCEPTION_THROWN: |
+ return UrlRequestException.ERROR_LISTENER_EXCEPTION_THROWN; |
+ case UrlRequestError.HOSTNAME_NOT_RESOLVED: |
+ return UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED; |
+ case UrlRequestError.INTERNET_DISCONNECTED: |
+ return UrlRequestException.ERROR_INTERNET_DISCONNECTED; |
+ case UrlRequestError.NETWORK_CHANGED: |
+ return UrlRequestException.ERROR_NETWORK_CHANGED; |
+ case UrlRequestError.TIMED_OUT: |
+ return UrlRequestException.ERROR_TIMED_OUT; |
+ case UrlRequestError.CONNECTION_CLOSED: |
+ return UrlRequestException.ERROR_CONNECTION_CLOSED; |
+ case UrlRequestError.CONNECTION_TIMED_OUT: |
+ return UrlRequestException.ERROR_CONNECTION_TIMED_OUT; |
+ case UrlRequestError.CONNECTION_REFUSED: |
+ return UrlRequestException.ERROR_CONNECTION_REFUSED; |
+ case UrlRequestError.CONNECTION_RESET: |
+ return UrlRequestException.ERROR_CONNECTION_RESET; |
+ case UrlRequestError.ADDRESS_UNREACHABLE: |
+ return UrlRequestException.ERROR_ADDRESS_UNREACHABLE; |
+ case UrlRequestError.QUIC_PROTOCOL_FAILED: |
+ return UrlRequestException.ERROR_QUIC_PROTOCOL_FAILED; |
+ case UrlRequestError.OTHER: |
+ return UrlRequestException.ERROR_OTHER; |
+ default: |
+ Log.e(CronetUrlRequestContext.LOG_TAG, "Unknown error code: " + errorCode); |
+ return errorCode; |
+ } |
+ } |
+ |
// Native methods are implemented in cronet_url_request_adapter.cc. |
private native long nativeCreateRequestAdapter(long urlRequestContextAdapter, String url, |