Apply upstream OkHttp HttpUrl fix
Upstream information:
Comment:
Handle null fragments.
SHA: e4dd6cfd63b251fba7a37e773f91c6bb4150b6bf
Bug: 27590872
(cherry picked from commit e31a2f4b1450d7d7a6b07b9ab9e3228c6a9083eb)
Change-Id: I1ddccb81c6f1cb482a580698ce92c311f1161374
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 9651bfb..10291f1 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/HttpUrlTest.java
@@ -1172,4 +1172,24 @@
assertEquals(urlString, url.newBuilder().build().toString());
assertEquals("http://%6d%6D:%6d%6D@host/%6d%6D?%6d%6D", url.resolve("").toString());
}
+
+ @Test public void clearFragment() throws Exception {
+ HttpUrl url = HttpUrl.parse("http://host/#fragment")
+ .newBuilder()
+ .fragment(null)
+ .build();
+ assertEquals("http://host/", url.toString());
+ assertEquals(null, url.fragment());
+ assertEquals(null, url.encodedFragment());
+ }
+
+ @Test public void clearEncodedFragment() throws Exception {
+ HttpUrl url = HttpUrl.parse("http://host/#fragment")
+ .newBuilder()
+ .encodedFragment(null)
+ .build();
+ assertEquals("http://host/", url.toString());
+ assertEquals(null, url.fragment());
+ assertEquals(null, url.encodedFragment());
+ }
}
diff --git a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
index d56f525..a5b9876 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/HttpUrl.java
@@ -867,14 +867,16 @@
}
public Builder fragment(String fragment) {
- if (fragment == null) throw new IllegalArgumentException("fragment == null");
- this.encodedFragment = canonicalize(fragment, FRAGMENT_ENCODE_SET, false, false);
+ this.encodedFragment = fragment != null
+ ? canonicalize(fragment, FRAGMENT_ENCODE_SET, false, false)
+ : null;
return this;
}
public Builder encodedFragment(String encodedFragment) {
- if (encodedFragment == null) throw new IllegalArgumentException("encodedFragment == null");
- this.encodedFragment = canonicalize(encodedFragment, FRAGMENT_ENCODE_SET, true, false);
+ this.encodedFragment = encodedFragment != null
+ ? canonicalize(encodedFragment, FRAGMENT_ENCODE_SET, true, false)
+ : null;
return this;
}