| Index: components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java
 | 
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java b/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java
 | 
| index da46d1b9c1858b3f569c2a4d846388181ece8dc3..6ef466e290ace9b011a7ecad752963101c68245e 100644
 | 
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java
 | 
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java
 | 
| @@ -45,6 +45,8 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|      // When false, the consumer is responsible for all calls into the request
 | 
|      // that advance it.
 | 
|      private boolean mAutoAdvance = true;
 | 
| +    // Whether an exception is thrown by maybeThrowCancelOrPause().
 | 
| +    private boolean mListenerExceptionThrown;
 | 
|  
 | 
|      // Conditionally fail on certain steps.
 | 
|      private FailureType mFailureType = FailureType.NONE;
 | 
| @@ -91,7 +93,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|          ON_RECEIVED_REDIRECT,
 | 
|          ON_RESPONSE_STARTED,
 | 
|          ON_READ_COMPLETED,
 | 
| -        ON_SUCCEEDED
 | 
| +        ON_SUCCEEDED,
 | 
| +        ON_FAILED,
 | 
| +        ON_CANCELED,
 | 
|      }
 | 
|  
 | 
|      public enum FailureType {
 | 
| @@ -218,7 +222,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|          assertFalse(mOnErrorCalled);
 | 
|          assertFalse(mOnCanceledCalled);
 | 
|          assertNull(mError);
 | 
| -        if (mFailureType == FailureType.THROW_SYNC) {
 | 
| +        if (mListenerExceptionThrown) {
 | 
|              assertEquals(UrlRequestError.LISTENER_EXCEPTION_THROWN, error.getErrorCode());
 | 
|              assertEquals(0, error.getCronetInternalErrorCode());
 | 
|              assertEquals("Exception received from UrlRequest.Callback", error.getMessage());
 | 
| @@ -228,6 +232,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|              assertFalse(error.immediatelyRetryable());
 | 
|          }
 | 
|  
 | 
| +        mResponseStep = ResponseStep.ON_FAILED;
 | 
|          mOnErrorCalled = true;
 | 
|          mError = error;
 | 
|          openDone();
 | 
| @@ -243,6 +248,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|          assertFalse(mOnErrorCalled);
 | 
|          assertNull(mError);
 | 
|  
 | 
| +        mResponseStep = ResponseStep.ON_CANCELED;
 | 
|          mOnCanceledCalled = true;
 | 
|          openDone();
 | 
|          maybeThrowCancelOrPause(request);
 | 
| @@ -282,6 +288,8 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
 | 
|          }
 | 
|  
 | 
|          if (mFailureType == FailureType.THROW_SYNC) {
 | 
| +            assertFalse(mListenerExceptionThrown);
 | 
| +            mListenerExceptionThrown = true;
 | 
|              throw new IllegalStateException("Listener Exception.");
 | 
|          }
 | 
|          Runnable task = new Runnable() {
 | 
| 
 |