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

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

Powered by Google App Engine
This is Rietveld 408576698