Update header information in output switcher

-Apply Metadata Description rule for title and subtitle
-Add test cases

Bug: 151889011
Test: make -j50 RunSettingsRoboTests
Change-Id: I46b79a8a64daf99b248742b96fb144cf77e685b4
This commit is contained in:
Tim Peng
2020-03-19 11:07:42 +08:00
parent 7430932305
commit 93123a5c63
2 changed files with 22 additions and 23 deletions

View File

@@ -89,7 +89,7 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
if (mMediaController != null) {
final MediaMetadata metadata = mMediaController.getMetadata();
if (metadata != null) {
return metadata.getString(MediaMetadata.METADATA_KEY_ARTIST);
return metadata.getDescription().getTitle();
}
}
return mContext.getText(R.string.media_volume_title);
@@ -100,10 +100,10 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
if (mMediaController != null) {
final MediaMetadata metadata = mMediaController.getMetadata();
if (metadata != null) {
return metadata.getString(MediaMetadata.METADATA_KEY_ALBUM);
return metadata.getDescription().getSubtitle();
}
}
return mContext.getText(R.string.media_output_panel_title);
return null;
}
@Override

View File

@@ -27,10 +27,12 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.media.MediaDescription;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.net.Uri;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.slices.CustomSliceRegistry;
@@ -55,7 +57,7 @@ public class MediaOutputPanelTest {
private static final String TEST_PACKAGENAME = "com.test.packagename";
private static final String TEST_ARTIST = "test_artist";
private static final String TEST_ALBUM = "test_album";
private static final String TEST_SONG = "test_song";
@Mock
private MediaSessionManager mMediaSessionManager;
@@ -73,6 +75,7 @@ public class MediaOutputPanelTest {
private List<MediaController> mMediaControllers = new ArrayList<>();
private ArgumentCaptor<MediaController.Callback> mControllerCbs =
ArgumentCaptor.forClass(MediaController.Callback.class);
private MediaDescription mMediaDescription;
@Before
public void setUp() {
@@ -85,6 +88,11 @@ public class MediaOutputPanelTest {
when(mMediaSessionManager.getActiveSessions(any())).thenReturn(mMediaControllers);
when(mContext.getApplicationContext()).thenReturn(mContext);
when(mContext.getSystemService(MediaSessionManager.class)).thenReturn(mMediaSessionManager);
MediaDescription.Builder builder = new MediaDescription.Builder();
builder.setTitle(TEST_SONG);
builder.setSubtitle(TEST_ARTIST);
mMediaDescription = builder.build();
when(mMediaMetadata.getDescription()).thenReturn(mMediaDescription);
mPanel = MediaOutputPanel.create(mContext, TEST_PACKAGENAME);
mPanel.mLocalMediaManager = mLocalMediaManager;
@@ -169,12 +177,11 @@ public class MediaOutputPanelTest {
}
@Test
public void getTitle_withMetadata_returnArtistName() {
public void getTitle_withMetadata_returnSongName() {
mPanel.onStart();
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getTitle()).isEqualTo(TEST_ARTIST);
assertThat(mPanel.getTitle()).isEqualTo(TEST_SONG);
}
@Test
@@ -183,11 +190,9 @@ public class MediaOutputPanelTest {
assertThat(mPanel.getTitle()).isEqualTo(mContext.getText(R.string.media_volume_title));
}
@Test
public void getTitle_noPackageName_returnDefaultString() {
mPanel = MediaOutputPanel.create(mContext, null);
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getTitle()).isEqualTo(mContext.getText(R.string.media_volume_title));
@@ -204,42 +209,36 @@ public class MediaOutputPanelTest {
}
@Test
public void getSubTitle_withMetadata_returnAlbumName() {
public void getSubTitle_withMetadata_returnArtistName() {
mPanel.onStart();
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM)).thenReturn(TEST_ALBUM);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getSubTitle()).isEqualTo(TEST_ALBUM);
assertThat(mPanel.getSubTitle()).isEqualTo(TEST_ARTIST);
}
@Test
public void getSubTitle_noMetadata_returnDefaultString() {
public void getSubTitle_noMetadata_returnEmpty() {
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGENAME);
when(mMediaController.getMetadata()).thenReturn(null);
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
R.string.media_output_panel_title));
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
}
@Test
public void getSubTitle_noPackageName_returnDefaultString() {
public void getSubTitle_noPackageName_returnEmpty() {
mPanel = MediaOutputPanel.create(mContext, null);
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
R.string.media_output_panel_title));
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
}
@Test
public void getSubTitle_noController_returnDefaultString() {
public void getSubTitle_noController_returnEmpty() {
mMediaControllers.clear();
mPanel = MediaOutputPanel.create(mContext, TEST_PACKAGENAME);
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM)).thenReturn(TEST_ALBUM);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
R.string.media_output_panel_title));
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
}
@Test