From 4dee5aab12e95cd8b4d663ad050f07b0f2433596 Mon Sep 17 00:00:00 2001 From: Matías Hernández Date: Thu, 13 Apr 2023 17:58:22 +0200 Subject: Grant URI permissions to the CallStyle-related ones This will also verify that the caller app can actually grant them. Fix: 274592467 Test: atest NotificationManagerServiceTest Change-Id: I83429f9e63e51c615a6e3f03befb76bb5b8ea7fc --- core/java/android/app/Notification.java | 8 ++++++++ .../NotificationManagerServiceTest.java | 23 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 4b054f49d910..228e5a363547 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -2829,6 +2829,14 @@ public class Notification implements Parcelable } } + if (isStyle(CallStyle.class) & extras != null) { + Person callPerson = extras.getParcelable(EXTRA_CALL_PERSON); + if (callPerson != null) { + visitor.accept(callPerson.getIconUri()); + } + visitIconUri(visitor, extras.getParcelable(EXTRA_VERIFICATION_ICON)); + } + if (mBubbleMetadata != null) { visitIconUri(visitor, mBubbleMetadata.getIcon()); } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index b9a034bc9713..fba2f95027a4 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -4335,6 +4335,29 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { verify(visitor, times(1)).accept(eq(backgroundImage)); } + @Test + public void testVisitUris_callStyle() { + Icon personIcon = Icon.createWithContentUri("content://media/person"); + Icon verificationIcon = Icon.createWithContentUri("content://media/verification"); + Person callingPerson = new Person.Builder().setName("Someone") + .setIcon(personIcon) + .build(); + PendingIntent hangUpIntent = PendingIntent.getActivity(mContext, 0, new Intent(), + PendingIntent.FLAG_IMMUTABLE); + Notification n = new Notification.Builder(mContext, "a") + .setStyle(Notification.CallStyle.forOngoingCall(callingPerson, hangUpIntent) + .setVerificationIcon(verificationIcon)) + .setContentTitle("Calling...") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .build(); + + Consumer visitor = (Consumer) spy(Consumer.class); + n.visitUris(visitor); + + verify(visitor, times(1)).accept(eq(personIcon.getUri())); + verify(visitor, times(1)).accept(eq(verificationIcon.getUri())); + } + @Test public void testVisitUris_audioContentsString() throws Exception { final Uri audioContents = Uri.parse("content://com.example/audio"); -- cgit v1.2.3-59-g8ed1b