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:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user