summaryrefslogtreecommitdiffstats
path: root/components/cronet
diff options
context:
space:
mode:
authorxunjieli <xunjieli@chromium.org>2015-12-22 06:33:37 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-22 14:34:18 +0000
commit85b624b748d4f6719ed484e0b982b65869025659 (patch)
treeae682e8e29495198881b6e6f38638ef883934ebf /components/cronet
parent38b87a7b31985d8ee47e0e4e9708293a0231f45a (diff)
downloadchromium_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')
-rw-r--r--components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java3
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java16
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.
*/