summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Anna Zappone <azappone@google.com> 2021-01-26 13:46:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-01-26 13:46:36 +0000
commit56fbe0eb9c292677526759e792bfbb00e62ab025 (patch)
treef0de697ec92c432feb56267ee11b05bf29d78afb
parentd8d8acfd9fb1f2125dc06b34d2c520368d31421e (diff)
parente5e3e0ba88715ff19624e6402cea3843bba4e584 (diff)
Merge "Update PeopleTile & ConversationChannel"
-rw-r--r--core/java/android/app/people/ConversationChannel.java36
-rw-r--r--core/java/android/app/people/PeopleSpaceTile.java (renamed from packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTile.java)109
-rw-r--r--core/tests/coretests/src/android/app/people/PeopleSpaceTileTest.java (renamed from packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceTileTest.java)97
-rw-r--r--packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetRemoteViewsFactory.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java2
9 files changed, 220 insertions, 64 deletions
diff --git a/core/java/android/app/people/ConversationChannel.java b/core/java/android/app/people/ConversationChannel.java
index a648b3bd1e37..332e159679ae 100644
--- a/core/java/android/app/people/ConversationChannel.java
+++ b/core/java/android/app/people/ConversationChannel.java
@@ -16,12 +16,16 @@
package android.app.people;
+import android.annotation.Nullable;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.content.pm.ShortcutInfo;
import android.os.Parcel;
import android.os.Parcelable;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* The non-customized notification channel of a conversation. It contains the information to render
* the conversation and allows the user to open and customize the conversation setting.
@@ -36,6 +40,8 @@ public final class ConversationChannel implements Parcelable {
private NotificationChannelGroup mParentNotificationChannelGroup;
private long mLastEventTimestamp;
private boolean mHasActiveNotifications;
+ private boolean mHasBirthdayToday;
+ private List<ConversationStatus> mStatuses;
public static final Creator<ConversationChannel> CREATOR = new Creator<ConversationChannel>() {
@Override
@@ -61,6 +67,21 @@ public final class ConversationChannel implements Parcelable {
mHasActiveNotifications = hasActiveNotifications;
}
+ public ConversationChannel(ShortcutInfo shortcutInfo, int uid,
+ NotificationChannel parentNotificationChannel,
+ NotificationChannelGroup parentNotificationChannelGroup, long lastEventTimestamp,
+ boolean hasActiveNotifications, boolean hasBirthdayToday,
+ List<ConversationStatus> statuses) {
+ mShortcutInfo = shortcutInfo;
+ mUid = uid;
+ mParentNotificationChannel = parentNotificationChannel;
+ mParentNotificationChannelGroup = parentNotificationChannelGroup;
+ mLastEventTimestamp = lastEventTimestamp;
+ mHasActiveNotifications = hasActiveNotifications;
+ mHasBirthdayToday = hasBirthdayToday;
+ mStatuses = statuses;
+ }
+
public ConversationChannel(Parcel in) {
mShortcutInfo = in.readParcelable(ShortcutInfo.class.getClassLoader());
mUid = in.readInt();
@@ -69,6 +90,9 @@ public final class ConversationChannel implements Parcelable {
in.readParcelable(NotificationChannelGroup.class.getClassLoader());
mLastEventTimestamp = in.readLong();
mHasActiveNotifications = in.readBoolean();
+ mHasBirthdayToday = in.readBoolean();
+ mStatuses = new ArrayList<>();
+ in.readParcelableList(mStatuses, ConversationStatus.class.getClassLoader());
}
@Override
@@ -84,6 +108,8 @@ public final class ConversationChannel implements Parcelable {
dest.writeParcelable(mParentNotificationChannelGroup, flags);
dest.writeLong(mLastEventTimestamp);
dest.writeBoolean(mHasActiveNotifications);
+ dest.writeBoolean(mHasBirthdayToday);
+ dest.writeParcelableList(mStatuses, flags);
}
public ShortcutInfo getShortcutInfo() {
@@ -113,4 +139,14 @@ public final class ConversationChannel implements Parcelable {
public boolean hasActiveNotifications() {
return mHasActiveNotifications;
}
+
+ /** Whether this conversation has a birthday today, as associated in the Contacts Database. */
+ public boolean hasBirthdayToday() {
+ return mHasBirthdayToday;
+ }
+
+ /** Returns statuses associated with the conversation. */
+ public @Nullable List<ConversationStatus> getStatuses() {
+ return mStatuses;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTile.java b/core/java/android/app/people/PeopleSpaceTile.java
index d7ee97bc3bc5..9a53b99aaefe 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTile.java
+++ b/core/java/android/app/people/PeopleSpaceTile.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.people;
+package android.app.people;
import android.annotation.NonNull;
import android.app.Person;
@@ -30,6 +30,9 @@ import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* The People Space tile contains all relevant information to render a tile in People Space: namely
* the data of any visible conversation notification associated, associated statuses, and the last
@@ -45,16 +48,15 @@ public class PeopleSpaceTile implements Parcelable {
private int mUid;
private Uri mContactUri;
private String mPackageName;
- private String mStatusText;
+ private String mBirthdayText;
private long mLastInteractionTimestamp;
private boolean mIsImportantConversation;
- private boolean mIsHiddenConversation;
private String mNotificationKey;
- // TODO: add mNotificationTimestamp
private CharSequence mNotificationContent;
private Uri mNotificationDataUri;
private Intent mIntent;
- // TODO: add a List of the Status objects once created
+ private long mNotificationTimestamp;
+ private List<ConversationStatus> mStatuses;
private PeopleSpaceTile(Builder b) {
mId = b.mId;
@@ -63,14 +65,15 @@ public class PeopleSpaceTile implements Parcelable {
mContactUri = b.mContactUri;
mUid = b.mUid;
mPackageName = b.mPackageName;
- mStatusText = b.mStatusText;
+ mBirthdayText = b.mBirthdayText;
mLastInteractionTimestamp = b.mLastInteractionTimestamp;
mIsImportantConversation = b.mIsImportantConversation;
- mIsHiddenConversation = b.mIsHiddenConversation;
mNotificationKey = b.mNotificationKey;
mNotificationContent = b.mNotificationContent;
mNotificationDataUri = b.mNotificationDataUri;
mIntent = b.mIntent;
+ mNotificationTimestamp = b.mNotificationTimestamp;
+ mStatuses = b.mStatuses;
}
public String getId() {
@@ -98,8 +101,8 @@ public class PeopleSpaceTile implements Parcelable {
return mPackageName;
}
- public String getStatusText() {
- return mStatusText;
+ public String getBirthdayText() {
+ return mBirthdayText;
}
/** Returns the timestamp of the last interaction. */
@@ -115,13 +118,6 @@ public class PeopleSpaceTile implements Parcelable {
}
/**
- * Whether the conversation should be hidden.
- */
- public boolean isHiddenConversation() {
- return mIsHiddenConversation;
- }
-
- /**
* If a notification is currently active that maps to the relevant shortcut ID, provides the
* associated notification's key.
*/
@@ -148,20 +144,32 @@ public class PeopleSpaceTile implements Parcelable {
return mIntent;
}
+ /** Returns the timestamp of the last notification. */
+ public long getNotificationTimestamp() {
+ return mNotificationTimestamp;
+ }
+
+ /** Returns the statuses associated with the tile. */
+ public List<ConversationStatus> getStatuses() {
+ return mStatuses;
+ }
+
/** Converts a {@link PeopleSpaceTile} into a {@link PeopleSpaceTile.Builder}. */
- public PeopleSpaceTile.Builder toBuilder() {
- PeopleSpaceTile.Builder builder =
- new PeopleSpaceTile.Builder(mId, mUserName.toString(), mUserIcon, mIntent);
+ public Builder toBuilder() {
+ Builder builder =
+ new Builder(mId, mUserName.toString(), mUserIcon, mIntent);
builder.setContactUri(mContactUri);
builder.setUid(mUid);
builder.setPackageName(mPackageName);
- builder.setStatusText(mStatusText);
+ builder.setBirthdayText(mBirthdayText);
builder.setLastInteractionTimestamp(mLastInteractionTimestamp);
builder.setIsImportantConversation(mIsImportantConversation);
- builder.setIsHiddenConversation(mIsHiddenConversation);
builder.setNotificationKey(mNotificationKey);
builder.setNotificationContent(mNotificationContent);
builder.setNotificationDataUri(mNotificationDataUri);
+ builder.setIntent(mIntent);
+ builder.setNotificationTimestamp(mNotificationTimestamp);
+ builder.setStatuses(mStatuses);
return builder;
}
@@ -173,14 +181,15 @@ public class PeopleSpaceTile implements Parcelable {
private Uri mContactUri;
private int mUid;
private String mPackageName;
- private String mStatusText;
+ private String mBirthdayText;
private long mLastInteractionTimestamp;
private boolean mIsImportantConversation;
- private boolean mIsHiddenConversation;
private String mNotificationKey;
private CharSequence mNotificationContent;
private Uri mNotificationDataUri;
private Intent mIntent;
+ private long mNotificationTimestamp;
+ private List<ConversationStatus> mStatuses;
/** Builder for use only if a shortcut is not available for the tile. */
public Builder(String id, String userName, Icon userIcon, Intent intent) {
@@ -200,7 +209,22 @@ public class PeopleSpaceTile implements Parcelable {
mContactUri = getContactUri(info);
}
- private Uri getContactUri(ShortcutInfo info) {
+ public Builder(ConversationChannel channel, LauncherApps launcherApps) {
+ ShortcutInfo info = channel.getShortcutInfo();
+ mId = info.getId();
+ mUserName = info.getLabel();
+ mUserIcon = convertDrawableToIcon(launcherApps.getShortcutIconDrawable(info, 0));
+ mUid = info.getUserId();
+ mPackageName = info.getPackage();
+ mContactUri = getContactUri(info);
+ mStatuses = channel.getStatuses();
+ mLastInteractionTimestamp = channel.getLastEventTimestamp();
+ mIsImportantConversation = channel.getParentNotificationChannel() != null
+ && channel.getParentNotificationChannel().isImportantConversation();
+ }
+
+ /** Returns the Contact's Uri if present. */
+ public Uri getContactUri(ShortcutInfo info) {
if (info.getPersons() == null || info.getPersons().length != 1) {
return null;
}
@@ -246,8 +270,8 @@ public class PeopleSpaceTile implements Parcelable {
}
/** Sets the status text. */
- public Builder setStatusText(String statusText) {
- mStatusText = statusText;
+ public Builder setBirthdayText(String birthdayText) {
+ mBirthdayText = birthdayText;
return this;
}
@@ -263,12 +287,6 @@ public class PeopleSpaceTile implements Parcelable {
return this;
}
- /** Sets whether the conversation is hidden. */
- public Builder setIsHiddenConversation(boolean isHiddenConversation) {
- mIsHiddenConversation = isHiddenConversation;
- return this;
- }
-
/** Sets the associated notification's key. */
public Builder setNotificationKey(String notificationKey) {
mNotificationKey = notificationKey;
@@ -293,6 +311,18 @@ public class PeopleSpaceTile implements Parcelable {
return this;
}
+ /** Sets the notification timestamp. */
+ public Builder setNotificationTimestamp(long notificationTimestamp) {
+ mNotificationTimestamp = notificationTimestamp;
+ return this;
+ }
+
+ /** Sets the statuses. */
+ public Builder setStatuses(List<ConversationStatus> statuses) {
+ mStatuses = statuses;
+ return this;
+ }
+
/** Builds a {@link PeopleSpaceTile}. */
@NonNull
public PeopleSpaceTile build() {
@@ -300,21 +330,23 @@ public class PeopleSpaceTile implements Parcelable {
}
}
- private PeopleSpaceTile(Parcel in) {
+ public PeopleSpaceTile(Parcel in) {
mId = in.readString();
mUserName = in.readCharSequence();
mUserIcon = in.readParcelable(Icon.class.getClassLoader());
mContactUri = in.readParcelable(Uri.class.getClassLoader());
mUid = in.readInt();
mPackageName = in.readString();
- mStatusText = in.readString();
+ mBirthdayText = in.readString();
mLastInteractionTimestamp = in.readLong();
mIsImportantConversation = in.readBoolean();
- mIsHiddenConversation = in.readBoolean();
mNotificationKey = in.readString();
mNotificationContent = in.readCharSequence();
mNotificationDataUri = in.readParcelable(Uri.class.getClassLoader());
mIntent = in.readParcelable(Intent.class.getClassLoader());
+ mNotificationTimestamp = in.readLong();
+ mStatuses = new ArrayList<>();
+ in.readParcelableList(mStatuses, ConversationStatus.class.getClassLoader());
}
@Override
@@ -330,14 +362,15 @@ public class PeopleSpaceTile implements Parcelable {
dest.writeParcelable(mContactUri, flags);
dest.writeInt(mUid);
dest.writeString(mPackageName);
- dest.writeString(mStatusText);
+ dest.writeString(mBirthdayText);
dest.writeLong(mLastInteractionTimestamp);
dest.writeBoolean(mIsImportantConversation);
- dest.writeBoolean(mIsHiddenConversation);
dest.writeString(mNotificationKey);
dest.writeCharSequence(mNotificationContent);
dest.writeParcelable(mNotificationDataUri, flags);
dest.writeParcelable(mIntent, flags);
+ dest.writeLong(mNotificationTimestamp);
+ dest.writeParcelableList(mStatuses, flags);
}
public static final @android.annotation.NonNull
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceTileTest.java b/core/tests/coretests/src/android/app/people/PeopleSpaceTileTest.java
index bd6167b1f781..1573c19b89a3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceTileTest.java
+++ b/core/tests/coretests/src/android/app/people/PeopleSpaceTileTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.people;
+package android.app.people;
import static com.google.common.truth.Truth.assertThat;
@@ -25,6 +25,8 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
@@ -34,13 +36,13 @@ import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
+import android.os.Parcel;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
-import com.android.systemui.SysuiTestCase;
-import com.android.systemui.people.PeopleSpaceTile;
+import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Test;
@@ -48,10 +50,13 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.util.List;
+
@RunWith(AndroidJUnit4.class)
@SmallTest
-public class PeopleSpaceTileTest extends SysuiTestCase {
+public class PeopleSpaceTileTest {
+ private Context mContext;
private final Drawable mDrawable = new ColorDrawable(Color.BLUE);
private final Icon mIcon = PeopleSpaceTile.convertDrawableToIcon(mDrawable);
@@ -60,6 +65,7 @@ public class PeopleSpaceTileTest extends SysuiTestCase {
@Before
public void setUp() {
+ mContext = InstrumentationRegistry.getContext();
MockitoAnnotations.initMocks(this);
when(mLauncherApps.getShortcutIconDrawable(any(), eq(0))).thenReturn(mDrawable);
}
@@ -132,7 +138,7 @@ public class PeopleSpaceTileTest extends SysuiTestCase {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
// Automatically added by creating a ShortcutInfo.
- assertThat(tile.getPackageName()).isEqualTo("com.android.systemui.tests");
+ assertThat(tile.getPackageName()).isEqualTo("com.android.frameworks.coretests");
tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).setPackageName(
@@ -171,16 +177,85 @@ public class PeopleSpaceTileTest extends SysuiTestCase {
}
@Test
- public void testHiddenConversation() {
+ public void testStatuses() {
PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps).build();
- assertFalse(tile.isHiddenConversation());
+ assertThat(tile.getStatuses()).isNull();
+ List<ConversationStatus> statusList = ImmutableList.of(
+ new ConversationStatus.Builder("id", ConversationStatus.ACTIVITY_BIRTHDAY).build());
tile = new PeopleSpaceTile
.Builder(new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
- .setIsHiddenConversation(true)
+ .setStatuses(statusList)
+ .build();
+ assertThat(tile.getStatuses()).isEqualTo(statusList);
+ }
+
+ @Test
+ public void testCreateFromConversationChannel() {
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, "123").setLongLabel(
+ "name").build();
+ ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null,
+ 0L, false, true, null);
+ PeopleSpaceTile tile = new PeopleSpaceTile.Builder(convo, mLauncherApps).build();
+ assertThat(tile.getStatuses()).isNull();
+ assertThat(tile.getId()).isEqualTo("123");
+ assertThat(tile.getUserName()).isEqualTo("name");
+ assertFalse(tile.isImportantConversation());
+ assertThat(tile.getLastInteractionTimestamp()).isEqualTo(0L);
+
+ List<ConversationStatus> statuses = ImmutableList.of(
+ new ConversationStatus.Builder("id", ConversationStatus.ACTIVITY_BIRTHDAY).build());
+ NotificationChannel notificationChannel = new NotificationChannel("123",
+ "channel",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ notificationChannel.setImportantConversation(true);
+ convo = new ConversationChannel(shortcutInfo, 0, notificationChannel, null,
+ 123L, false, true, statuses);
+ tile = new PeopleSpaceTile.Builder(convo, mLauncherApps).build();
+ assertThat(tile.getStatuses()).isEqualTo(statuses);
+ assertTrue(tile.isImportantConversation());
+ assertThat(tile.getLastInteractionTimestamp()).isEqualTo(123L);
+ }
+
+ @Test
+ public void testWriteThenReadFromParcel() {
+ List<ConversationStatus> statusList = ImmutableList.of(
+ new ConversationStatus.Builder("id", ConversationStatus.ACTIVITY_BIRTHDAY).build());
+ PeopleSpaceTile tile = new PeopleSpaceTile.Builder(
+ new ShortcutInfo.Builder(mContext, "123").build(), mLauncherApps)
+ .setUserName("name")
+ .setUserIcon(mIcon)
+ .setContactUri(Uri.parse("contact"))
+ .setUid(42)
+ .setPackageName("package.name")
+ .setLastInteractionTimestamp(7L)
+ .setIsImportantConversation(true)
+ .setStatuses(statusList).setNotificationKey("key")
+ .setNotificationContent("content")
+ .setNotificationDataUri(Uri.parse("data"))
+ .setIntent(new Intent())
.build();
- assertTrue(tile.isHiddenConversation());
+
+ Parcel parcel = Parcel.obtain();
+ tile.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ PeopleSpaceTile readTile = PeopleSpaceTile.CREATOR.createFromParcel(parcel);
+
+ assertThat(readTile.getId()).isEqualTo(tile.getId());
+ assertThat(readTile.getUserName()).isEqualTo(tile.getUserName());
+ assertThat(readTile.getUserIcon().toString()).isEqualTo(tile.getUserIcon().toString());
+ assertThat(readTile.getContactUri()).isEqualTo(tile.getContactUri());
+ assertThat(readTile.getUid()).isEqualTo(tile.getUid());
+ assertThat(readTile.getPackageName()).isEqualTo(tile.getPackageName());
+ assertThat(readTile.getLastInteractionTimestamp()).isEqualTo(
+ tile.getLastInteractionTimestamp());
+ assertThat(readTile.isImportantConversation()).isEqualTo(tile.isImportantConversation());
+ assertThat(readTile.getStatuses()).isEqualTo(tile.getStatuses());
+ assertThat(readTile.getNotificationKey()).isEqualTo(tile.getNotificationKey());
+ assertThat(readTile.getNotificationContent()).isEqualTo(tile.getNotificationContent());
+ assertThat(readTile.getNotificationDataUri()).isEqualTo(tile.getNotificationDataUri());
+ assertThat(readTile.getIntent().toString()).isEqualTo(tile.getIntent().toString());
}
@Test
@@ -208,8 +283,8 @@ public class PeopleSpaceTileTest extends SysuiTestCase {
PeopleSpaceTile tile =
new PeopleSpaceTile.Builder(new ShortcutInfo.Builder(mContext, "123").build(),
mLauncherApps)
- .setNotificationDataUri(Uri.parse("test"))
- .build();
+ .setNotificationDataUri(Uri.parse("test"))
+ .build();
assertThat(tile.getNotificationDataUri()).isEqualTo(Uri.parse("test"));
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
index a8761a63f6ad..a4e91896be9e 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
@@ -22,6 +22,7 @@ import static android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID;
import android.app.Activity;
import android.app.INotificationManager;
import android.app.people.IPeopleManager;
+import android.app.people.PeopleSpaceTile;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
@@ -134,8 +135,10 @@ public class PeopleSpaceActivity extends Activity {
+ tile.getId() + " for widget ID: "
+ mAppWidgetId);
}
+ // Ensure updates to app widget can be retrieved from both appWidget Id and tile ID.
editor.putString(String.valueOf(mAppWidgetId), tile.getId());
- editor.commit();
+ editor.putInt(tile.getId(), mAppWidgetId);
+ editor.apply();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
Bundle options = new Bundle();
options.putParcelable(PeopleSpaceUtils.OPTIONS_PEOPLE_SPACE_TILE, tile);
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java
index 25b91da7fadc..9ae7847031aa 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java
@@ -16,6 +16,7 @@
package com.android.systemui.people;
+import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.pm.LauncherApps;
import android.graphics.drawable.Drawable;
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
index 8669a817dfc2..91e7968f7546 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
@@ -23,6 +23,7 @@ import android.app.Notification;
import android.app.PendingIntent;
import android.app.people.ConversationChannel;
import android.app.people.IPeopleManager;
+import android.app.people.PeopleSpaceTile;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
@@ -221,7 +222,7 @@ public class PeopleSpaceUtils {
return tile;
}
return tile.toBuilder()
- .setStatusText(storedTile.getStatusText())
+ .setBirthdayText(storedTile.getBirthdayText())
.setNotificationKey(storedTile.getNotificationKey())
.setNotificationContent(storedTile.getNotificationContent())
.setNotificationDataUri(storedTile.getNotificationDataUri())
@@ -234,6 +235,10 @@ public class PeopleSpaceUtils {
int appWidgetId) {
Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
PeopleSpaceTile storedTile = options.getParcelable(OPTIONS_PEOPLE_SPACE_TILE);
+ if (storedTile == null) {
+ if (DEBUG) Log.d(TAG, "Could not find stored tile to add notification to");
+ return;
+ }
if (notificationAction == PeopleSpaceUtils.NotificationAction.POSTED) {
if (DEBUG) Log.i(TAG, "Adding notification to storage, appWidgetId: " + appWidgetId);
Notification.MessagingStyle.Message message = getLastMessagingStyleMessage(sbn);
@@ -263,6 +268,10 @@ public class PeopleSpaceUtils {
private static void updateAppWidgetOptions(AppWidgetManager appWidgetManager, int appWidgetId,
PeopleSpaceTile tile) {
+ if (tile == null) {
+ if (DEBUG) Log.d(TAG, "Requested to store null tile");
+ return;
+ }
Bundle newOptions = new Bundle();
newOptions.putParcelable(OPTIONS_PEOPLE_SPACE_TILE, tile);
appWidgetManager.updateAppWidgetOptions(appWidgetId, newOptions);
@@ -274,7 +283,7 @@ public class PeopleSpaceUtils {
RemoteViews views;
if (tile.getNotificationKey() != null) {
views = createNotificationRemoteViews(context, tile);
- } else if (tile.getStatusText() != null) {
+ } else if (tile.getBirthdayText() != null) {
views = createStatusRemoteViews(context, tile);
} else {
views = createLastInteractionRemoteViews(context, tile);
@@ -344,7 +353,7 @@ public class PeopleSpaceUtils {
PeopleSpaceTile tile) {
RemoteViews views = new RemoteViews(
context.getPackageName(), R.layout.people_space_large_avatar_tile);
- views.setTextViewText(R.id.status, tile.getStatusText());
+ views.setTextViewText(R.id.status, tile.getBirthdayText());
return views;
}
@@ -536,11 +545,10 @@ public class PeopleSpaceUtils {
}
private static boolean hasBirthdayStatus(PeopleSpaceTile tile, Context context) {
- return tile.getStatusText() != null && tile.getStatusText().equals(
+ return tile.getBirthdayText() != null && tile.getBirthdayText().equals(
context.getString(R.string.birthday_status));
}
-
/** Calls to retrieve birthdays on a background thread. */
private static void getBirthdaysOnBackgroundThread(Context context,
AppWidgetManager appWidgetManager,
@@ -581,7 +589,7 @@ public class PeopleSpaceUtils {
if (DEBUG) Log.d(TAG, "Remove " + storedTile.getUserName() + "'s birthday");
updateAppWidgetOptionsAndView(appWidgetManager, context, appWidgetId,
storedTile.toBuilder()
- .setStatusText(null)
+ .setBirthdayText(null)
.build());
}
}
@@ -605,7 +613,7 @@ public class PeopleSpaceUtils {
if (DEBUG) Log.d(TAG, storedTile.getUserName() + "'s birthday today!");
updateAppWidgetOptionsAndView(appWidgetManager, context, appWidgetId,
storedTile.toBuilder()
- .setStatusText(context.getString(R.string.birthday_status))
+ .setBirthdayText(context.getString(R.string.birthday_status))
.build());
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetRemoteViewsFactory.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetRemoteViewsFactory.java
index cd0a5df2025a..fb33affcbac5 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetRemoteViewsFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetRemoteViewsFactory.java
@@ -18,7 +18,7 @@ package com.android.systemui.people.widget;
import android.app.INotificationManager;
import android.app.people.IPeopleManager;
-import com.android.systemui.people.PeopleSpaceTile;
+import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
index 64b96765106a..b7d1bc6c4c63 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
@@ -39,6 +39,7 @@ import android.app.NotificationManager;
import android.app.Person;
import android.app.people.ConversationChannel;
import android.app.people.IPeopleManager;
+import android.app.people.PeopleSpaceTile;
import android.appwidget.AppWidgetManager;
import android.content.ContentResolver;
import android.content.Context;
@@ -55,10 +56,9 @@ import android.provider.ContactsContract;
import android.provider.Settings;
import android.service.notification.ConversationChannelWrapper;
import android.service.notification.StatusBarNotification;
+import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
-import androidx.test.filters.SmallTest;
-
import com.android.internal.appwidget.IAppWidgetService;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
@@ -419,7 +419,7 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase {
// Existing tile has a birthday status.
Map<Integer, PeopleSpaceTile> widgetIdToTile = Map.of(WIDGET_ID_WITH_SHORTCUT,
new PeopleSpaceTile.Builder(mShortcutInfoWithoutPerson,
- mContext.getSystemService(LauncherApps.class)).setStatusText(
+ mContext.getSystemService(LauncherApps.class)).setBirthdayText(
mContext.getString(R.string.birthday_status)).build());
PeopleSpaceUtils.getBirthdays(mMockContext, mAppWidgetManager,
widgetIdToTile, widgetIdsArray);
@@ -454,7 +454,7 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase {
// Existing tile has a birthday status.
Map<Integer, PeopleSpaceTile> widgetIdToTile = Map.of(WIDGET_ID_WITH_SHORTCUT,
new PeopleSpaceTile.Builder(mShortcutInfo,
- mContext.getSystemService(LauncherApps.class)).setStatusText(
+ mContext.getSystemService(LauncherApps.class)).setBirthdayText(
mContext.getString(R.string.birthday_status)).build());
PeopleSpaceUtils.getBirthdays(mMockContext, mAppWidgetManager,
widgetIdToTile, widgetIdsArray);
@@ -474,7 +474,7 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase {
// Existing tile has a birthday status.
Map<Integer, PeopleSpaceTile> widgetIdToTile = Map.of(WIDGET_ID_WITH_SHORTCUT,
new PeopleSpaceTile.Builder(mShortcutInfo,
- mContext.getSystemService(LauncherApps.class)).setStatusText(
+ mContext.getSystemService(LauncherApps.class)).setBirthdayText(
mContext.getString(R.string.birthday_status)).build());
PeopleSpaceUtils.getBirthdays(mMockContext, mAppWidgetManager,
widgetIdToTile, widgetIdsArray);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
index e7363f3ce4f7..8c0afb89b361 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
@@ -35,6 +35,7 @@ import android.app.INotificationManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.Person;
+import android.app.people.PeopleSpaceTile;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -57,7 +58,6 @@ import androidx.test.filters.SmallTest;
import com.android.internal.appwidget.IAppWidgetService;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
-import com.android.systemui.people.PeopleSpaceTile;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationListener.NotificationHandler;
import com.android.systemui.statusbar.SbnBuilder;