| Index: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| index d3f93ee7c1bbc686fa5a594e857dbc98e416e199..c800a438dbb938baa0caecf453d002fe5b56a33e 100644
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
|
| @@ -810,20 +810,52 @@ public class CronetUrlRequestTest extends CronetTestBase {
|
|
|
| @SmallTest
|
| @Feature({"Cronet"})
|
| - public void testUploadChunkedNotSupported() throws Exception {
|
| + public void testUploadChunked() throws Exception {
|
| TestUrlRequestListener listener = new TestUrlRequestListener();
|
| UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
|
| - NativeTestServer.getRedirectToEchoBody(), listener, listener.getExecutor());
|
| + NativeTestServer.getEchoBodyURL(), listener, listener.getExecutor());
|
|
|
| TestUploadDataProvider dataProvider = new TestUploadDataProvider(
|
| TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExecutor());
|
| + dataProvider.addRead("test hello".getBytes());
|
| dataProvider.setChunked(true);
|
| - try {
|
| - urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
|
| - fail("Exception not thrown");
|
| - } catch (IllegalArgumentException e) {
|
| - assertEquals("Chunked uploads not supported.", e.getMessage());
|
| - }
|
| + urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
|
| + urlRequest.addHeader("Content-Type", "useless/string");
|
| +
|
| + assertEquals(-1, dataProvider.getLength());
|
| +
|
| + urlRequest.start();
|
| + listener.blockForDone();
|
| +
|
| + // 1 read call for the first data chunk, 1 for final chunk.
|
| + assertEquals(2, dataProvider.getNumReadCalls());
|
| + assertEquals("test hello", listener.mResponseAsString);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testUploadChunkedSecondReadZeroLengthBody() throws Exception {
|
| + TestUrlRequestListener listener = new TestUrlRequestListener();
|
| + UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
|
| + NativeTestServer.getEchoBodyURL(), listener, listener.getExecutor());
|
| +
|
| + TestUploadDataProvider dataProvider = new TestUploadDataProvider(
|
| + TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExecutor());
|
| + // Add two reads. The second read has 0-length body.
|
| + dataProvider.addRead("hello there".getBytes());
|
| + dataProvider.addRead("".getBytes());
|
| + dataProvider.setChunked(true);
|
| + urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
|
| + urlRequest.addHeader("Content-Type", "useless/string");
|
| +
|
| + assertEquals(-1, dataProvider.getLength());
|
| +
|
| + urlRequest.start();
|
| + listener.blockForDone();
|
| +
|
| + // 1 read call for the first data chunk, 1 for final chunk.
|
| + assertEquals(2, dataProvider.getNumReadCalls());
|
| + assertEquals("hello there", listener.mResponseAsString);
|
| }
|
|
|
| private void throwOrCancel(FailureType failureType, ResponseStep failureStep,
|
|
|