Chromium Code Reviews| Index: components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java |
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java |
| index c03ba84455fb4b56f11d3bf71fcf755d6016ab9a..6ec74f030aee6433a45d2dc26a5b4f8d06f5a414 100644 |
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java |
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java |
| @@ -4,6 +4,7 @@ |
| package org.chromium.net; |
| +import android.os.ConditionVariable; |
| import android.os.ParcelFileDescriptor; |
| import android.os.StrictMode; |
| import android.test.suitebuilder.annotation.SmallTest; |
| @@ -13,6 +14,8 @@ import org.chromium.base.test.util.Feature; |
| import java.io.File; |
| import java.io.FileOutputStream; |
| +import java.io.IOException; |
| +import java.nio.ByteBuffer; |
| /** Test the default provided implementations of {@link UploadDataProvider} */ |
| public class UploadDataProvidersTest extends CronetTestBase { |
| @@ -137,4 +140,66 @@ public class UploadDataProvidersTest extends CronetTestBase { |
| assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| assertEquals(LOREM, callback.mResponseAsString); |
| } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testNoErrorWhenCanceledDuringStart() throws Exception { |
| + TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| + UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.getEchoBodyURL(), |
| + callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| + final ConditionVariable first = new ConditionVariable(); |
| + final ConditionVariable second = new ConditionVariable(); |
| + builder.addHeader("Content-Type", "useless/string"); |
| + builder.setUploadDataProvider(new UploadDataProvider() { |
| + @Override |
| + public long getLength() throws IOException { |
| + first.open(); |
| + second.block(); |
| + return 0; |
| + } |
| + |
| + @Override |
| + public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer) |
| + throws IOException {} |
| + |
| + @Override |
| + public void rewind(UploadDataSink uploadDataSink) throws IOException {} |
| + }, callback.getExecutor()); |
| + UrlRequest urlRequest = builder.build(); |
| + urlRequest.start(); |
| + first.block(); |
| + urlRequest.cancel(); |
| + second.open(); |
| + callback.blockForDone(); |
| + assertTrue(callback.mOnCanceledCalled); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testNoErrorWhenExceptionDuringStart() throws Exception { |
| + TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| + UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.getEchoBodyURL(), |
| + callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| + final ConditionVariable first = new ConditionVariable(); |
| + builder.addHeader("Content-Type", "useless/string"); |
| + builder.setUploadDataProvider(new UploadDataProvider() { |
| + @Override |
| + public long getLength() throws IOException { |
| + first.open(); |
| + throw new IOException("Bad Length"); |
| + } |
| + |
| + @Override |
| + public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffer) |
| + throws IOException {} |
| + |
| + @Override |
| + public void rewind(UploadDataSink uploadDataSink) throws IOException {} |
| + }, callback.getExecutor()); |
| + UrlRequest urlRequest = builder.build(); |
| + urlRequest.start(); |
| + first.block(); |
| + callback.blockForDone(); |
| + assertFalse(callback.mOnCanceledCalled); |
|
xunjieli
2016/03/10 20:32:21
Suggest also check to see that mError is UrlReques
mef
2016/03/10 22:16:30
Done.
|
| + } |
| } |