Merge "Check user when snoozing" into sc-qpr1-dev am: b082cf64e1 am: da610ed67e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15676600

Change-Id: I3d22d79da748f378cd275a7c7b27416a57e857fe
This commit is contained in:
Julia Reynolds
2021-08-27 03:55:59 +00:00
committed by Automerger Merge Worker
2 changed files with 50 additions and 2 deletions

View File

@@ -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,

View File

@@ -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,
@@ -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(