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