| 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 | 9 |
| 10 import org.chromium.base.test.util.Feature; | 10 import org.chromium.base.test.util.Feature; |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 | 508 |
| 509 @SmallTest | 509 @SmallTest |
| 510 @Feature({"Cronet"}) | 510 @Feature({"Cronet"}) |
| 511 public void testMockStartAsyncError() throws Exception { | 511 public void testMockStartAsyncError() throws Exception { |
| 512 final int arbitraryNetError = -3; | 512 final int arbitraryNetError = -3; |
| 513 TestUrlRequestCallback callback = | 513 TestUrlRequestCallback callback = |
| 514 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 514 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 515 FailurePhase.START, arbitraryNetError)); | 515 FailurePhase.START, arbitraryNetError)); |
| 516 assertNull(callback.mResponseInfo); | 516 assertNull(callback.mResponseInfo); |
| 517 assertNotNull(callback.mError); | 517 assertNotNull(callback.mError); |
| 518 assertEquals(arbitraryNetError, callback.mError.netError()); | 518 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 519 assertEquals(0, callback.mRedirectCount); | 519 assertEquals(0, callback.mRedirectCount); |
| 520 assertTrue(callback.mOnErrorCalled); | 520 assertTrue(callback.mOnErrorCalled); |
| 521 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); | 521 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 522 } | 522 } |
| 523 | 523 |
| 524 @SmallTest | 524 @SmallTest |
| 525 @Feature({"Cronet"}) | 525 @Feature({"Cronet"}) |
| 526 public void testMockReadDataSyncError() throws Exception { | 526 public void testMockReadDataSyncError() throws Exception { |
| 527 final int arbitraryNetError = -4; | 527 final int arbitraryNetError = -4; |
| 528 TestUrlRequestCallback callback = | 528 TestUrlRequestCallback callback = |
| 529 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 529 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 530 FailurePhase.READ_SYNC, arbitraryNetError)); | 530 FailurePhase.READ_SYNC, arbitraryNetError)); |
| 531 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 531 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 532 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); | 532 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); |
| 533 assertNotNull(callback.mError); | 533 assertNotNull(callback.mError); |
| 534 assertEquals(arbitraryNetError, callback.mError.netError()); | 534 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 535 assertEquals(0, callback.mRedirectCount); | 535 assertEquals(0, callback.mRedirectCount); |
| 536 assertTrue(callback.mOnErrorCalled); | 536 assertTrue(callback.mOnErrorCalled); |
| 537 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 537 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 538 } | 538 } |
| 539 | 539 |
| 540 @SmallTest | 540 @SmallTest |
| 541 @Feature({"Cronet"}) | 541 @Feature({"Cronet"}) |
| 542 public void testMockReadDataAsyncError() throws Exception { | 542 public void testMockReadDataAsyncError() throws Exception { |
| 543 final int arbitraryNetError = -5; | 543 final int arbitraryNetError = -5; |
| 544 TestUrlRequestCallback callback = | 544 TestUrlRequestCallback callback = |
| 545 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 545 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 546 FailurePhase.READ_ASYNC, arbitraryNetError)); | 546 FailurePhase.READ_ASYNC, arbitraryNetError)); |
| 547 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 547 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 548 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); | 548 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); |
| 549 assertNotNull(callback.mError); | 549 assertNotNull(callback.mError); |
| 550 assertEquals(arbitraryNetError, callback.mError.netError()); | 550 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 551 assertEquals(0, callback.mRedirectCount); | 551 assertEquals(0, callback.mRedirectCount); |
| 552 assertTrue(callback.mOnErrorCalled); | 552 assertTrue(callback.mOnErrorCalled); |
| 553 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 553 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 554 } | 554 } |
| 555 | 555 |
| 556 /** | 556 /** |
| 557 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai
led}. | 557 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai
led}. |
| 558 */ | 558 */ |
| 559 @SmallTest | 559 @SmallTest |
| 560 @Feature({"Cronet"}) | 560 @Feature({"Cronet"}) |
| 561 public void testMockSSLCertificateError() throws Exception { | 561 public void testMockSSLCertificateError() throws Exception { |
| 562 TestUrlRequestCallback callback = startAndWaitForComplete( | 562 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 563 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); | 563 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); |
| 564 assertNull(callback.mResponseInfo); | 564 assertNull(callback.mResponseInfo); |
| 565 assertNotNull(callback.mError); | 565 assertNotNull(callback.mError); |
| 566 assertTrue(callback.mOnErrorCalled); | 566 assertTrue(callback.mOnErrorCalled); |
| 567 assertEquals(-201, callback.mError.netError()); | 567 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); |
| 568 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID"
, | 568 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID"
, |
| 569 callback.mError.getMessage()); | 569 callback.mError.getMessage()); |
| 570 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); | 570 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 571 } | 571 } |
| 572 | 572 |
| 573 /** | 573 /** |
| 574 * Checks that the buffer is updated correctly, when starting at an offset, | 574 * Checks that the buffer is updated correctly, when starting at an offset, |
| 575 * when using legacy read() API. | 575 * when using legacy read() API. |
| 576 */ | 576 */ |
| 577 @SmallTest | 577 @SmallTest |
| (...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1546 dataProvider.mUploadDataSink.onReadSucceeded(false); | 1546 dataProvider.mUploadDataSink.onReadSucceeded(false); |
| 1547 // Callback.onFailed will be called on request executor even though uplo
ad | 1547 // Callback.onFailed will be called on request executor even though uplo
ad |
| 1548 // executor is shutdown. | 1548 // executor is shutdown. |
| 1549 callback.blockForDone(); | 1549 callback.blockForDone(); |
| 1550 assertTrue(callback.isDone()); | 1550 assertTrue(callback.isDone()); |
| 1551 assertTrue(callback.mOnErrorCalled); | 1551 assertTrue(callback.mOnErrorCalled); |
| 1552 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 1552 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); |
| 1553 assertTrue(urlRequest.isDone()); | 1553 assertTrue(urlRequest.isDone()); |
| 1554 } | 1554 } |
| 1555 | 1555 |
| 1556 /** |
| 1557 * Verifies error codes are passed through correctly. |
| 1558 */ |
| 1559 @SmallTest |
| 1560 @Feature({"Cronet"}) |
| 1561 public void testErrorCodes() throws Exception { |
| 1562 checkSpecificErrorCode( |
| 1563 -105, UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED, "NAME_NOT
_RESOLVED", false); |
| 1564 checkSpecificErrorCode(-106, UrlRequestException.ERROR_INTERNET_DISCONNE
CTED, |
| 1565 "INTERNET_DISCONNECTED", false); |
| 1566 checkSpecificErrorCode( |
| 1567 -21, UrlRequestException.ERROR_NETWORK_CHANGED, "NETWORK_CHANGED
", true); |
| 1568 checkSpecificErrorCode( |
| 1569 -100, UrlRequestException.ERROR_CONNECTION_CLOSED, "CONNECTION_C
LOSED", true); |
| 1570 checkSpecificErrorCode( |
| 1571 -102, UrlRequestException.ERROR_CONNECTION_REFUSED, "CONNECTION_
REFUSED", false); |
| 1572 checkSpecificErrorCode( |
| 1573 -101, UrlRequestException.ERROR_CONNECTION_RESET, "CONNECTION_RE
SET", true); |
| 1574 checkSpecificErrorCode( |
| 1575 -118, UrlRequestException.ERROR_CONNECTION_TIMED_OUT, "CONNECTIO
N_TIMED_OUT", true); |
| 1576 checkSpecificErrorCode(-7, UrlRequestException.ERROR_TIMED_OUT, "TIMED_O
UT", true); |
| 1577 checkSpecificErrorCode( |
| 1578 -109, UrlRequestException.ERROR_ADDRESS_UNREACHABLE, "ADDRESS_UN
REACHABLE", false); |
| 1579 checkSpecificErrorCode(-2, UrlRequestException.ERROR_OTHER, "FAILED", fa
lse); |
| 1580 } |
| 1581 |
| 1582 private void checkSpecificErrorCode(int netError, int errorCode, String name
, |
| 1583 boolean immediatelyRetryable) throws Exception { |
| 1584 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 1585 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR
T, netError)); |
| 1586 assertNull(callback.mResponseInfo); |
| 1587 assertNotNull(callback.mError); |
| 1588 assertEquals(netError, callback.mError.getCronetInternalErrorCode()); |
| 1589 assertEquals(errorCode, callback.mError.getErrorCode()); |
| 1590 assertEquals( |
| 1591 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr
or.getMessage()); |
| 1592 assertEquals(0, callback.mRedirectCount); |
| 1593 assertTrue(callback.mOnErrorCalled); |
| 1594 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 1595 } |
| 1596 |
| 1556 // Returns the contents of byteBuffer, from its position() to its limit(), | 1597 // Returns the contents of byteBuffer, from its position() to its limit(), |
| 1557 // as a String. Does not modify byteBuffer's position(). | 1598 // as a String. Does not modify byteBuffer's position(). |
| 1558 private String bufferContentsToString(ByteBuffer byteBuffer, int start, | 1599 private String bufferContentsToString(ByteBuffer byteBuffer, int start, |
| 1559 int end) { | 1600 int end) { |
| 1560 // Use a duplicate to avoid modifying byteBuffer. | 1601 // Use a duplicate to avoid modifying byteBuffer. |
| 1561 ByteBuffer duplicate = byteBuffer.duplicate(); | 1602 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 1562 duplicate.position(start); | 1603 duplicate.position(start); |
| 1563 duplicate.limit(end); | 1604 duplicate.limit(end); |
| 1564 byte[] contents = new byte[duplicate.remaining()]; | 1605 byte[] contents = new byte[duplicate.remaining()]; |
| 1565 duplicate.get(contents); | 1606 duplicate.get(contents); |
| 1566 return new String(contents); | 1607 return new String(contents); |
| 1567 } | 1608 } |
| 1568 } | 1609 } |
| OLD | NEW |