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

Commit 9ff23154 authored by Ioana Alexandru's avatar Ioana Alexandru Committed by Automerger Merge Worker
Browse files

Merge "Check more URIs in notifications" into sc-dev am: 9b874d35 am:...

Merge "Check more URIs in notifications" into sc-dev am: 9b874d35 am: 01b4536d am: a12cfb55 am: cf887f52 am: 30ee8b3b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/28470438



Change-Id: Ic7ef8dc2acda75b17b50c3a42d7c5d44c9509852
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a1b392e6 30ee8b3b
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
@@ -2854,7 +2854,7 @@ public class Notification implements Parcelable
                    Person.class);
            if (people != null && !people.isEmpty()) {
                for (Person p : people) {
                    visitor.accept(p.getIconUri());
                    p.visitUris(visitor);
                }
            }
@@ -2874,7 +2874,7 @@ public class Notification implements Parcelable
            // 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());
                person.visitUris(visitor);
            }
            final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES,
@@ -2882,12 +2882,7 @@ public class Notification implements Parcelable
            if (!ArrayUtils.isEmpty(messages)) {
                for (MessagingStyle.Message message : MessagingStyle.Message
                        .getMessagesFromBundleArray(messages)) {
                    visitor.accept(message.getDataUri());
                    Person senderPerson = message.getSenderPerson();
                    if (senderPerson != null) {
                        visitor.accept(senderPerson.getIconUri());
                    }
                    message.visitUris(visitor);
                }
            }
@@ -2896,12 +2891,7 @@ public class Notification implements Parcelable
            if (!ArrayUtils.isEmpty(historic)) {
                for (MessagingStyle.Message message : MessagingStyle.Message
                        .getMessagesFromBundleArray(historic)) {
                    visitor.accept(message.getDataUri());
                    Person senderPerson = message.getSenderPerson();
                    if (senderPerson != null) {
                        visitor.accept(senderPerson.getIconUri());
                    }
                    message.visitUris(visitor);
                }
            }
@@ -2910,7 +2900,7 @@ public class Notification implements Parcelable
            // Extras for CallStyle (same reason for visiting without checking isStyle).
            Person callPerson = extras.getParcelable(EXTRA_CALL_PERSON, Person.class);
            if (callPerson != null) {
                visitor.accept(callPerson.getIconUri());
                callPerson.visitUris(visitor);
            }
            visitIconUri(visitor, extras.getParcelable(EXTRA_VERIFICATION_ICON, Icon.class));
        }
@@ -8792,6 +8782,18 @@ public class Notification implements Parcelable
                return bundles;
            }
            /**
             * See {@link Notification#visitUris(Consumer)}.
             *
             * @hide
             */
            public void visitUris(@NonNull Consumer<Uri> visitor) {
                visitor.accept(getDataUri());
                if (mSender != null) {
                    mSender.visitUris(visitor);
                }
            }
            /**
             * Returns a list of messages read from the given bundle list, e.g.
             * {@link #EXTRA_MESSAGES} or {@link #EXTRA_HISTORIC_MESSAGES}.
+17 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Parcel;
import android.os.Parcelable;

import java.util.Objects;
import java.util.function.Consumer;

/**
 * Provides an immutable reference to an entity that appears repeatedly on different surfaces of the
@@ -177,6 +178,22 @@ public final class Person implements Parcelable {
        dest.writeBoolean(mIsBot);
    }

    /**
     * Note all {@link Uri} that are referenced internally, with the expectation that Uri permission
     * grants will need to be issued to ensure the recipient of this object is able to render its
     * contents.
     * See b/281044385 for more context and examples about what happens when this isn't done
     * correctly.
     *
     * @hide
     */
    public void visitUris(@NonNull Consumer<Uri> visitor) {
        visitor.accept(getIconUri());
        if (mUri != null && !mUri.isEmpty()) {
            visitor.accept(Uri.parse(mUri));
        }
    }

    /** Builder for the immutable {@link Person} class. */
    public static class Builder {
        @Nullable private CharSequence mName;
+23 −0
Original line number Diff line number Diff line
@@ -955,6 +955,13 @@ public class RemoteViews implements Parcelable, Filter {
            return SET_REMOTE_VIEW_ADAPTER_LIST_TAG;
        }

        @Override
        public void visitUris(@NonNull Consumer<Uri> visitor) {
            for (RemoteViews remoteViews : list) {
                remoteViews.visitUris(visitor);
            }
        }

        int viewTypeCount;
        ArrayList<RemoteViews> list;
    }
@@ -1077,6 +1084,13 @@ public class RemoteViews implements Parcelable, Filter {
        public int getActionTag() {
            return SET_REMOTE_COLLECTION_ITEMS_ADAPTER_TAG;
        }

        @Override
        public void visitUris(@NonNull Consumer<Uri> visitor) {
            if (mItems != null) {
              mItems.visitUris(visitor);
            }
        }
    }

    private class SetRemoteViewsAdapterIntent extends Action {
@@ -7024,6 +7038,15 @@ public class RemoteViews implements Parcelable, Filter {
                        Math.max(mViewTypeCount, 1));
            }
        }

        /**
         * See {@link RemoteViews#visitUris(Consumer)}.
         */
        private void visitUris(@NonNull Consumer<Uri> visitor) {
            for (RemoteViews view : mViews) {
                view.visitUris(visitor);
            }
        }
    }

    /**