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..fc92cfd941a5bb07b5f7f97af7ce9f8044c96645 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 |
@@ -91,7 +91,6 @@ public class CastMediaRouteProvider implements MediaRouteProvider, DiscoveryDele |
@Nullable |
public static CastMediaRouteProvider create(MediaRouteManager manager) { |
MediaRouter androidMediaRouter = ChromeMediaRouter.getAndroidMediaRouter(); |
- if (androidMediaRouter == null) return null; |
return new CastMediaRouteProvider(androidMediaRouter, manager); |
} |
@@ -182,10 +181,19 @@ public class CastMediaRouteProvider implements MediaRouteProvider, DiscoveryDele |
@Override |
public void startObservingMediaSinks(String sourceId) { |
- if (mAndroidMediaRouter == null) return; |
+ if (mAndroidMediaRouter == null) { |
+ // If the MediaRouter API is not available, report no devices so the page doesn't even |
+ // try to cast. |
+ onSinksReceived(sourceId, new ArrayList<MediaSink>()); |
+ return; |
+ } |
MediaSource source = MediaSource.from(sourceId); |
- if (source == null) return; |
+ if (source == null) { |
+ // If the source is invalid, report no devices available. |
+ onSinksReceived(sourceId, new ArrayList<MediaSink>()); |
+ return; |
+ } |
MediaRouteSelector routeSelector = source.buildRouteSelector(); |
if (routeSelector == null) { |
@@ -322,7 +330,7 @@ public class CastMediaRouteProvider implements MediaRouteProvider, DiscoveryDele |
} |
ClientRecord client = getClientRecordByRouteId(routeId); |
- if (client != null) { |
+ if (client != null && mAndroidMediaRouter != null) { |
MediaSink sink = MediaSink.fromSinkId(mSession.getSinkId(), mAndroidMediaRouter); |
if (sink != null) sendReceiverAction(routeId, sink, client.clientId, "stop"); |
} |