Merge "Add more fields in Suggestion model"

This commit is contained in:
TreeHugger Robot
2017-10-03 22:20:10 +00:00
committed by Android (Google) Code Review
3 changed files with 84 additions and 0 deletions

View File

@@ -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);

View File

@@ -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
*/

View File

@@ -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);
}
}