Index: chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java |
index 594e5ffe8c4267eb694de33cddb64f14cf136841..5a897d98f1208a467404912f88701855e4c2a903 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.media.router.cast; |
+import android.content.Context; |
import android.os.Handler; |
import android.support.v7.media.MediaRouteSelector; |
import android.support.v7.media.MediaRouter; |
@@ -39,6 +40,7 @@ |
private static final String AUTO_JOIN_PRESENTATION_ID = "auto-join"; |
private static final String PRESENTATION_ID_SESSION_ID_PREFIX = "cast-session_"; |
+ private final Context mApplicationContext; |
private final MediaRouter mAndroidMediaRouter; |
private final MediaRouteManager mManager; |
private final CastMessageHandler mMessageHandler; |
@@ -58,8 +60,8 @@ |
*/ |
public static class Builder implements MediaRouteProvider.Builder { |
@Override |
- public MediaRouteProvider create(MediaRouteManager manager) { |
- return CastMediaRouteProvider.create(manager); |
+ public MediaRouteProvider create(Context applicationContext, MediaRouteManager manager) { |
+ return CastMediaRouteProvider.create(applicationContext, manager); |
} |
} |
@@ -86,14 +88,18 @@ |
} |
/** |
+ * @param applicationContext The application context to use for this route provider. |
* @return Initialized {@link CastMediaRouteProvider} object or null if it's not supported. |
*/ |
@Nullable |
- public static CastMediaRouteProvider create(MediaRouteManager manager) { |
- MediaRouter androidMediaRouter = ChromeMediaRouter.getAndroidMediaRouter(); |
+ public static CastMediaRouteProvider create( |
+ Context applicationContext, MediaRouteManager manager) { |
+ assert applicationContext != null; |
+ MediaRouter androidMediaRouter = |
+ ChromeMediaRouter.getAndroidMediaRouter(applicationContext); |
if (androidMediaRouter == null) return null; |
- return new CastMediaRouteProvider(androidMediaRouter, manager); |
+ return new CastMediaRouteProvider(applicationContext, androidMediaRouter, manager); |
} |
public void onLaunchError() { |
@@ -283,7 +289,7 @@ |
sendReceiverAction(clientRecord.routeId, sink, source.getClientId(), "cast"); |
} |
} |
- request.start(); |
+ request.start(mApplicationContext); |
} |
@Override |
@@ -447,7 +453,15 @@ |
} |
@VisibleForTesting |
- CastMediaRouteProvider(MediaRouter androidMediaRouter, MediaRouteManager manager) { |
+ static CastMediaRouteProvider createCastMediaRouteProviderForTest( |
+ Context applicationContext, MediaRouter androidMediaRouter, MediaRouteManager manager) { |
+ return new CastMediaRouteProvider(applicationContext, androidMediaRouter, manager); |
+ } |
+ |
+ @VisibleForTesting |
+ CastMediaRouteProvider( |
+ Context applicationContext, MediaRouter androidMediaRouter, MediaRouteManager manager) { |
+ mApplicationContext = applicationContext; |
mAndroidMediaRouter = androidMediaRouter; |
mManager = manager; |
mMessageHandler = new CastMessageHandler(this); |