Merge "Add visitUri method to Person and MessagingStyle.Message." into udc-qpr-dev

This commit is contained in:
Ioana Alexandru
2023-05-25 17:04:48 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 21 deletions

View File

@@ -2833,12 +2833,14 @@ public class Notification implements Parcelable
}
/**
* 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.
*
* @hide
*/
* 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) {
if (publicVersion != null) {
publicVersion.visitUris(visitor);
@@ -2882,13 +2884,13 @@ public class Notification implements Parcelable
ArrayList<Person> people = extras.getParcelableArrayList(EXTRA_PEOPLE_LIST, android.app.Person.class);
if (people != null && !people.isEmpty()) {
for (Person p : people) {
visitor.accept(p.getIconUri());
p.visitUris(visitor);
}
}
final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON, Person.class);
if (person != null) {
visitor.accept(person.getIconUri());
person.visitUris(visitor);
}
final RemoteInputHistoryItem[] history = extras.getParcelableArray(
@@ -2910,12 +2912,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);
}
}
@@ -2924,12 +2921,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);
}
}
@@ -2939,7 +2931,7 @@ public class Notification implements Parcelable
if (isStyle(CallStyle.class) & extras != null) {
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));
}
@@ -8832,6 +8824,18 @@ public class Notification implements Parcelable
return bundle;
}
/**
* 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}.

View File

@@ -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,19 @@ 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());
}
/** Builder for the immutable {@link Person} class. */
public static class Builder {
@Nullable private CharSequence mName;