diff options
author | xunjieli <xunjieli@chromium.org> | 2015-12-22 06:33:37 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-22 14:34:18 +0000 |
commit | 85b624b748d4f6719ed484e0b982b65869025659 (patch) | |
tree | ae682e8e29495198881b6e6f38638ef883934ebf /components/cronet | |
parent | 38b87a7b31985d8ee47e0e4e9708293a0231f45a (diff) | |
download | chromium_src-85b624b748d4f6719ed484e0b982b65869025659.zip chromium_src-85b624b748d4f6719ed484e0b982b65869025659.tar.gz chromium_src-85b624b748d4f6719ed484e0b982b65869025659.tar.bz2 |
[Cronet] Set default method to POST when doOutput is true
If HTTP method is not specified, and setDoOutput(true) is called,
HTTP method should default to POST. This is to match the platform's
stack and its documentation.
BUG=571436
Review URL: https://codereview.chromium.org/1533413004
Cr-Commit-Position: refs/heads/master@{#366593}
Diffstat (limited to 'components/cronet')
2 files changed, 19 insertions, 0 deletions
diff --git a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java index 0e458c1..873d90b 100644 --- a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java +++ b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java @@ -249,6 +249,9 @@ public class CronetHttpURLConnection extends HttpURLConnection { final UrlRequest.Builder requestBuilder = new UrlRequest.Builder( getURL().toString(), new CronetUrlRequestCallback(), mMessageLoop, mCronetEngine); if (doOutput) { + if (method.equals("GET")) { + method = "POST"; + } if (mOutputStream != null) { requestBuilder.setUploadDataProvider( mOutputStream.getUploadDataProvider(), mMessageLoop); 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 af922e9..ab3af15 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 @@ -89,6 +89,22 @@ public class CronetHttpURLConnectionTest extends CronetTestBase { connection.disconnect(); } + @SmallTest + @Feature({"Cronet"}) + @CompareDefaultWithCronet + // Regression test for crbug.com/571436. + public void testDefaultToPostWhenDoOutput() throws Exception { + URL url = new URL(NativeTestServer.getEchoMethodURL()); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + OutputStream out = connection.getOutputStream(); + out.write("dummy data".getBytes()); + assertEquals(200, connection.getResponseCode()); + assertEquals("OK", connection.getResponseMessage()); + assertEquals("POST", TestUtil.getResponseAsString(connection)); + connection.disconnect(); + } + /** * Tests that using reflection to find {@code fixedContentLengthLong} works. */ |