Chromium Code Reviews| 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..7e4abe7f8bb1f08c3cb0a13f8da93b30ab586724 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,54 @@ 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".getBytes()); |
| + dataProvider.addRead(" hello".getBytes()); |
|
mmenke
2015/02/27 20:44:44
I actually think we should just have one chunk her
xunjieli
2015/02/27 20:57:21
Done.
|
| 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(); |
| + |
| + // 2 read call for two data chunks. |
| + assertEquals(2, dataProvider.getNumReadCalls()); |
| + assertEquals("test hello", listener.mResponseAsString); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + public void testUploadChunkedLastReadZeroLengthBody() 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.addRead("".getBytes()); |
| + dataProvider.setChunked(true); |
| + urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| + urlRequest.addHeader("Content-Type", "useless/string"); |
| + |
| + assertEquals(-1, dataProvider.getLength()); |
| + |
| + urlRequest.start(); |
| + listener.blockForDone(); |
| + |
| + // 2 read call for the first two data chunks, and 1 for final chunk. |
| + assertEquals(3, dataProvider.getNumReadCalls()); |
| + assertEquals("hello there!", listener.mResponseAsString); |
| } |
| private void throwOrCancel(FailureType failureType, ResponseStep failureStep, |