aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Fuller <nfuller@google.com>2016-08-10 15:28:19 +0100
committerNeil Fuller <nfuller@google.com>2016-08-10 16:35:59 +0100
commitda039605fac12ce27a4e9e07e3ace8d4a4108868 (patch)
tree0625ad1fa402a86ed2b7763399e7a8aabeefb521
parentffe9365e03aa92918d64900979b322207891a329 (diff)
downloadokhttp-da039605fac12ce27a4e9e07e3ace8d4a4108868.tar.gz
Use different URL encoding for single quote in query
Single quotes in query parameters in HttpURLConnection changed behavior between M and N due to upstream changes in OkHttp: in N, single quotes started being encoded as %27 when present in query parameters. Unfortunately, this broke several "iTunes remote" apps: iTunes appears not to support %27 encoding for single quotes in its DAAP server. Bug: 30405333 Test: (old) cts test packages android.core.tests.libcore.package.okhttp and android.core.tests.libcore.package.libcore Change-Id: Ic5ce976d969a733973c7e62cc6747cb679e78ca8
-rw-r--r--okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java5
-rw-r--r--okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java8
2 files changed, 10 insertions, 3 deletions
diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java
index d45ac10..8510eec 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java
@@ -553,7 +553,10 @@ public final class HttpUrlTest {
@Test public void queryCharacters() throws Exception {
new UrlComponentEncodingTester()
.override(Encoding.IDENTITY, '?', '`')
- .override(Encoding.PERCENT, '\'')
+ // ANDROID-CHANGED: http://b/30405333
+ // .override(Encoding.PERCENT, '\'')
+ .override(Encoding.IDENTITY, '\'')
+ // ANDROID-CHANGED end.
.override(Encoding.SKIP, '#', '+')
.skipForUri('%', '\\', '^', '`', '{', '|', '}')
.test(Component.QUERY);
diff --git a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
index 8e75e3f..32e1106 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
@@ -259,8 +259,12 @@ public final class HttpUrl {
static final String PASSWORD_ENCODE_SET = " \"':;<=>@[]^`{}|/\\?#";
static final String PATH_SEGMENT_ENCODE_SET = " \"<>^`{}|/\\?#";
static final String PATH_SEGMENT_ENCODE_SET_URI = "[]";
- static final String QUERY_ENCODE_SET = " \"'<>#";
- static final String QUERY_COMPONENT_ENCODE_SET = " \"'<>#&=";
+ // ANDROID-CHANGED: http://b/30405333 - we do not encode single quote as %27 in query strings.
+ // static final String QUERY_ENCODE_SET = " \"'<>#";
+ // static final String QUERY_COMPONENT_ENCODE_SET = " \"'<>#&=";
+ static final String QUERY_ENCODE_SET = " \"<>#";
+ static final String QUERY_COMPONENT_ENCODE_SET = " \"<>#&=";
+ // ANDROID-CHANGED end.
static final String QUERY_COMPONENT_ENCODE_SET_URI = "\\^`{|}";
static final String FORM_ENCODE_SET = " \"':;<=>@[]^`{}|/\\?#&!$(),~";
static final String FRAGMENT_ENCODE_SET = "";