Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3081)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java

Issue 1840093002: [Android, Cast] Take onRouteChanged() into account to discover compatible Cast devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a check for matching the selector when route changes Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java
index 0ddd354d141cda4f4fcfb865ad7752e2b2e74b1d..53905faeed97a8f6a8dd4721c723b549bf838124 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallback.java
@@ -4,9 +4,9 @@
package org.chromium.chrome.browser.media.router.cast;
+import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;
-import org.chromium.chrome.browser.media.router.ChromeMediaRouter;
import org.chromium.chrome.browser.media.router.DiscoveryDelegate;
import java.util.ArrayList;
@@ -21,16 +21,18 @@ import java.util.Set;
*/
public class DiscoveryCallback extends MediaRouter.Callback {
private final DiscoveryDelegate mDiscoveryDelegate;
+ private final MediaRouteSelector mRouteSelector;
private Set<String> mSourceUrns = new HashSet<String>();
private List<MediaSink> mSinks = new ArrayList<MediaSink>();
public DiscoveryCallback(String sourceUrn, List<MediaSink> knownSinks,
- DiscoveryDelegate delegate) {
+ DiscoveryDelegate delegate, MediaRouteSelector selector) {
assert delegate != null;
assert sourceUrn != null && !sourceUrn.isEmpty();
mSinks.addAll(knownSinks);
mDiscoveryDelegate = delegate;
+ mRouteSelector = selector;
addSourceUrn(sourceUrn);
}
@@ -51,6 +53,8 @@ public class DiscoveryCallback extends MediaRouter.Callback {
@Override
public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) {
+ if (route == null || !route.matchesSelector(mRouteSelector)) return;
+
MediaSink sink = MediaSink.fromRoute(route);
if (mSinks.contains(sink)) return;
mSinks.add(sink);
@@ -65,6 +69,19 @@ public class DiscoveryCallback extends MediaRouter.Callback {
updateChromeMediaRouter();
}
+ @Override
+ public void onRouteChanged(MediaRouter router, MediaRouter.RouteInfo route) {
+ // Sometimes onRouteAdded is not called for the route as it doesn't yet match the selector.
+ // onRouteChanged() will be called later when the matching category is added.
+ if (route == null) return;
+
+ if (route.matchesSelector(mRouteSelector)) {
+ onRouteAdded(router, route);
+ } else {
+ onRouteRemoved(router, route);
+ }
+ }
+
private void updateChromeMediaRouter() {
for (String sourceUrn : mSourceUrns) {
mDiscoveryDelegate.onSinksReceived(sourceUrn, new ArrayList<MediaSink>(mSinks));

Powered by Google App Engine
This is Rietveld 408576698