Commit 4e94624b authored by clm's avatar clm Committed by Commit bot

Fix doing network operations on wrong executor

BUG=580632

Review URL: https://codereview.chromium.org/1619923004

Cr-Commit-Position: refs/heads/master@{#371842}
parent 6e48fd80
...@@ -326,7 +326,7 @@ final class JavaUrlRequest implements UrlRequest { ...@@ -326,7 +326,7 @@ final class JavaUrlRequest implements UrlRequest {
} }
void startRead() { void startRead() {
mUserExecutor.execute(uploadErrorSetting(new CheckedRunnable() { mExecutor.execute(errorSetting(State.STARTED, new CheckedRunnable() {
@Override @Override
public void run() throws Exception { public void run() throws Exception {
if (mOutputChannel == null) { if (mOutputChannel == null) {
...@@ -336,7 +336,12 @@ final class JavaUrlRequest implements UrlRequest { ...@@ -336,7 +336,12 @@ final class JavaUrlRequest implements UrlRequest {
mOutputChannel = Channels.newChannel(mUrlConnection.getOutputStream()); mOutputChannel = Channels.newChannel(mUrlConnection.getOutputStream());
} }
mSinkState.set(SinkState.AWAITING_READ_RESULT); mSinkState.set(SinkState.AWAITING_READ_RESULT);
mUploadProvider.read(OutputStreamDataSink.this, mBuffer); mUserExecutor.execute(uploadErrorSetting(new CheckedRunnable() {
@Override
public void run() throws Exception {
mUploadProvider.read(OutputStreamDataSink.this, mBuffer);
}
}));
} }
})); }));
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.net; package org.chromium.net;
import android.os.ConditionVariable; import android.os.ConditionVariable;
import android.os.StrictMode;
import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertFalse;
...@@ -68,8 +69,23 @@ class TestUrlRequestCallback extends UrlRequest.Callback { ...@@ -68,8 +69,23 @@ class TestUrlRequestCallback extends UrlRequest.Callback {
private int mBufferPositionBeforeRead; private int mBufferPositionBeforeRead;
private class ExecutorThreadFactory implements ThreadFactory { private class ExecutorThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) { public Thread newThread(final Runnable r) {
mExecutorThread = new Thread(r); mExecutorThread = new Thread(new Runnable() {
@Override
public void run() {
StrictMode.ThreadPolicy threadPolicy = StrictMode.getThreadPolicy();
try {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectNetwork()
.penaltyLog()
.penaltyDeath()
.build());
r.run();
} finally {
StrictMode.setThreadPolicy(threadPolicy);
}
}
});
return mExecutorThread; return mExecutorThread;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment