Index: chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java |
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java |
index dd469534d3c71048c403d666ececc2b4fa680c76..529f8d34b40af4439e2ad844a4cd7c0eb253f707 100644 |
--- a/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java |
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java |
@@ -4,14 +4,19 @@ |
package org.chromium.chrome.browser.media.router.cast; |
-import static org.chromium.chrome.browser.media.router.cast.TestUtils.createMockRouteInfo; |
import static org.junit.Assert.assertNotNull; |
+import static org.mockito.Matchers.any; |
import static org.mockito.Matchers.eq; |
+import static org.mockito.Mockito.doReturn; |
import static org.mockito.Mockito.mock; |
import static org.mockito.Mockito.never; |
+import static org.mockito.Mockito.spy; |
import static org.mockito.Mockito.times; |
import static org.mockito.Mockito.verify; |
+import android.support.v7.media.MediaRouteSelector; |
+import android.support.v7.media.MediaRouter; |
+ |
import org.chromium.base.test.util.Feature; |
import org.chromium.chrome.browser.media.router.ChromeMediaRouterTestBase; |
import org.chromium.chrome.browser.media.router.DiscoveryDelegate; |
@@ -45,7 +50,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testInitCallbackWithEmptyKnownSinks() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(knownSinks)); |
} |
@@ -56,7 +61,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
MediaSink sink = new MediaSink(SINK_ID1, SINK_NAME1, null); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(knownSinks)); |
} |
@@ -66,7 +71,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackAddOneSink() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
List<MediaSink> expectedSinks = new ArrayList<MediaSink>(); |
@@ -79,7 +84,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackAddTwoSinks() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID2, SINK_NAME2)); |
@@ -94,7 +99,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackAddDuplicateSink() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
@@ -109,7 +114,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackRemoveSink() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.onRouteRemoved(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
@@ -124,7 +129,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackRemoveNonexistingSink() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.onRouteRemoved(null, createMockRouteInfo(SINK_ID2, SINK_NAME2)); |
@@ -136,10 +141,42 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
@Test |
@Feature({"MediaRouter"}) |
+ public void testCallbackChangeRouteAddsOneSink() { |
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
+ DiscoveryCallback callback = new DiscoveryCallback( |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
+ |
+ callback.onRouteChanged(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>(); |
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null)); |
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks)); |
+ } |
+ |
+ @Test |
+ @Feature({"MediaRouter"}) |
+ public void testCallbackRemoveSinkAfterRouteChanged() { |
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
+ DiscoveryCallback callback = new DiscoveryCallback( |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
+ |
+ MediaRouter.RouteInfo info = createMockRouteInfo(SINK_ID1, SINK_NAME1); |
+ callback.onRouteChanged(null, info); |
+ |
+ doReturn(false).when(info).matchesSelector(any(MediaRouteSelector.class)); |
+ callback.onRouteChanged(null, info); |
+ |
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>(); |
+ // One time for init, one time for remove. |
+ verify(mDiscoveryDelegate, times(2)).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks)); |
+ } |
+ |
+ |
+ @Test |
+ @Feature({"MediaRouter"}) |
public void testCallbackAddSourceUrn() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.addSourceUrn(SOURCE_ID2); |
@@ -154,7 +191,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackAddDuplicateSourceUrn() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.addSourceUrn(SOURCE_ID1); |
@@ -170,7 +207,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackRemoveSourceUrn() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.removeSourceUrn(SOURCE_ID1); |
@@ -185,7 +222,7 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
public void testCallbackRemoveNonexistingSourceUrn() { |
List<MediaSink> knownSinks = new ArrayList<MediaSink>(); |
DiscoveryCallback callback = new DiscoveryCallback( |
- SOURCE_ID1, knownSinks, mDiscoveryDelegate); |
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate, null); |
callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1)); |
callback.removeSourceUrn(SOURCE_ID2); |
@@ -194,4 +231,10 @@ public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase { |
// Only the one time for init. |
verify(mDiscoveryDelegate, never()).onSinksReceived(eq(SOURCE_ID2), eq(expectedSinks)); |
} |
+ |
+ private MediaRouter.RouteInfo createMockRouteInfo(String sinkId, String sinkName) { |
+ MediaRouter.RouteInfo route = spy(TestUtils.createMockRouteInfo(sinkId, sinkName)); |
+ doReturn(true).when(route).matchesSelector(any(MediaRouteSelector.class)); |
+ return route; |
+ } |
} |