diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/ResumeMediaBrowserTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/ResumeMediaBrowserTest.kt index 06d45de699e35..a07447521ab8a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/ResumeMediaBrowserTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/ResumeMediaBrowserTest.kt @@ -27,6 +27,7 @@ import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.util.mockito.mock import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -135,6 +136,24 @@ public class ResumeMediaBrowserTest : SysuiTestCase() { verify(callback).addTrack(eq(description), eq(component), eq(resumeBrowser)) } + @Test + fun testConnection_calledTwice_oldBrowserDisconnected() { + val oldBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(oldBrowser) + + // When testConnection can connect to the service + setupBrowserConnection() + resumeBrowser.testConnection() + + // And testConnection is called again + val newBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(newBrowser) + resumeBrowser.testConnection() + + // Then we disconnect the old browser + verify(oldBrowser).disconnect() + } + @Test fun testFindRecentMedia_connectionFails_error() { // When findRecentMedia is called and we cannot connect @@ -168,6 +187,24 @@ public class ResumeMediaBrowserTest : SysuiTestCase() { verify(callback).onConnected() } + @Test + fun testFindRecentMedia_calledTwice_oldBrowserDisconnected() { + val oldBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(oldBrowser) + + // When findRecentMedia is called and we connect + setupBrowserConnection() + resumeBrowser.findRecentMedia() + + // And findRecentMedia is called again + val newBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(newBrowser) + resumeBrowser.findRecentMedia() + + // Then we disconnect the old browser + verify(oldBrowser).disconnect() + } + @Test fun testFindRecentMedia_noChildren_error() { // When findRecentMedia is called and we connect, but do not get any results @@ -223,6 +260,24 @@ public class ResumeMediaBrowserTest : SysuiTestCase() { verify(transportControls).play() } + @Test + fun testRestart_calledTwice_oldBrowserDisconnected() { + val oldBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(oldBrowser) + + // When restart is called and we connect successfully + setupBrowserConnection() + resumeBrowser.restart() + + // And restart is called again + val newBrowser = mock() + whenever(browserFactory.create(any(), any(), any())).thenReturn(newBrowser) + resumeBrowser.restart() + + // Then we disconnect the old browser + verify(oldBrowser).disconnect() + } + /** * Helper function to mock a failed connection */