SnoozeHelperTest.java revision 423b9fc83d736326b8ddadbfcd6fd5f181bf9fec
172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds/* 272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * Copyright (C) 2016 The Android Open Source Project 372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * 472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * Licensed under the Apache License, Version 2.0 (the "License"); 572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * you may not use this file except in compliance with the License. 672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * You may obtain a copy of the License at 772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * 872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * http://www.apache.org/licenses/LICENSE-2.0 972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * 1072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * Unless required by applicable law or agreed to in writing, software 1172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * distributed under the License is distributed on an "AS IS" BASIS, 1272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * See the License for the specific language governing permissions and 1472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds * limitations under the License. 1572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds */ 1672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldspackage com.android.server.notification; 1772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 1872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport org.junit.Before; 1972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport org.junit.Test; 2072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport org.junit.runner.RunWith; 2172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport org.mockito.Mock; 2272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport org.mockito.MockitoAnnotations; 2372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 2472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.app.AlarmManager; 2572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.app.Notification; 2672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.app.NotificationChannel; 2785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynoldsimport android.app.NotificationManager; 2872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.app.PendingIntent; 2972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.content.Context; 3072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.os.UserHandle; 3172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.service.notification.StatusBarNotification; 3272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.support.test.InstrumentationRegistry; 3372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.support.test.runner.AndroidJUnit4; 3472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport android.test.suitebuilder.annotation.SmallTest; 3572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 3672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static junit.framework.Assert.assertFalse; 3772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static junit.framework.Assert.assertTrue; 3872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Matchers.any; 3972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Matchers.anyInt; 4072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Matchers.eq; 4172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Mockito.never; 4272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Mockito.times; 4372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldsimport static org.mockito.Mockito.verify; 4472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 4572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 4672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds@SmallTest 4772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds@RunWith(AndroidJUnit4.class) 4872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynoldspublic class SnoozeHelperTest { 4972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Mock SnoozeHelper.Callback mCallback; 5072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Mock AlarmManager mAm; 5172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Mock ManagedServices.UserProfiles mUserProfiles; 5272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 5372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds private SnoozeHelper mSnoozeHelper; 5472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 5572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds private Context getContext() { 5672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds return InstrumentationRegistry.getTargetContext(); 5772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 5872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 5972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Before 6072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void setUp() { 6172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds MockitoAnnotations.initMocks(this); 6272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 6372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper = new SnoozeHelper(getContext(), mCallback, mUserProfiles); 6472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.setAlarmManager(mAm); 6572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 6672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 6772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 6872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testSnooze() throws Exception { 6972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 7072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 7172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mAm, times(1)).setExactAndAllowWhileIdle( 7272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds anyInt(), eq((long) 1000), any(PendingIntent.class)); 7372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 7472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 7572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 7672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 7772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 7872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testCancelByApp() throws Exception { 7972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 8072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM); 8172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 8272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r2 , UserHandle.USER_SYSTEM, 1000); 8372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 8472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 8572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 8672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 8772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 8872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1); 8972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds // 3 = one for each snooze, above + one for cancel itself. 9072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mAm, times(3)).cancel(any(PendingIntent.class)); 9172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertFalse(mSnoozeHelper.isSnoozed( 9272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 9372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 9472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 9572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 9672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 9772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 9872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testCancelAllForUser() throws Exception { 9972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 10072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM); 10172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r3 = getNotificationRecord("pkg", 3, "three", UserHandle.ALL); 10272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 10372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r2 , UserHandle.USER_SYSTEM, 1000); 10472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r3 , UserHandle.USER_ALL, 1000); 10572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 10672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 10772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 10872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 10972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 11072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey())); 11172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 11272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, false); 11372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds // 5 = once for each snooze above (3) + once for each notification canceled (2). 11472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mAm, times(5)).cancel(any(PendingIntent.class)); 11572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertFalse(mSnoozeHelper.isSnoozed( 11672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 11772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertFalse(mSnoozeHelper.isSnoozed( 11872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 11972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 12072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey())); 12172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 12272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 12372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 12472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testCancelAllByApp() throws Exception { 12572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 12672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM); 12772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM); 12872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 12972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r2 , UserHandle.USER_SYSTEM, 1000); 13072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r3 , UserHandle.USER_SYSTEM, 1000); 13172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 13272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 13372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 13472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 13572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 13672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey())); 13772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 13872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, "pkg2"); 13972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds // 4 = once for each snooze above (3) + once for each notification canceled (1). 14072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mAm, times(4)).cancel(any(PendingIntent.class)); 14172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 14272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey())); 14372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertTrue(mSnoozeHelper.isSnoozed( 14472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey())); 14572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds assertFalse(mSnoozeHelper.isSnoozed( 14672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey())); 14772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 14872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 14972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 15072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testRepost() throws Exception { 15172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 15272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 15372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r2 = getNotificationRecord("pkg", 2, "one", UserHandle.ALL); 15472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r2 , UserHandle.USER_ALL, 1000); 15572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.repost(r.sbn.getPackageName(), r.getKey(), UserHandle.USER_SYSTEM); 15672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r); 15772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 15872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 15972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds @Test 16072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds public void testUpdate() throws Exception { 16172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM); 16272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.snooze(r , UserHandle.USER_SYSTEM, 1000); 16372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds r.getNotification().category = "NEW CATEGORY"; 16472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 16572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.update(UserHandle.USER_SYSTEM, r); 16672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mCallback, never()).repost(anyInt(), any(NotificationRecord.class)); 16772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 16872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds mSnoozeHelper.repost(r.sbn.getPackageName(), r.getKey(), UserHandle.USER_SYSTEM); 16972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r); 17072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 17172f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 17272f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds private NotificationRecord getNotificationRecord(String pkg, int id, String tag, 17372f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds UserHandle user) { 17472f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds Notification n = new Notification.Builder(getContext()) 17572f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds .setContentTitle("A") 17672f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds .setGroup("G") 17772f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds .setSortKey("A") 17872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds .setWhen(1205) 17972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds .build(); 18072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds return new NotificationRecord(getContext(), new StatusBarNotification( 181423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds pkg, pkg, getDefaultChannel(), id, tag, 0, 0, n, user, null, 182423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds System.currentTimeMillis())); 183423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds } 184423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds 185423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds private NotificationChannel getDefaultChannel() { 186423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds return new NotificationChannel(NotificationChannel.DEFAULT_CHANNEL_ID, "name", 187423b9fc83d736326b8ddadbfcd6fd5f181bf9fecJulia Reynolds NotificationManager.IMPORTANCE_LOW); 18872f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds } 18972f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds 19072f1cbb3b988d6daa61c45a69aa9f8024c029b06Julia Reynolds} 191