From 89f6161d7a9fc8860b1363f16fb33f924e3cf760 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 23 Mar 2022 09:49:22 -0400 Subject: [PATCH] Limit broadcast by user Test: NotificationListenersTest, review historical broadcasts in bugreport Bug: 220737634 Change-Id: Ie8d5d008141e69febe5216f49b127222d2bcb8cc (cherry picked from commit 8ea87a68775662cdeb9e6786e95da48cdfe6d792) Merged-In: Ie8d5d008141e69febe5216f49b127222d2bcb8cc --- .../NotificationManagerService.java | 4 ++-- .../NotificationListenersTest.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index f3562d6cd87df..0fda3a36b8e90 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -10075,10 +10075,10 @@ public class NotificationManagerService extends SystemService { boolean isPrimary, boolean enabled, boolean userSet) { super.setPackageOrComponentEnabled(pkgOrComponent, userId, isPrimary, enabled, userSet); - getContext().sendBroadcastAsUser( + mContext.sendBroadcastAsUser( new Intent(ACTION_NOTIFICATION_LISTENER_ENABLED_CHANGED) .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), - UserHandle.ALL, null); + UserHandle.of(userId), null); } @Override diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java index 50ebffc31035f..7c0f29dce1abb 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java @@ -24,10 +24,17 @@ import static com.android.server.notification.NotificationManagerService.Notific import static com.google.common.truth.Truth.assertThat; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.INotificationManager; @@ -37,8 +44,10 @@ import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.pm.VersionedPackage; import android.os.Bundle; +import android.os.UserHandle; import android.service.notification.NotificationListenerFilter; import android.service.notification.NotificationListenerService; +import android.testing.TestableContext; import android.util.ArraySet; import android.util.Pair; import android.util.Slog; @@ -69,6 +78,7 @@ public class NotificationListenersTest extends UiServiceTestCase { NotificationManagerService mNm; @Mock private INotificationManager mINm; + private TestableContext mContext = spy(getContext()); NotificationManagerService.NotificationListeners mListeners; @@ -80,6 +90,7 @@ public class NotificationListenersTest extends UiServiceTestCase { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); getContext().setMockPackageManager(mPm); + doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any()); mListeners = spy(mNm.new NotificationListeners( mContext, new Object(), mock(ManagedServices.UserProfiles.class), miPm)); @@ -355,4 +366,12 @@ public class NotificationListenersTest extends UiServiceTestCase { .getDisallowedPackages()).isEmpty(); } + @Test + public void testBroadcastUsers() { + int userId = 0; + mListeners.setPackageOrComponentEnabled(mCn1.flattenToString(), userId, true, false, true); + + verify(mContext).sendBroadcastAsUser( + any(), eq(UserHandle.of(userId)), nullable(String.class)); + } }