Loading services/core/java/com/android/server/notification/NotificationManagerService.java +13 −1 Original line number Diff line number Diff line Loading @@ -8756,10 +8756,22 @@ public class NotificationManagerService extends SystemService { void snoozeNotificationInt(String key, long duration, String snoozeCriterionId, ManagedServiceInfo listener) { String listenerName = listener == null ? null : listener.component.toShortString(); if (listener == null) { return; } String listenerName = listener.component.toShortString(); if ((duration <= 0 && snoozeCriterionId == null) || key == null) { return; } synchronized (mNotificationLock) { final NotificationRecord r = findInCurrentAndSnoozedNotificationByKeyLocked(key); if (r == null) { return; } if (!listener.enabledAndUserMatches(r.getSbn().getNormalizedUserId())){ return; } } if (DBG) { Slog.d(TAG, String.format("snooze event(%s, %d, %s, %s)", key, duration, Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +37 −1 Original line number Diff line number Diff line Loading @@ -516,7 +516,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { when(mAssistants.isAdjustmentAllowed(anyString())).thenReturn(true); mWorkerHandler = mService.new WorkerHandler(mTestableLooper.getLooper()); mWorkerHandler = spy(mService.new WorkerHandler(mTestableLooper.getLooper())); mService.init(mWorkerHandler, mRankingHandler, mPackageManager, mPackageManagerClient, mockLightsManager, mListeners, mAssistants, mConditionProviders, mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, mGroupHelper, mAm, mAtm, Loading Loading @@ -2702,6 +2702,42 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { assertFalse(noManService.hasCompanionDevice(mListener)); } @Test public void testCrossUserSnooze() { NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 10); mService.addNotification(r); NotificationRecord r2 = generateNotificationRecord(mTestNotificationChannel, 0); mService.addNotification(r2); mListener = mock(ManagedServices.ManagedServiceInfo.class); mListener.component = new ComponentName(PKG, PKG); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(false); when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); mService.snoozeNotificationInt(r.getKey(), 1000, null, mListener); verify(mWorkerHandler, never()).post( any(NotificationManagerService.SnoozeNotificationRunnable.class)); } @Test public void testSameUserSnooze() { NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 10); mService.addNotification(r); NotificationRecord r2 = generateNotificationRecord(mTestNotificationChannel, 0); mService.addNotification(r2); mListener = mock(ManagedServices.ManagedServiceInfo.class); mListener.component = new ComponentName(PKG, PKG); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(true); when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); mService.snoozeNotificationInt(r2.getKey(), 1000, null, mListener); verify(mWorkerHandler).post( any(NotificationManagerService.SnoozeNotificationRunnable.class)); } @Test public void testSnoozeRunnable_reSnoozeASingleSnoozedNotification() throws Exception { final NotificationRecord notification = generateNotificationRecord( Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +13 −1 Original line number Diff line number Diff line Loading @@ -8756,10 +8756,22 @@ public class NotificationManagerService extends SystemService { void snoozeNotificationInt(String key, long duration, String snoozeCriterionId, ManagedServiceInfo listener) { String listenerName = listener == null ? null : listener.component.toShortString(); if (listener == null) { return; } String listenerName = listener.component.toShortString(); if ((duration <= 0 && snoozeCriterionId == null) || key == null) { return; } synchronized (mNotificationLock) { final NotificationRecord r = findInCurrentAndSnoozedNotificationByKeyLocked(key); if (r == null) { return; } if (!listener.enabledAndUserMatches(r.getSbn().getNormalizedUserId())){ return; } } if (DBG) { Slog.d(TAG, String.format("snooze event(%s, %d, %s, %s)", key, duration, Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +37 −1 Original line number Diff line number Diff line Loading @@ -516,7 +516,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { when(mAssistants.isAdjustmentAllowed(anyString())).thenReturn(true); mWorkerHandler = mService.new WorkerHandler(mTestableLooper.getLooper()); mWorkerHandler = spy(mService.new WorkerHandler(mTestableLooper.getLooper())); mService.init(mWorkerHandler, mRankingHandler, mPackageManager, mPackageManagerClient, mockLightsManager, mListeners, mAssistants, mConditionProviders, mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, mGroupHelper, mAm, mAtm, Loading Loading @@ -2702,6 +2702,42 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { assertFalse(noManService.hasCompanionDevice(mListener)); } @Test public void testCrossUserSnooze() { NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 10); mService.addNotification(r); NotificationRecord r2 = generateNotificationRecord(mTestNotificationChannel, 0); mService.addNotification(r2); mListener = mock(ManagedServices.ManagedServiceInfo.class); mListener.component = new ComponentName(PKG, PKG); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(false); when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); mService.snoozeNotificationInt(r.getKey(), 1000, null, mListener); verify(mWorkerHandler, never()).post( any(NotificationManagerService.SnoozeNotificationRunnable.class)); } @Test public void testSameUserSnooze() { NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 10); mService.addNotification(r); NotificationRecord r2 = generateNotificationRecord(mTestNotificationChannel, 0); mService.addNotification(r2); mListener = mock(ManagedServices.ManagedServiceInfo.class); mListener.component = new ComponentName(PKG, PKG); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(true); when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); mService.snoozeNotificationInt(r2.getKey(), 1000, null, mListener); verify(mWorkerHandler).post( any(NotificationManagerService.SnoozeNotificationRunnable.class)); } @Test public void testSnoozeRunnable_reSnoozeASingleSnoozedNotification() throws Exception { final NotificationRecord notification = generateNotificationRecord( Loading