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

View File

@ -140,6 +140,36 @@ public class CommandButtonTest {
assertThat(button.iconUri).isNull(); 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 @Test
public void equals() { public void equals() {
assertThat( assertThat(