diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 432d99d80b892..f7bd489153e5d 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -10137,6 +10137,8 @@ public class Notification implements Parcelable * {@link Activity#isLaunchedFromBubble()} will return with {@code true}. *

* + * Note that the pending intent used here requires PendingIntent.FLAG_MUTABLE. + * * @throws NullPointerException if intent is null. * @throws NullPointerException if icon is null. */ diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 98dee86a2bdf8..fef5e93d6a6b0 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -6606,15 +6606,14 @@ public class NotificationManagerService extends SystemService { } // bubble or inline reply that's immutable? - // TODO (b/171418004): renable after app outreach - /*if (n.getBubbleMetadata() != null + if (n.getBubbleMetadata() != null && n.getBubbleMetadata().getIntent() != null && hasFlag(mAmi.getPendingIntentFlags( n.getBubbleMetadata().getIntent().getTarget()), PendingIntent.FLAG_IMMUTABLE)) { throw new IllegalArgumentException(r.getKey() + " Not posted." + " PendingIntents attached to bubbles must be mutable"); - }*/ + } if (n.actions != null) { for (Notification.Action action : n.actions) { 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 3869faedcd3c0..c480258c7fd9e 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -7811,8 +7811,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { inOrder.verify(child).recordDismissalSentiment(anyInt()); } - // TODO (b/171418004): renable after app outreach - /*@Test + @Test public void testImmutableBubbleIntent() throws Exception { when(mAmi.getPendingIntentFlags(pi1)) .thenReturn(FLAG_IMMUTABLE | FLAG_ONE_SHOT); @@ -7827,7 +7826,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } catch (IllegalArgumentException e) { // good } - }*/ + } @Test public void testMutableBubbleIntent() throws Exception {