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

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

Issue 1593313011: Adding unittests for media casting sink observation and route handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed avayvod@'s comments Created 4 years, 11 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/ChromeMediaRouter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
index fd848c890a3eb6008cb496996d03a164a532f023..e8236b1667c8452009fd6d46685dfddf69c0b80b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
@@ -31,10 +31,9 @@ public class ChromeMediaRouter implements MediaRouteManager {
private static final String TAG = "MediaRouter";
+ // The pointer to the native object. Can be null only during tests.
private final long mNativeMediaRouterAndroid;
private final List<MediaRouteProvider> mRouteProviders = new ArrayList<MediaRouteProvider>();
- private final Map<String, MediaRouteProvider> mSinkIdsToProviders =
- new HashMap<String, MediaRouteProvider>();
private final Map<String, MediaRouteProvider> mRouteIdsToProviders =
new HashMap<String, MediaRouteProvider>();
private final Map<String, Map<MediaRouteProvider, List<MediaSink>>> mSinksPerSourcePerProvider =
@@ -42,6 +41,27 @@ public class ChromeMediaRouter implements MediaRouteManager {
private final Map<String, List<MediaSink>> mSinksPerSource =
new HashMap<String, List<MediaSink>>();
+ @VisibleForTesting
+ protected List<MediaRouteProvider> getRouteProvidersForTest() {
+ return mRouteProviders;
+ }
+
+ @VisibleForTesting
+ protected Map<String, MediaRouteProvider> getRouteIdsToProvidersForTest() {
+ return mRouteIdsToProviders;
+ }
+
+ @VisibleForTesting
+ protected Map<String, Map<MediaRouteProvider, List<MediaSink>>>
+ getSinksPerSourcePerProviderForTest() {
+ return mSinksPerSourcePerProvider;
+ }
+
+ @VisibleForTesting
+ protected Map<String, List<MediaSink>> getSinksPerSourceForTest() {
+ return mSinksPerSource;
+ }
+
/**
* Obtains the {@link MediaRouter} instance given the application context.
* @param applicationContext The context to get the Android media router service for.
@@ -78,7 +98,9 @@ public class ChromeMediaRouter implements MediaRouteManager {
for (List<MediaSink> s : sinksPerProvider.values()) allSinksPerSource.addAll(s);
mSinksPerSource.put(sourceId, allSinksPerSource);
- nativeOnSinksReceived(mNativeMediaRouterAndroid, sourceId, allSinksPerSource.size());
+ if (mNativeMediaRouterAndroid != 0) {
+ nativeOnSinksReceived(mNativeMediaRouterAndroid, sourceId, allSinksPerSource.size());
+ }
}
@Override
@@ -86,18 +108,25 @@ public class ChromeMediaRouter implements MediaRouteManager {
String mediaRouteId, String mediaSinkId, int requestId, MediaRouteProvider provider,
boolean wasLaunched) {
mRouteIdsToProviders.put(mediaRouteId, provider);
- nativeOnRouteCreated(mNativeMediaRouterAndroid, mediaRouteId, mediaSinkId, requestId,
- wasLaunched);
+ if (mNativeMediaRouterAndroid != 0) {
+ nativeOnRouteCreated(mNativeMediaRouterAndroid, mediaRouteId, mediaSinkId, requestId,
+ wasLaunched);
+ }
}
@Override
public void onRouteRequestError(String errorText, int requestId) {
- nativeOnRouteRequestError(mNativeMediaRouterAndroid, errorText, requestId);
+ if (mNativeMediaRouterAndroid != 0) {
+ nativeOnRouteRequestError(mNativeMediaRouterAndroid, errorText, requestId);
+ }
}
@Override
public void onRouteClosed(String mediaRouteId) {
- nativeOnRouteClosed(mNativeMediaRouterAndroid, mediaRouteId);
+ if (mNativeMediaRouterAndroid != 0) {
+ nativeOnRouteClosed(mNativeMediaRouterAndroid, mediaRouteId);
+ }
+ mRouteIdsToProviders.remove(mediaRouteId);
}
@Override
@@ -119,7 +148,11 @@ public class ChromeMediaRouter implements MediaRouteManager {
@CalledByNative
public static ChromeMediaRouter create(long nativeMediaRouterAndroid,
Context applicationContext) {
- return new ChromeMediaRouter(nativeMediaRouterAndroid, applicationContext);
+ ChromeMediaRouter router = new ChromeMediaRouter(nativeMediaRouterAndroid);
+ MediaRouteProvider provider = CastMediaRouteProvider.create(applicationContext, router);
+ if (provider != null) router.addMediaRouteProvider(provider);
+
+ return router;
}
/**
@@ -254,6 +287,7 @@ public class ChromeMediaRouter implements MediaRouteManager {
assert provider != null;
provider.detachRoute(routeId);
+ mRouteIdsToProviders.remove(routeId);
}
/**
@@ -285,13 +319,15 @@ public class ChromeMediaRouter implements MediaRouteManager {
}
@VisibleForTesting
- ChromeMediaRouter(long nativeMediaRouter, Context applicationContext) {
- MediaRouteProvider provider = CastMediaRouteProvider.create(applicationContext, this);
- if (provider != null) mRouteProviders.add(provider);
-
+ protected ChromeMediaRouter(long nativeMediaRouter) {
mNativeMediaRouterAndroid = nativeMediaRouter;
}
+ @VisibleForTesting
+ protected void addMediaRouteProvider(MediaRouteProvider provider) {
+ mRouteProviders.add(provider);
+ }
+
private MediaSink getSink(String sourceId, int index) {
assert mSinksPerSource.containsKey(sourceId);
return mSinksPerSource.get(sourceId).get(index);
@@ -318,4 +354,4 @@ public class ChromeMediaRouter implements MediaRouteManager {
native void nativeOnMessageSentResult(
long nativeMediaRouterAndroid, boolean success, int callbackId);
native void nativeOnMessage(long nativeMediaRouterAndroid, String mediaRouteId, String message);
-}
+}

Powered by Google App Engine
This is Rietveld 408576698