Chromium Code Reviews| 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..59940bef61febb95f30c569dcbec82e96bd19ade 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 | 
| @@ -627,7 +627,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 +644,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 +661,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 +696,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); | 
| } | 
| /** | 
| @@ -1572,7 +1572,11 @@ public class CronetUrlRequestTest extends CronetTestBase { | 
| urlRequest.start(); | 
| callback.blockForDone(); | 
| 
 
kapishnikov
2016/08/31 18:10:27
Same here. Is it possible that callback.blockForDo
 
xunjieli
2016/08/31 20:03:07
Done.
 
 | 
| 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 +1620,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 exception thrown. | 
| + callback.shutdownExecutor(); | 
| 
 
kapishnikov
2016/08/31 18:10:27
Should we call awaitTermination() after shutdownEx
 
xunjieli
2016/08/31 20:03:07
Done. Good idea!
 
 | 
| + 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 exception thrown. | 
| + callback.shutdownExecutor(); | 
| 
 
kapishnikov
2016/08/31 18:10:27
Same: awaitTermination()
 
xunjieli
2016/08/31 20:03:07
Done.
 
 | 
| + 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 exception thrown. | 
| + callback.shutdownExecutor(); | 
| 
 
kapishnikov
2016/08/31 18:10:27
Same: awaitTermination()
 
xunjieli
2016/08/31 20:03:07
Done.
 
 | 
| + assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); | 
| + assertTrue(urlRequest.isDone()); | 
| + assertNotNull(callback.mResponseInfo); | 
| + assertNull(callback.mError); | 
| + assertTrue(callback.mOnCanceledCalled); | 
| + } | 
| } | 
| @SmallTest | 
| @@ -1837,7 +1904,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(), |