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 cdd238c1b42fdce2ef9ee946b5c9a52552834d50..f024c9bbec90632e6d95822b26f874d062fc6c2c 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 |
| @@ -4,6 +4,8 @@ |
| package org.chromium.net.urlconnection; |
| +import android.util.Pair; |
| + |
| import org.chromium.net.ExtendedResponseInfo; |
| import org.chromium.net.ResponseInfo; |
| import org.chromium.net.UrlRequest; |
| @@ -18,6 +20,8 @@ import java.net.HttpURLConnection; |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.nio.ByteBuffer; |
| +import java.util.List; |
| +import java.util.Map; |
| /** |
| * An implementation of HttpURLConnection that uses Cronet to send requests and |
| @@ -102,6 +106,79 @@ public class CronetHttpURLConnection extends HttpURLConnection { |
| } |
| /** |
| + * Returns an unmodifiable map of the response-header fields and values. |
| + */ |
| + @Override |
| + public Map<String, List<String>> getHeaderFields() { |
| + try { |
| + connect(); |
| + } catch (IOException e) { |
| + // Default implementation returns an empty map on K, but returns |
| + // null on L. |
| + return null; |
| + } |
| + return mResponseInfo.getAllHeaders(); |
| + } |
| + |
| + /** |
| + * Returns the value of the named header field. If called on a connection |
| + * that sets the same header multiple times with possibly different values, |
| + * only the last value is returned. |
| + */ |
| + @Override |
| + public final String getHeaderField(String fieldName) { |
| + try { |
| + connect(); |
| + } catch (IOException e) { |
| + return null; |
| + } |
| + Map<String, List<String>> map = mResponseInfo.getAllHeaders(); |
| + if (!map.containsKey(fieldName)) { |
| + return null; |
| + } |
| + List<String> values = map.get(fieldName); |
| + return values.get(values.size() - 1); |
| + } |
| + |
| + /** |
| + * Returns the name of the header field at the given position pos or null |
|
mmenke
2015/01/16 19:43:13
nit: Suggest a comma after pos.
xunjieli
2015/01/16 20:01:12
Done.
|
| + * if there are fewer than pos fields. |
| + */ |
| + @Override |
| + public final String getHeaderFieldKey(int pos) { |
| + try { |
| + connect(); |
| + } catch (IOException e) { |
| + return null; |
| + } |
| + List<Pair<String, String>> headers = |
| + mResponseInfo.getAllHeadersAsList(); |
| + if (pos >= headers.size()) { |
| + return null; |
| + } |
| + return headers.get(pos).first; |
| + } |
| + |
| + /** |
| + * Returns the header value at the field position pos or null if the header |
| + * has fewer than pos fields. |
| + */ |
| + @Override |
| + public final String getHeaderField(int pos) { |
| + try { |
| + connect(); |
| + } catch (IOException e) { |
| + return null; |
| + } |
| + List<Pair<String, String>> headers = |
| + mResponseInfo.getAllHeadersAsList(); |
| + if (pos >= headers.size()) { |
| + return null; |
| + } |
| + return headers.get(pos).second; |
| + } |
| + |
| + /** |
| * Returns an InputStream for reading data from the resource pointed by this |
| * URLConnection. |
| * @throws FileNotFoundException if http response code is equal or greater |