| 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.os.StrictMode; | 8 import android.os.StrictMode; |
| 9 import android.test.MoreAsserts; | 9 import android.test.MoreAsserts; |
| 10 import android.test.suitebuilder.annotation.SmallTest; | 10 import android.test.suitebuilder.annotation.SmallTest; |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 String url = NativeTestServer.getFileURL( | 361 String url = NativeTestServer.getFileURL( |
| 362 "/content_length_mismatch.html"); | 362 "/content_length_mismatch.html"); |
| 363 TestUrlRequestCallback callback = startAndWaitForComplete(url); | 363 TestUrlRequestCallback callback = startAndWaitForComplete(url); |
| 364 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 364 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 365 // The entire response body will be read before the error is returned. | 365 // The entire response body will be read before the error is returned. |
| 366 // This is because the network stack returns data as it's read from the | 366 // This is because the network stack returns data as it's read from the |
| 367 // socket, and the socket close message which triggers the error will | 367 // socket, and the socket close message which triggers the error will |
| 368 // only be passed along after all data has been read. | 368 // only be passed along after all data has been read. |
| 369 assertEquals("Response that lies about content length.", callback.mRespo
nseAsString); | 369 assertEquals("Response that lies about content length.", callback.mRespo
nseAsString); |
| 370 assertNotNull(callback.mError); | 370 assertNotNull(callback.mError); |
| 371 assertEquals("Exception in CronetUrlRequest: net::ERR_CONTENT_LENGTH_MIS
MATCH", | 371 assertContains("Exception in CronetUrlRequest: net::ERR_CONTENT_LENGTH_M
ISMATCH", |
| 372 callback.mError.getMessage()); | 372 callback.mError.getMessage()); |
| 373 // Wait for a couple round trips to make sure there are no pending | 373 // Wait for a couple round trips to make sure there are no pending |
| 374 // onFailed messages. This test relies on checks in | 374 // onFailed messages. This test relies on checks in |
| 375 // TestUrlRequestCallback catching a second onFailed call. | 375 // TestUrlRequestCallback catching a second onFailed call. |
| 376 testSimpleGet(); | 376 testSimpleGet(); |
| 377 } | 377 } |
| 378 | 378 |
| 379 @SmallTest | 379 @SmallTest |
| 380 @Feature({"Cronet"}) | 380 @Feature({"Cronet"}) |
| 381 public void testSetHttpMethod() throws Exception { | 381 public void testSetHttpMethod() throws Exception { |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 @SmallTest | 681 @SmallTest |
| 682 @Feature({"Cronet"}) | 682 @Feature({"Cronet"}) |
| 683 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory | 683 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory |
| 684 public void testMockSSLCertificateError() throws Exception { | 684 public void testMockSSLCertificateError() throws Exception { |
| 685 TestUrlRequestCallback callback = startAndWaitForComplete( | 685 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 686 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); | 686 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); |
| 687 assertNull(callback.mResponseInfo); | 687 assertNull(callback.mResponseInfo); |
| 688 assertNotNull(callback.mError); | 688 assertNotNull(callback.mError); |
| 689 assertTrue(callback.mOnErrorCalled); | 689 assertTrue(callback.mOnErrorCalled); |
| 690 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); | 690 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); |
| 691 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID"
, | 691 assertContains("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALI
D", |
| 692 callback.mError.getMessage()); | 692 callback.mError.getMessage()); |
| 693 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); | 693 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); |
| 694 } | 694 } |
| 695 | 695 |
| 696 /** | 696 /** |
| 697 * Checks that the buffer is updated correctly, when starting at an offset. | 697 * Checks that the buffer is updated correctly, when starting at an offset. |
| 698 */ | 698 */ |
| 699 @SmallTest | 699 @SmallTest |
| 700 @Feature({"Cronet"}) | 700 @Feature({"Cronet"}) |
| 701 public void testSimpleGetBufferUpdates() throws Exception { | 701 public void testSimpleGetBufferUpdates() throws Exception { |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1239 byteBuffer.put("12".getBytes()); | 1239 byteBuffer.put("12".getBytes()); |
| 1240 uploadDataSink.onReadSucceeded(false); | 1240 uploadDataSink.onReadSucceeded(false); |
| 1241 } | 1241 } |
| 1242 }; | 1242 }; |
| 1243 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1243 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1244 builder.addHeader("Content-Type", "useless/string"); | 1244 builder.addHeader("Content-Type", "useless/string"); |
| 1245 builder.build().start(); | 1245 builder.build().start(); |
| 1246 callback.blockForDone(); | 1246 callback.blockForDone(); |
| 1247 dataProvider.assertClosed(); | 1247 dataProvider.assertClosed(); |
| 1248 | 1248 |
| 1249 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1249 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1250 assertEquals("Read upload data length 2 exceeds expected length 1", | 1250 assertContains("Read upload data length 2 exceeds expected length 1", |
| 1251 callback.mError.getCause().getMessage()); | 1251 callback.mError.getCause().getMessage()); |
| 1252 assertEquals(null, callback.mResponseInfo); | 1252 assertEquals(null, callback.mResponseInfo); |
| 1253 } | 1253 } |
| 1254 | 1254 |
| 1255 @SmallTest | 1255 @SmallTest |
| 1256 @Feature({"Cronet"}) | 1256 @Feature({"Cronet"}) |
| 1257 public void testUploadWithBadLengthBufferAligned() throws Exception { | 1257 public void testUploadWithBadLengthBufferAligned() throws Exception { |
| 1258 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1258 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1259 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1259 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1260 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); | 1260 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1272 byteBuffer.put("0123456789abcdef".getBytes()); | 1272 byteBuffer.put("0123456789abcdef".getBytes()); |
| 1273 uploadDataSink.onReadSucceeded(false); | 1273 uploadDataSink.onReadSucceeded(false); |
| 1274 } | 1274 } |
| 1275 }; | 1275 }; |
| 1276 dataProvider.addRead("test".getBytes()); | 1276 dataProvider.addRead("test".getBytes()); |
| 1277 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1277 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1278 builder.addHeader("Content-Type", "useless/string"); | 1278 builder.addHeader("Content-Type", "useless/string"); |
| 1279 builder.build().start(); | 1279 builder.build().start(); |
| 1280 callback.blockForDone(); | 1280 callback.blockForDone(); |
| 1281 dataProvider.assertClosed(); | 1281 dataProvider.assertClosed(); |
| 1282 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1282 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1283 assertEquals("Read upload data length 8192 exceeds expected length 8191"
, | 1283 assertContains("Read upload data length 8192 exceeds expected length 819
1", |
| 1284 callback.mError.getCause().getMessage()); | 1284 callback.mError.getCause().getMessage()); |
| 1285 assertEquals(null, callback.mResponseInfo); | 1285 assertEquals(null, callback.mResponseInfo); |
| 1286 } | 1286 } |
| 1287 | 1287 |
| 1288 @SmallTest | 1288 @SmallTest |
| 1289 @Feature({"Cronet"}) | 1289 @Feature({"Cronet"}) |
| 1290 public void testUploadReadFailSync() throws Exception { | 1290 public void testUploadReadFailSync() throws Exception { |
| 1291 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1291 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1292 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1292 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1293 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); | 1293 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 1294 | 1294 |
| 1295 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1295 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1296 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); | 1296 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); |
| 1297 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
SYNC); | 1297 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
SYNC); |
| 1298 // This will never be read, but if the length is 0, read may never be | 1298 // This will never be read, but if the length is 0, read may never be |
| 1299 // called. | 1299 // called. |
| 1300 dataProvider.addRead("test".getBytes()); | 1300 dataProvider.addRead("test".getBytes()); |
| 1301 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1301 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1302 builder.addHeader("Content-Type", "useless/string"); | 1302 builder.addHeader("Content-Type", "useless/string"); |
| 1303 builder.build().start(); | 1303 builder.build().start(); |
| 1304 callback.blockForDone(); | 1304 callback.blockForDone(); |
| 1305 dataProvider.assertClosed(); | 1305 dataProvider.assertClosed(); |
| 1306 | 1306 |
| 1307 assertEquals(1, dataProvider.getNumReadCalls()); | 1307 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1308 assertEquals(0, dataProvider.getNumRewindCalls()); | 1308 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1309 | 1309 |
| 1310 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1310 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1311 assertEquals("Sync read failure", callback.mError.getCause().getMessage(
)); | 1311 assertContains("Sync read failure", callback.mError.getCause().getMessag
e()); |
| 1312 assertEquals(null, callback.mResponseInfo); | 1312 assertEquals(null, callback.mResponseInfo); |
| 1313 } | 1313 } |
| 1314 | 1314 |
| 1315 @SmallTest | 1315 @SmallTest |
| 1316 @Feature({"Cronet"}) | 1316 @Feature({"Cronet"}) |
| 1317 public void testUploadLengthFailSync() throws Exception { | 1317 public void testUploadLengthFailSync() throws Exception { |
| 1318 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1318 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1319 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1319 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1320 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); | 1320 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 1321 | 1321 |
| 1322 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1322 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1323 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); | 1323 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); |
| 1324 dataProvider.setLengthFailure(); | 1324 dataProvider.setLengthFailure(); |
| 1325 // This will never be read, but if the length is 0, read may never be | 1325 // This will never be read, but if the length is 0, read may never be |
| 1326 // called. | 1326 // called. |
| 1327 dataProvider.addRead("test".getBytes()); | 1327 dataProvider.addRead("test".getBytes()); |
| 1328 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1328 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1329 builder.addHeader("Content-Type", "useless/string"); | 1329 builder.addHeader("Content-Type", "useless/string"); |
| 1330 builder.build().start(); | 1330 builder.build().start(); |
| 1331 callback.blockForDone(); | 1331 callback.blockForDone(); |
| 1332 dataProvider.assertClosed(); | 1332 dataProvider.assertClosed(); |
| 1333 | 1333 |
| 1334 assertEquals(0, dataProvider.getNumReadCalls()); | 1334 assertEquals(0, dataProvider.getNumReadCalls()); |
| 1335 assertEquals(0, dataProvider.getNumRewindCalls()); | 1335 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1336 | 1336 |
| 1337 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1337 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1338 assertEquals("Sync length failure", callback.mError.getCause().getMessag
e()); | 1338 assertContains("Sync length failure", callback.mError.getCause().getMess
age()); |
| 1339 assertEquals(null, callback.mResponseInfo); | 1339 assertEquals(null, callback.mResponseInfo); |
| 1340 } | 1340 } |
| 1341 | 1341 |
| 1342 @SmallTest | 1342 @SmallTest |
| 1343 @Feature({"Cronet"}) | 1343 @Feature({"Cronet"}) |
| 1344 public void testUploadReadFailAsync() throws Exception { | 1344 public void testUploadReadFailAsync() throws Exception { |
| 1345 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1345 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1346 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1346 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1347 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); | 1347 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 1348 | 1348 |
| 1349 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1349 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1350 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); | 1350 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); |
| 1351 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
ASYNC); | 1351 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
ASYNC); |
| 1352 // This will never be read, but if the length is 0, read may never be | 1352 // This will never be read, but if the length is 0, read may never be |
| 1353 // called. | 1353 // called. |
| 1354 dataProvider.addRead("test".getBytes()); | 1354 dataProvider.addRead("test".getBytes()); |
| 1355 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1355 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1356 builder.addHeader("Content-Type", "useless/string"); | 1356 builder.addHeader("Content-Type", "useless/string"); |
| 1357 builder.build().start(); | 1357 builder.build().start(); |
| 1358 callback.blockForDone(); | 1358 callback.blockForDone(); |
| 1359 dataProvider.assertClosed(); | 1359 dataProvider.assertClosed(); |
| 1360 | 1360 |
| 1361 assertEquals(1, dataProvider.getNumReadCalls()); | 1361 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1362 assertEquals(0, dataProvider.getNumRewindCalls()); | 1362 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1363 | 1363 |
| 1364 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1364 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1365 assertEquals("Async read failure", callback.mError.getCause().getMessage
()); | 1365 assertContains("Async read failure", callback.mError.getCause().getMessa
ge()); |
| 1366 assertEquals(null, callback.mResponseInfo); | 1366 assertEquals(null, callback.mResponseInfo); |
| 1367 } | 1367 } |
| 1368 | 1368 |
| 1369 /** This test uses a direct executor for upload, and non direct for callback
s */ | 1369 /** This test uses a direct executor for upload, and non direct for callback
s */ |
| 1370 @SmallTest | 1370 @SmallTest |
| 1371 @Feature({"Cronet"}) | 1371 @Feature({"Cronet"}) |
| 1372 public void testDirectExecutorUploadProhibitedByDefault() throws Exception { | 1372 public void testDirectExecutorUploadProhibitedByDefault() throws Exception { |
| 1373 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1373 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1374 Executor myExecutor = new Executor() { | 1374 Executor myExecutor = new Executor() { |
| 1375 | 1375 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1387 // called. | 1387 // called. |
| 1388 dataProvider.addRead("test".getBytes()); | 1388 dataProvider.addRead("test".getBytes()); |
| 1389 builder.setUploadDataProvider(dataProvider, myExecutor); | 1389 builder.setUploadDataProvider(dataProvider, myExecutor); |
| 1390 builder.addHeader("Content-Type", "useless/string"); | 1390 builder.addHeader("Content-Type", "useless/string"); |
| 1391 builder.build().start(); | 1391 builder.build().start(); |
| 1392 callback.blockForDone(); | 1392 callback.blockForDone(); |
| 1393 | 1393 |
| 1394 assertEquals(0, dataProvider.getNumReadCalls()); | 1394 assertEquals(0, dataProvider.getNumReadCalls()); |
| 1395 assertEquals(0, dataProvider.getNumRewindCalls()); | 1395 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1396 | 1396 |
| 1397 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1397 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1398 assertEquals("Inline execution is prohibited for this request", | 1398 assertContains("Inline execution is prohibited for this request", |
| 1399 callback.mError.getCause().getMessage()); | 1399 callback.mError.getCause().getMessage()); |
| 1400 assertEquals(null, callback.mResponseInfo); | 1400 assertEquals(null, callback.mResponseInfo); |
| 1401 } | 1401 } |
| 1402 | 1402 |
| 1403 /** This test uses a direct executor for callbacks, and non direct for uploa
d */ | 1403 /** This test uses a direct executor for callbacks, and non direct for uploa
d */ |
| 1404 @SmallTest | 1404 @SmallTest |
| 1405 @Feature({"Cronet"}) | 1405 @Feature({"Cronet"}) |
| 1406 public void testDirectExecutorProhibitedByDefault() throws Exception { | 1406 public void testDirectExecutorProhibitedByDefault() throws Exception { |
| 1407 System.out.println("testing with " + mTestFramework.mCronetEngine); | 1407 System.out.println("testing with " + mTestFramework.mCronetEngine); |
| 1408 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1408 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1423 dataProvider.addRead("test".getBytes()); | 1423 dataProvider.addRead("test".getBytes()); |
| 1424 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1424 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1425 builder.addHeader("Content-Type", "useless/string"); | 1425 builder.addHeader("Content-Type", "useless/string"); |
| 1426 builder.build().start(); | 1426 builder.build().start(); |
| 1427 callback.blockForDone(); | 1427 callback.blockForDone(); |
| 1428 | 1428 |
| 1429 assertEquals(1, dataProvider.getNumReadCalls()); | 1429 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1430 assertEquals(0, dataProvider.getNumRewindCalls()); | 1430 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1431 | 1431 |
| 1432 callback.mError.printStackTrace(); | 1432 callback.mError.printStackTrace(); |
| 1433 assertEquals("Exception posting task to executor", callback.mError.getMe
ssage()); | 1433 assertContains("Exception posting task to executor", callback.mError.get
Message()); |
| 1434 assertEquals("Inline execution is prohibited for this request", | 1434 assertContains("Inline execution is prohibited for this request", |
| 1435 callback.mError.getCause().getMessage()); | 1435 callback.mError.getCause().getMessage()); |
| 1436 assertEquals(null, callback.mResponseInfo); | 1436 assertEquals(null, callback.mResponseInfo); |
| 1437 dataProvider.assertClosed(); | 1437 dataProvider.assertClosed(); |
| 1438 } | 1438 } |
| 1439 | 1439 |
| 1440 @SmallTest | 1440 @SmallTest |
| 1441 @Feature({"Cronet"}) | 1441 @Feature({"Cronet"}) |
| 1442 public void testDirectExecutorAllowed() throws Exception { | 1442 public void testDirectExecutorAllowed() throws Exception { |
| 1443 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1443 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1444 callback.setAllowDirectExecutor(true); | 1444 callback.setAllowDirectExecutor(true); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1481 dataProvider.addRead("test".getBytes()); | 1481 dataProvider.addRead("test".getBytes()); |
| 1482 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1482 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1483 builder.addHeader("Content-Type", "useless/string"); | 1483 builder.addHeader("Content-Type", "useless/string"); |
| 1484 builder.build().start(); | 1484 builder.build().start(); |
| 1485 callback.blockForDone(); | 1485 callback.blockForDone(); |
| 1486 dataProvider.assertClosed(); | 1486 dataProvider.assertClosed(); |
| 1487 | 1487 |
| 1488 assertEquals(1, dataProvider.getNumReadCalls()); | 1488 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1489 assertEquals(0, dataProvider.getNumRewindCalls()); | 1489 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1490 | 1490 |
| 1491 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1491 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1492 assertEquals("Thrown read failure", callback.mError.getCause().getMessag
e()); | 1492 assertContains("Thrown read failure", callback.mError.getCause().getMess
age()); |
| 1493 assertEquals(null, callback.mResponseInfo); | 1493 assertEquals(null, callback.mResponseInfo); |
| 1494 } | 1494 } |
| 1495 | 1495 |
| 1496 @SmallTest | 1496 @SmallTest |
| 1497 @Feature({"Cronet"}) | 1497 @Feature({"Cronet"}) |
| 1498 public void testUploadRewindFailSync() throws Exception { | 1498 public void testUploadRewindFailSync() throws Exception { |
| 1499 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1499 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1500 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1500 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1501 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); | 1501 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 1502 | 1502 |
| 1503 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1503 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1504 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); | 1504 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); |
| 1505 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S
YNC); | 1505 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S
YNC); |
| 1506 dataProvider.addRead("test".getBytes()); | 1506 dataProvider.addRead("test".getBytes()); |
| 1507 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1507 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1508 builder.addHeader("Content-Type", "useless/string"); | 1508 builder.addHeader("Content-Type", "useless/string"); |
| 1509 builder.build().start(); | 1509 builder.build().start(); |
| 1510 callback.blockForDone(); | 1510 callback.blockForDone(); |
| 1511 dataProvider.assertClosed(); | 1511 dataProvider.assertClosed(); |
| 1512 | 1512 |
| 1513 assertEquals(1, dataProvider.getNumReadCalls()); | 1513 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1514 assertEquals(1, dataProvider.getNumRewindCalls()); | 1514 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1515 | 1515 |
| 1516 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1516 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1517 assertEquals("Sync rewind failure", callback.mError.getCause().getMessag
e()); | 1517 assertContains("Sync rewind failure", callback.mError.getCause().getMess
age()); |
| 1518 assertEquals(null, callback.mResponseInfo); | 1518 assertEquals(null, callback.mResponseInfo); |
| 1519 } | 1519 } |
| 1520 | 1520 |
| 1521 @SmallTest | 1521 @SmallTest |
| 1522 @Feature({"Cronet"}) | 1522 @Feature({"Cronet"}) |
| 1523 public void testUploadRewindFailAsync() throws Exception { | 1523 public void testUploadRewindFailAsync() throws Exception { |
| 1524 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1524 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1525 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1525 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1526 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); | 1526 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 1527 | 1527 |
| 1528 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1528 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1529 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx
ecutor()); | 1529 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx
ecutor()); |
| 1530 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A
SYNC); | 1530 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A
SYNC); |
| 1531 dataProvider.addRead("test".getBytes()); | 1531 dataProvider.addRead("test".getBytes()); |
| 1532 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1532 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1533 builder.addHeader("Content-Type", "useless/string"); | 1533 builder.addHeader("Content-Type", "useless/string"); |
| 1534 builder.build().start(); | 1534 builder.build().start(); |
| 1535 callback.blockForDone(); | 1535 callback.blockForDone(); |
| 1536 dataProvider.assertClosed(); | 1536 dataProvider.assertClosed(); |
| 1537 | 1537 |
| 1538 assertEquals(1, dataProvider.getNumReadCalls()); | 1538 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1539 assertEquals(1, dataProvider.getNumRewindCalls()); | 1539 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1540 | 1540 |
| 1541 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1541 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1542 assertEquals("Async rewind failure", callback.mError.getCause().getMessa
ge()); | 1542 assertContains("Async rewind failure", callback.mError.getCause().getMes
sage()); |
| 1543 assertEquals(null, callback.mResponseInfo); | 1543 assertEquals(null, callback.mResponseInfo); |
| 1544 } | 1544 } |
| 1545 | 1545 |
| 1546 @SmallTest | 1546 @SmallTest |
| 1547 @Feature({"Cronet"}) | 1547 @Feature({"Cronet"}) |
| 1548 public void testUploadRewindFailThrown() throws Exception { | 1548 public void testUploadRewindFailThrown() throws Exception { |
| 1549 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1549 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1550 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1550 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1551 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); | 1551 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 1552 | 1552 |
| 1553 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1553 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1554 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); | 1554 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe
cutor()); |
| 1555 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); | 1555 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); |
| 1556 dataProvider.addRead("test".getBytes()); | 1556 dataProvider.addRead("test".getBytes()); |
| 1557 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 1557 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 1558 builder.addHeader("Content-Type", "useless/string"); | 1558 builder.addHeader("Content-Type", "useless/string"); |
| 1559 builder.build().start(); | 1559 builder.build().start(); |
| 1560 callback.blockForDone(); | 1560 callback.blockForDone(); |
| 1561 dataProvider.assertClosed(); | 1561 dataProvider.assertClosed(); |
| 1562 | 1562 |
| 1563 assertEquals(1, dataProvider.getNumReadCalls()); | 1563 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1564 assertEquals(1, dataProvider.getNumRewindCalls()); | 1564 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1565 | 1565 |
| 1566 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1566 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1567 assertEquals("Thrown rewind failure", callback.mError.getCause().getMess
age()); | 1567 assertContains("Thrown rewind failure", callback.mError.getCause().getMe
ssage()); |
| 1568 assertEquals(null, callback.mResponseInfo); | 1568 assertEquals(null, callback.mResponseInfo); |
| 1569 } | 1569 } |
| 1570 | 1570 |
| 1571 @SmallTest | 1571 @SmallTest |
| 1572 @Feature({"Cronet"}) | 1572 @Feature({"Cronet"}) |
| 1573 public void testUploadChunked() throws Exception { | 1573 public void testUploadChunked() throws Exception { |
| 1574 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1574 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1575 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1575 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1576 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); | 1576 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 1577 | 1577 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1638 builder.addHeader("Content-Type", "useless/string"); | 1638 builder.addHeader("Content-Type", "useless/string"); |
| 1639 builder.build().start(); | 1639 builder.build().start(); |
| 1640 callback.blockForDone(); | 1640 callback.blockForDone(); |
| 1641 dataProvider.assertClosed(); | 1641 dataProvider.assertClosed(); |
| 1642 | 1642 |
| 1643 assertNull(callback.mResponseInfo); | 1643 assertNull(callback.mResponseInfo); |
| 1644 if (testingJavaImpl()) { | 1644 if (testingJavaImpl()) { |
| 1645 Throwable cause = callback.mError.getCause(); | 1645 Throwable cause = callback.mError.getCause(); |
| 1646 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept
ion); | 1646 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept
ion); |
| 1647 } else { | 1647 } else { |
| 1648 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REF
USED", | 1648 assertContains("Exception in CronetUrlRequest: net::ERR_CONNECTION_R
EFUSED", |
| 1649 callback.mError.getMessage()); | 1649 callback.mError.getMessage()); |
| 1650 } | 1650 } |
| 1651 } | 1651 } |
| 1652 | 1652 |
| 1653 private void throwOrCancel(FailureType failureType, ResponseStep failureStep
, | 1653 private void throwOrCancel(FailureType failureType, ResponseStep failureStep
, |
| 1654 boolean expectResponseInfo, boolean expectError) { | 1654 boolean expectResponseInfo, boolean expectError) { |
| 1655 if (Log.isLoggable("TESTING", Log.VERBOSE)) { | 1655 if (Log.isLoggable("TESTING", Log.VERBOSE)) { |
| 1656 Log.v("TESTING", "Testing " + failureType + " during " + failureStep
); | 1656 Log.v("TESTING", "Testing " + failureType + " during " + failureStep
); |
| 1657 } | 1657 } |
| 1658 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1658 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1659 callback.setFailure(failureType, failureStep); | 1659 callback.setFailure(failureType, failureStep); |
| 1660 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 1660 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 1661 NativeTestServer.getRedirectURL(), callback, callback.getExecuto
r()); | 1661 NativeTestServer.getRedirectURL(), callback, callback.getExecuto
r()); |
| 1662 UrlRequest urlRequest = builder.build(); | 1662 UrlRequest urlRequest = builder.build(); |
| 1663 urlRequest.start(); | 1663 urlRequest.start(); |
| 1664 callback.blockForDone(); | 1664 callback.blockForDone(); |
| 1665 // Wait for all posted tasks to be executed to ensure there is no unhand
led exception. | 1665 // Wait for all posted tasks to be executed to ensure there is no unhand
led exception. |
| 1666 callback.shutdownExecutorAndWait(); | 1666 callback.shutdownExecutorAndWait(); |
| 1667 assertEquals(1, callback.mRedirectCount); | 1667 assertEquals(1, callback.mRedirectCount); |
| 1668 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType
.CANCEL_ASYNC) { | 1668 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType
.CANCEL_ASYNC) { |
| 1669 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); | 1669 assertResponseStepCanceled(callback); |
| 1670 } else if (failureType == FailureType.THROW_SYNC) { | 1670 } else if (failureType == FailureType.THROW_SYNC) { |
| 1671 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); | 1671 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); |
| 1672 } | 1672 } |
| 1673 assertTrue(urlRequest.isDone()); | 1673 assertTrue(urlRequest.isDone()); |
| 1674 assertEquals(expectResponseInfo, callback.mResponseInfo != null); | 1674 assertEquals(expectResponseInfo, callback.mResponseInfo != null); |
| 1675 assertEquals(expectError, callback.mError != null); | 1675 assertEquals(expectError, callback.mError != null); |
| 1676 assertEquals(expectError, callback.mOnErrorCalled); | 1676 assertEquals(expectError, callback.mOnErrorCalled); |
| 1677 assertEquals(failureType == FailureType.CANCEL_SYNC | 1677 assertEquals(failureType == FailureType.CANCEL_SYNC |
| 1678 || failureType == FailureType.CANCEL_ASYNC | 1678 || failureType == FailureType.CANCEL_ASYNC |
| 1679 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE
, | 1679 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE
, |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1777 } | 1777 } |
| 1778 }; | 1778 }; |
| 1779 callback.setFailure(type, ResponseStep.ON_CANCELED); | 1779 callback.setFailure(type, ResponseStep.ON_CANCELED); |
| 1780 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ
estBuilder( | 1780 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ
estBuilder( |
| 1781 NativeTestServer.getEchoBodyURL(), callback, callback.getExe
cutor()); | 1781 NativeTestServer.getEchoBodyURL(), callback, callback.getExe
cutor()); |
| 1782 UrlRequest urlRequest = builder.build(); | 1782 UrlRequest urlRequest = builder.build(); |
| 1783 urlRequest.start(); | 1783 urlRequest.start(); |
| 1784 callback.blockForDone(); | 1784 callback.blockForDone(); |
| 1785 // Wait for all posted tasks to be executed to ensure there is no un
handled exception. | 1785 // Wait for all posted tasks to be executed to ensure there is no un
handled exception. |
| 1786 callback.shutdownExecutorAndWait(); | 1786 callback.shutdownExecutorAndWait(); |
| 1787 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); | 1787 assertResponseStepCanceled(callback); |
| 1788 assertTrue(urlRequest.isDone()); | 1788 assertTrue(urlRequest.isDone()); |
| 1789 assertNotNull(callback.mResponseInfo); | 1789 assertNotNull(callback.mResponseInfo); |
| 1790 assertNull(callback.mError); | 1790 assertNull(callback.mError); |
| 1791 assertTrue(callback.mOnCanceledCalled); | 1791 assertTrue(callback.mOnCanceledCalled); |
| 1792 } | 1792 } |
| 1793 } | 1793 } |
| 1794 | 1794 |
| 1795 @SmallTest | 1795 @SmallTest |
| 1796 @Feature({"Cronet"}) | 1796 @Feature({"Cronet"}) |
| 1797 @OnlyRunNativeCronet // No destroyed callback for tests | 1797 @OnlyRunNativeCronet // No destroyed callback for tests |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1868 // Shutdown the executor, so posting next task will throw an exception. | 1868 // Shutdown the executor, so posting next task will throw an exception. |
| 1869 uploadExecutor.shutdown(); | 1869 uploadExecutor.shutdown(); |
| 1870 // Continue the upload. | 1870 // Continue the upload. |
| 1871 dataProvider.mByteBuffer.putInt(42); | 1871 dataProvider.mByteBuffer.putInt(42); |
| 1872 dataProvider.mUploadDataSink.onReadSucceeded(false); | 1872 dataProvider.mUploadDataSink.onReadSucceeded(false); |
| 1873 // Callback.onFailed will be called on request executor even though uplo
ad | 1873 // Callback.onFailed will be called on request executor even though uplo
ad |
| 1874 // executor is shutdown. | 1874 // executor is shutdown. |
| 1875 callback.blockForDone(); | 1875 callback.blockForDone(); |
| 1876 assertTrue(callback.isDone()); | 1876 assertTrue(callback.isDone()); |
| 1877 assertTrue(callback.mOnErrorCalled); | 1877 assertTrue(callback.mOnErrorCalled); |
| 1878 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1878 assertContains("Exception received from UploadDataProvider", callback.mE
rror.getMessage()); |
| 1879 assertTrue(urlRequest.isDone()); | 1879 assertTrue(urlRequest.isDone()); |
| 1880 } | 1880 } |
| 1881 | 1881 |
| 1882 /** | 1882 /** |
| 1883 * A TestUrlRequestCallback that shuts down executor upon receiving onSuccee
ded callback. | 1883 * A TestUrlRequestCallback that shuts down executor upon receiving onSuccee
ded callback. |
| 1884 */ | 1884 */ |
| 1885 private static class QuitOnSuccessCallback extends TestUrlRequestCallback { | 1885 private static class QuitOnSuccessCallback extends TestUrlRequestCallback { |
| 1886 @Override | 1886 @Override |
| 1887 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { | 1887 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { |
| 1888 // Stop accepting new tasks. | 1888 // Stop accepting new tasks. |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1986 } | 1986 } |
| 1987 | 1987 |
| 1988 private void checkSpecificErrorCode(int netError, int errorCode, String name
, | 1988 private void checkSpecificErrorCode(int netError, int errorCode, String name
, |
| 1989 boolean immediatelyRetryable) throws Exception { | 1989 boolean immediatelyRetryable) throws Exception { |
| 1990 TestUrlRequestCallback callback = startAndWaitForComplete( | 1990 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 1991 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR
T, netError)); | 1991 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR
T, netError)); |
| 1992 assertNull(callback.mResponseInfo); | 1992 assertNull(callback.mResponseInfo); |
| 1993 assertNotNull(callback.mError); | 1993 assertNotNull(callback.mError); |
| 1994 assertEquals(netError, callback.mError.getCronetInternalErrorCode()); | 1994 assertEquals(netError, callback.mError.getCronetInternalErrorCode()); |
| 1995 assertEquals(errorCode, callback.mError.getErrorCode()); | 1995 assertEquals(errorCode, callback.mError.getErrorCode()); |
| 1996 assertEquals( | 1996 assertContains( |
| 1997 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr
or.getMessage()); | 1997 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr
or.getMessage()); |
| 1998 assertEquals(0, callback.mRedirectCount); | 1998 assertEquals(0, callback.mRedirectCount); |
| 1999 assertTrue(callback.mOnErrorCalled); | 1999 assertTrue(callback.mOnErrorCalled); |
| 2000 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); | 2000 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); |
| 2001 } | 2001 } |
| 2002 | 2002 |
| 2003 // Returns the contents of byteBuffer, from its position() to its limit(), | 2003 // Returns the contents of byteBuffer, from its position() to its limit(), |
| 2004 // as a String. Does not modify byteBuffer's position(). | 2004 // as a String. Does not modify byteBuffer's position(). |
| 2005 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int
end) { | 2005 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int
end) { |
| 2006 // Use a duplicate to avoid modifying byteBuffer. | 2006 // Use a duplicate to avoid modifying byteBuffer. |
| 2007 ByteBuffer duplicate = byteBuffer.duplicate(); | 2007 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 2008 duplicate.position(start); | 2008 duplicate.position(start); |
| 2009 duplicate.limit(end); | 2009 duplicate.limit(end); |
| 2010 byte[] contents = new byte[duplicate.remaining()]; | 2010 byte[] contents = new byte[duplicate.remaining()]; |
| 2011 duplicate.get(contents); | 2011 duplicate.get(contents); |
| 2012 return new String(contents); | 2012 return new String(contents); |
| 2013 } | 2013 } |
| 2014 |
| 2015 private void assertResponseStepCanceled(TestUrlRequestCallback callback) { |
| 2016 if (callback.mResponseStep == ResponseStep.ON_FAILED && callback.mError
!= null) { |
| 2017 throw new Error( |
| 2018 "Unexpected response state: " + ResponseStep.ON_FAILED, call
back.mError); |
| 2019 } |
| 2020 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); |
| 2021 } |
| 2014 } | 2022 } |
| OLD | NEW |