Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5ceca02 authored by Ze Li's avatar Ze Li Committed by Android (Google) Code Review
Browse files

Merge "[Bluetooth Diagnosis] Change the BannerPreference to contain 2 specific...

Merge "[Bluetooth Diagnosis] Change the BannerPreference to contain 2 specific buttons instead of a button list" into main
parents f4570597 ed95653a
Loading
Loading
Loading
Loading
+57 −27
Original line number Diff line number Diff line
@@ -23,10 +23,6 @@ import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.google.common.collect.ImmutableList;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/** A data class representing a banner preference. */
@@ -34,25 +30,24 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
    private final String mTitle;
    private final String mMessage;
    private final DeviceSettingIcon mIcon;
    private final ImmutableList<ButtonInfo> mButtonInfos;
    private final ButtonInfo mPositiveButtonInfo;
    private final ButtonInfo mNegativeButtonInfo;
    private final Bundle mExtras;

    BannerPreference(
            @NonNull String title,
            @NonNull String message,
            @Nullable DeviceSettingIcon icon,
            @Nullable List<ButtonInfo> buttonInfos,
            @Nullable ButtonInfo positiveButtonInfo,
            @Nullable ButtonInfo negativeButtonInfo,
            Bundle extras) {
        super(DeviceSettingType.DEVICE_SETTING_TYPE_BANNER);
        validate(title, message);
        mTitle = title;
        mMessage = message;
        mIcon = Objects.requireNonNullElseGet(icon, () -> DeviceSettingIcon.NO_ICON);
        if (buttonInfos == null) {
            mButtonInfos = ImmutableList.of();
        } else {
            mButtonInfos = ImmutableList.copyOf(buttonInfos);
        }
        mPositiveButtonInfo = positiveButtonInfo;
        mNegativeButtonInfo = negativeButtonInfo;
        mExtras = extras;
    }

@@ -71,10 +66,16 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
        String title = in.readString();
        String message = in.readString();
        DeviceSettingIcon icon = DeviceSettingIcon.readFromParcel(in);
        List<ButtonInfo> buttonInfos = new ArrayList<>();
        in.readTypedList(buttonInfos, ButtonInfo.CREATOR);
        ButtonInfo positiveButtonInfo = in.readParcelable(ButtonInfo.class.getClassLoader());
        ButtonInfo negativeButtonInfo = in.readParcelable(ButtonInfo.class.getClassLoader());
        Bundle extras = in.readBundle(Bundle.class.getClassLoader());
        return new BannerPreference(title, message, icon, buttonInfos, extras);
        return new BannerPreference(
                title,
                message,
                icon,
                positiveButtonInfo,
                negativeButtonInfo,
                extras);
    }

    public static final Creator<BannerPreference> CREATOR =
@@ -104,7 +105,8 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
        dest.writeString(mTitle);
        dest.writeString(mMessage);
        mIcon.writeToParcel(dest, flags);
        dest.writeTypedList(mButtonInfos, flags);
        dest.writeParcelable(mPositiveButtonInfo, flags);
        dest.writeParcelable(mNegativeButtonInfo, flags);
        dest.writeBundle(mExtras);
    }

@@ -113,8 +115,8 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
        private String mTitle;
        private String mMessage;
        private DeviceSettingIcon mIcon;
        private final ImmutableList.Builder<ButtonInfo> mButtonInfos =
                new ImmutableList.Builder<>();
        private ButtonInfo mPositiveButtonInfo;
        private ButtonInfo mNegativeButtonInfo;
        private Bundle mExtras = Bundle.EMPTY;

        /**
@@ -154,14 +156,26 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
        }

        /**
         * Adds a button in the preference.
         * Sets the positive button in the preference.
         *
         * @param buttonInfo The button to set.
         * @return Returns the Builder object.
         */
        @NonNull
        public Builder setPositiveButtonInfo(@NonNull ButtonInfo buttonInfo) {
            mPositiveButtonInfo = buttonInfo;
            return this;
        }

        /**
         * Sets the negative button in the preference.
         *
         * @param buttonInfo The button to add.
         * @param buttonInfo The button to set.
         * @return Returns the Builder object.
         */
        @NonNull
        public Builder addButtonInfo(@NonNull ButtonInfo buttonInfo) {
            mButtonInfos.add(buttonInfo);
        public Builder setNegativeButtonInfo(@NonNull ButtonInfo buttonInfo) {
            mNegativeButtonInfo = buttonInfo;
            return this;
        }

@@ -183,7 +197,13 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
         */
        @NonNull
        public BannerPreference build() {
            return new BannerPreference(mTitle, mMessage, mIcon, mButtonInfos.build(), mExtras);
            return new BannerPreference(
                    mTitle,
                    mMessage,
                    mIcon,
                    mPositiveButtonInfo,
                    mNegativeButtonInfo,
                    mExtras);
        }
    }

@@ -217,13 +237,23 @@ public class BannerPreference extends DeviceSettingPreference implements Parcela
    }

    /**
     * Gets the button list in the preference.
     * Gets the positive button in the preference.
     *
     * @return the button list.
     * @return the positive button.
     */
    @NonNull
    public List<ButtonInfo> getButtonInfos() {
        return mButtonInfos;
    @Nullable
    public ButtonInfo getPositiveButtonInfo() {
        return mPositiveButtonInfo;
    }

    /**
     * Gets the negative button in the preference.
     *
     * @return the negative button.
     */
    @Nullable
    public ButtonInfo getNegativeButtonInfo() {
        return mNegativeButtonInfo;
    }

    /**
+22 −22
Original line number Diff line number Diff line
@@ -35,10 +35,10 @@ public final class BannerPreferenceTest {
                    null,
                    Bundle.EMPTY);
    private static final DeviceSettingAction ACTION = DeviceSettingAction.EMPTY_ACTION;
    private static final ButtonInfo Button_INFO_1 =
            new ButtonInfo.Builder().setLabel("label1").setAction(ACTION).build();
    private static final ButtonInfo Button_INFO_2 =
            new ButtonInfo.Builder().setLabel("label2").setAction(ACTION).build();
    private static final ButtonInfo POSITIVE_BUTTON =
            new ButtonInfo.Builder().setLabel("positive").setAction(ACTION).build();
    private static final ButtonInfo NEGATIVE_BUTTON =
            new ButtonInfo.Builder().setLabel("negative").setAction(ACTION).build();

    @Test
    public void build_withoutTitle_fail() {
@@ -49,8 +49,8 @@ public final class BannerPreferenceTest {
                            new BannerPreference.Builder()
                                    .setMessage("message")
                                    .setIcon(ICON)
                                    .addButtonInfo(Button_INFO_1)
                                    .addButtonInfo(Button_INFO_2)
                                    .setPositiveButtonInfo(POSITIVE_BUTTON)
                                    .setNegativeButtonInfo(NEGATIVE_BUTTON)
                                    .setExtras(buildBundle("key1", "value1"))
                                    .build();
                });
@@ -65,8 +65,8 @@ public final class BannerPreferenceTest {
                            new BannerPreference.Builder()
                                    .setTitle("title")
                                    .setIcon(ICON)
                                    .addButtonInfo(Button_INFO_1)
                                    .addButtonInfo(Button_INFO_2)
                                    .setPositiveButtonInfo(POSITIVE_BUTTON)
                                    .setNegativeButtonInfo(NEGATIVE_BUTTON)
                                    .setExtras(buildBundle("key1", "value1"))
                                    .build();
                });
@@ -78,8 +78,8 @@ public final class BannerPreferenceTest {
                new BannerPreference.Builder()
                        .setTitle("title")
                        .setMessage("message")
                        .addButtonInfo(Button_INFO_1)
                        .addButtonInfo(Button_INFO_2)
                        .setPositiveButtonInfo(POSITIVE_BUTTON)
                        .setNegativeButtonInfo(NEGATIVE_BUTTON)
                        .setExtras(buildBundle("key1", "value1"))
                        .build();
    }
@@ -102,8 +102,8 @@ public final class BannerPreferenceTest {
                        .setTitle("title")
                        .setMessage("message")
                        .setIcon(ICON)
                        .addButtonInfo(Button_INFO_1)
                        .addButtonInfo(Button_INFO_2)
                        .setPositiveButtonInfo(POSITIVE_BUTTON)
                        .setNegativeButtonInfo(NEGATIVE_BUTTON)
                        .build();
    }

@@ -114,8 +114,8 @@ public final class BannerPreferenceTest {
                        .setTitle("title")
                        .setMessage("message")
                        .setIcon(ICON)
                        .addButtonInfo(Button_INFO_1)
                        .addButtonInfo(Button_INFO_2)
                        .setPositiveButtonInfo(POSITIVE_BUTTON)
                        .setNegativeButtonInfo(NEGATIVE_BUTTON)
                        .setExtras(buildBundle("key1", "value1"))
                        .build();
    }
@@ -127,16 +127,16 @@ public final class BannerPreferenceTest {
                        .setTitle("title")
                        .setMessage("message")
                        .setIcon(ICON)
                        .addButtonInfo(Button_INFO_1)
                        .addButtonInfo(Button_INFO_2)
                        .setPositiveButtonInfo(POSITIVE_BUTTON)
                        .setNegativeButtonInfo(NEGATIVE_BUTTON)
                        .setExtras(buildBundle("key1", "value1"))
                        .build();

        assertThat(preference.getTitle()).isEqualTo("title");
        assertThat(preference.getMessage()).isEqualTo("message");
        assertThat(preference.getIcon()).isEqualTo(ICON);
        assertThat(preference.getButtonInfos().stream().map(ButtonInfo::getLabel).toList())
                .containsExactly("label1", "label2");
        assertThat(preference.getPositiveButtonInfo()).isEqualTo(POSITIVE_BUTTON);
        assertThat(preference.getNegativeButtonInfo()).isEqualTo(NEGATIVE_BUTTON);
        assertThat(preference.getExtras().getString("key1")).isEqualTo("value1");
    }

@@ -147,8 +147,8 @@ public final class BannerPreferenceTest {
                        .setTitle("title")
                        .setMessage("message")
                        .setIcon(ICON)
                        .addButtonInfo(Button_INFO_1)
                        .addButtonInfo(Button_INFO_2)
                        .setPositiveButtonInfo(POSITIVE_BUTTON)
                        .setNegativeButtonInfo(NEGATIVE_BUTTON)
                        .setExtras(buildBundle("key1", "value1"))
                        .build();

@@ -157,8 +157,8 @@ public final class BannerPreferenceTest {
        assertThat(fromParcel.getTitle()).isEqualTo(preference.getTitle());
        assertThat(fromParcel.getMessage()).isEqualTo(preference.getMessage());
        assertThat(fromParcel.getIcon()).isEqualTo(preference.getIcon());
        assertThat(fromParcel.getButtonInfos().stream().map(ButtonInfo::getLabel).toList())
                .containsExactly("label1", "label2");
        assertThat(preference.getPositiveButtonInfo()).isEqualTo(POSITIVE_BUTTON);
        assertThat(preference.getNegativeButtonInfo()).isEqualTo(NEGATIVE_BUTTON);
        assertThat(fromParcel.getExtras().getString("key1"))
                .isEqualTo(preference.getExtras().getString("key1"));
    }