Output switcher header is not updated with the latest media content

-Register media controller callback
-Update panel header when medadata changes
-Add test cases

Bug: 151396986
Test: make -j50 RunSettingsRoboTests
Change-Id: Id0b8f997899a96c0c94ca6bf099e624a9e87795b
This commit is contained in:
Tim Peng
2020-03-13 14:10:40 +08:00
parent 8ee5045d68
commit 36c4949414
7 changed files with 113 additions and 27 deletions

View File

@@ -41,6 +41,7 @@ import com.android.settingslib.media.PhoneMediaDevice;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
@@ -62,7 +63,6 @@ public class MediaOutputPanelTest {
private MediaController mMediaController;
@Mock
private MediaMetadata mMediaMetadata;
@Mock
private LocalMediaManager mLocalMediaManager;
@Mock
@@ -71,6 +71,8 @@ public class MediaOutputPanelTest {
private MediaOutputPanel mPanel;
private Context mContext;
private List<MediaController> mMediaControllers = new ArrayList<>();
private ArgumentCaptor<MediaController.Callback> mControllerCbs =
ArgumentCaptor.forClass(MediaController.Callback.class);
@Before
public void setUp() {
@@ -112,6 +114,7 @@ public class MediaOutputPanelTest {
public void onStart_shouldRegisterCallback() {
mPanel.onStart();
verify(mMediaController).registerCallback(any());
verify(mLocalMediaManager).registerCallback(any());
verify(mLocalMediaManager).startScan();
}
@@ -167,6 +170,7 @@ public class MediaOutputPanelTest {
@Test
public void getTitle_withMetadata_returnArtistName() {
mPanel.onStart();
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
@@ -201,6 +205,7 @@ public class MediaOutputPanelTest {
@Test
public void getSubTitle_withMetadata_returnAlbumName() {
mPanel.onStart();
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM)).thenReturn(TEST_ALBUM);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
@@ -243,4 +248,15 @@ public class MediaOutputPanelTest {
verify(mLocalMediaManager).releaseSession();
}
@Test
public void onMetadataChanged_verifyCallOnHeaderChanged() {
mPanel.onStart();
verify(mMediaController).registerCallback(mControllerCbs.capture());
final MediaController.Callback controllerCallbacks = mControllerCbs.getValue();
controllerCallbacks.onMetadataChanged(mMediaMetadata);
verify(mCallback).onHeaderChanged();
}
}