Merge "Visit Uris related to Notification style extras" into tm-dev am: 6f0d073492
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24404277 Change-Id: I1e454423a403889e192909cd04575af682a5e7ef Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
c48e25fdbe
@ -2850,18 +2850,14 @@ public class Notification implements Parcelable
|
|||||||
visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI)));
|
visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Person> people = extras.getParcelableArrayList(EXTRA_PEOPLE_LIST);
|
ArrayList<Person> people = extras.getParcelableArrayList(EXTRA_PEOPLE_LIST,
|
||||||
|
Person.class);
|
||||||
if (people != null && !people.isEmpty()) {
|
if (people != null && !people.isEmpty()) {
|
||||||
for (Person p : people) {
|
for (Person p : people) {
|
||||||
visitor.accept(p.getIconUri());
|
visitor.accept(p.getIconUri());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON, Person.class);
|
|
||||||
if (person != null) {
|
|
||||||
visitor.accept(person.getIconUri());
|
|
||||||
}
|
|
||||||
|
|
||||||
final RemoteInputHistoryItem[] history = extras.getParcelableArray(
|
final RemoteInputHistoryItem[] history = extras.getParcelableArray(
|
||||||
Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS,
|
Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS,
|
||||||
RemoteInputHistoryItem.class);
|
RemoteInputHistoryItem.class);
|
||||||
@ -2873,10 +2869,16 @@ public class Notification implements Parcelable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (isStyle(MessagingStyle.class) && extras != null) {
|
// Extras for MessagingStyle. We visit them even if not isStyle(MessagingStyle), since
|
||||||
final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES);
|
// Notification Listeners might use directly (without the isStyle check).
|
||||||
|
final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON, Person.class);
|
||||||
|
if (person != null) {
|
||||||
|
visitor.accept(person.getIconUri());
|
||||||
|
}
|
||||||
|
|
||||||
|
final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES,
|
||||||
|
Parcelable.class);
|
||||||
if (!ArrayUtils.isEmpty(messages)) {
|
if (!ArrayUtils.isEmpty(messages)) {
|
||||||
for (MessagingStyle.Message message : MessagingStyle.Message
|
for (MessagingStyle.Message message : MessagingStyle.Message
|
||||||
.getMessagesFromBundleArray(messages)) {
|
.getMessagesFromBundleArray(messages)) {
|
||||||
@ -2889,7 +2891,8 @@ public class Notification implements Parcelable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES);
|
final Parcelable[] historic = extras.getParcelableArray(EXTRA_HISTORIC_MESSAGES,
|
||||||
|
Parcelable.class);
|
||||||
if (!ArrayUtils.isEmpty(historic)) {
|
if (!ArrayUtils.isEmpty(historic)) {
|
||||||
for (MessagingStyle.Message message : MessagingStyle.Message
|
for (MessagingStyle.Message message : MessagingStyle.Message
|
||||||
.getMessagesFromBundleArray(historic)) {
|
.getMessagesFromBundleArray(historic)) {
|
||||||
@ -2902,15 +2905,14 @@ public class Notification implements Parcelable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
visitIconUri(visitor, extras.getParcelable(EXTRA_CONVERSATION_ICON));
|
visitIconUri(visitor, extras.getParcelable(EXTRA_CONVERSATION_ICON, Icon.class));
|
||||||
}
|
|
||||||
|
|
||||||
if (isStyle(CallStyle.class) & extras != null) {
|
// Extras for CallStyle (same reason for visiting without checking isStyle).
|
||||||
Person callPerson = extras.getParcelable(EXTRA_CALL_PERSON);
|
Person callPerson = extras.getParcelable(EXTRA_CALL_PERSON, Person.class);
|
||||||
if (callPerson != null) {
|
if (callPerson != null) {
|
||||||
visitor.accept(callPerson.getIconUri());
|
visitor.accept(callPerson.getIconUri());
|
||||||
}
|
}
|
||||||
visitIconUri(visitor, extras.getParcelable(EXTRA_VERIFICATION_ICON));
|
visitIconUri(visitor, extras.getParcelable(EXTRA_VERIFICATION_ICON, Icon.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mBubbleMetadata != null) {
|
if (mBubbleMetadata != null) {
|
||||||
|
@ -5290,6 +5290,49 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
|
|||||||
verify(visitor, times(1)).accept(eq(verificationIcon.getUri()));
|
verify(visitor, times(1)).accept(eq(verificationIcon.getUri()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testVisitUris_styleExtrasWithoutStyle() {
|
||||||
|
Notification notification = new Notification.Builder(mContext, "a")
|
||||||
|
.setSmallIcon(android.R.drawable.sym_def_app_icon)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Notification.MessagingStyle messagingStyle = new Notification.MessagingStyle(
|
||||||
|
personWithIcon("content://user"))
|
||||||
|
.addHistoricMessage(new Notification.MessagingStyle.Message("Heyhey!",
|
||||||
|
System.currentTimeMillis(),
|
||||||
|
personWithIcon("content://historicalMessenger")))
|
||||||
|
.addMessage(new Notification.MessagingStyle.Message("Are you there",
|
||||||
|
System.currentTimeMillis(),
|
||||||
|
personWithIcon("content://messenger")))
|
||||||
|
.setShortcutIcon(
|
||||||
|
Icon.createWithContentUri("content://conversationShortcut"));
|
||||||
|
messagingStyle.addExtras(notification.extras); // Instead of Builder.setStyle(style).
|
||||||
|
|
||||||
|
Notification.CallStyle callStyle = Notification.CallStyle.forOngoingCall(
|
||||||
|
personWithIcon("content://caller"),
|
||||||
|
PendingIntent.getActivity(mContext, 0, new Intent(),
|
||||||
|
PendingIntent.FLAG_IMMUTABLE))
|
||||||
|
.setVerificationIcon(Icon.createWithContentUri("content://callVerification"));
|
||||||
|
callStyle.addExtras(notification.extras); // Same.
|
||||||
|
|
||||||
|
Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
|
||||||
|
notification.visitUris(visitor);
|
||||||
|
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://user")));
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://historicalMessenger")));
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://messenger")));
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://conversationShortcut")));
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://caller")));
|
||||||
|
verify(visitor).accept(eq(Uri.parse("content://callVerification")));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Person personWithIcon(String iconUri) {
|
||||||
|
return new Person.Builder()
|
||||||
|
.setName("Mr " + iconUri)
|
||||||
|
.setIcon(Icon.createWithContentUri(iconUri))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testVisitUris_wearableExtender() {
|
public void testVisitUris_wearableExtender() {
|
||||||
Icon actionIcon = Icon.createWithContentUri("content://media/action");
|
Icon actionIcon = Icon.createWithContentUri("content://media/action");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user