Skip to content

Commit c39303e

Browse files
Matías HernándezAndroid Build Coastguard Worker
authored andcommitted
Visit Uris added by WearableExtender
Bug: 283962802 Test: atest + manual (POC app now crashes on notify() as expected) (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3d36966ea2aeebc3501a69a8ef7afce5ef593cee) Merged-In: I0da18c631eb5e4844a48760c7aaedab715a0bfed Change-Id: I0da18c631eb5e4844a48760c7aaedab715a0bfed
1 parent c234c1b commit c39303e

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

core/java/android/app/Notification.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2138,6 +2138,10 @@ public Action build() {
21382138
}
21392139
}
21402140

2141+
private void visitUris(@NonNull Consumer<Uri> visitor) {
2142+
visitIconUri(visitor, getIcon());
2143+
}
2144+
21412145
@Override
21422146
public Action clone() {
21432147
return new Action(
@@ -2823,7 +2827,7 @@ public void visitUris(@NonNull Consumer<Uri> visitor) {
28232827

28242828
if (actions != null) {
28252829
for (Action action : actions) {
2826-
visitIconUri(visitor, action.getIcon());
2830+
action.visitUris(visitor);
28272831
}
28282832
}
28292833

@@ -2911,6 +2915,11 @@ public void visitUris(@NonNull Consumer<Uri> visitor) {
29112915
if (mBubbleMetadata != null) {
29122916
visitIconUri(visitor, mBubbleMetadata.getIcon());
29132917
}
2918+
2919+
if (extras != null && extras.containsKey(WearableExtender.EXTRA_WEARABLE_EXTENSIONS)) {
2920+
WearableExtender extender = new WearableExtender(this);
2921+
extender.visitUris(visitor);
2922+
}
29142923
}
29152924

29162925
/**
@@ -11626,6 +11635,12 @@ private void setFlag(int mask, boolean value) {
1162611635
mFlags &= ~mask;
1162711636
}
1162811637
}
11638+
11639+
private void visitUris(@NonNull Consumer<Uri> visitor) {
11640+
for (Action action : mActions) {
11641+
action.visitUris(visitor);
11642+
}
11643+
}
1162911644
}
1163011645

1163111646
/**

services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5557,6 +5557,26 @@ public void testVisitUris_callStyle() {
55575557
verify(visitor, times(1)).accept(eq(verificationIcon.getUri()));
55585558
}
55595559

5560+
@Test
5561+
public void testVisitUris_wearableExtender() {
5562+
Icon actionIcon = Icon.createWithContentUri("content://media/action");
5563+
Icon wearActionIcon = Icon.createWithContentUri("content://media/wearAction");
5564+
PendingIntent intent = PendingIntent.getActivity(mContext, 0, new Intent(),
5565+
PendingIntent.FLAG_IMMUTABLE);
5566+
Notification n = new Notification.Builder(mContext, "a")
5567+
.setSmallIcon(android.R.drawable.sym_def_app_icon)
5568+
.addAction(new Notification.Action.Builder(actionIcon, "Hey!", intent).build())
5569+
.extend(new Notification.WearableExtender().addAction(
5570+
new Notification.Action.Builder(wearActionIcon, "Wear!", intent).build()))
5571+
.build();
5572+
5573+
Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
5574+
n.visitUris(visitor);
5575+
5576+
verify(visitor).accept(eq(actionIcon.getUri()));
5577+
verify(visitor).accept(eq(wearActionIcon.getUri()));
5578+
}
5579+
55605580
@Test
55615581
public void testSetNotificationPolicy_preP_setOldFields() {
55625582
ZenModeHelper mZenModeHelper = mock(ZenModeHelper.class);

0 commit comments

Comments
 (0)