diff options
author | Neil Fuller <nfuller@google.com> | 2016-08-10 15:28:19 +0100 |
---|---|---|
committer | Neil Fuller <nfuller@google.com> | 2016-08-10 16:35:59 +0100 |
commit | da039605fac12ce27a4e9e07e3ace8d4a4108868 (patch) | |
tree | 0625ad1fa402a86ed2b7763399e7a8aabeefb521 | |
parent | ffe9365e03aa92918d64900979b322207891a329 (diff) | |
download | okhttp-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.java | 5 | ||||
-rw-r--r-- | okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java | 8 |
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 = ""; |