Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(426)

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java

Issue 2283243002: Allow direct executors in cronet. (Closed)
Patch Set: Improve thread checking Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/TestUploadDataProvider.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 11e85fa978f00029140de5654a396928853f4306..81a04df2e5ce11080e1896c833aab322afaa3ed6 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
@@ -49,6 +49,9 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
// Whether an exception is thrown by maybeThrowCancelOrPause().
private boolean mListenerExceptionThrown;
+ // 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;
@@ -113,6 +116,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;
@@ -153,7 +160,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
@Override
public void onRedirectReceived(
UrlRequest request, UrlResponseInfo info, String newLocationUrl) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
assertFalse(request.isDone());
assertTrue(mResponseStep == ResponseStep.NOTHING
|| mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT);
@@ -171,7 +178,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
@Override
public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
assertFalse(request.isDone());
assertTrue(mResponseStep == ResponseStep.NOTHING
|| mResponseStep == ResponseStep.ON_RECEIVED_REDIRECT);
@@ -187,7 +194,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
@Override
public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBuffer byteBuffer) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
assertFalse(request.isDone());
assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED
|| mResponseStep == ResponseStep.ON_READ_COMPLETED);
@@ -214,7 +221,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
@Override
public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
assertTrue(request.isDone());
assertTrue(mResponseStep == ResponseStep.ON_RESPONSE_STARTED
|| mResponseStep == ResponseStep.ON_READ_COMPLETED);
@@ -230,7 +237,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 (error.getCause() instanceof InlineExecutionProhibitedException) {
+ mAllowDirectExecutor = true;
+ }
+ checkExecutorThread();
mef 2016/09/02 15:01:47 Can this be just if (!error.getCause() instanceof
Charles 2016/09/02 15:03:30 No, because maybeThrowCancelOrPause() also calls c
assertTrue(request.isDone());
// Shouldn't happen after success.
assertTrue(mResponseStep != ResponseStep.ON_SUCCEEDED);
@@ -257,7 +269,7 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
@Override
public void onCanceled(UrlRequest request, UrlResponseInfo info) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
assertTrue(request.isDone());
// Should happen at most once for a single request.
assertFalse(mOnCanceledCalled);
@@ -290,12 +302,18 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
mDone.open();
}
+ private void checkExecutorThread() {
+ if (!mAllowDirectExecutor) {
+ assertEquals(mExecutorThread, Thread.currentThread());
+ }
+ }
+
/**
* Returns {@code false} if the listener should continue to advance the
* request.
*/
private boolean maybeThrowCancelOrPause(final UrlRequest request) {
- assertEquals(mExecutorThread, Thread.currentThread());
+ checkExecutorThread();
if (mResponseStep != mFailureStep || mFailureType == FailureType.NONE) {
if (!mAutoAdvance) {
mStepBlock.open();
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/TestUploadDataProvider.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698