Move tests relying on unreleased robolectric changes

#cherrypick

PiperOrigin-RevId: 679589647
This commit is contained in:
bachinger 2024-09-27 07:53:43 -07:00 committed by Copybara-Service
parent c6434a8276
commit 287f353c87

View File

@ -16,8 +16,6 @@
package androidx.media3.session;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.session.DefaultMediaNotificationProvider.DEFAULT_CHANNEL_ID;
import static androidx.media3.session.DefaultMediaNotificationProvider.DEFAULT_NOTIFICATION_ID;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
@ -30,8 +28,6 @@ import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
@ -61,9 +57,7 @@ import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.robolectric.Robolectric;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowNotificationManager;
/** Tests for {@link DefaultMediaNotificationProvider}. */
@RunWith(AndroidJUnit4.class)
@ -977,76 +971,6 @@ public class DefaultMediaNotificationProviderTest {
.isEqualTo(context.getString(R.string.media3_controls_play_description));
}
@Test
public void provider_idsNotSpecified_usesDefaultIds() {
Context context = ApplicationProvider.getApplicationContext();
DefaultMediaNotificationProvider defaultMediaNotificationProvider =
new DefaultMediaNotificationProvider.Builder(context).build();
BitmapLoader mockBitmapLoader = mock(BitmapLoader.class);
when(mockBitmapLoader.loadBitmapFromMetadata(any())).thenReturn(null);
Player player = new TestExoPlayerBuilder(context).build();
MediaSession mediaSession =
new MediaSession.Builder(context, player).setBitmapLoader(mockBitmapLoader).build();
DefaultActionFactory defaultActionFactory =
new DefaultActionFactory(Robolectric.setupService(TestService.class));
MediaNotification notification =
defaultMediaNotificationProvider.createNotification(
mediaSession,
ImmutableList.of(),
defaultActionFactory,
mock(MediaNotification.Provider.Callback.class));
mediaSession.release();
player.release();
assertThat(notification.notificationId).isEqualTo(DEFAULT_NOTIFICATION_ID);
assertThat(notification.notification.getChannelId()).isEqualTo(DEFAULT_CHANNEL_ID);
ShadowNotificationManager shadowNotificationManager =
Shadows.shadowOf(
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
assertHasNotificationChannel(
shadowNotificationManager.getNotificationChannels(),
/* channelId= */ DEFAULT_CHANNEL_ID,
/* channelName= */ context.getString(R.string.default_notification_channel_name));
}
@Test
public void provider_withCustomIds_notificationsUseCustomIds() {
Context context = ApplicationProvider.getApplicationContext();
DefaultMediaNotificationProvider defaultMediaNotificationProvider =
new DefaultMediaNotificationProvider.Builder(context)
.setNotificationId(/* notificationId= */ 2)
.setChannelId(/* channelId= */ "customChannelId")
.setChannelName(/* channelNameResourceId= */ R.string.media3_controls_play_description)
.build();
BitmapLoader mockBitmapLoader = mock(BitmapLoader.class);
when(mockBitmapLoader.loadBitmapFromMetadata(any())).thenReturn(null);
Player player = new TestExoPlayerBuilder(context).build();
MediaSession mediaSession =
new MediaSession.Builder(context, player).setBitmapLoader(mockBitmapLoader).build();
DefaultActionFactory defaultActionFactory =
new DefaultActionFactory(Robolectric.setupService(TestService.class));
MediaNotification notification =
defaultMediaNotificationProvider.createNotification(
mediaSession,
ImmutableList.of(),
defaultActionFactory,
mock(MediaNotification.Provider.Callback.class));
mediaSession.release();
player.release();
assertThat(notification.notificationId).isEqualTo(2);
assertThat(notification.notification.getChannelId()).isEqualTo("customChannelId");
ShadowNotificationManager shadowNotificationManager =
Shadows.shadowOf(
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
assertHasNotificationChannel(
shadowNotificationManager.getNotificationChannels(),
/* channelId= */ "customChannelId",
/* channelName= */ context.getString(R.string.media3_controls_play_description));
}
@Test
public void provider_withCustomNotificationIdProvider_notificationsUseCustomId() {
Context context = ApplicationProvider.getApplicationContext();
@ -1200,43 +1124,6 @@ public class DefaultMediaNotificationProviderTest {
assertThat(NotificationCompat.getContentTitle(notification.notification)).isNull();
}
/**
* {@link DefaultMediaNotificationProvider} is designed to be extendable. Public constructor
* should not be removed.
*/
@Test
public void createsProviderUsingConstructor_idsNotSpecified_usesDefaultIds() {
Context context = ApplicationProvider.getApplicationContext();
DefaultMediaNotificationProvider defaultMediaNotificationProvider =
new DefaultMediaNotificationProvider(context);
BitmapLoader mockBitmapLoader = mock(BitmapLoader.class);
when(mockBitmapLoader.loadBitmapFromMetadata(any())).thenReturn(null);
Player player = new TestExoPlayerBuilder(context).build();
MediaSession mediaSession =
new MediaSession.Builder(context, player).setBitmapLoader(mockBitmapLoader).build();
DefaultActionFactory defaultActionFactory =
new DefaultActionFactory(Robolectric.setupService(TestService.class));
MediaNotification notification =
defaultMediaNotificationProvider.createNotification(
mediaSession,
/* customLayout= */ ImmutableList.of(),
defaultActionFactory,
/* onNotificationChangedCallback= */ mock(MediaNotification.Provider.Callback.class));
mediaSession.release();
player.release();
assertThat(notification.notificationId).isEqualTo(DEFAULT_NOTIFICATION_ID);
assertThat(notification.notification.getChannelId()).isEqualTo(DEFAULT_CHANNEL_ID);
ShadowNotificationManager shadowNotificationManager =
Shadows.shadowOf(
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
assertHasNotificationChannel(
shadowNotificationManager.getNotificationChannels(),
/* channelId= */ DEFAULT_CHANNEL_ID,
/* channelName= */ context.getString(R.string.default_notification_channel_name));
}
/**
* Extends {@link DefaultMediaNotificationProvider} and overrides all known protected methods. If
* by accident we change the signature of the class in a way that affects inheritance, this test
@ -1279,22 +1166,6 @@ public class DefaultMediaNotificationProviderTest {
};
}
private static void assertHasNotificationChannel(
List<NotificationChannel> notificationChannels, String channelId, String channelName) {
boolean found = false;
for (NotificationChannel notificationChannel : notificationChannels) {
found =
notificationChannel.getId().equals(channelId)
// NotificationChannel.getName() is CharSequence. Use String#contentEquals instead
// because CharSequence.equals() has undefined behavior.
&& channelName.contentEquals(notificationChannel.getName());
if (found) {
break;
}
}
assertThat(found).isTrue();
}
private Player createPlayerWithMetadata(MediaMetadata mediaMetadata) {
return createPlayerWithMetadata(mediaMetadata, /* isMetadataCommandAvailable= */ true);
}