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

Commit a4fabd3e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add more fields in Suggestion model"

parents 76ea2221 6abced38
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -40890,17 +40890,22 @@ package android.service.settings.suggestions {
  public final class Suggestion implements android.os.Parcelable {
    method public int describeContents();
    method public int getFlags();
    method public android.graphics.drawable.Icon getIcon();
    method public java.lang.String getId();
    method public android.app.PendingIntent getPendingIntent();
    method public java.lang.CharSequence getSummary();
    method public java.lang.CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.settings.suggestions.Suggestion> CREATOR;
    field public static final int FLAG_HAS_BUTTON = 1; // 0x1
  }
  public static class Suggestion.Builder {
    ctor public Suggestion.Builder(java.lang.String);
    method public android.service.settings.suggestions.Suggestion build();
    method public android.service.settings.suggestions.Suggestion.Builder setFlags(int);
    method public android.service.settings.suggestions.Suggestion.Builder setIcon(android.graphics.drawable.Icon);
    method public android.service.settings.suggestions.Suggestion.Builder setPendingIntent(android.app.PendingIntent);
    method public android.service.settings.suggestions.Suggestion.Builder setSummary(java.lang.CharSequence);
    method public android.service.settings.suggestions.Suggestion.Builder setTitle(java.lang.CharSequence);
+65 −0
Original line number Diff line number Diff line
@@ -16,12 +16,17 @@

package android.service.settings.suggestions;

import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.app.PendingIntent;
import android.graphics.drawable.Icon;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Data object that has information about a device suggestion.
 *
@@ -30,9 +35,27 @@ import android.text.TextUtils;
@SystemApi
public final class Suggestion implements Parcelable {

    /**
     * @hide
     */
    @IntDef(flag = true, value = {
            FLAG_HAS_BUTTON,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface Flags {
    }

    /**
     * Flag for suggestion type with a single button
     */
    public static final int FLAG_HAS_BUTTON = 1 << 0;

    private final String mId;
    private final CharSequence mTitle;
    private final CharSequence mSummary;
    private final Icon mIcon;
    @Flags
    private final int mFlags;
    private final PendingIntent mPendingIntent;

    /**
@@ -56,6 +79,22 @@ public final class Suggestion implements Parcelable {
        return mSummary;
    }

    /**
     * Optional icon for this suggestion.
     */
    public Icon getIcon() {
        return mIcon;
    }

    /**
     * Optional flags for this suggestion. This will influence UI when rendering suggestion in
     * different style.
     */
    @Flags
    public int getFlags() {
        return mFlags;
    }

    /**
     * The Intent to launch when the suggestion is activated.
     */
@@ -67,6 +106,8 @@ public final class Suggestion implements Parcelable {
        mId = builder.mId;
        mTitle = builder.mTitle;
        mSummary = builder.mSummary;
        mIcon = builder.mIcon;
        mFlags = builder.mFlags;
        mPendingIntent = builder.mPendingIntent;
    }

@@ -74,6 +115,8 @@ public final class Suggestion implements Parcelable {
        mId = in.readString();
        mTitle = in.readCharSequence();
        mSummary = in.readCharSequence();
        mIcon = in.readParcelable(Icon.class.getClassLoader());
        mFlags = in.readInt();
        mPendingIntent = in.readParcelable(PendingIntent.class.getClassLoader());
    }

@@ -99,6 +142,8 @@ public final class Suggestion implements Parcelable {
        dest.writeString(mId);
        dest.writeCharSequence(mTitle);
        dest.writeCharSequence(mSummary);
        dest.writeParcelable(mIcon, flags);
        dest.writeInt(mFlags);
        dest.writeParcelable(mPendingIntent, flags);
    }

@@ -109,6 +154,9 @@ public final class Suggestion implements Parcelable {
        private final String mId;
        private CharSequence mTitle;
        private CharSequence mSummary;
        private Icon mIcon;
        @Flags
        private int mFlags;
        private PendingIntent mPendingIntent;

        public Builder(String id) {
@@ -134,6 +182,23 @@ public final class Suggestion implements Parcelable {
            return this;
        }

        /**
         * Sets icon for the suggestion.
         */
        public Builder setIcon(Icon icon) {
            mIcon = icon;
            return this;
        }

        /**
         * Sets a UI type for this suggestion. This will influence UI when rendering suggestion in
         * different style.
         */
        public Builder setFlags(@Flags int flags) {
            mFlags = flags;
            return this;
        }

        /**
         * Sets suggestion intent
         */
+14 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.os.Parcel;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
@@ -36,6 +38,8 @@ public class SuggestionTest {
    private static final String TEST_ID = "id";
    private static final String TEST_TITLE = "title";
    private static final String TEST_SUMMARY = "summary";

    private Icon mIcon;
    private PendingIntent mTestIntent;


@@ -44,6 +48,7 @@ public class SuggestionTest {
        final Context context = InstrumentationRegistry.getContext();
        mTestIntent = PendingIntent.getActivity(context, 0 /* requestCode */,
                new Intent(), 0 /* flags */);
        mIcon = Icon.createWithBitmap(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888));
    }

    @Test
@@ -51,12 +56,15 @@ public class SuggestionTest {
        final Suggestion suggestion = new Suggestion.Builder(TEST_ID)
                .setTitle(TEST_TITLE)
                .setSummary(TEST_SUMMARY)
                .setIcon(mIcon)
                .setPendingIntent(mTestIntent)
                .build();

        assertThat(suggestion.getId()).isEqualTo(TEST_ID);
        assertThat(suggestion.getTitle()).isEqualTo(TEST_TITLE);
        assertThat(suggestion.getSummary()).isEqualTo(TEST_SUMMARY);
        assertThat(suggestion.getIcon()).isEqualTo(mIcon);
        assertThat(suggestion.getFlags()).isEqualTo(0);
        assertThat(suggestion.getPendingIntent()).isEqualTo(mTestIntent);
    }

@@ -66,6 +74,7 @@ public class SuggestionTest {
                .setTitle(TEST_TITLE)
                .setSummary(TEST_SUMMARY)
                .setPendingIntent(mTestIntent)
                .setIcon(mIcon)
                .build();
    }

@@ -75,6 +84,8 @@ public class SuggestionTest {
        final Suggestion oldSuggestion = new Suggestion.Builder(TEST_ID)
                .setTitle(TEST_TITLE)
                .setSummary(TEST_SUMMARY)
                .setIcon(mIcon)
                .setFlags(Suggestion.FLAG_HAS_BUTTON)
                .setPendingIntent(mTestIntent)
                .build();

@@ -85,6 +96,9 @@ public class SuggestionTest {
        assertThat(newSuggestion.getId()).isEqualTo(TEST_ID);
        assertThat(newSuggestion.getTitle()).isEqualTo(TEST_TITLE);
        assertThat(newSuggestion.getSummary()).isEqualTo(TEST_SUMMARY);
        assertThat(newSuggestion.getIcon().toString()).isEqualTo(mIcon.toString());
        assertThat(newSuggestion.getFlags())
                .isEqualTo(Suggestion.FLAG_HAS_BUTTON);
        assertThat(newSuggestion.getPendingIntent()).isEqualTo(mTestIntent);
    }
}