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

Commit 726df929 authored by Mady Mellor's avatar Mady Mellor
Browse files

Make sure we visit the icon URIs of Person objects on Notifications

Test: manual - have bubbles test app with uri based icons, send notifs,
               notice the notifications show pictures of people instead
               of blank spaces & there are no exceptions in the logs
Fixes: 148543216

Change-Id: Idfb7c75d9c5541f2dcebfb0f20daa99f039f4181
parent d21c45fc
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -2485,6 +2485,20 @@ public class Notification implements Parcelable
            if (extras.containsKey(EXTRA_BACKGROUND_IMAGE_URI)) {
                visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI)));
            }

            ArrayList<Person> people = extras.getParcelableArrayList(EXTRA_PEOPLE_LIST);
            if (people != null && !people.isEmpty()) {
                for (Person p : people) {
                    if (p.getIconUri() != null) {
                        visitor.accept(p.getIconUri());
                    }
                }
            }

            final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON);
            if (person != null && person.getIconUri() != null) {
                visitor.accept(person.getIconUri());
            }
        }

        if (MessagingStyle.class.equals(getNotificationStyle()) && extras != null) {
@@ -2493,6 +2507,11 @@ public class Notification implements Parcelable
                for (MessagingStyle.Message message : MessagingStyle.Message
                        .getMessagesFromBundleArray(messages)) {
                    visitor.accept(message.getDataUri());

                    Person senderPerson = message.getSenderPerson();
                    if (senderPerson != null && senderPerson.getIconUri() != null) {
                        visitor.accept(senderPerson.getIconUri());
                    }
                }
            }

@@ -2501,6 +2520,11 @@ public class Notification implements Parcelable
                for (MessagingStyle.Message message : MessagingStyle.Message
                        .getMessagesFromBundleArray(historic)) {
                    visitor.accept(message.getDataUri());

                    Person senderPerson = message.getSenderPerson();
                    if (senderPerson != null && senderPerson.getIconUri() != null) {
                        visitor.accept(senderPerson.getIconUri());
                    }
                }
            }
        }
+15 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;

@@ -122,6 +123,20 @@ public final class Person implements Parcelable {
        return "";
    }

    /**
     * @return the URI associated with the {@link #getIcon()} for this person, iff the icon exists
     * and is URI based.
     * @hide
     */
    @Nullable
    public Uri getIconUri() {
        if (mIcon != null && (mIcon.getType() == Icon.TYPE_URI
                || mIcon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP)) {
            return mIcon.getUri();
        }
        return null;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Person) {