| Index: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| index 9aaf35f3e2d1dd86c71b89e9f6371a3a187db62b..74327d51edbbef1c397dd635291814a2be9cbd81 100644
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| @@ -63,6 +63,8 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| UrlRequest urlRequest = builder.build();
|
| urlRequest.start();
|
| callback.blockForDone();
|
| + // Wait for all posted tasks to be executed to ensure there is no unhandled exception.
|
| + callback.shutdownExecutorAndWait();
|
| assertTrue(urlRequest.isDone());
|
| return callback;
|
| }
|
| @@ -627,7 +629,7 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCode());
|
| assertEquals(0, callback.mRedirectCount);
|
| assertTrue(callback.mOnErrorCalled);
|
| - assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| }
|
|
|
| @SmallTest
|
| @@ -644,7 +646,7 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCode());
|
| assertEquals(0, callback.mRedirectCount);
|
| assertTrue(callback.mOnErrorCalled);
|
| - assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| }
|
|
|
| @SmallTest
|
| @@ -661,7 +663,7 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCode());
|
| assertEquals(0, callback.mRedirectCount);
|
| assertTrue(callback.mOnErrorCalled);
|
| - assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| }
|
|
|
| /**
|
| @@ -696,7 +698,7 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| assertEquals(-201, callback.mError.getCronetInternalErrorCode());
|
| assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID",
|
| callback.mError.getMessage());
|
| - assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| }
|
|
|
| /**
|
| @@ -1571,8 +1573,14 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| UrlRequest urlRequest = builder.build();
|
| urlRequest.start();
|
| callback.blockForDone();
|
| + // Wait for all posted tasks to be executed to ensure there is no unhandled exception.
|
| + callback.shutdownExecutorAndWait();
|
| assertEquals(1, callback.mRedirectCount);
|
| - assertEquals(callback.mResponseStep, failureStep);
|
| + if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType.CANCEL_ASYNC) {
|
| + assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep);
|
| + } else if (failureType == FailureType.THROW_SYNC) {
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| + }
|
| assertTrue(urlRequest.isDone());
|
| assertEquals(expectResponseInfo, callback.mResponseInfo != null);
|
| assertEquals(expectError, callback.mError != null);
|
| @@ -1616,20 +1624,83 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
|
|
| @SmallTest
|
| @Feature({"Cronet"})
|
| - public void testThrowON_SUCCEEDED() {
|
| - TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| - callback.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED);
|
| - UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.getRedirectURL(),
|
| - callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| - UrlRequest urlRequest = builder.build();
|
| - urlRequest.start();
|
| - callback.blockForDone();
|
| - assertEquals(1, callback.mRedirectCount);
|
| - assertEquals(callback.mResponseStep, ResponseStep.ON_SUCCEEDED);
|
| - assertTrue(urlRequest.isDone());
|
| - assertNotNull(callback.mResponseInfo);
|
| - assertNull(callback.mError);
|
| - assertFalse(callback.mOnErrorCalled);
|
| + public void testThrowOrCancelInOnSucceeded() {
|
| + FailureType[] testTypes = new FailureType[] {
|
| + FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CANCEL_ASYNC};
|
| + for (FailureType type : testTypes) {
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| + callback.setFailure(type, ResponseStep.ON_SUCCEEDED);
|
| + UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.getEchoMethodURL(),
|
| + callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + UrlRequest urlRequest = builder.build();
|
| + urlRequest.start();
|
| + callback.blockForDone();
|
| + // Wait for all posted tasks to be executed to ensure there is no unhandled exception.
|
| + callback.shutdownExecutorAndWait();
|
| + assertNull(callback.mError);
|
| + assertEquals(ResponseStep.ON_SUCCEEDED, callback.mResponseStep);
|
| + assertTrue(urlRequest.isDone());
|
| + assertNotNull(callback.mResponseInfo);
|
| + assertFalse(callback.mOnErrorCalled);
|
| + assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
|
| + assertEquals("GET", callback.mResponseAsString);
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testThrowOrCancelInOnFailed() {
|
| + FailureType[] testTypes = new FailureType[] {
|
| + FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CANCEL_ASYNC};
|
| + for (FailureType type : testTypes) {
|
| + String url = NativeTestServer.getEchoBodyURL();
|
| + // Shut down NativeTestServer so request will fail.
|
| + NativeTestServer.shutdownNativeTestServer();
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| + callback.setFailure(type, ResponseStep.ON_FAILED);
|
| + UrlRequest.Builder builder = new UrlRequest.Builder(
|
| + url, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + UrlRequest urlRequest = builder.build();
|
| + urlRequest.start();
|
| + callback.blockForDone();
|
| + // Wait for all posted tasks to be executed to ensure there is no unhandled exception.
|
| + callback.shutdownExecutorAndWait();
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| + assertTrue(callback.mOnErrorCalled);
|
| + assertNotNull(callback.mError);
|
| + assertTrue(urlRequest.isDone());
|
| + // Start NativeTestServer again to run the test for a second time.
|
| + assertTrue(NativeTestServer.startNativeTestServer(getContext()));
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testThrowOrCancelInOnCanceled() {
|
| + FailureType[] testTypes = new FailureType[] {
|
| + FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CANCEL_ASYNC};
|
| + for (FailureType type : testTypes) {
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback() {
|
| + @Override
|
| + public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
|
| + super.onResponseStarted(request, info);
|
| + request.cancel();
|
| + }
|
| + };
|
| + callback.setFailure(type, ResponseStep.ON_CANCELED);
|
| + UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.getEchoBodyURL(),
|
| + callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + UrlRequest urlRequest = builder.build();
|
| + urlRequest.start();
|
| + callback.blockForDone();
|
| + // Wait for all posted tasks to be executed to ensure there is no unhandled exception.
|
| + callback.shutdownExecutorAndWait();
|
| + assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep);
|
| + assertTrue(urlRequest.isDone());
|
| + assertNotNull(callback.mResponseInfo);
|
| + assertNull(callback.mError);
|
| + assertTrue(callback.mOnCanceledCalled);
|
| + }
|
| }
|
|
|
| @SmallTest
|
| @@ -1837,7 +1908,7 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
| "Exception in CronetUrlRequest: net::ERR_" + name, callback.mError.getMessage());
|
| assertEquals(0, callback.mRedirectCount);
|
| assertTrue(callback.mOnErrorCalled);
|
| - assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
|
| + assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
|
| }
|
|
|
| // Returns the contents of byteBuffer, from its position() to its limit(),
|
|
|