| 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.MoreAsserts; | 8 import android.test.MoreAsserts; |
| 9 import android.test.suitebuilder.annotation.SmallTest; | 9 import android.test.suitebuilder.annotation.SmallTest; |
| 10 import android.util.Log; | 10 import android.util.Log; |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 @SmallTest | 515 @SmallTest |
| 516 @Feature({"Cronet"}) | 516 @Feature({"Cronet"}) |
| 517 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory | 517 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory |
| 518 public void testMockStartAsyncError() throws Exception { | 518 public void testMockStartAsyncError() throws Exception { |
| 519 final int arbitraryNetError = -3; | 519 final int arbitraryNetError = -3; |
| 520 TestUrlRequestCallback callback = | 520 TestUrlRequestCallback callback = |
| 521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 522 FailurePhase.START, arbitraryNetError)); | 522 FailurePhase.START, arbitraryNetError)); |
| 523 assertNull(callback.mResponseInfo); | 523 assertNull(callback.mResponseInfo); |
| 524 assertNotNull(callback.mError); | 524 assertNotNull(callback.mError); |
| 525 assertEquals(arbitraryNetError, callback.mError.netError()); | 525 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 526 assertEquals(0, callback.mRedirectCount); | 526 assertEquals(0, callback.mRedirectCount); |
| 527 assertTrue(callback.mOnErrorCalled); | 527 assertTrue(callback.mOnErrorCalled); |
| 528 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); | 528 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 529 } | 529 } |
| 530 | 530 |
| 531 @SmallTest | 531 @SmallTest |
| 532 @Feature({"Cronet"}) | 532 @Feature({"Cronet"}) |
| 533 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory | 533 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory |
| 534 public void testMockReadDataSyncError() throws Exception { | 534 public void testMockReadDataSyncError() throws Exception { |
| 535 final int arbitraryNetError = -4; | 535 final int arbitraryNetError = -4; |
| 536 TestUrlRequestCallback callback = | 536 TestUrlRequestCallback callback = |
| 537 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 537 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 538 FailurePhase.READ_SYNC, arbitraryNetError)); | 538 FailurePhase.READ_SYNC, arbitraryNetError)); |
| 539 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 539 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 540 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); | 540 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); |
| 541 assertNotNull(callback.mError); | 541 assertNotNull(callback.mError); |
| 542 assertEquals(arbitraryNetError, callback.mError.netError()); | 542 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 543 assertEquals(0, callback.mRedirectCount); | 543 assertEquals(0, callback.mRedirectCount); |
| 544 assertTrue(callback.mOnErrorCalled); | 544 assertTrue(callback.mOnErrorCalled); |
| 545 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 545 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 546 } | 546 } |
| 547 | 547 |
| 548 @SmallTest | 548 @SmallTest |
| 549 @Feature({"Cronet"}) | 549 @Feature({"Cronet"}) |
| 550 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory | 550 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory |
| 551 public void testMockReadDataAsyncError() throws Exception { | 551 public void testMockReadDataAsyncError() throws Exception { |
| 552 final int arbitraryNetError = -5; | 552 final int arbitraryNetError = -5; |
| 553 TestUrlRequestCallback callback = | 553 TestUrlRequestCallback callback = |
| 554 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( | 554 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF
ailure( |
| 555 FailurePhase.READ_ASYNC, arbitraryNetError)); | 555 FailurePhase.READ_ASYNC, arbitraryNetError)); |
| 556 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 556 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 557 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); | 557 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); |
| 558 assertNotNull(callback.mError); | 558 assertNotNull(callback.mError); |
| 559 assertEquals(arbitraryNetError, callback.mError.netError()); | 559 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo
de()); |
| 560 assertEquals(0, callback.mRedirectCount); | 560 assertEquals(0, callback.mRedirectCount); |
| 561 assertTrue(callback.mOnErrorCalled); | 561 assertTrue(callback.mOnErrorCalled); |
| 562 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); | 562 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); |
| 563 } | 563 } |
| 564 | 564 |
| 565 /** | 565 /** |
| 566 * Tests that request continues when client certificate is requested. | 566 * Tests that request continues when client certificate is requested. |
| 567 */ | 567 */ |
| 568 @SmallTest | 568 @SmallTest |
| 569 @Feature({"Cronet"}) | 569 @Feature({"Cronet"}) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 584 */ | 584 */ |
| 585 @SmallTest | 585 @SmallTest |
| 586 @Feature({"Cronet"}) | 586 @Feature({"Cronet"}) |
| 587 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory | 587 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory |
| 588 public void testMockSSLCertificateError() throws Exception { | 588 public void testMockSSLCertificateError() throws Exception { |
| 589 TestUrlRequestCallback callback = startAndWaitForComplete( | 589 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 590 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); | 590 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); |
| 591 assertNull(callback.mResponseInfo); | 591 assertNull(callback.mResponseInfo); |
| 592 assertNotNull(callback.mError); | 592 assertNotNull(callback.mError); |
| 593 assertTrue(callback.mOnErrorCalled); | 593 assertTrue(callback.mOnErrorCalled); |
| 594 assertEquals(-201, callback.mError.netError()); | 594 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); |
| 595 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID"
, | 595 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID"
, |
| 596 callback.mError.getMessage()); | 596 callback.mError.getMessage()); |
| 597 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); | 597 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 598 } | 598 } |
| 599 | 599 |
| 600 /** | 600 /** |
| 601 * Checks that the buffer is updated correctly, when starting at an offset, | 601 * Checks that the buffer is updated correctly, when starting at an offset, |
| 602 * when using legacy read() API. | 602 * when using legacy read() API. |
| 603 */ | 603 */ |
| 604 @SmallTest | 604 @SmallTest |
| (...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1601 } | 1601 } |
| 1602 }); | 1602 }); |
| 1603 | 1603 |
| 1604 request.start(); | 1604 request.start(); |
| 1605 uploadDataStreamAdapterDestroyed.block(); | 1605 uploadDataStreamAdapterDestroyed.block(); |
| 1606 | 1606 |
| 1607 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 1607 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 1608 assertEquals("", callback.mResponseAsString); | 1608 assertEquals("", callback.mResponseAsString); |
| 1609 } | 1609 } |
| 1610 | 1610 |
| 1611 /* |
| 1612 * Verifies error codes are passed through correctly. |
| 1613 */ |
| 1611 @SmallTest | 1614 @SmallTest |
| 1615 @Feature({"Cronet"}) |
| 1616 public void testErrorCodes() throws Exception { |
| 1617 checkSpecificErrorCode( |
| 1618 -105, UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED, "NAME_NOT
_RESOLVED", false); |
| 1619 checkSpecificErrorCode(-106, UrlRequestException.ERROR_INTERNET_DISCONNE
CTED, |
| 1620 "INTERNET_DISCONNECTED", false); |
| 1621 checkSpecificErrorCode( |
| 1622 -21, UrlRequestException.ERROR_NETWORK_CHANGED, "NETWORK_CHANGED
", true); |
| 1623 checkSpecificErrorCode( |
| 1624 -100, UrlRequestException.ERROR_CONNECTION_CLOSED, "CONNECTION_C
LOSED", true); |
| 1625 checkSpecificErrorCode( |
| 1626 -102, UrlRequestException.ERROR_CONNECTION_REFUSED, "CONNECTION_
REFUSED", false); |
| 1627 checkSpecificErrorCode( |
| 1628 -101, UrlRequestException.ERROR_CONNECTION_RESET, "CONNECTION_RE
SET", true); |
| 1629 checkSpecificErrorCode( |
| 1630 -118, UrlRequestException.ERROR_CONNECTION_TIMED_OUT, "CONNECTIO
N_TIMED_OUT", true); |
| 1631 checkSpecificErrorCode(-7, UrlRequestException.ERROR_TIMED_OUT, "TIMED_O
UT", true); |
| 1632 checkSpecificErrorCode( |
| 1633 -109, UrlRequestException.ERROR_ADDRESS_UNREACHABLE, "ADDRESS_UN
REACHABLE", false); |
| 1634 checkSpecificErrorCode(-2, UrlRequestException.ERROR_OTHER, "FAILED", fa
lse); |
| 1635 } |
| 1636 |
| 1637 private void checkSpecificErrorCode(int netError, int errorCode, String name
, |
| 1638 boolean immediatelyRetryable) throws Exception { |
| 1639 TestUrlRequestCallback callback = startAndWaitForComplete( |
| 1640 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR
T, netError)); |
| 1641 assertNull(callback.mResponseInfo); |
| 1642 assertNotNull(callback.mError); |
| 1643 assertEquals(netError, callback.mError.getCronetInternalErrorCode()); |
| 1644 assertEquals(errorCode, callback.mError.getErrorCode()); |
| 1645 assertEquals( |
| 1646 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr
or.getMessage()); |
| 1647 assertEquals(0, callback.mRedirectCount); |
| 1648 assertTrue(callback.mOnErrorCalled); |
| 1649 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); |
| 1650 } |
| 1651 |
| 1612 // Returns the contents of byteBuffer, from its position() to its limit(), | 1652 // Returns the contents of byteBuffer, from its position() to its limit(), |
| 1613 // as a String. Does not modify byteBuffer's position(). | 1653 // as a String. Does not modify byteBuffer's position(). |
| 1614 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int
end) { | 1654 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int
end) { |
| 1615 // Use a duplicate to avoid modifying byteBuffer. | 1655 // Use a duplicate to avoid modifying byteBuffer. |
| 1616 ByteBuffer duplicate = byteBuffer.duplicate(); | 1656 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 1617 duplicate.position(start); | 1657 duplicate.position(start); |
| 1618 duplicate.limit(end); | 1658 duplicate.limit(end); |
| 1619 byte[] contents = new byte[duplicate.remaining()]; | 1659 byte[] contents = new byte[duplicate.remaining()]; |
| 1620 duplicate.get(contents); | 1660 duplicate.get(contents); |
| 1621 return new String(contents); | 1661 return new String(contents); |
| 1622 } | 1662 } |
| 1623 } | 1663 } |
| OLD | NEW |