| Index: components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
|
| index 083c0f869bccdbbd8c27aea4b3caaae324aa989a..7332a208a74d949f1641a502292a4af6585e789a 100644
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
|
| @@ -20,6 +20,8 @@ import java.io.ByteArrayOutputStream;
|
| import java.io.FileNotFoundException;
|
| import java.io.IOException;
|
| import java.io.InputStream;
|
| +import java.io.OutputStream;
|
| +import java.lang.reflect.Method;
|
| import java.net.HttpURLConnection;
|
| import java.net.MalformedURLException;
|
| import java.net.URL;
|
| @@ -39,7 +41,6 @@ import java.util.regex.Pattern;
|
| * See {@link CronetTestBase#runTest()} for details.
|
| */
|
| public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| - private CronetTestActivity mActivity;
|
|
|
| @Override
|
| protected void setUp() throws Exception {
|
| @@ -50,7 +51,7 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| 1000 * 1024);
|
| String[] commandLineArgs = {
|
| CronetTestActivity.CONFIG_KEY, config.toString()};
|
| - mActivity = launchCronetTestAppWithUrlAndCommandLineArgs(null,
|
| + launchCronetTestAppWithUrlAndCommandLineArgs(null,
|
| commandLineArgs);
|
| assertTrue(NativeTestServer.startNativeTestServer(
|
| getInstrumentation().getTargetContext()));
|
| @@ -75,6 +76,51 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| urlConnection.disconnect();
|
| }
|
|
|
| + /**
|
| + * Tests that using reflection to find {@code fixedContentLengthLong} works.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @OnlyRunCronetHttpURLConnection
|
| + public void testSetFixedLengthStreamingModeLong() throws Exception {
|
| + URL url = new URL(NativeTestServer.getEchoBodyURL());
|
| + HttpURLConnection connection =
|
| + (HttpURLConnection) url.openConnection();
|
| + connection.setDoOutput(true);
|
| + connection.setRequestMethod("POST");
|
| + if (Build.VERSION.SDK_INT >= 19) {
|
| + String dataString = "some very important data";
|
| + byte[] data = dataString.getBytes();
|
| + Class<?> c = connection.getClass();
|
| + Method method = c.getMethod("setFixedLengthStreamingMode",
|
| + new Class[] {long.class});
|
| + method.invoke(connection, (long) data.length);
|
| + OutputStream out = connection.getOutputStream();
|
| + out.write(data);
|
| + assertEquals(200, connection.getResponseCode());
|
| + assertEquals("OK", connection.getResponseMessage());
|
| + assertEquals(dataString, getResponseAsString(connection));
|
| + connection.disconnect();
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @OnlyRunCronetHttpURLConnection
|
| + // TODO(xunjieli): Change the test after chunked support is added.
|
| + public void testPostChunked() throws Exception {
|
| + URL url = new URL(NativeTestServer.getEchoBodyURL());
|
| + HttpURLConnection connection =
|
| + (HttpURLConnection) url.openConnection();
|
| + connection.setDoOutput(true);
|
| + connection.setRequestMethod("POST");
|
| + try {
|
| + connection.setChunkedStreamingMode(0);
|
| + } catch (UnsupportedOperationException e) {
|
| + assertEquals("Chunked mode not supported yet", e.getMessage());
|
| + }
|
| + }
|
| +
|
| @SmallTest
|
| @Feature({"Cronet"})
|
| @CompareDefaultWithCronet
|
| @@ -117,8 +163,12 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| NativeTestServer.shutdownNativeTestServer();
|
| HttpURLConnection secondConnection =
|
| (HttpURLConnection) url.openConnection();
|
| + // Default implementation reports this type of error in connect().
|
| + // However, since Cronet's wrapper only receives the error in its listener
|
| + // callback when message loop is running, Cronet's wrapper only knows
|
| + // about the error when it starts to read response.
|
| try {
|
| - secondConnection.connect();
|
| + secondConnection.getResponseCode();
|
| fail();
|
| } catch (IOException e) {
|
| assertTrue(e instanceof java.net.ConnectException
|
| @@ -139,8 +189,12 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| URL url = new URL("http://0.0.0.0/");
|
| HttpURLConnection urlConnection =
|
| (HttpURLConnection) url.openConnection();
|
| + // Default implementation reports this type of error in connect().
|
| + // However, since Cronet's wrapper only receives the error in its listener
|
| + // callback when message loop is running, Cronet's wrapper only knows
|
| + // about the error when it starts to read response.
|
| try {
|
| - urlConnection.connect();
|
| + urlConnection.getResponseCode();
|
| fail();
|
| } catch (IOException e) {
|
| assertTrue(e instanceof java.net.ConnectException
|
| @@ -158,8 +212,12 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| URL url = new URL("http://this-weird-host-name-does-not-exist/");
|
| HttpURLConnection urlConnection =
|
| (HttpURLConnection) url.openConnection();
|
| + // Default implementation reports this type of error in connect().
|
| + // However, since Cronet's wrapper only receives the error in its listener
|
| + // callback when message loop is running, Cronet's wrapper only knows
|
| + // about the error when it starts to read response.
|
| try {
|
| - urlConnection.connect();
|
| + urlConnection.getResponseCode();
|
| fail();
|
| } catch (java.net.UnknownHostException e) {
|
| // Expected.
|
| @@ -226,6 +284,22 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| @SmallTest
|
| @Feature({"Cronet"})
|
| @CompareDefaultWithCronet
|
| + public void testMultipleDisconnect() throws Exception {
|
| + URL url = new URL(NativeTestServer.getEchoMethodURL());
|
| + HttpURLConnection urlConnection =
|
| + (HttpURLConnection) url.openConnection();
|
| + assertEquals(200, urlConnection.getResponseCode());
|
| + assertEquals("OK", urlConnection.getResponseMessage());
|
| + assertEquals("GET", getResponseAsString(urlConnection));
|
| + // Disconnect multiple times should be fine.
|
| + for (int i = 0; i < 10; i++) {
|
| + urlConnection.disconnect();
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + @CompareDefaultWithCronet
|
| public void testAddRequestProperty() throws Exception {
|
| URL url = new URL(NativeTestServer.getEchoAllHeadersURL());
|
| HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
| @@ -880,13 +954,6 @@ public class CronetHttpURLConnectionTest extends CronetTestBase {
|
| private void checkExceptionsAreThrown(HttpURLConnection connection)
|
| throws Exception {
|
| try {
|
| - connection.connect();
|
| - fail();
|
| - } catch (IOException e) {
|
| - // Expected.
|
| - }
|
| -
|
| - try {
|
| connection.getInputStream();
|
| fail();
|
| } catch (IOException e) {
|
|
|