Add icon URI to bundle serialization

PiperOrigin-RevId: 581333583
This commit is contained in:
Googler 2023-11-10 12:17:28 -08:00 committed by Copybara-Service
parent e79809616c
commit 7014bc6bf4
2 changed files with 36 additions and 0 deletions

View File

@ -306,6 +306,7 @@ public final class CommandButton implements Bundleable {
private static final String FIELD_DISPLAY_NAME = Util.intToStringMaxRadix(3);
private static final String FIELD_EXTRAS = Util.intToStringMaxRadix(4);
private static final String FIELD_ENABLED = Util.intToStringMaxRadix(5);
private static final String FIELD_ICON_URI = Util.intToStringMaxRadix(6);
@UnstableApi
@Override
@ -318,6 +319,7 @@ public final class CommandButton implements Bundleable {
bundle.putInt(FIELD_ICON_RES_ID, iconResId);
bundle.putCharSequence(FIELD_DISPLAY_NAME, displayName);
bundle.putBundle(FIELD_EXTRAS, extras);
bundle.putParcelable(FIELD_ICON_URI, iconUri);
bundle.putBoolean(FIELD_ENABLED, isEnabled);
return bundle;
}
@ -346,6 +348,7 @@ public final class CommandButton implements Bundleable {
CharSequence displayName = bundle.getCharSequence(FIELD_DISPLAY_NAME, /* defaultValue= */ "");
@Nullable Bundle extras = bundle.getBundle(FIELD_EXTRAS);
boolean enabled = bundle.getBoolean(FIELD_ENABLED, /* defaultValue= */ false);
@Nullable Uri iconUri = bundle.getParcelable(FIELD_ICON_URI);
Builder builder = new Builder();
if (sessionCommand != null) {
builder.setSessionCommand(sessionCommand);
@ -353,6 +356,9 @@ public final class CommandButton implements Bundleable {
if (playerCommand != Player.COMMAND_INVALID) {
builder.setPlayerCommand(playerCommand);
}
if (iconUri != null) {
builder.setIconUri(iconUri);
}
return builder
.setIconResId(iconResId)
.setDisplayName(displayName)

View File

@ -140,6 +140,36 @@ public class CommandButtonTest {
assertThat(button.iconUri).isNull();
}
@Test
public void getIconUri_returnsUriAfterSerialisation() {
Uri uri = Uri.parse("content://test");
CommandButton button =
new CommandButton.Builder()
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setIconUri(uri)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.build();
CommandButton serialisedButton = CommandButton.fromBundle(button.toBundle());
assertThat(serialisedButton.iconUri).isEqualTo(uri);
}
@Test
public void getIconUri_returnsNullIfUnsetAfterSerialisation() {
CommandButton button =
new CommandButton.Builder()
.setDisplayName("button1")
.setIconResId(R.drawable.media3_notification_small_icon)
.setPlayerCommand(Player.COMMAND_SEEK_TO_PREVIOUS)
.build();
CommandButton serialisedButton = CommandButton.fromBundle(button.toBundle());
assertThat(serialisedButton.iconUri).isNull();
}
@Test
public void equals() {
assertThat(