| OLD | NEW |
| 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; | |
| 10 | 9 |
| 11 import org.chromium.base.test.util.Feature; | 10 import org.chromium.base.test.util.Feature; |
| 12 import org.chromium.net.TestUrlRequestListener.FailureType; | 11 import org.chromium.net.TestUrlRequestListener.FailureType; |
| 13 import org.chromium.net.TestUrlRequestListener.ResponseStep; | 12 import org.chromium.net.TestUrlRequestListener.ResponseStep; |
| 14 import org.chromium.net.test.FailurePhase; | 13 import org.chromium.net.test.FailurePhase; |
| 15 | 14 |
| 16 import java.nio.ByteBuffer; | 15 import java.nio.ByteBuffer; |
| 17 import java.util.ArrayList; | 16 import java.util.ArrayList; |
| 18 import java.util.List; | 17 import java.util.List; |
| 19 import java.util.Map; | 18 import java.util.Map; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 // Create request. | 53 // Create request. |
| 55 UrlRequest.Builder builder = new UrlRequest.Builder( | 54 UrlRequest.Builder builder = new UrlRequest.Builder( |
| 56 url, listener, listener.getExecutor(), mActivity.mCronetEngine); | 55 url, listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 57 UrlRequest urlRequest = builder.build(); | 56 UrlRequest urlRequest = builder.build(); |
| 58 urlRequest.start(); | 57 urlRequest.start(); |
| 59 listener.blockForDone(); | 58 listener.blockForDone(); |
| 60 assertTrue(urlRequest.isDone()); | 59 assertTrue(urlRequest.isDone()); |
| 61 return listener; | 60 return listener; |
| 62 } | 61 } |
| 63 | 62 |
| 64 private void checkResponseInfo(ResponseInfo responseInfo, | 63 private void checkResponseInfo(UrlResponseInfo responseInfo, String expected
Url, |
| 65 String expectedUrl, int expectedHttpStatusCode, | 64 int expectedHttpStatusCode, String expectedHttpStatusText) { |
| 66 String expectedHttpStatusText) { | |
| 67 assertEquals(expectedUrl, responseInfo.getUrl()); | 65 assertEquals(expectedUrl, responseInfo.getUrl()); |
| 68 assertEquals(expectedUrl, responseInfo.getUrlChain()[ | 66 assertEquals( |
| 69 responseInfo.getUrlChain().length - 1]); | 67 expectedUrl, responseInfo.getUrlChain().get(responseInfo.getUrlC
hain().size() - 1)); |
| 70 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); | 68 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); |
| 71 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); | 69 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); |
| 72 assertFalse(responseInfo.wasCached()); | 70 assertFalse(responseInfo.wasCached()); |
| 71 assertTrue(responseInfo.toString().length() > 0); |
| 73 } | 72 } |
| 74 | 73 |
| 75 private void checkResponseInfoHeader(ResponseInfo responseInfo, | 74 private void checkResponseInfoHeader( |
| 76 String headerName, String headerValue) { | 75 UrlResponseInfo responseInfo, String headerName, String headerValue)
{ |
| 77 Map<String, List<String>> responseHeaders = | 76 Map<String, List<String>> responseHeaders = |
| 78 responseInfo.getAllHeaders(); | 77 responseInfo.getAllHeaders(); |
| 79 List<String> header = responseHeaders.get(headerName); | 78 List<String> header = responseHeaders.get(headerName); |
| 80 assertNotNull(header); | 79 assertNotNull(header); |
| 81 assertTrue(header.contains(headerValue)); | 80 assertTrue(header.contains(headerValue)); |
| 82 } | 81 } |
| 83 | 82 |
| 84 @SmallTest | 83 @SmallTest |
| 85 @Feature({"Cronet"}) | 84 @Feature({"Cronet"}) |
| 86 public void testBuilderChecks() throws Exception { | 85 public void testBuilderChecks() throws Exception { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 113 assertEquals("CronetEngine is required.", e.getMessage()); | 112 assertEquals("CronetEngine is required.", e.getMessage()); |
| 114 } | 113 } |
| 115 // Verify successful creation doesn't throw. | 114 // Verify successful creation doesn't throw. |
| 116 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, list
ener.getExecutor(), | 115 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, list
ener.getExecutor(), |
| 117 mActivity.mCronetEngine); | 116 mActivity.mCronetEngine); |
| 118 } | 117 } |
| 119 | 118 |
| 120 @SmallTest | 119 @SmallTest |
| 121 @Feature({"Cronet"}) | 120 @Feature({"Cronet"}) |
| 122 public void testSimpleGet() throws Exception { | 121 public void testSimpleGet() throws Exception { |
| 123 TestUrlRequestListener listener = startAndWaitForComplete( | 122 String url = NativeTestServer.getEchoMethodURL(); |
| 124 NativeTestServer.getEchoMethodURL()); | 123 TestUrlRequestListener listener = startAndWaitForComplete(url); |
| 125 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 124 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 126 // Default method is 'GET'. | 125 // Default method is 'GET'. |
| 127 assertEquals("GET", listener.mResponseAsString); | 126 assertEquals("GET", listener.mResponseAsString); |
| 128 assertEquals(0, listener.mRedirectCount); | 127 assertEquals(0, listener.mRedirectCount); |
| 129 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 128 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 129 assertEquals(String.format("UrlResponseInfo[%s]: urlChain = [%s], httpSt
atus = 200 OK, " |
| 130 + "headers = [Connection=close, Content-Len
gth=3, " |
| 131 + "Content-Type=text/plain], wasCached = fa
lse, " |
| 132 + "negotiatedProtocol = unknown, proxyServe
r= :0, " |
| 133 + "receivedBytesCount = 86", |
| 134 url, url), |
| 135 listener.mResponseInfo.toString()); |
| 130 checkResponseInfo(listener.mResponseInfo, | 136 checkResponseInfo(listener.mResponseInfo, |
| 131 NativeTestServer.getEchoMethodURL(), 200, "OK"); | 137 NativeTestServer.getEchoMethodURL(), 200, "OK"); |
| 132 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(), | |
| 133 NativeTestServer.getEchoMethodURL(), 200, "OK"); | |
| 134 } | 138 } |
| 135 | 139 |
| 136 /** | 140 /** |
| 137 * Tests a redirect by running it step-by-step. Also tests that delaying a | 141 * Tests a redirect by running it step-by-step. Also tests that delaying a |
| 138 * request works as expected. To make sure there are no unexpected pending | 142 * request works as expected. To make sure there are no unexpected pending |
| 139 * messages, does a GET between UrlRequestListener callbacks. | 143 * messages, does a GET between UrlRequestListener callbacks. |
| 140 */ | 144 */ |
| 141 @SmallTest | 145 @SmallTest |
| 142 @Feature({"Cronet"}) | 146 @Feature({"Cronet"}) |
| 143 public void testRedirectAsync() throws Exception { | 147 public void testRedirectAsync() throws Exception { |
| 144 // Start the request and wait to see the redirect. | 148 // Start the request and wait to see the redirect. |
| 145 TestUrlRequestListener listener = new TestUrlRequestListener(); | 149 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 146 listener.setAutoAdvance(false); | 150 listener.setAutoAdvance(false); |
| 147 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
RedirectURL(), | 151 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
RedirectURL(), |
| 148 listener, listener.getExecutor(), mActivity.mCronetEngine); | 152 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 149 UrlRequest urlRequest = builder.build(); | 153 UrlRequest urlRequest = builder.build(); |
| 150 urlRequest.start(); | 154 urlRequest.start(); |
| 151 listener.waitForNextStep(); | 155 listener.waitForNextStep(); |
| 152 | 156 |
| 153 // Check the redirect. | 157 // Check the redirect. |
| 154 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); | 158 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); |
| 155 assertEquals(1, listener.mRedirectResponseInfoList.size()); | 159 assertEquals(1, listener.mRedirectResponseInfoList.size()); |
| 156 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), | 160 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), |
| 157 NativeTestServer.getRedirectURL(), 302, "Found"); | 161 NativeTestServer.getRedirectURL(), 302, "Found"); |
| 158 assertEquals(1, | 162 assertEquals(1, listener.mRedirectResponseInfoList.get(0).getUrlChain().
size()); |
| 159 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); | |
| 160 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList
.get(0)); | 163 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList
.get(0)); |
| 161 checkResponseInfoHeader(listener.mRedirectResponseInfoList.get(0), | 164 checkResponseInfoHeader(listener.mRedirectResponseInfoList.get(0), |
| 162 "redirect-header", "header-value"); | 165 "redirect-header", "header-value"); |
| 163 | 166 |
| 167 assertEquals(String.format("UrlResponseInfo[%s]: urlChain = [%s], httpSt
atus = 302 Found, " |
| 168 + "headers = [Location=/success.txt, " |
| 169 + "redirect-header=header-value], wasCached
= false, " |
| 170 + "negotiatedProtocol = unknown, proxyServe
r= :0, " |
| 171 + "receivedBytesCount = 74", |
| 172 NativeTestServer.getRedirectURL(), NativeTestServer
.getRedirectURL()), |
| 173 listener.mRedirectResponseInfoList.get(0).toString()); |
| 174 |
| 164 // Wait for an unrelated request to finish. The request should not | 175 // Wait for an unrelated request to finish. The request should not |
| 165 // advance until followRedirect is invoked. | 176 // advance until followRedirect is invoked. |
| 166 testSimpleGet(); | 177 testSimpleGet(); |
| 167 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); | 178 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); |
| 168 assertEquals(1, listener.mRedirectResponseInfoList.size()); | 179 assertEquals(1, listener.mRedirectResponseInfoList.size()); |
| 169 | 180 |
| 170 // Follow the redirect and wait for the next set of headers. | 181 // Follow the redirect and wait for the next set of headers. |
| 171 urlRequest.followRedirect(); | 182 urlRequest.followRedirect(); |
| 172 listener.waitForNextStep(); | 183 listener.waitForNextStep(); |
| 173 | 184 |
| 174 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); | 185 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); |
| 175 assertEquals(1, listener.mRedirectResponseInfoList.size()); | 186 assertEquals(1, listener.mRedirectResponseInfoList.size()); |
| 176 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 187 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 177 checkResponseInfo(listener.mResponseInfo, NativeTestServer.getSuccessURL
(), 200, "OK"); | 188 checkResponseInfo(listener.mResponseInfo, NativeTestServer.getSuccessURL
(), 200, "OK"); |
| 178 assertEquals(2, listener.mResponseInfo.getUrlChain().length); | 189 assertEquals(2, listener.mResponseInfo.getUrlChain().size()); |
| 179 assertEquals(NativeTestServer.getRedirectURL(), listener.mResponseInfo.g
etUrlChain()[0]); | 190 assertEquals( |
| 180 assertEquals(NativeTestServer.getSuccessURL(), listener.mResponseInfo.ge
tUrlChain()[1]); | 191 NativeTestServer.getRedirectURL(), listener.mResponseInfo.getUrl
Chain().get(0)); |
| 192 assertEquals(NativeTestServer.getSuccessURL(), listener.mResponseInfo.ge
tUrlChain().get(1)); |
| 181 | 193 |
| 182 // Wait for an unrelated request to finish. The request should not | 194 // Wait for an unrelated request to finish. The request should not |
| 183 // advance until read is invoked. | 195 // advance until read is invoked. |
| 184 testSimpleGet(); | 196 testSimpleGet(); |
| 185 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); | 197 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); |
| 186 | 198 |
| 187 // One read should get all the characters, but best not to depend on | 199 // One read should get all the characters, but best not to depend on |
| 188 // how much is actually read from the socket at once. | 200 // how much is actually read from the socket at once. |
| 189 while (!listener.isDone()) { | 201 while (!listener.isDone()) { |
| 190 listener.startNextRead(urlRequest); | 202 listener.startNextRead(urlRequest); |
| 191 listener.waitForNextStep(); | 203 listener.waitForNextStep(); |
| 192 String response = listener.mResponseAsString; | 204 String response = listener.mResponseAsString; |
| 193 ResponseStep step = listener.mResponseStep; | 205 ResponseStep step = listener.mResponseStep; |
| 194 if (!listener.isDone()) { | 206 if (!listener.isDone()) { |
| 195 assertEquals(ResponseStep.ON_READ_COMPLETED, step); | 207 assertEquals(ResponseStep.ON_READ_COMPLETED, step); |
| 196 } | 208 } |
| 197 // Should not receive any messages while waiting for another get, | 209 // Should not receive any messages while waiting for another get, |
| 198 // as the next read has not been started. | 210 // as the next read has not been started. |
| 199 testSimpleGet(); | 211 testSimpleGet(); |
| 200 assertEquals(response, listener.mResponseAsString); | 212 assertEquals(response, listener.mResponseAsString); |
| 201 assertEquals(step, listener.mResponseStep); | 213 assertEquals(step, listener.mResponseStep); |
| 202 } | 214 } |
| 203 assertEquals(ResponseStep.ON_SUCCEEDED, listener.mResponseStep); | 215 assertEquals(ResponseStep.ON_SUCCEEDED, listener.mResponseStep); |
| 204 assertEquals(NativeTestServer.SUCCESS_BODY, listener.mResponseAsString); | 216 assertEquals(NativeTestServer.SUCCESS_BODY, listener.mResponseAsString); |
| 205 | 217 |
| 218 assertEquals(String.format("UrlResponseInfo[%s]: urlChain = [%s, %s], ht
tpStatus = 200 OK, " |
| 219 + "headers = [Content-Type=text/plain, " |
| 220 + "Access-Control-Allow-Origin=*, header-na
me=header-value, " |
| 221 + "multi-header-name=header-value1, " |
| 222 + "multi-header-name=header-value2], wasCac
hed = false, " |
| 223 + "negotiatedProtocol = unknown, proxyServe
r= :0, " |
| 224 + "receivedBytesCount = 260", |
| 225 NativeTestServer.getSuccessURL(), NativeTestServer.
getRedirectURL(), |
| 226 NativeTestServer.getSuccessURL()), |
| 227 listener.mResponseInfo.toString()); |
| 228 |
| 206 // Make sure there are no other pending messages, which would trigger | 229 // Make sure there are no other pending messages, which would trigger |
| 207 // asserts in TestURLRequestListener. | 230 // asserts in TestURLRequestListener. |
| 208 testSimpleGet(); | 231 testSimpleGet(); |
| 209 } | 232 } |
| 210 | 233 |
| 211 @SmallTest | 234 @SmallTest |
| 212 @Feature({"Cronet"}) | 235 @Feature({"Cronet"}) |
| 213 public void testNotFound() throws Exception { | 236 public void testNotFound() throws Exception { |
| 214 String url = NativeTestServer.getFileURL("/notfound.html"); | 237 String url = NativeTestServer.getFileURL("/notfound.html"); |
| 215 TestUrlRequestListener listener = startAndWaitForComplete(url); | 238 TestUrlRequestListener listener = startAndWaitForComplete(url); |
| 216 checkResponseInfo(listener.mResponseInfo, url, 404, "Not Found"); | 239 checkResponseInfo(listener.mResponseInfo, url, 404, "Not Found"); |
| 217 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(), | |
| 218 url, 404, "Not Found"); | |
| 219 assertEquals( | 240 assertEquals( |
| 220 "<!DOCTYPE html>\n<html>\n<head>\n<title>Not found</title>\n" | 241 "<!DOCTYPE html>\n<html>\n<head>\n<title>Not found</title>\n" |
| 221 + "<p>Test page loaded.</p>\n</head>\n</html>\n", | 242 + "<p>Test page loaded.</p>\n</head>\n</html>\n", |
| 222 listener.mResponseAsString); | 243 listener.mResponseAsString); |
| 223 assertEquals(0, listener.mRedirectCount); | 244 assertEquals(0, listener.mRedirectCount); |
| 224 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 245 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 225 } | 246 } |
| 226 | 247 |
| 227 // Checks that UrlRequestListener.onFailed is only called once in the case | 248 // Checks that UrlRequestListener.onFailed is only called once in the case |
| 228 // of ERR_CONTENT_LENGTH_MISMATCH, which has an unusual failure path. | 249 // of ERR_CONTENT_LENGTH_MISMATCH, which has an unusual failure path. |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 assertEquals(2, multiHeader.size()); | 431 assertEquals(2, multiHeader.size()); |
| 411 assertEquals("header-value1", multiHeader.get(0)); | 432 assertEquals("header-value1", multiHeader.get(0)); |
| 412 assertEquals("header-value2", multiHeader.get(1)); | 433 assertEquals("header-value2", multiHeader.get(1)); |
| 413 } | 434 } |
| 414 | 435 |
| 415 @SmallTest | 436 @SmallTest |
| 416 @Feature({"Cronet"}) | 437 @Feature({"Cronet"}) |
| 417 public void testResponseHeadersList() throws Exception { | 438 public void testResponseHeadersList() throws Exception { |
| 418 TestUrlRequestListener listener = startAndWaitForComplete(NativeTestServ
er.getSuccessURL()); | 439 TestUrlRequestListener listener = startAndWaitForComplete(NativeTestServ
er.getSuccessURL()); |
| 419 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 440 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 420 List<Pair<String, String>> responseHeaders = | 441 List<Map.Entry<String, String>> responseHeaders = |
| 421 listener.mResponseInfo.getAllHeadersAsList(); | 442 listener.mResponseInfo.getAllHeadersAsList(); |
| 422 assertEquals(5, responseHeaders.size()); | 443 assertEquals(5, responseHeaders.size()); |
| 423 assertEquals("Content-Type", responseHeaders.get(0).first); | 444 assertEquals("Content-Type", responseHeaders.get(0).getKey()); |
| 424 assertEquals("text/plain", responseHeaders.get(0).second); | 445 assertEquals("text/plain", responseHeaders.get(0).getValue()); |
| 425 assertEquals("Access-Control-Allow-Origin", | 446 assertEquals("Access-Control-Allow-Origin", responseHeaders.get(1).getKe
y()); |
| 426 responseHeaders.get(1).first); | 447 assertEquals("*", responseHeaders.get(1).getValue()); |
| 427 assertEquals("*", responseHeaders.get(1).second); | 448 assertEquals("header-name", responseHeaders.get(2).getKey()); |
| 428 assertEquals("header-name", responseHeaders.get(2).first); | 449 assertEquals("header-value", responseHeaders.get(2).getValue()); |
| 429 assertEquals("header-value", responseHeaders.get(2).second); | 450 assertEquals("multi-header-name", responseHeaders.get(3).getKey()); |
| 430 assertEquals("multi-header-name", responseHeaders.get(3).first); | 451 assertEquals("header-value1", responseHeaders.get(3).getValue()); |
| 431 assertEquals("header-value1", responseHeaders.get(3).second); | 452 assertEquals("multi-header-name", responseHeaders.get(4).getKey()); |
| 432 assertEquals("multi-header-name", responseHeaders.get(4).first); | 453 assertEquals("header-value2", responseHeaders.get(4).getValue()); |
| 433 assertEquals("header-value2", responseHeaders.get(4).second); | |
| 434 } | 454 } |
| 435 | 455 |
| 436 @SmallTest | 456 @SmallTest |
| 437 @Feature({"Cronet"}) | 457 @Feature({"Cronet"}) |
| 438 public void testMockMultiRedirect() throws Exception { | 458 public void testMockMultiRedirect() throws Exception { |
| 439 TestUrlRequestListener listener = | 459 TestUrlRequestListener listener = |
| 440 startAndWaitForComplete(NativeTestServer.getMultiRedirectURL()); | 460 startAndWaitForComplete(NativeTestServer.getMultiRedirectURL()); |
| 441 ResponseInfo mResponseInfo = listener.mResponseInfo; | 461 UrlResponseInfo mResponseInfo = listener.mResponseInfo; |
| 442 assertEquals(2, listener.mRedirectCount); | 462 assertEquals(2, listener.mRedirectCount); |
| 443 assertEquals(200, mResponseInfo.getHttpStatusCode()); | 463 assertEquals(200, mResponseInfo.getHttpStatusCode()); |
| 444 assertEquals(2, listener.mRedirectResponseInfoList.size()); | 464 assertEquals(2, listener.mRedirectResponseInfoList.size()); |
| 445 | 465 |
| 446 // Check first redirect (multiredirect.html -> redirect.html) | 466 // Check first redirect (multiredirect.html -> redirect.html) |
| 447 ResponseInfo firstRedirectResponseInfo = | 467 UrlResponseInfo firstRedirectResponseInfo = listener.mRedirectResponseIn
foList.get(0); |
| 448 listener.mRedirectResponseInfoList.get(0); | 468 assertEquals(1, firstRedirectResponseInfo.getUrlChain().size()); |
| 449 assertEquals(1, firstRedirectResponseInfo.getUrlChain().length); | 469 assertEquals(NativeTestServer.getMultiRedirectURL(), |
| 450 assertEquals( | 470 firstRedirectResponseInfo.getUrlChain().get(0)); |
| 451 NativeTestServer.getMultiRedirectURL(), firstRedirectResponseInf
o.getUrlChain()[0]); | |
| 452 checkResponseInfo( | 471 checkResponseInfo( |
| 453 firstRedirectResponseInfo, NativeTestServer.getMultiRedirectURL(
), 302, "Found"); | 472 firstRedirectResponseInfo, NativeTestServer.getMultiRedirectURL(
), 302, "Found"); |
| 454 checkResponseInfoHeader(firstRedirectResponseInfo, | 473 checkResponseInfoHeader(firstRedirectResponseInfo, |
| 455 "redirect-header0", "header-value"); | 474 "redirect-header0", "header-value"); |
| 475 assertEquals(77, firstRedirectResponseInfo.getReceivedBytesCount()); |
| 456 | 476 |
| 457 // Check second redirect (redirect.html -> success.txt) | 477 // Check second redirect (redirect.html -> success.txt) |
| 458 ResponseInfo secondRedirectResponseInfo = | 478 UrlResponseInfo secondRedirectResponseInfo = listener.mRedirectResponseI
nfoList.get(1); |
| 459 listener.mRedirectResponseInfoList.get(1); | 479 assertEquals(2, secondRedirectResponseInfo.getUrlChain().size()); |
| 460 assertEquals(2, secondRedirectResponseInfo.getUrlChain().length); | |
| 461 assertEquals(NativeTestServer.getMultiRedirectURL(), | 480 assertEquals(NativeTestServer.getMultiRedirectURL(), |
| 462 secondRedirectResponseInfo.getUrlChain()[0]); | 481 secondRedirectResponseInfo.getUrlChain().get(0)); |
| 463 assertEquals( | 482 assertEquals( |
| 464 NativeTestServer.getRedirectURL(), secondRedirectResponseInfo.ge
tUrlChain()[1]); | 483 NativeTestServer.getRedirectURL(), secondRedirectResponseInfo.ge
tUrlChain().get(1)); |
| 465 checkResponseInfo( | 484 checkResponseInfo( |
| 466 secondRedirectResponseInfo, NativeTestServer.getRedirectURL(), 3
02, "Found"); | 485 secondRedirectResponseInfo, NativeTestServer.getRedirectURL(), 3
02, "Found"); |
| 467 checkResponseInfoHeader(secondRedirectResponseInfo, | 486 checkResponseInfoHeader(secondRedirectResponseInfo, |
| 468 "redirect-header", "header-value"); | 487 "redirect-header", "header-value"); |
| 488 assertEquals(151, secondRedirectResponseInfo.getReceivedBytesCount()); |
| 469 | 489 |
| 470 // Check final response (success.txt). | 490 // Check final response (success.txt). |
| 471 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrl()); | 491 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrl()); |
| 472 assertEquals(3, mResponseInfo.getUrlChain().length); | 492 assertEquals(3, mResponseInfo.getUrlChain().size()); |
| 473 assertEquals(NativeTestServer.getMultiRedirectURL(), mResponseInfo.getUr
lChain()[0]); | 493 assertEquals(NativeTestServer.getMultiRedirectURL(), mResponseInfo.getUr
lChain().get(0)); |
| 474 assertEquals(NativeTestServer.getRedirectURL(), mResponseInfo.getUrlChai
n()[1]); | 494 assertEquals(NativeTestServer.getRedirectURL(), mResponseInfo.getUrlChai
n().get(1)); |
| 475 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrlChain
()[2]); | 495 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrlChain
().get(2)); |
| 476 assertTrue(listener.mHttpResponseDataLength != 0); | 496 assertTrue(listener.mHttpResponseDataLength != 0); |
| 477 assertEquals(2, listener.mRedirectCount); | 497 assertEquals(2, listener.mRedirectCount); |
| 478 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 498 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 499 assertEquals(337, mResponseInfo.getReceivedBytesCount()); |
| 479 } | 500 } |
| 480 | 501 |
| 481 @SmallTest | 502 @SmallTest |
| 482 @Feature({"Cronet"}) | 503 @Feature({"Cronet"}) |
| 483 public void testMockNotFound() throws Exception { | 504 public void testMockNotFound() throws Exception { |
| 484 TestUrlRequestListener listener = | 505 TestUrlRequestListener listener = |
| 485 startAndWaitForComplete(NativeTestServer.getNotFoundURL()); | 506 startAndWaitForComplete(NativeTestServer.getNotFoundURL()); |
| 486 assertEquals(404, listener.mResponseInfo.getHttpStatusCode()); | 507 assertEquals(404, listener.mResponseInfo.getHttpStatusCode()); |
| 508 assertEquals(121, listener.mResponseInfo.getReceivedBytesCount()); |
| 487 assertTrue(listener.mHttpResponseDataLength != 0); | 509 assertTrue(listener.mHttpResponseDataLength != 0); |
| 488 assertEquals(0, listener.mRedirectCount); | 510 assertEquals(0, listener.mRedirectCount); |
| 489 assertFalse(listener.mOnErrorCalled); | 511 assertFalse(listener.mOnErrorCalled); |
| 490 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 512 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 491 } | 513 } |
| 492 | 514 |
| 493 @SmallTest | 515 @SmallTest |
| 494 @Feature({"Cronet"}) | 516 @Feature({"Cronet"}) |
| 495 public void testMockStartAsyncError() throws Exception { | 517 public void testMockStartAsyncError() throws Exception { |
| 496 final int arbitraryNetError = -3; | 518 final int arbitraryNetError = -3; |
| 497 TestUrlRequestListener listener = | 519 TestUrlRequestListener listener = |
| 498 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 520 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 499 FailurePhase.START, arbitraryNetError)); | 521 FailurePhase.START, arbitraryNetError)); |
| 500 assertNull(listener.mResponseInfo); | 522 assertNull(listener.mResponseInfo); |
| 501 assertNotNull(listener.mError); | 523 assertNotNull(listener.mError); |
| 502 assertEquals(arbitraryNetError, listener.mError.netError()); | 524 assertEquals(arbitraryNetError, listener.mError.netError()); |
| 503 assertEquals(0, listener.mRedirectCount); | 525 assertEquals(0, listener.mRedirectCount); |
| 504 assertTrue(listener.mOnErrorCalled); | 526 assertTrue(listener.mOnErrorCalled); |
| 505 assertEquals(listener.mResponseStep, ResponseStep.NOTHING); | 527 assertEquals(listener.mResponseStep, ResponseStep.NOTHING); |
| 506 } | 528 } |
| 507 | 529 |
| 508 @SmallTest | 530 @SmallTest |
| 509 @Feature({"Cronet"}) | 531 @Feature({"Cronet"}) |
| 510 public void testMockReadDataSyncError() throws Exception { | 532 public void testMockReadDataSyncError() throws Exception { |
| 511 final int arbitraryNetError = -4; | 533 final int arbitraryNetError = -4; |
| 512 TestUrlRequestListener listener = | 534 TestUrlRequestListener listener = |
| 513 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 535 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 514 FailurePhase.READ_SYNC, arbitraryNetError)); | 536 FailurePhase.READ_SYNC, arbitraryNetError)); |
| 515 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 537 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 538 assertEquals(0, listener.mResponseInfo.getReceivedBytesCount()); |
| 516 assertNotNull(listener.mError); | 539 assertNotNull(listener.mError); |
| 517 assertEquals(arbitraryNetError, listener.mError.netError()); | 540 assertEquals(arbitraryNetError, listener.mError.netError()); |
| 518 assertEquals(0, listener.mRedirectCount); | 541 assertEquals(0, listener.mRedirectCount); |
| 519 assertTrue(listener.mOnErrorCalled); | 542 assertTrue(listener.mOnErrorCalled); |
| 520 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 543 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 521 } | 544 } |
| 522 | 545 |
| 523 @SmallTest | 546 @SmallTest |
| 524 @Feature({"Cronet"}) | 547 @Feature({"Cronet"}) |
| 525 public void testMockReadDataAsyncError() throws Exception { | 548 public void testMockReadDataAsyncError() throws Exception { |
| 526 final int arbitraryNetError = -5; | 549 final int arbitraryNetError = -5; |
| 527 TestUrlRequestListener listener = | 550 TestUrlRequestListener listener = |
| 528 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 551 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 529 FailurePhase.READ_ASYNC, arbitraryNetError)); | 552 FailurePhase.READ_ASYNC, arbitraryNetError)); |
| 530 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 553 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 554 assertEquals(0, listener.mResponseInfo.getReceivedBytesCount()); |
| 531 assertNotNull(listener.mError); | 555 assertNotNull(listener.mError); |
| 532 assertEquals(arbitraryNetError, listener.mError.netError()); | 556 assertEquals(arbitraryNetError, listener.mError.netError()); |
| 533 assertEquals(0, listener.mRedirectCount); | 557 assertEquals(0, listener.mRedirectCount); |
| 534 assertTrue(listener.mOnErrorCalled); | 558 assertTrue(listener.mOnErrorCalled); |
| 535 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 559 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 536 } | 560 } |
| 537 | 561 |
| 538 /** | 562 /** |
| 539 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai
led}. | 563 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai
led}. |
| 540 */ | 564 */ |
| (...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1537 int end) { | 1561 int end) { |
| 1538 // Use a duplicate to avoid modifying byteBuffer. | 1562 // Use a duplicate to avoid modifying byteBuffer. |
| 1539 ByteBuffer duplicate = byteBuffer.duplicate(); | 1563 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 1540 duplicate.position(start); | 1564 duplicate.position(start); |
| 1541 duplicate.limit(end); | 1565 duplicate.limit(end); |
| 1542 byte[] contents = new byte[duplicate.remaining()]; | 1566 byte[] contents = new byte[duplicate.remaining()]; |
| 1543 duplicate.get(contents); | 1567 duplicate.get(contents); |
| 1544 return new String(contents); | 1568 return new String(contents); |
| 1545 } | 1569 } |
| 1546 } | 1570 } |
| OLD | NEW |