Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaUrlResolver.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaUrlResolver.java b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaUrlResolver.java |
| index 133b5061844cfd25ea38e978bb6dc8e9fedc8867..88e409e828236e39235e47c9ea44fc25a9cfb578 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaUrlResolver.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaUrlResolver.java |
| @@ -10,8 +10,6 @@ import android.os.AsyncTask; |
| import android.text.TextUtils; |
| import android.util.Log; |
| -import org.apache.http.Header; |
| -import org.apache.http.message.BasicHeader; |
| import org.chromium.chrome.browser.ChromiumApplication; |
| import java.io.IOException; |
| @@ -20,7 +18,8 @@ import java.net.MalformedURLException; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| import java.net.URL; |
| -import java.util.Arrays; |
| +import java.util.List; |
| +import java.util.Map; |
| /** |
| * Resolves the final URL if it's a redirect. Works asynchronously, uses HTTP |
| @@ -48,36 +47,30 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res |
| * |
| * @param uri the resolved URL. |
| */ |
| - void setUri(Uri uri, Header[] headers); |
| + void setUri(Uri uri, Map<String, List<String>> map); |
| } |
| protected static final class Result { |
| private final String mUri; |
| - private final Header[] mRelevantHeaders; |
| + private final Map<String, List<String>> mHeaders; |
| - public Result(String uri, Header[] relevantHeaders) { |
| + public Result(String uri, Map<String, List<String>> headers) { |
| mUri = uri; |
| - mRelevantHeaders = |
| - relevantHeaders != null |
| - ? Arrays.copyOf(relevantHeaders, relevantHeaders.length) |
| - : null; |
| + mHeaders = headers; |
| } |
| public String getUri() { |
| return mUri; |
| } |
| - public Header[] getRelevantHeaders() { |
| - return mRelevantHeaders != null |
| - ? Arrays.copyOf(mRelevantHeaders, mRelevantHeaders.length) |
| - : null; |
| + public Map<String, List<String>> getHeaders() { |
|
whywhat
2015/03/30 15:51:34
I thought you were going to turn this array into a
aberent
2015/03/30 17:24:04
Done.
|
| + return mHeaders; |
| } |
| } |
| private static final String TAG = "MediaUrlResolver"; |
| - private static final String CORS_HEADER_NAME = "Access-Control-Allow-Origin"; |
| private static final String COOKIES_HEADER_NAME = "Cookies"; |
| private static final String USER_AGENT_HEADER_NAME = "User-Agent"; |
| private static final String RANGE_HEADER_NAME = "Range"; |
| @@ -103,12 +96,12 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res |
| protected MediaUrlResolver.Result doInBackground(Void... params) { |
| Uri uri = mDelegate.getUri(); |
| String url = uri.toString(); |
| - Header[] relevantHeaders = null; |
| String cookies = mDelegate.getCookies(); |
| String userAgent = ChromiumApplication.getBrowserUserAgent(); |
| // URL may already be partially percent encoded; double percent encoding will break |
| // things, so decode it before sanitizing it. |
| String sanitizedUrl = sanitizeUrl(Uri.decode(url)); |
| + Map<String, List<String>> headers = null; |
| // If we failed to sanitize the URL (e.g. because the host name contains underscores) then |
| // HttpURLConnection won't work,so we can't follow redirections. Just try to use it as is. |
| @@ -129,25 +122,21 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res |
| urlConnection.getHeaderFields(); |
| url = urlConnection.getURL().toString(); |
| - String corsHeader = urlConnection.getHeaderField(CORS_HEADER_NAME); |
| - if (corsHeader != null) { |
| - relevantHeaders = new Header[1]; |
| - relevantHeaders[0] = new BasicHeader(CORS_HEADER_NAME, corsHeader); |
| - } |
| + headers = urlConnection.getHeaderFields(); |
| } catch (IOException e) { |
| Log.e(TAG, "Failed to fetch the final URI", e); |
| url = ""; |
| } |
| if (urlConnection != null) urlConnection.disconnect(); |
| } |
| - return new MediaUrlResolver.Result(url, relevantHeaders); |
| + return new MediaUrlResolver.Result(url, headers); |
| } |
| @Override |
| protected void onPostExecute(MediaUrlResolver.Result result) { |
| String url = result.getUri(); |
| Uri uri = "".equals(url) ? Uri.EMPTY : Uri.parse(url); |
| - mDelegate.setUri(uri, result.getRelevantHeaders()); |
| + mDelegate.setUri(uri, result.getHeaders()); |
| } |
| private String sanitizeUrl(String unsafeUrl) { |