Add title and icon in output switcher panel header

-title shows artist
-subtitle shows album
-add test cases

Bug: 147776885
Test: make -j42 RunSettingsRoboTests
Change-Id: Ib33e5550e668d8cc5d70051ea2e7dd74d61c767a
This commit is contained in:
timhypeng
2020-02-03 14:58:12 +08:00
parent b7f5bf4682
commit 0c4db3170d
6 changed files with 207 additions and 16 deletions

View File

@@ -20,28 +20,59 @@ import static com.android.settings.media.MediaOutputSlice.MEDIA_PACKAGE_NAME;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.net.Uri;
import com.android.settings.R;
import com.android.settings.slices.CustomSliceRegistry;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
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";
@Mock
private MediaSessionManager mMediaSessionManager;
@Mock
private MediaController mMediaController;
@Mock
private MediaMetadata mMediaMetadata;
private MediaOutputPanel mPanel;
private Context mContext;
private List<MediaController> mMediaControllers = new ArrayList<>();
@Before
public void setUp() {
mPanel = MediaOutputPanel.create(RuntimeEnvironment.application, TEST_PACKAGENAME);
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mMediaControllers.add(mMediaController);
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGENAME);
when(mMediaSessionManager.getActiveSessions(any())).thenReturn(mMediaControllers);
when(mContext.getApplicationContext()).thenReturn(mContext);
when(mContext.getSystemService(MediaSessionManager.class)).thenReturn(mMediaSessionManager);
mPanel = MediaOutputPanel.create(mContext, TEST_PACKAGENAME);
}
@Test
@@ -62,4 +93,76 @@ public class MediaOutputPanelTest {
public void getSeeMoreIntent_isNull() {
assertThat(mPanel.getSeeMoreIntent()).isNull();
}
@Test
public void getTitle_withMetadata_returnArtistName() {
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getTitle()).isEqualTo(TEST_ARTIST);
}
@Test
public void getTitle_noMetadata_returnDefaultString() {
when(mMediaController.getMetadata()).thenReturn(null);
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));
}
@Test
public void getTitle_noController_defaultString() {
mMediaControllers.clear();
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
mPanel = MediaOutputPanel.create(mContext, TEST_PACKAGENAME);
assertThat(mPanel.getTitle()).isEqualTo(mContext.getText(R.string.media_volume_title));
}
@Test
public void getSubTitle_withMetadata_returnAlbumName() {
when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM)).thenReturn(TEST_ALBUM);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
assertThat(mPanel.getSubTitle()).isEqualTo(TEST_ALBUM);
}
@Test
public void getSubTitle_noMetadata_returnDefaultString() {
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGENAME);
when(mMediaController.getMetadata()).thenReturn(null);
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
R.string.media_output_panel_title));
}
@Test
public void getSubTitle_noPackageName_returnDefaultString() {
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));
}
@Test
public void getSubTitle_noController_returnDefaultString() {
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));
}
}