| 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..0069d717ea436a947928269d05c40921b289566a 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
|
| @@ -46,6 +46,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
| // that advance it.
|
| private boolean mAutoAdvance = true;
|
|
|
| + // Whether to permit calls on the network thread.
|
| + private boolean mAllowDirectExecutor = false;
|
| +
|
| // Conditionally fail on certain steps.
|
| private FailureType mFailureType = FailureType.NONE;
|
| private ResponseStep mFailureStep = ResponseStep.NOTHING;
|
| @@ -108,6 +111,10 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
| mAutoAdvance = autoAdvance;
|
| }
|
|
|
| + public void setAllowDirectExecutor(boolean allowed) {
|
| + mAllowDirectExecutor = allowed;
|
| + }
|
| +
|
| public void setFailure(FailureType failureType, ResponseStep failureStep) {
|
| mFailureStep = failureStep;
|
| mFailureType = failureType;
|
| @@ -151,7 +158,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
|
|
| @Override
|
| public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
|
| - assertEquals(mExecutorThread, Thread.currentThread());
|
| + if (!mAllowDirectExecutor) {
|
| + assertEquals(mExecutorThread, Thread.currentThread());
|
| + }
|
| assertFalse(request.isDone());
|
| assertTrue(mResponseStep == ResponseStep.NOTHING
|
| || mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT);
|
| @@ -167,7 +176,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
|
|
| @Override
|
| public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBuffer byteBuffer) {
|
| - assertEquals(mExecutorThread, Thread.currentThread());
|
| + if (!mAllowDirectExecutor) {
|
| + assertEquals(mExecutorThread, Thread.currentThread());
|
| + }
|
| assertFalse(request.isDone());
|
| assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED
|
| || mResponseStep == ResponseStep.ON_READ_COMPLETED);
|
| @@ -194,7 +205,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
|
|
| @Override
|
| public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
|
| - assertEquals(mExecutorThread, Thread.currentThread());
|
| + if (!mAllowDirectExecutor) {
|
| + assertEquals(mExecutorThread, Thread.currentThread());
|
| + }
|
| assertTrue(request.isDone());
|
| assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED
|
| || mResponseStep == ResponseStep.ON_READ_COMPLETED);
|
| @@ -210,7 +223,12 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
|
|
| @Override
|
| public void onFailed(UrlRequest request, UrlResponseInfo info, UrlRequestException error) {
|
| - assertEquals(mExecutorThread, Thread.currentThread());
|
| + // If the failure is because of prohibited direct execution, the test shouldn't fail
|
| + // since the request already did.
|
| + if (!mAllowDirectExecutor
|
| + && !(error.getCause() instanceof InlineExecutionProhibitedException)) {
|
| + assertEquals(mExecutorThread, Thread.currentThread());
|
| + }
|
| assertTrue(request.isDone());
|
| // Shouldn't happen after success.
|
| assertTrue(mResponseStep != ResponseStep.ON_SUCCEEDED);
|
| @@ -236,7 +254,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
|
|
|
| @Override
|
| public void onCanceled(UrlRequest request, UrlResponseInfo info) {
|
| - assertEquals(mExecutorThread, Thread.currentThread());
|
| + if (!mAllowDirectExecutor) {
|
| + assertEquals(mExecutorThread, Thread.currentThread());
|
| + }
|
| assertTrue(request.isDone());
|
| // Should happen at most once for a single request.
|
| assertFalse(mOnCanceledCalled);
|
|
|