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

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java

Issue 1363723002: [Cronet] Create Builders, rename UrlRequestContext to CronetEngine (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update Ben's tests Created 5 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.util.Pair; 9 import android.util.Pair;
10 10
(...skipping 26 matching lines...) Expand all
37 mActivity = launchCronetTestApp(); 37 mActivity = launchCronetTestApp();
38 assertTrue(NativeTestServer.startNativeTestServer( 38 assertTrue(NativeTestServer.startNativeTestServer(
39 getInstrumentation().getTargetContext())); 39 getInstrumentation().getTargetContext()));
40 // Add url interceptors after native application context is initialized. 40 // Add url interceptors after native application context is initialized.
41 MockUrlRequestJobFactory.setUp(); 41 MockUrlRequestJobFactory.setUp();
42 } 42 }
43 43
44 @Override 44 @Override
45 protected void tearDown() throws Exception { 45 protected void tearDown() throws Exception {
46 NativeTestServer.shutdownNativeTestServer(); 46 NativeTestServer.shutdownNativeTestServer();
47 mActivity.mUrlRequestContext.shutdown(); 47 mActivity.mCronetEngine.shutdown();
48 super.tearDown(); 48 super.tearDown();
49 } 49 }
50 50
51 private TestUrlRequestListener startAndWaitForComplete(String url) 51 private TestUrlRequestListener startAndWaitForComplete(String url)
52 throws Exception { 52 throws Exception {
53 TestUrlRequestListener listener = new TestUrlRequestListener(); 53 TestUrlRequestListener listener = new TestUrlRequestListener();
54 // Create request. 54 // Create request.
55 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 55 UrlRequest.Builder builder = new UrlRequest.Builder(
56 url, listener, listener.getExecutor()); 56 url, listener, listener.getExecutor(), mActivity.mCronetEngine);
57 UrlRequest urlRequest = builder.build();
57 urlRequest.start(); 58 urlRequest.start();
58 listener.blockForDone(); 59 listener.blockForDone();
59 assertTrue(urlRequest.isDone()); 60 assertTrue(urlRequest.isDone());
60 return listener; 61 return listener;
61 } 62 }
62 63
63 private void checkResponseInfo(ResponseInfo responseInfo, 64 private void checkResponseInfo(ResponseInfo responseInfo,
64 String expectedUrl, int expectedHttpStatusCode, 65 String expectedUrl, int expectedHttpStatusCode,
65 String expectedHttpStatusText) { 66 String expectedHttpStatusText) {
66 assertEquals(expectedUrl, responseInfo.getUrl()); 67 assertEquals(expectedUrl, responseInfo.getUrl());
67 assertEquals(expectedUrl, responseInfo.getUrlChain()[ 68 assertEquals(expectedUrl, responseInfo.getUrlChain()[
68 responseInfo.getUrlChain().length - 1]); 69 responseInfo.getUrlChain().length - 1]);
69 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); 70 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode());
70 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); 71 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText());
71 assertFalse(responseInfo.wasCached()); 72 assertFalse(responseInfo.wasCached());
72 } 73 }
73 74
74 private void checkResponseInfoHeader(ResponseInfo responseInfo, 75 private void checkResponseInfoHeader(ResponseInfo responseInfo,
75 String headerName, String headerValue) { 76 String headerName, String headerValue) {
76 Map<String, List<String>> responseHeaders = 77 Map<String, List<String>> responseHeaders =
77 responseInfo.getAllHeaders(); 78 responseInfo.getAllHeaders();
78 List<String> header = responseHeaders.get(headerName); 79 List<String> header = responseHeaders.get(headerName);
79 assertNotNull(header); 80 assertNotNull(header);
80 assertTrue(header.contains(headerValue)); 81 assertTrue(header.contains(headerValue));
81 } 82 }
82 83
83 @SmallTest 84 @SmallTest
84 @Feature({"Cronet"}) 85 @Feature({"Cronet"})
86 public void testBuilderChecks() throws Exception {
87 TestUrlRequestListener listener = new TestUrlRequestListener();
88 try {
89 new UrlRequest.Builder(null, listener, listener.getExecutor(), mActi vity.mCronetEngine);
90 fail("URL not null-checked");
91 } catch (NullPointerException e) {
92 assertEquals("URL is required.", e.getMessage());
93 }
94 try {
95 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), null, list ener.getExecutor(),
96 mActivity.mCronetEngine);
97 fail("Listener not null-checked");
98 } catch (NullPointerException e) {
99 assertEquals("Listener is required.", e.getMessage());
100 }
101 try {
102 new UrlRequest.Builder(
103 NativeTestServer.getRedirectURL(), listener, null, mActivity .mCronetEngine);
104 fail("Executor not null-checked");
105 } catch (NullPointerException e) {
106 assertEquals("Executor is required.", e.getMessage());
107 }
108 try {
109 new UrlRequest.Builder(
110 NativeTestServer.getRedirectURL(), listener, listener.getExe cutor(), null);
111 fail("CronetEngine not null-checked");
112 } catch (NullPointerException e) {
113 assertEquals("CronetEngine is required.", e.getMessage());
114 }
115 // Verify successful creation doesn't throw.
116 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, list ener.getExecutor(),
117 mActivity.mCronetEngine);
118 }
119
120 @SmallTest
121 @Feature({"Cronet"})
85 public void testSimpleGet() throws Exception { 122 public void testSimpleGet() throws Exception {
86 TestUrlRequestListener listener = startAndWaitForComplete( 123 TestUrlRequestListener listener = startAndWaitForComplete(
87 NativeTestServer.getEchoMethodURL()); 124 NativeTestServer.getEchoMethodURL());
88 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 125 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
89 // Default method is 'GET'. 126 // Default method is 'GET'.
90 assertEquals("GET", listener.mResponseAsString); 127 assertEquals("GET", listener.mResponseAsString);
91 assertEquals(0, listener.mRedirectCount); 128 assertEquals(0, listener.mRedirectCount);
92 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 129 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
93 checkResponseInfo(listener.mResponseInfo, 130 checkResponseInfo(listener.mResponseInfo,
94 NativeTestServer.getEchoMethodURL(), 200, "OK"); 131 NativeTestServer.getEchoMethodURL(), 200, "OK");
95 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(), 132 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(),
96 NativeTestServer.getEchoMethodURL(), 200, "OK"); 133 NativeTestServer.getEchoMethodURL(), 200, "OK");
97 } 134 }
98 135
99 /** 136 /**
100 * Tests a redirect by running it step-by-step. Also tests that delaying a 137 * Tests a redirect by running it step-by-step. Also tests that delaying a
101 * request works as expected. To make sure there are no unexpected pending 138 * request works as expected. To make sure there are no unexpected pending
102 * messages, does a GET between UrlRequestListener callbacks. 139 * messages, does a GET between UrlRequestListener callbacks.
103 */ 140 */
104 @SmallTest 141 @SmallTest
105 @Feature({"Cronet"}) 142 @Feature({"Cronet"})
106 public void testRedirectAsync() throws Exception { 143 public void testRedirectAsync() throws Exception {
107 // Start the request and wait to see the redirect. 144 // Start the request and wait to see the redirect.
108 TestUrlRequestListener listener = new TestUrlRequestListener(); 145 TestUrlRequestListener listener = new TestUrlRequestListener();
109 listener.setAutoAdvance(false); 146 listener.setAutoAdvance(false);
110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 147 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 148 listener, listener.getExecutor(), mActivity.mCronetEngine);
149 UrlRequest urlRequest = builder.build();
112 urlRequest.start(); 150 urlRequest.start();
113 listener.waitForNextStep(); 151 listener.waitForNextStep();
114 152
115 // Check the redirect. 153 // Check the redirect.
116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); 154 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep);
117 assertEquals(1, listener.mRedirectResponseInfoList.size()); 155 assertEquals(1, listener.mRedirectResponseInfoList.size());
118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), 156 checkResponseInfo(listener.mRedirectResponseInfoList.get(0),
119 NativeTestServer.getRedirectURL(), 302, "Found"); 157 NativeTestServer.getRedirectURL(), 302, "Found");
120 assertEquals(1, 158 assertEquals(1,
121 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); 159 listener.mRedirectResponseInfoList.get(0).getUrlChain().length);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // onFailed messages. This test relies on checks in 248 // onFailed messages. This test relies on checks in
211 // TestUrlRequestListener catching a second onFailed call. 249 // TestUrlRequestListener catching a second onFailed call.
212 testSimpleGet(); 250 testSimpleGet();
213 } 251 }
214 252
215 @SmallTest 253 @SmallTest
216 @Feature({"Cronet"}) 254 @Feature({"Cronet"})
217 public void testSetHttpMethod() throws Exception { 255 public void testSetHttpMethod() throws Exception {
218 TestUrlRequestListener listener = new TestUrlRequestListener(); 256 TestUrlRequestListener listener = new TestUrlRequestListener();
219 String methodName = "HEAD"; 257 String methodName = "HEAD";
220 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 258 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
221 NativeTestServer.getEchoMethodURL(), listener, 259 listener, listener.getExecutor(), mActivity.mCronetEngine);
222 listener.getExecutor());
223 // Try to set 'null' method. 260 // Try to set 'null' method.
224 try { 261 try {
225 urlRequest.setHttpMethod(null); 262 builder.setHttpMethod(null);
226 fail("Exception not thrown"); 263 fail("Exception not thrown");
227 } catch (NullPointerException e) { 264 } catch (NullPointerException e) {
228 assertEquals("Method is required.", e.getMessage()); 265 assertEquals("Method is required.", e.getMessage());
229 } 266 }
230 267
231 urlRequest.setHttpMethod(methodName); 268 builder.setHttpMethod(methodName);
232 urlRequest.start(); 269 builder.build().start();
233 try {
234 urlRequest.setHttpMethod("toolate");
235 fail("Exception not thrown");
236 } catch (IllegalStateException e) {
237 assertEquals("Request is already started.", e.getMessage());
238 }
239 listener.blockForDone(); 270 listener.blockForDone();
240 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 271 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
241 assertEquals(0, listener.mHttpResponseDataLength); 272 assertEquals(0, listener.mHttpResponseDataLength);
242 } 273 }
243 274
244 @SmallTest 275 @SmallTest
245 @Feature({"Cronet"}) 276 @Feature({"Cronet"})
246 public void testBadMethod() throws Exception { 277 public void testBadMethod() throws Exception {
247 TestUrlRequestListener listener = new TestUrlRequestListener(); 278 TestUrlRequestListener listener = new TestUrlRequestListener();
248 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 279 UrlRequest.Builder builder = new UrlRequest.Builder(
249 TEST_URL, listener, listener.getExecutor()); 280 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine);
250 try { 281 try {
251 urlRequest.setHttpMethod("bad:method!"); 282 builder.setHttpMethod("bad:method!");
252 urlRequest.start(); 283 builder.build().start();
253 fail("IllegalArgumentException not thrown."); 284 fail("IllegalArgumentException not thrown.");
254 } catch (IllegalArgumentException e) { 285 } catch (IllegalArgumentException e) {
255 assertEquals("Invalid http method bad:method!", 286 assertEquals("Invalid http method bad:method!",
256 e.getMessage()); 287 e.getMessage());
257 } 288 }
258 } 289 }
259 290
260 @SmallTest 291 @SmallTest
261 @Feature({"Cronet"}) 292 @Feature({"Cronet"})
262 public void testBadHeaderName() throws Exception { 293 public void testBadHeaderName() throws Exception {
263 TestUrlRequestListener listener = new TestUrlRequestListener(); 294 TestUrlRequestListener listener = new TestUrlRequestListener();
264 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 295 UrlRequest.Builder builder = new UrlRequest.Builder(
265 TEST_URL, listener, listener.getExecutor()); 296 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine);
266 try { 297 try {
267 urlRequest.addHeader("header:name", "headervalue"); 298 builder.addHeader("header:name", "headervalue");
268 urlRequest.start(); 299 builder.build().start();
269 fail("IllegalArgumentException not thrown."); 300 fail("IllegalArgumentException not thrown.");
270 } catch (IllegalArgumentException e) { 301 } catch (IllegalArgumentException e) {
271 assertEquals("Invalid header header:name=headervalue", 302 assertEquals("Invalid header header:name=headervalue",
272 e.getMessage()); 303 e.getMessage());
273 } 304 }
274 } 305 }
275 306
276 @SmallTest 307 @SmallTest
277 @Feature({"Cronet"}) 308 @Feature({"Cronet"})
278 public void testBadHeaderValue() throws Exception { 309 public void testBadHeaderValue() throws Exception {
279 TestUrlRequestListener listener = new TestUrlRequestListener(); 310 TestUrlRequestListener listener = new TestUrlRequestListener();
280 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 311 UrlRequest.Builder builder = new UrlRequest.Builder(
281 TEST_URL, listener, listener.getExecutor()); 312 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine);
282 try { 313 try {
283 urlRequest.addHeader("headername", "bad header\r\nvalue"); 314 builder.addHeader("headername", "bad header\r\nvalue");
284 urlRequest.start(); 315 builder.build().start();
285 fail("IllegalArgumentException not thrown."); 316 fail("IllegalArgumentException not thrown.");
286 } catch (IllegalArgumentException e) { 317 } catch (IllegalArgumentException e) {
287 assertEquals("Invalid header headername=bad header\r\nvalue", 318 assertEquals("Invalid header headername=bad header\r\nvalue",
288 e.getMessage()); 319 e.getMessage());
289 } 320 }
290 } 321 }
291 322
292 @SmallTest 323 @SmallTest
293 @Feature({"Cronet"}) 324 @Feature({"Cronet"})
294 public void testAddHeader() throws Exception { 325 public void testAddHeader() throws Exception {
295 TestUrlRequestListener listener = new TestUrlRequestListener(); 326 TestUrlRequestListener listener = new TestUrlRequestListener();
296 String headerName = "header-name"; 327 String headerName = "header-name";
297 String headerValue = "header-value"; 328 String headerValue = "header-value";
298 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 329 UrlRequest.Builder builder =
299 NativeTestServer.getEchoHeaderURL(headerName), listener, 330 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener,
300 listener.getExecutor()); 331 listener.getExecutor(), mActivity.mCronetEngine);
301 332
302 urlRequest.addHeader(headerName, headerValue); 333 builder.addHeader(headerName, headerValue);
303 urlRequest.start(); 334 builder.build().start();
304 try {
305 urlRequest.addHeader("header2", "value");
306 fail("Exception not thrown");
307 } catch (IllegalStateException e) {
308 assertEquals("Request is already started.", e.getMessage());
309 }
310 listener.blockForDone(); 335 listener.blockForDone();
311 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 336 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
312 assertEquals(headerValue, listener.mResponseAsString); 337 assertEquals(headerValue, listener.mResponseAsString);
313 } 338 }
314 339
315 @SmallTest 340 @SmallTest
316 @Feature({"Cronet"}) 341 @Feature({"Cronet"})
317 public void testMultiRequestHeaders() throws Exception { 342 public void testMultiRequestHeaders() throws Exception {
318 TestUrlRequestListener listener = new TestUrlRequestListener(); 343 TestUrlRequestListener listener = new TestUrlRequestListener();
319 String headerName = "header-name"; 344 String headerName = "header-name";
320 String headerValue1 = "header-value1"; 345 String headerValue1 = "header-value1";
321 String headerValue2 = "header-value2"; 346 String headerValue2 = "header-value2";
322 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 347 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoAllHeadersURL(),
323 NativeTestServer.getEchoAllHeadersURL(), listener, 348 listener, listener.getExecutor(), mActivity.mCronetEngine);
324 listener.getExecutor()); 349 builder.addHeader(headerName, headerValue1);
325 urlRequest.addHeader(headerName, headerValue1); 350 builder.addHeader(headerName, headerValue2);
326 urlRequest.addHeader(headerName, headerValue2); 351 builder.build().start();
327 urlRequest.start();
328 listener.blockForDone(); 352 listener.blockForDone();
329 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 353 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
330 String headers = listener.mResponseAsString; 354 String headers = listener.mResponseAsString;
331 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); 355 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n");
332 Matcher matcher = pattern.matcher(headers); 356 Matcher matcher = pattern.matcher(headers);
333 List<String> actualValues = new ArrayList<String>(); 357 List<String> actualValues = new ArrayList<String>();
334 while (matcher.find()) { 358 while (matcher.find()) {
335 actualValues.add(matcher.group(1)); 359 actualValues.add(matcher.group(1));
336 } 360 }
337 assertEquals(1, actualValues.size()); 361 assertEquals(1, actualValues.size());
338 assertEquals("header-value2", actualValues.get(0)); 362 assertEquals("header-value2", actualValues.get(0));
339 } 363 }
340 364
341 @SmallTest 365 @SmallTest
342 @Feature({"Cronet"}) 366 @Feature({"Cronet"})
343 public void testCustomUserAgent() throws Exception { 367 public void testCustomUserAgent() throws Exception {
344 TestUrlRequestListener listener = new TestUrlRequestListener(); 368 TestUrlRequestListener listener = new TestUrlRequestListener();
345 String userAgentName = "User-Agent"; 369 String userAgentName = "User-Agent";
346 String userAgentValue = "User-Agent-Value"; 370 String userAgentValue = "User-Agent-Value";
347 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 371 UrlRequest.Builder builder =
348 NativeTestServer.getEchoHeaderURL(userAgentName), listener, 372 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), listener,
349 listener.getExecutor()); 373 listener.getExecutor(), mActivity.mCronetEngine);
350 urlRequest.addHeader(userAgentName, userAgentValue); 374 builder.addHeader(userAgentName, userAgentValue);
351 urlRequest.start(); 375 builder.build().start();
352 listener.blockForDone(); 376 listener.blockForDone();
353 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 377 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
354 assertEquals(userAgentValue, listener.mResponseAsString); 378 assertEquals(userAgentValue, listener.mResponseAsString);
355 } 379 }
356 380
357 @SmallTest 381 @SmallTest
358 @Feature({"Cronet"}) 382 @Feature({"Cronet"})
359 public void testDefaultUserAgent() throws Exception { 383 public void testDefaultUserAgent() throws Exception {
360 TestUrlRequestListener listener = new TestUrlRequestListener(); 384 TestUrlRequestListener listener = new TestUrlRequestListener();
361 String headerName = "User-Agent"; 385 String headerName = "User-Agent";
362 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 386 UrlRequest.Builder builder =
363 NativeTestServer.getEchoHeaderURL(headerName), listener, 387 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener,
364 listener.getExecutor()); 388 listener.getExecutor(), mActivity.mCronetEngine);
365 urlRequest.start(); 389 builder.build().start();
366 listener.blockForDone(); 390 listener.blockForDone();
367 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 391 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
368 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " 392 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is "
369 + listener.mResponseAsString, 393 + listener.mResponseAsString,
370 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", 394 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+",
371 listener.mResponseAsString)); 395 listener.mResponseAsString));
372 } 396 }
373 397
374 @SmallTest 398 @SmallTest
375 @Feature({"Cronet"}) 399 @Feature({"Cronet"})
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 * when using legacy read() API. 557 * when using legacy read() API.
534 */ 558 */
535 @SmallTest 559 @SmallTest
536 @Feature({"Cronet"}) 560 @Feature({"Cronet"})
537 public void testLegacySimpleGetBufferUpdates() throws Exception { 561 public void testLegacySimpleGetBufferUpdates() throws Exception {
538 TestUrlRequestListener listener = new TestUrlRequestListener(); 562 TestUrlRequestListener listener = new TestUrlRequestListener();
539 listener.mLegacyReadByteBufferAdjustment = true; 563 listener.mLegacyReadByteBufferAdjustment = true;
540 listener.setAutoAdvance(false); 564 listener.setAutoAdvance(false);
541 // Since the default method is "GET", the expected response body is also 565 // Since the default method is "GET", the expected response body is also
542 // "GET". 566 // "GET".
543 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 567 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
544 NativeTestServer.getEchoMethodURL(), 568 listener, listener.getExecutor(), mActivity.mCronetEngine);
545 listener, listener.getExecutor()); 569 UrlRequest urlRequest = builder.build();
546 urlRequest.start(); 570 urlRequest.start();
547 listener.waitForNextStep(); 571 listener.waitForNextStep();
548 572
549 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 573 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
550 readBuffer.put("FOR".getBytes()); 574 readBuffer.put("FOR".getBytes());
551 assertEquals(3, readBuffer.position()); 575 assertEquals(3, readBuffer.position());
552 576
553 // Read first two characters of the response ("GE"). It's theoretically 577 // Read first two characters of the response ("GE"). It's theoretically
554 // possible to need one read per character, though in practice, 578 // possible to need one read per character, though in practice,
555 // shouldn't happen. 579 // shouldn't happen.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 /** 644 /**
621 * Checks that the buffer is updated correctly, when starting at an offset. 645 * Checks that the buffer is updated correctly, when starting at an offset.
622 */ 646 */
623 @SmallTest 647 @SmallTest
624 @Feature({"Cronet"}) 648 @Feature({"Cronet"})
625 public void testSimpleGetBufferUpdates() throws Exception { 649 public void testSimpleGetBufferUpdates() throws Exception {
626 TestUrlRequestListener listener = new TestUrlRequestListener(); 650 TestUrlRequestListener listener = new TestUrlRequestListener();
627 listener.setAutoAdvance(false); 651 listener.setAutoAdvance(false);
628 // Since the default method is "GET", the expected response body is also 652 // Since the default method is "GET", the expected response body is also
629 // "GET". 653 // "GET".
630 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 654 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
631 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 655 listener, listener.getExecutor(), mActivity.mCronetEngine);
656 UrlRequest urlRequest = builder.build();
632 urlRequest.start(); 657 urlRequest.start();
633 listener.waitForNextStep(); 658 listener.waitForNextStep();
634 659
635 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 660 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
636 readBuffer.put("FOR".getBytes()); 661 readBuffer.put("FOR".getBytes());
637 assertEquals(3, readBuffer.position()); 662 assertEquals(3, readBuffer.position());
638 663
639 // Read first two characters of the response ("GE"). It's theoretically 664 // Read first two characters of the response ("GE"). It's theoretically
640 // possible to need one read per character, though in practice, 665 // possible to need one read per character, though in practice,
641 // shouldn't happen. 666 // shouldn't happen.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 // Make sure there are no other pending messages, which would trigger 726 // Make sure there are no other pending messages, which would trigger
702 // asserts in TestURLRequestListener. 727 // asserts in TestURLRequestListener.
703 testSimpleGet(); 728 testSimpleGet();
704 } 729 }
705 730
706 @SmallTest 731 @SmallTest
707 @Feature({"Cronet"}) 732 @Feature({"Cronet"})
708 public void testBadBuffers() throws Exception { 733 public void testBadBuffers() throws Exception {
709 TestUrlRequestListener listener = new TestUrlRequestListener(); 734 TestUrlRequestListener listener = new TestUrlRequestListener();
710 listener.setAutoAdvance(false); 735 listener.setAutoAdvance(false);
711 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 736 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
712 NativeTestServer.getEchoMethodURL(), listener, 737 listener, listener.getExecutor(), mActivity.mCronetEngine);
713 listener.getExecutor()); 738 UrlRequest urlRequest = builder.build();
714 urlRequest.start(); 739 urlRequest.start();
715 listener.waitForNextStep(); 740 listener.waitForNextStep();
716 741
717 // Try to read using a full buffer. 742 // Try to read using a full buffer.
718 try { 743 try {
719 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); 744 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4);
720 readBuffer.put("full".getBytes()); 745 readBuffer.put("full".getBytes());
721 urlRequest.readNew(readBuffer); 746 urlRequest.readNew(readBuffer);
722 fail("Exception not thrown"); 747 fail("Exception not thrown");
723 } catch (IllegalArgumentException e) { 748 } catch (IllegalArgumentException e) {
(...skipping 18 matching lines...) Expand all
742 listener.blockForDone(); 767 listener.blockForDone();
743 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 768 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
744 assertEquals("GET", listener.mResponseAsString); 769 assertEquals("GET", listener.mResponseAsString);
745 } 770 }
746 771
747 @SmallTest 772 @SmallTest
748 @Feature({"Cronet"}) 773 @Feature({"Cronet"})
749 public void testUnexpectedReads() throws Exception { 774 public void testUnexpectedReads() throws Exception {
750 final TestUrlRequestListener listener = new TestUrlRequestListener(); 775 final TestUrlRequestListener listener = new TestUrlRequestListener();
751 listener.setAutoAdvance(false); 776 listener.setAutoAdvance(false);
752 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( 777 final UrlRequest urlRequest =
753 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 778 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er,
779 listener.getExecutor(), mActivity.mCronetE ngine)
780 .build();
754 781
755 // Try to read before starting request. 782 // Try to read before starting request.
756 try { 783 try {
757 listener.startNextRead(urlRequest); 784 listener.startNextRead(urlRequest);
758 fail("Exception not thrown"); 785 fail("Exception not thrown");
759 } catch (IllegalStateException e) { 786 } catch (IllegalStateException e) {
760 assertEquals("Unexpected read attempt.", 787 assertEquals("Unexpected read attempt.",
761 e.getMessage()); 788 e.getMessage());
762 } 789 }
763 790
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 assertEquals("Unexpected read attempt.", 852 assertEquals("Unexpected read attempt.",
826 e.getMessage()); 853 e.getMessage());
827 } 854 }
828 } 855 }
829 856
830 @SmallTest 857 @SmallTest
831 @Feature({"Cronet"}) 858 @Feature({"Cronet"})
832 public void testUnexpectedFollowRedirects() throws Exception { 859 public void testUnexpectedFollowRedirects() throws Exception {
833 final TestUrlRequestListener listener = new TestUrlRequestListener(); 860 final TestUrlRequestListener listener = new TestUrlRequestListener();
834 listener.setAutoAdvance(false); 861 listener.setAutoAdvance(false);
835 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( 862 final UrlRequest urlRequest =
836 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 863 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er,
864 listener.getExecutor(), mActivity.mCronetE ngine)
865 .build();
837 866
838 // Try to follow a redirect before starting the request. 867 // Try to follow a redirect before starting the request.
839 try { 868 try {
840 urlRequest.followRedirect(); 869 urlRequest.followRedirect();
841 fail("Exception not thrown"); 870 fail("Exception not thrown");
842 } catch (IllegalStateException e) { 871 } catch (IllegalStateException e) {
843 assertEquals("No redirect to follow.", 872 assertEquals("No redirect to follow.",
844 e.getMessage()); 873 e.getMessage());
845 } 874 }
846 875
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 } catch (IllegalStateException e) { 934 } catch (IllegalStateException e) {
906 assertEquals("No redirect to follow.", 935 assertEquals("No redirect to follow.",
907 e.getMessage()); 936 e.getMessage());
908 } 937 }
909 } 938 }
910 939
911 @SmallTest 940 @SmallTest
912 @Feature({"Cronet"}) 941 @Feature({"Cronet"})
913 public void testUploadSetDataProvider() throws Exception { 942 public void testUploadSetDataProvider() throws Exception {
914 TestUrlRequestListener listener = new TestUrlRequestListener(); 943 TestUrlRequestListener listener = new TestUrlRequestListener();
915 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 944 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
916 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 945 listener, listener.getExecutor(), mActivity.mCronetEngine);
917 946
918 try { 947 try {
919 urlRequest.setUploadDataProvider(null, listener.getExecutor()); 948 builder.setUploadDataProvider(null, listener.getExecutor());
920 fail("Exception not thrown"); 949 fail("Exception not thrown");
921 } catch (NullPointerException e) { 950 } catch (NullPointerException e) {
922 assertEquals("Invalid UploadDataProvider.", e.getMessage()); 951 assertEquals("Invalid UploadDataProvider.", e.getMessage());
923 } 952 }
924 953
925 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 954 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
926 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 955 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
927 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 956 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
928 try { 957 try {
929 urlRequest.start(); 958 builder.build().start();
930 fail("Exception not thrown"); 959 fail("Exception not thrown");
931 } catch (IllegalArgumentException e) { 960 } catch (IllegalArgumentException e) {
932 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage()); 961 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage());
933 } 962 }
934 } 963 }
935 964
936 @SmallTest 965 @SmallTest
937 @Feature({"Cronet"}) 966 @Feature({"Cronet"})
938 public void testUploadEmptyBodySync() throws Exception { 967 public void testUploadEmptyBodySync() throws Exception {
939 TestUrlRequestListener listener = new TestUrlRequestListener(); 968 TestUrlRequestListener listener = new TestUrlRequestListener();
940 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 969 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
941 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 970 listener, listener.getExecutor(), mActivity.mCronetEngine);
942 971
943 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 972 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
944 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 973 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
945 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 974 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
946 urlRequest.addHeader("Content-Type", "useless/string"); 975 builder.addHeader("Content-Type", "useless/string");
947 urlRequest.start(); 976 builder.build().start();
948 listener.blockForDone(); 977 listener.blockForDone();
949 978
950 assertEquals(0, dataProvider.getLength()); 979 assertEquals(0, dataProvider.getLength());
951 assertEquals(0, dataProvider.getNumReadCalls()); 980 assertEquals(0, dataProvider.getNumReadCalls());
952 assertEquals(0, dataProvider.getNumRewindCalls()); 981 assertEquals(0, dataProvider.getNumRewindCalls());
953 982
954 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 983 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
955 assertEquals("", listener.mResponseAsString); 984 assertEquals("", listener.mResponseAsString);
956 } 985 }
957 986
958 @SmallTest 987 @SmallTest
959 @Feature({"Cronet"}) 988 @Feature({"Cronet"})
960 public void testUploadSync() throws Exception { 989 public void testUploadSync() throws Exception {
961 TestUrlRequestListener listener = new TestUrlRequestListener(); 990 TestUrlRequestListener listener = new TestUrlRequestListener();
962 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 991 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
963 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 992 listener, listener.getExecutor(), mActivity.mCronetEngine);
964 993
965 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 994 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
966 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 995 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
967 dataProvider.addRead("test".getBytes()); 996 dataProvider.addRead("test".getBytes());
968 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 997 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
969 urlRequest.addHeader("Content-Type", "useless/string"); 998 builder.addHeader("Content-Type", "useless/string");
970 urlRequest.start(); 999 builder.build().start();
971 listener.blockForDone(); 1000 listener.blockForDone();
972 1001
973 assertEquals(4, dataProvider.getLength()); 1002 assertEquals(4, dataProvider.getLength());
974 assertEquals(1, dataProvider.getNumReadCalls()); 1003 assertEquals(1, dataProvider.getNumReadCalls());
975 assertEquals(0, dataProvider.getNumRewindCalls()); 1004 assertEquals(0, dataProvider.getNumRewindCalls());
976 1005
977 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1006 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
978 assertEquals("test", listener.mResponseAsString); 1007 assertEquals("test", listener.mResponseAsString);
979 } 1008 }
980 1009
981 @SmallTest 1010 @SmallTest
982 @Feature({"Cronet"}) 1011 @Feature({"Cronet"})
983 public void testUploadMultiplePiecesSync() throws Exception { 1012 public void testUploadMultiplePiecesSync() throws Exception {
984 TestUrlRequestListener listener = new TestUrlRequestListener(); 1013 TestUrlRequestListener listener = new TestUrlRequestListener();
985 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1014 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
986 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1015 listener, listener.getExecutor(), mActivity.mCronetEngine);
987 1016
988 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1017 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
989 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1018 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
990 dataProvider.addRead("Y".getBytes()); 1019 dataProvider.addRead("Y".getBytes());
991 dataProvider.addRead("et ".getBytes()); 1020 dataProvider.addRead("et ".getBytes());
992 dataProvider.addRead("another ".getBytes()); 1021 dataProvider.addRead("another ".getBytes());
993 dataProvider.addRead("test".getBytes()); 1022 dataProvider.addRead("test".getBytes());
994 1023
995 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1024 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
996 urlRequest.addHeader("Content-Type", "useless/string"); 1025 builder.addHeader("Content-Type", "useless/string");
997 urlRequest.start(); 1026 builder.build().start();
998 listener.blockForDone(); 1027 listener.blockForDone();
999 1028
1000 assertEquals(16, dataProvider.getLength()); 1029 assertEquals(16, dataProvider.getLength());
1001 assertEquals(4, dataProvider.getNumReadCalls()); 1030 assertEquals(4, dataProvider.getNumReadCalls());
1002 assertEquals(0, dataProvider.getNumRewindCalls()); 1031 assertEquals(0, dataProvider.getNumRewindCalls());
1003 1032
1004 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1033 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1005 assertEquals("Yet another test", listener.mResponseAsString); 1034 assertEquals("Yet another test", listener.mResponseAsString);
1006 } 1035 }
1007 1036
1008 @SmallTest 1037 @SmallTest
1009 @Feature({"Cronet"}) 1038 @Feature({"Cronet"})
1010 public void testUploadMultiplePiecesAsync() throws Exception { 1039 public void testUploadMultiplePiecesAsync() throws Exception {
1011 TestUrlRequestListener listener = new TestUrlRequestListener(); 1040 TestUrlRequestListener listener = new TestUrlRequestListener();
1012 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1041 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1013 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1042 listener, listener.getExecutor(), mActivity.mCronetEngine);
1014 1043
1015 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1044 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1016 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1045 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1017 dataProvider.addRead("Y".getBytes()); 1046 dataProvider.addRead("Y".getBytes());
1018 dataProvider.addRead("et ".getBytes()); 1047 dataProvider.addRead("et ".getBytes());
1019 dataProvider.addRead("another ".getBytes()); 1048 dataProvider.addRead("another ".getBytes());
1020 dataProvider.addRead("test".getBytes()); 1049 dataProvider.addRead("test".getBytes());
1021 1050
1022 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1051 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1023 urlRequest.addHeader("Content-Type", "useless/string"); 1052 builder.addHeader("Content-Type", "useless/string");
1024 urlRequest.start(); 1053 builder.build().start();
1025 listener.blockForDone(); 1054 listener.blockForDone();
1026 1055
1027 assertEquals(16, dataProvider.getLength()); 1056 assertEquals(16, dataProvider.getLength());
1028 assertEquals(4, dataProvider.getNumReadCalls()); 1057 assertEquals(4, dataProvider.getNumReadCalls());
1029 assertEquals(0, dataProvider.getNumRewindCalls()); 1058 assertEquals(0, dataProvider.getNumRewindCalls());
1030 1059
1031 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1060 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1032 assertEquals("Yet another test", listener.mResponseAsString); 1061 assertEquals("Yet another test", listener.mResponseAsString);
1033 } 1062 }
1034 1063
1035 @SmallTest 1064 @SmallTest
1036 @Feature({"Cronet"}) 1065 @Feature({"Cronet"})
1037 public void testUploadChangesDefaultMethod() throws Exception { 1066 public void testUploadChangesDefaultMethod() throws Exception {
1038 TestUrlRequestListener listener = new TestUrlRequestListener(); 1067 TestUrlRequestListener listener = new TestUrlRequestListener();
1039 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1068 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
1040 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 1069 listener, listener.getExecutor(), mActivity.mCronetEngine);
1041 1070
1042 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1071 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1043 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1072 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1044 dataProvider.addRead("test".getBytes()); 1073 dataProvider.addRead("test".getBytes());
1045 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1074 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1046 urlRequest.addHeader("Content-Type", "useless/string"); 1075 builder.addHeader("Content-Type", "useless/string");
1047 urlRequest.start(); 1076 builder.build().start();
1048 listener.blockForDone(); 1077 listener.blockForDone();
1049 1078
1050 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1079 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1051 assertEquals("POST", listener.mResponseAsString); 1080 assertEquals("POST", listener.mResponseAsString);
1052 } 1081 }
1053 1082
1054 @SmallTest 1083 @SmallTest
1055 @Feature({"Cronet"}) 1084 @Feature({"Cronet"})
1056 public void testUploadWithSetMethod() throws Exception { 1085 public void testUploadWithSetMethod() throws Exception {
1057 TestUrlRequestListener listener = new TestUrlRequestListener(); 1086 TestUrlRequestListener listener = new TestUrlRequestListener();
1058 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1087 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
1059 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 1088 listener, listener.getExecutor(), mActivity.mCronetEngine);
1060 1089
1061 final String method = "PUT"; 1090 final String method = "PUT";
1062 urlRequest.setHttpMethod(method); 1091 builder.setHttpMethod(method);
1063 1092
1064 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1093 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1065 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1094 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1066 dataProvider.addRead("test".getBytes()); 1095 dataProvider.addRead("test".getBytes());
1067 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1096 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1068 urlRequest.addHeader("Content-Type", "useless/string"); 1097 builder.addHeader("Content-Type", "useless/string");
1069 urlRequest.start(); 1098 builder.build().start();
1070 listener.blockForDone(); 1099 listener.blockForDone();
1071 1100
1072 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1101 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1073 assertEquals("PUT", listener.mResponseAsString); 1102 assertEquals("PUT", listener.mResponseAsString);
1074 } 1103 }
1075 1104
1076 @SmallTest 1105 @SmallTest
1077 @Feature({"Cronet"}) 1106 @Feature({"Cronet"})
1078 public void testUploadRedirectSync() throws Exception { 1107 public void testUploadRedirectSync() throws Exception {
1079 TestUrlRequestListener listener = new TestUrlRequestListener(); 1108 TestUrlRequestListener listener = new TestUrlRequestListener();
1080 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1109 UrlRequest.Builder builder =
1081 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1110 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1111 listener.getExecutor(), mActivity.mCronetEngine);
1082 1112
1083 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1113 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1084 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1114 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1085 dataProvider.addRead("test".getBytes()); 1115 dataProvider.addRead("test".getBytes());
1086 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1116 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1087 urlRequest.addHeader("Content-Type", "useless/string"); 1117 builder.addHeader("Content-Type", "useless/string");
1088 urlRequest.start(); 1118 builder.build().start();
1089 listener.blockForDone(); 1119 listener.blockForDone();
1090 1120
1091 // 1 read call before the rewind, 1 after. 1121 // 1 read call before the rewind, 1 after.
1092 assertEquals(2, dataProvider.getNumReadCalls()); 1122 assertEquals(2, dataProvider.getNumReadCalls());
1093 assertEquals(1, dataProvider.getNumRewindCalls()); 1123 assertEquals(1, dataProvider.getNumRewindCalls());
1094 1124
1095 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1125 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1096 assertEquals("test", listener.mResponseAsString); 1126 assertEquals("test", listener.mResponseAsString);
1097 } 1127 }
1098 1128
1099 @SmallTest 1129 @SmallTest
1100 @Feature({"Cronet"}) 1130 @Feature({"Cronet"})
1101 public void testUploadRedirectAsync() throws Exception { 1131 public void testUploadRedirectAsync() throws Exception {
1102 TestUrlRequestListener listener = new TestUrlRequestListener(); 1132 TestUrlRequestListener listener = new TestUrlRequestListener();
1103 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1133 UrlRequest.Builder builder =
1104 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1134 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1135 listener.getExecutor(), mActivity.mCronetEngine);
1105 1136
1106 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1137 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1107 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1138 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1108 dataProvider.addRead("test".getBytes()); 1139 dataProvider.addRead("test".getBytes());
1109 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1140 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1110 urlRequest.addHeader("Content-Type", "useless/string"); 1141 builder.addHeader("Content-Type", "useless/string");
1111 urlRequest.start(); 1142 builder.build().start();
1112 listener.blockForDone(); 1143 listener.blockForDone();
1113 1144
1114 // 1 read call before the rewind, 1 after. 1145 // 1 read call before the rewind, 1 after.
1115 assertEquals(2, dataProvider.getNumReadCalls()); 1146 assertEquals(2, dataProvider.getNumReadCalls());
1116 assertEquals(1, dataProvider.getNumRewindCalls()); 1147 assertEquals(1, dataProvider.getNumRewindCalls());
1117 1148
1118 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1149 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1119 assertEquals("test", listener.mResponseAsString); 1150 assertEquals("test", listener.mResponseAsString);
1120 } 1151 }
1121 1152
1122 @SmallTest 1153 @SmallTest
1123 @Feature({"Cronet"}) 1154 @Feature({"Cronet"})
1124 public void testUploadReadFailSync() throws Exception { 1155 public void testUploadReadFailSync() throws Exception {
1125 TestUrlRequestListener listener = new TestUrlRequestListener(); 1156 TestUrlRequestListener listener = new TestUrlRequestListener();
1126 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1157 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1127 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1158 listener, listener.getExecutor(), mActivity.mCronetEngine);
1128 1159
1129 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1160 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1130 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1161 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1131 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); 1162 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
1132 // This will never be read, but if the length is 0, read may never be 1163 // This will never be read, but if the length is 0, read may never be
1133 // called. 1164 // called.
1134 dataProvider.addRead("test".getBytes()); 1165 dataProvider.addRead("test".getBytes());
1135 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1166 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1136 urlRequest.addHeader("Content-Type", "useless/string"); 1167 builder.addHeader("Content-Type", "useless/string");
1137 urlRequest.start(); 1168 builder.build().start();
1138 listener.blockForDone(); 1169 listener.blockForDone();
1139 1170
1140 assertEquals(1, dataProvider.getNumReadCalls()); 1171 assertEquals(1, dataProvider.getNumReadCalls());
1141 assertEquals(0, dataProvider.getNumRewindCalls()); 1172 assertEquals(0, dataProvider.getNumRewindCalls());
1142 1173
1143 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1174 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1144 assertEquals("Sync read failure", listener.mError.getCause().getMessage( )); 1175 assertEquals("Sync read failure", listener.mError.getCause().getMessage( ));
1145 assertEquals(null, listener.mResponseInfo); 1176 assertEquals(null, listener.mResponseInfo);
1146 } 1177 }
1147 1178
1148 @SmallTest 1179 @SmallTest
1149 @Feature({"Cronet"}) 1180 @Feature({"Cronet"})
1150 public void testUploadReadFailAsync() throws Exception { 1181 public void testUploadReadFailAsync() throws Exception {
1151 TestUrlRequestListener listener = new TestUrlRequestListener(); 1182 TestUrlRequestListener listener = new TestUrlRequestListener();
1152 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1183 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1153 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1184 listener, listener.getExecutor(), mActivity.mCronetEngine);
1154 1185
1155 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1186 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1156 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1187 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1157 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); 1188 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
1158 // This will never be read, but if the length is 0, read may never be 1189 // This will never be read, but if the length is 0, read may never be
1159 // called. 1190 // called.
1160 dataProvider.addRead("test".getBytes()); 1191 dataProvider.addRead("test".getBytes());
1161 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1192 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1162 urlRequest.addHeader("Content-Type", "useless/string"); 1193 builder.addHeader("Content-Type", "useless/string");
1163 urlRequest.start(); 1194 builder.build().start();
1164 listener.blockForDone(); 1195 listener.blockForDone();
1165 1196
1166 assertEquals(1, dataProvider.getNumReadCalls()); 1197 assertEquals(1, dataProvider.getNumReadCalls());
1167 assertEquals(0, dataProvider.getNumRewindCalls()); 1198 assertEquals(0, dataProvider.getNumRewindCalls());
1168 1199
1169 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1200 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1170 assertEquals("Async read failure", listener.mError.getCause().getMessage ()); 1201 assertEquals("Async read failure", listener.mError.getCause().getMessage ());
1171 assertEquals(null, listener.mResponseInfo); 1202 assertEquals(null, listener.mResponseInfo);
1172 } 1203 }
1173 1204
1174 @SmallTest 1205 @SmallTest
1175 @Feature({"Cronet"}) 1206 @Feature({"Cronet"})
1176 public void testUploadReadFailThrown() throws Exception { 1207 public void testUploadReadFailThrown() throws Exception {
1177 TestUrlRequestListener listener = new TestUrlRequestListener(); 1208 TestUrlRequestListener listener = new TestUrlRequestListener();
1178 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1209 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1179 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1210 listener, listener.getExecutor(), mActivity.mCronetEngine);
1180 1211
1181 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1212 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1182 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1213 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1183 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); 1214 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
1184 // This will never be read, but if the length is 0, read may never be 1215 // This will never be read, but if the length is 0, read may never be
1185 // called. 1216 // called.
1186 dataProvider.addRead("test".getBytes()); 1217 dataProvider.addRead("test".getBytes());
1187 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1218 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1188 urlRequest.addHeader("Content-Type", "useless/string"); 1219 builder.addHeader("Content-Type", "useless/string");
1189 urlRequest.start(); 1220 builder.build().start();
1190 listener.blockForDone(); 1221 listener.blockForDone();
1191 1222
1192 assertEquals(1, dataProvider.getNumReadCalls()); 1223 assertEquals(1, dataProvider.getNumReadCalls());
1193 assertEquals(0, dataProvider.getNumRewindCalls()); 1224 assertEquals(0, dataProvider.getNumRewindCalls());
1194 1225
1195 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1226 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1196 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e()); 1227 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e());
1197 assertEquals(null, listener.mResponseInfo); 1228 assertEquals(null, listener.mResponseInfo);
1198 } 1229 }
1199 1230
1200 @SmallTest 1231 @SmallTest
1201 @Feature({"Cronet"}) 1232 @Feature({"Cronet"})
1202 public void testUploadRewindFailSync() throws Exception { 1233 public void testUploadRewindFailSync() throws Exception {
1203 TestUrlRequestListener listener = new TestUrlRequestListener(); 1234 TestUrlRequestListener listener = new TestUrlRequestListener();
1204 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1235 UrlRequest.Builder builder =
1205 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1236 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1237 listener.getExecutor(), mActivity.mCronetEngine);
1206 1238
1207 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1239 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1208 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1240 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1209 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); 1241 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
1210 dataProvider.addRead("test".getBytes()); 1242 dataProvider.addRead("test".getBytes());
1211 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1243 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1212 urlRequest.addHeader("Content-Type", "useless/string"); 1244 builder.addHeader("Content-Type", "useless/string");
1213 urlRequest.start(); 1245 builder.build().start();
1214 listener.blockForDone(); 1246 listener.blockForDone();
1215 1247
1216 assertEquals(1, dataProvider.getNumReadCalls()); 1248 assertEquals(1, dataProvider.getNumReadCalls());
1217 assertEquals(1, dataProvider.getNumRewindCalls()); 1249 assertEquals(1, dataProvider.getNumRewindCalls());
1218 1250
1219 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1251 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1220 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e()); 1252 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e());
1221 assertEquals(null, listener.mResponseInfo); 1253 assertEquals(null, listener.mResponseInfo);
1222 } 1254 }
1223 1255
1224 @SmallTest 1256 @SmallTest
1225 @Feature({"Cronet"}) 1257 @Feature({"Cronet"})
1226 public void testUploadRewindFailAsync() throws Exception { 1258 public void testUploadRewindFailAsync() throws Exception {
1227 TestUrlRequestListener listener = new TestUrlRequestListener(); 1259 TestUrlRequestListener listener = new TestUrlRequestListener();
1228 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1260 UrlRequest.Builder builder =
1229 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1261 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1262 listener.getExecutor(), mActivity.mCronetEngine);
1230 1263
1231 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1264 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1232 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1265 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1233 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); 1266 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
1234 dataProvider.addRead("test".getBytes()); 1267 dataProvider.addRead("test".getBytes());
1235 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1268 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1236 urlRequest.addHeader("Content-Type", "useless/string"); 1269 builder.addHeader("Content-Type", "useless/string");
1237 urlRequest.start(); 1270 builder.build().start();
1238 listener.blockForDone(); 1271 listener.blockForDone();
1239 1272
1240 assertEquals(1, dataProvider.getNumReadCalls()); 1273 assertEquals(1, dataProvider.getNumReadCalls());
1241 assertEquals(1, dataProvider.getNumRewindCalls()); 1274 assertEquals(1, dataProvider.getNumRewindCalls());
1242 1275
1243 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1276 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1244 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge()); 1277 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge());
1245 assertEquals(null, listener.mResponseInfo); 1278 assertEquals(null, listener.mResponseInfo);
1246 } 1279 }
1247 1280
1248 @SmallTest 1281 @SmallTest
1249 @Feature({"Cronet"}) 1282 @Feature({"Cronet"})
1250 public void testUploadRewindFailThrown() throws Exception { 1283 public void testUploadRewindFailThrown() throws Exception {
1251 TestUrlRequestListener listener = new TestUrlRequestListener(); 1284 TestUrlRequestListener listener = new TestUrlRequestListener();
1252 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1285 UrlRequest.Builder builder =
1253 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1286 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1287 listener.getExecutor(), mActivity.mCronetEngine);
1254 1288
1255 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1289 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1256 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1290 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1257 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); 1291 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
1258 dataProvider.addRead("test".getBytes()); 1292 dataProvider.addRead("test".getBytes());
1259 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1293 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1260 urlRequest.addHeader("Content-Type", "useless/string"); 1294 builder.addHeader("Content-Type", "useless/string");
1261 urlRequest.start(); 1295 builder.build().start();
1262 listener.blockForDone(); 1296 listener.blockForDone();
1263 1297
1264 assertEquals(1, dataProvider.getNumReadCalls()); 1298 assertEquals(1, dataProvider.getNumReadCalls());
1265 assertEquals(1, dataProvider.getNumRewindCalls()); 1299 assertEquals(1, dataProvider.getNumRewindCalls());
1266 1300
1267 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1301 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1268 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age()); 1302 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age());
1269 assertEquals(null, listener.mResponseInfo); 1303 assertEquals(null, listener.mResponseInfo);
1270 } 1304 }
1271 1305
1272 @SmallTest 1306 @SmallTest
1273 @Feature({"Cronet"}) 1307 @Feature({"Cronet"})
1274 public void testUploadChunked() throws Exception { 1308 public void testUploadChunked() throws Exception {
1275 TestUrlRequestListener listener = new TestUrlRequestListener(); 1309 TestUrlRequestListener listener = new TestUrlRequestListener();
1276 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1310 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1277 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1311 listener, listener.getExecutor(), mActivity.mCronetEngine);
1278 1312
1279 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1313 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1280 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1314 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1281 dataProvider.addRead("test hello".getBytes()); 1315 dataProvider.addRead("test hello".getBytes());
1282 dataProvider.setChunked(true); 1316 dataProvider.setChunked(true);
1283 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1317 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1284 urlRequest.addHeader("Content-Type", "useless/string"); 1318 builder.addHeader("Content-Type", "useless/string");
1285 1319
1286 assertEquals(-1, dataProvider.getLength()); 1320 assertEquals(-1, dataProvider.getLength());
1287 1321
1288 urlRequest.start(); 1322 builder.build().start();
1289 listener.blockForDone(); 1323 listener.blockForDone();
1290 1324
1291 // 1 read call for one data chunk. 1325 // 1 read call for one data chunk.
1292 assertEquals(1, dataProvider.getNumReadCalls()); 1326 assertEquals(1, dataProvider.getNumReadCalls());
1293 assertEquals("test hello", listener.mResponseAsString); 1327 assertEquals("test hello", listener.mResponseAsString);
1294 } 1328 }
1295 1329
1296 @SmallTest 1330 @SmallTest
1297 @Feature({"Cronet"}) 1331 @Feature({"Cronet"})
1298 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { 1332 public void testUploadChunkedLastReadZeroLengthBody() throws Exception {
1299 TestUrlRequestListener listener = new TestUrlRequestListener(); 1333 TestUrlRequestListener listener = new TestUrlRequestListener();
1300 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1334 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1301 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1335 listener, listener.getExecutor(), mActivity.mCronetEngine);
1302 1336
1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1337 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1338 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1305 // Add 3 reads. The last read has a 0-length body. 1339 // Add 3 reads. The last read has a 0-length body.
1306 dataProvider.addRead("hello there".getBytes()); 1340 dataProvider.addRead("hello there".getBytes());
1307 dataProvider.addRead("!".getBytes()); 1341 dataProvider.addRead("!".getBytes());
1308 dataProvider.addRead("".getBytes()); 1342 dataProvider.addRead("".getBytes());
1309 dataProvider.setChunked(true); 1343 dataProvider.setChunked(true);
1310 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1344 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1311 urlRequest.addHeader("Content-Type", "useless/string"); 1345 builder.addHeader("Content-Type", "useless/string");
1312 1346
1313 assertEquals(-1, dataProvider.getLength()); 1347 assertEquals(-1, dataProvider.getLength());
1314 1348
1315 urlRequest.start(); 1349 builder.build().start();
1316 listener.blockForDone(); 1350 listener.blockForDone();
1317 1351
1318 // 2 read call for the first two data chunks, and 1 for final chunk. 1352 // 2 read call for the first two data chunks, and 1 for final chunk.
1319 assertEquals(3, dataProvider.getNumReadCalls()); 1353 assertEquals(3, dataProvider.getNumReadCalls());
1320 assertEquals("hello there!", listener.mResponseAsString); 1354 assertEquals("hello there!", listener.mResponseAsString);
1321 } 1355 }
1322 1356
1323 // Test where an upload fails without ever initializing the 1357 // Test where an upload fails without ever initializing the
1324 // UploadDataStream, because it can't connect to the server. 1358 // UploadDataStream, because it can't connect to the server.
1325 @SmallTest 1359 @SmallTest
1326 @Feature({"Cronet"}) 1360 @Feature({"Cronet"})
1327 public void testUploadFailsWithoutInitializingStream() throws Exception { 1361 public void testUploadFailsWithoutInitializingStream() throws Exception {
1328 TestUrlRequestListener listener = new TestUrlRequestListener(); 1362 TestUrlRequestListener listener = new TestUrlRequestListener();
1329 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1363 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1330 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1364 listener, listener.getExecutor(), mActivity.mCronetEngine);
1331 // Shut down the test server, so connecting to it fails. Note that 1365 // Shut down the test server, so connecting to it fails. Note that
1332 // calling shutdown again during teardown is safe. 1366 // calling shutdown again during teardown is safe.
1333 NativeTestServer.shutdownNativeTestServer(); 1367 NativeTestServer.shutdownNativeTestServer();
1334 1368
1335 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1369 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1336 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1370 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1337 dataProvider.addRead("test".getBytes()); 1371 dataProvider.addRead("test".getBytes());
1338 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1372 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1339 urlRequest.addHeader("Content-Type", "useless/string"); 1373 builder.addHeader("Content-Type", "useless/string");
1340 urlRequest.start(); 1374 builder.build().start();
1341 listener.blockForDone(); 1375 listener.blockForDone();
1342 1376
1343 assertNull(listener.mResponseInfo); 1377 assertNull(listener.mResponseInfo);
1344 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", 1378 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ",
1345 listener.mError.getMessage()); 1379 listener.mError.getMessage());
1346 } 1380 }
1347 1381
1348 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 1382 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
1349 boolean expectResponseInfo, boolean expectError) { 1383 boolean expectResponseInfo, boolean expectError) {
1350 TestUrlRequestListener listener = new TestUrlRequestListener(); 1384 TestUrlRequestListener listener = new TestUrlRequestListener();
1351 listener.setFailure(failureType, failureStep); 1385 listener.setFailure(failureType, failureStep);
1352 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1386 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
1353 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 1387 listener, listener.getExecutor(), mActivity.mCronetEngine);
1388 UrlRequest urlRequest = builder.build();
1354 urlRequest.start(); 1389 urlRequest.start();
1355 listener.blockForDone(); 1390 listener.blockForDone();
1356 assertEquals(1, listener.mRedirectCount); 1391 assertEquals(1, listener.mRedirectCount);
1357 assertEquals(listener.mResponseStep, failureStep); 1392 assertEquals(listener.mResponseStep, failureStep);
1358 assertTrue(urlRequest.isDone()); 1393 assertTrue(urlRequest.isDone());
1359 assertEquals(expectResponseInfo, listener.mResponseInfo != null); 1394 assertEquals(expectResponseInfo, listener.mResponseInfo != null);
1360 assertEquals(expectError, listener.mError != null); 1395 assertEquals(expectError, listener.mError != null);
1361 assertEquals(expectError, listener.mOnErrorCalled); 1396 assertEquals(expectError, listener.mOnErrorCalled);
1362 } 1397 }
1363 1398
(...skipping 26 matching lines...) Expand all
1390 true, false); 1425 true, false);
1391 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, 1426 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED,
1392 true, true); 1427 true, true);
1393 } 1428 }
1394 1429
1395 @SmallTest 1430 @SmallTest
1396 @Feature({"Cronet"}) 1431 @Feature({"Cronet"})
1397 public void testThrowON_SUCCEEDED() { 1432 public void testThrowON_SUCCEEDED() {
1398 TestUrlRequestListener listener = new TestUrlRequestListener(); 1433 TestUrlRequestListener listener = new TestUrlRequestListener();
1399 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); 1434 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED);
1400 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1435 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
1401 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 1436 listener, listener.getExecutor(), mActivity.mCronetEngine);
1437 UrlRequest urlRequest = builder.build();
1402 urlRequest.start(); 1438 urlRequest.start();
1403 listener.blockForDone(); 1439 listener.blockForDone();
1404 assertEquals(1, listener.mRedirectCount); 1440 assertEquals(1, listener.mRedirectCount);
1405 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 1441 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
1406 assertTrue(urlRequest.isDone()); 1442 assertTrue(urlRequest.isDone());
1407 assertNotNull(listener.mResponseInfo); 1443 assertNotNull(listener.mResponseInfo);
1408 assertNull(listener.mError); 1444 assertNull(listener.mError);
1409 assertFalse(listener.mOnErrorCalled); 1445 assertFalse(listener.mOnErrorCalled);
1410 } 1446 }
1411 1447
1412 @SmallTest 1448 @SmallTest
1413 @Feature({"Cronet"}) 1449 @Feature({"Cronet"})
1414 public void testExecutorShutdown() { 1450 public void testExecutorShutdown() {
1415 TestUrlRequestListener listener = new TestUrlRequestListener(); 1451 TestUrlRequestListener listener = new TestUrlRequestListener();
1416 1452
1417 listener.setAutoAdvance(false); 1453 listener.setAutoAdvance(false);
1418 CronetUrlRequest urlRequest = 1454 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1419 (CronetUrlRequest) mActivity.mUrlRequestContext.createRequest( 1455 listener, listener.getExecutor(), mActivity.mCronetEngine);
1420 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1456 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build();
1421 urlRequest.start(); 1457 urlRequest.start();
1422 listener.waitForNextStep(); 1458 listener.waitForNextStep();
1423 assertFalse(listener.isDone()); 1459 assertFalse(listener.isDone());
1424 assertFalse(urlRequest.isDone()); 1460 assertFalse(urlRequest.isDone());
1425 1461
1426 final ConditionVariable requestDestroyed = new ConditionVariable(false); 1462 final ConditionVariable requestDestroyed = new ConditionVariable(false);
1427 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { 1463 urlRequest.setOnDestroyedCallbackForTests(new Runnable() {
1428 @Override 1464 @Override
1429 public void run() { 1465 public void run() {
1430 requestDestroyed.open(); 1466 requestDestroyed.open();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 mByteBuffer = byteBuffer; 1499 mByteBuffer = byteBuffer;
1464 mReadCalled.open(); 1500 mReadCalled.open();
1465 } 1501 }
1466 1502
1467 @Override 1503 @Override
1468 public void rewind(final UploadDataSink uploadDataSink) { 1504 public void rewind(final UploadDataSink uploadDataSink) {
1469 } 1505 }
1470 } 1506 }
1471 1507
1472 TestUrlRequestListener listener = new TestUrlRequestListener(); 1508 TestUrlRequestListener listener = new TestUrlRequestListener();
1473 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1509 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1474 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1510 listener, listener.getExecutor(), mActivity.mCronetEngine);
1475 1511
1476 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); 1512 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor();
1477 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; 1513 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ;
1478 urlRequest.setUploadDataProvider(dataProvider, uploadExecutor); 1514 builder.setUploadDataProvider(dataProvider, uploadExecutor);
1479 urlRequest.addHeader("Content-Type", "useless/string"); 1515 builder.addHeader("Content-Type", "useless/string");
1516 UrlRequest urlRequest = builder.build();
1480 urlRequest.start(); 1517 urlRequest.start();
1481 // Wait for read to be called on executor. 1518 // Wait for read to be called on executor.
1482 dataProvider.mReadCalled.block(); 1519 dataProvider.mReadCalled.block();
1483 // Shutdown the executor, so posting next task will throw an exception. 1520 // Shutdown the executor, so posting next task will throw an exception.
1484 uploadExecutor.shutdown(); 1521 uploadExecutor.shutdown();
1485 // Continue the upload. 1522 // Continue the upload.
1486 dataProvider.mByteBuffer.putInt(42); 1523 dataProvider.mByteBuffer.putInt(42);
1487 dataProvider.mUploadDataSink.onReadSucceeded(false); 1524 dataProvider.mUploadDataSink.onReadSucceeded(false);
1488 // Listener.onFailed will be called on request executor even though uplo ad 1525 // Listener.onFailed will be called on request executor even though uplo ad
1489 // executor is shutdown. 1526 // executor is shutdown.
(...skipping 10 matching lines...) Expand all
1500 int end) { 1537 int end) {
1501 // Use a duplicate to avoid modifying byteBuffer. 1538 // Use a duplicate to avoid modifying byteBuffer.
1502 ByteBuffer duplicate = byteBuffer.duplicate(); 1539 ByteBuffer duplicate = byteBuffer.duplicate();
1503 duplicate.position(start); 1540 duplicate.position(start);
1504 duplicate.limit(end); 1541 duplicate.limit(end);
1505 byte[] contents = new byte[duplicate.remaining()]; 1542 byte[] contents = new byte[duplicate.remaining()];
1506 duplicate.get(contents); 1543 duplicate.get(contents);
1507 return new String(contents); 1544 return new String(contents);
1508 } 1545 }
1509 } 1546 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698