Chromium Code Reviews| 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 |