Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Unified Diff: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java

Issue 790273002: [Cronet] Handle redirects in CronetHttpURLConnection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java
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 70f65d7f69f22388aa64e30ef3805a1d6c00ac7a..b669fe262e547d6e145dcfc1f617a3b2d6e5a4a5 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
@@ -14,6 +14,7 @@ import org.chromium.net.UrlRequestListener;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
import java.net.URL;
import java.nio.ByteBuffer;
@@ -107,6 +108,14 @@ public class CronetHttpURLConnection extends HttpURLConnection {
@Override
public InputStream getInputStream() throws IOException {
connect();
+ if (mResponseInfo == null) {
+ throw new IOException();
+ }
+ if (!instanceFollowRedirects
+ && mResponseInfo.getHttpStatusCode() == 302) {
mmenke 2014/12/10 21:44:52 301, 303, 307, and 308 may also be redirects (308s
xunjieli 2014/12/12 20:58:02 Done. Smart idea! thanks
+ throw new IOException(
+ "Cannot read response body of a 302 response");
+ }
return mInputStream;
}
@@ -176,7 +185,17 @@ public class CronetHttpURLConnection extends HttpURLConnection {
@Override
public void onRedirect(UrlRequest request, ResponseInfo info,
String newLocationUrl) {
- // TODO(xunjieli): Handle redirect and test it.
+ if (instanceFollowRedirects) {
+ try {
+ url = new URL(newLocationUrl);
+ } catch (MalformedURLException e) {
xunjieli 2014/12/10 20:27:17 Not sure if we need to handle malformed url, I gue
mef 2014/12/11 16:30:56 I agree.
xunjieli 2014/12/12 20:58:02 Acknowledged. I will leave it unhandled, unless Ma
+ // Ignored.
+ }
+ } else {
+ mResponseInfo = info;
+ mRequest.cancel();
+ setResponseDataCompleted();
mef 2014/12/11 16:30:56 Per Matt's suggestion maybe set a flag indicating
xunjieli 2014/12/12 20:58:01 Done.
+ }
}
@Override

Powered by Google App Engine
This is Rietveld 408576698