| 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 627c6dcdb7f5c1e1a77c4b8368d68c35791267f0..480325c9557e69cf98220125495fb26917470027 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
|
| @@ -4,7 +4,6 @@
|
|
|
| package org.chromium.chrome.browser.media.remote;
|
|
|
| -import android.content.Context;
|
| import android.net.Uri;
|
| import android.os.AsyncTask;
|
| import android.text.TextUtils;
|
| @@ -12,7 +11,6 @@ import android.util.Log;
|
|
|
| import org.chromium.base.CommandLine;
|
| import org.chromium.chrome.ChromeSwitches;
|
| -import org.chromium.chrome.browser.ChromiumApplication;
|
|
|
| import java.io.IOException;
|
| import java.net.HttpURLConnection;
|
| @@ -93,14 +91,17 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res
|
| private final Delegate mDelegate;
|
| private boolean mDebug;
|
|
|
| + private final String mUserAgent;
|
| +
|
| /**
|
| * The constructor
|
| - * @param context the context to use to resolve the URL
|
| * @param delegate The customer for this URL resolver.
|
| + * @param userAgent The browser user agent
|
| */
|
| - public MediaUrlResolver(Context context, Delegate delegate) {
|
| + public MediaUrlResolver(Delegate delegate, String userAgent) {
|
| mDebug = CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_CAST_DEBUG_LOGS);
|
| mDelegate = delegate;
|
| + mUserAgent = userAgent;
|
| }
|
|
|
| @Override
|
| @@ -108,7 +109,6 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res
|
| Uri uri = mDelegate.getUri();
|
| String url = uri.toString();
|
| 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));
|
| @@ -126,7 +126,7 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res
|
| if (!TextUtils.isEmpty(cookies)) {
|
| urlConnection.setRequestProperty(COOKIES_HEADER_NAME, cookies);
|
| }
|
| - urlConnection.setRequestProperty(USER_AGENT_HEADER_NAME, userAgent);
|
| + urlConnection.setRequestProperty(USER_AGENT_HEADER_NAME, mUserAgent);
|
| urlConnection.setRequestProperty(RANGE_HEADER_NAME, RANGE_HEADER_VALUE);
|
|
|
| // This triggers resolving the URL and receiving the headers.
|
| @@ -169,10 +169,12 @@ public class MediaUrlResolver extends AsyncTask<Void, Void, MediaUrlResolver.Res
|
| if (url.isEmpty()) return false;
|
|
|
| // HLS media requires Cors headers.
|
| - if ((headers == null || isEnhancedMedia(url) && !headers.containsKey(CORS_HEADER_NAME))) {
|
| + if (isEnhancedMedia(url) && (headers == null || !headers.containsKey(CORS_HEADER_NAME))) {
|
| if (mDebug) Log.d(TAG, "HLS stream without CORs header: " + url);
|
| return false;
|
| }
|
| + // TODO(aberent) Return false for media types that are not playable on Chromecast
|
| + // (getMediaType would need to know about more types to implement this).
|
| return true;
|
| }
|
|
|
|
|