blob: 1e645436e7eafe3b93ed49e14786a99db4c7e1a4 [file] [log] [blame]
Julia Reynolds72f1cbb2016-09-19 14:57:31 -04001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.server.notification;
17
Brett Chabot84151d92019-02-27 15:37:59 -080018import static junit.framework.Assert.assertEquals;
19import static junit.framework.Assert.assertFalse;
20import static junit.framework.Assert.assertTrue;
21
22import static org.mockito.Matchers.any;
23import static org.mockito.Matchers.anyInt;
24import static org.mockito.Matchers.anyLong;
25import static org.mockito.Mockito.never;
26import static org.mockito.Mockito.times;
27import static org.mockito.Mockito.verify;
28import static org.mockito.Mockito.when;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040029
30import android.app.AlarmManager;
31import android.app.Notification;
32import android.app.NotificationChannel;
Julia Reynolds85769912016-10-25 09:08:57 -040033import android.app.NotificationManager;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040034import android.app.PendingIntent;
Julia Reynolds50989772017-02-23 14:32:16 -050035import android.os.SystemClock;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040036import android.os.UserHandle;
37import android.service.notification.StatusBarNotification;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040038import android.test.suitebuilder.annotation.SmallTest;
Julia Reynoldsca8e5352018-09-18 13:39:26 -040039import android.util.IntArray;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040040
Brett Chabot84151d92019-02-27 15:37:59 -080041import androidx.test.runner.AndroidJUnit4;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040042
Jason Monk74f5e362017-12-06 08:56:33 -050043import com.android.server.UiServiceTestCase;
44
Brett Chabot84151d92019-02-27 15:37:59 -080045import org.junit.Before;
46import org.junit.Test;
47import org.junit.runner.RunWith;
48import org.mockito.ArgumentCaptor;
49import org.mockito.Mock;
50import org.mockito.MockitoAnnotations;
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040051
52@SmallTest
53@RunWith(AndroidJUnit4.class)
Jason Monk74f5e362017-12-06 08:56:33 -050054public class SnoozeHelperTest extends UiServiceTestCase {
Geoffrey Pitschaf759c52017-02-15 09:35:38 -050055 private static final String TEST_CHANNEL_ID = "test_channel_id";
56
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040057 @Mock SnoozeHelper.Callback mCallback;
58 @Mock AlarmManager mAm;
59 @Mock ManagedServices.UserProfiles mUserProfiles;
60
61 private SnoozeHelper mSnoozeHelper;
62
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040063 @Before
64 public void setUp() {
65 MockitoAnnotations.initMocks(this);
66
67 mSnoozeHelper = new SnoozeHelper(getContext(), mCallback, mUserProfiles);
68 mSnoozeHelper.setAlarmManager(mAm);
69 }
70
71 @Test
Julia Reynoldsb6c1f992016-11-22 09:26:46 -050072 public void testSnoozeForTime() throws Exception {
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040073 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -050074 mSnoozeHelper.snooze(r, 1000);
Julia Reynolds50989772017-02-23 14:32:16 -050075 ArgumentCaptor<Long> captor = ArgumentCaptor.forClass(Long.class);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040076 verify(mAm, times(1)).setExactAndAllowWhileIdle(
Julia Reynolds50989772017-02-23 14:32:16 -050077 anyInt(), captor.capture(), any(PendingIntent.class));
78 long actualSnoozedUntilDuration = captor.getValue() - SystemClock.elapsedRealtime();
Julia Reynolds0a0910952018-12-19 10:44:20 -050079 assertTrue(Math.abs(actualSnoozedUntilDuration - 1000) < 250);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040080 assertTrue(mSnoozeHelper.isSnoozed(
81 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
82 }
83
84 @Test
Julia Reynoldsb6c1f992016-11-22 09:26:46 -050085 public void testSnooze() throws Exception {
86 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -050087 mSnoozeHelper.snooze(r);
Julia Reynoldsb6c1f992016-11-22 09:26:46 -050088 verify(mAm, never()).setExactAndAllowWhileIdle(
89 anyInt(), anyLong(), any(PendingIntent.class));
90 assertTrue(mSnoozeHelper.isSnoozed(
91 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
92 }
93
94 @Test
Julia Reynolds72f1cbb2016-09-19 14:57:31 -040095 public void testCancelByApp() throws Exception {
96 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
97 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -050098 mSnoozeHelper.snooze(r, 1000);
99 mSnoozeHelper.snooze(r2 , 1000);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400100 assertTrue(mSnoozeHelper.isSnoozed(
101 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
102 assertTrue(mSnoozeHelper.isSnoozed(
103 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
104
105 mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500106 // 2 = one for each snooze, above, zero for the cancel.
107 verify(mAm, times(2)).cancel(any(PendingIntent.class));
108 assertTrue(mSnoozeHelper.isSnoozed(
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400109 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
110 assertTrue(mSnoozeHelper.isSnoozed(
111 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
112 }
113
114 @Test
115 public void testCancelAllForUser() throws Exception {
116 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
117 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
118 NotificationRecord r3 = getNotificationRecord("pkg", 3, "three", UserHandle.ALL);
Julia Reynolds79672302017-01-12 08:30:16 -0500119 mSnoozeHelper.snooze(r, 1000);
120 mSnoozeHelper.snooze(r2, 1000);
121 mSnoozeHelper.snooze(r3, 1000);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400122 assertTrue(mSnoozeHelper.isSnoozed(
123 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
124 assertTrue(mSnoozeHelper.isSnoozed(
125 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
126 assertTrue(mSnoozeHelper.isSnoozed(
127 UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey()));
128
129 mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, false);
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500130 // 3 = once for each snooze above (3), only.
131 verify(mAm, times(3)).cancel(any(PendingIntent.class));
132 assertTrue(mSnoozeHelper.isSnoozed(
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400133 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500134 assertTrue(mSnoozeHelper.isSnoozed(
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400135 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
136 assertTrue(mSnoozeHelper.isSnoozed(
137 UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey()));
138 }
139
140 @Test
141 public void testCancelAllByApp() throws Exception {
142 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
143 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
144 NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -0500145 mSnoozeHelper.snooze(r, 1000);
146 mSnoozeHelper.snooze(r2, 1000);
147 mSnoozeHelper.snooze(r3, 1000);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400148 assertTrue(mSnoozeHelper.isSnoozed(
149 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
150 assertTrue(mSnoozeHelper.isSnoozed(
151 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
152 assertTrue(mSnoozeHelper.isSnoozed(
153 UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
154
155 mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, "pkg2");
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500156 // 3 = once for each snooze above (3), only.
157 verify(mAm, times(3)).cancel(any(PendingIntent.class));
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400158 assertTrue(mSnoozeHelper.isSnoozed(
159 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
160 assertTrue(mSnoozeHelper.isSnoozed(
161 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500162 assertTrue(mSnoozeHelper.isSnoozed(
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400163 UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
164 }
165
166 @Test
Julia Reynoldsa8b766f2017-03-07 16:30:21 -0500167 public void testCancelDoesNotUnsnooze() throws Exception {
168 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
169 mSnoozeHelper.snooze(r, 1000);
170 assertTrue(mSnoozeHelper.isSnoozed(
171 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
172
173 mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
174
175 assertTrue(mSnoozeHelper.isSnoozed(
176 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
177 }
178
179 @Test
180 public void testCancelDoesNotRepost() throws Exception {
181 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
182 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
183 mSnoozeHelper.snooze(r, 1000);
184 mSnoozeHelper.snooze(r2 , 1000);
185 assertTrue(mSnoozeHelper.isSnoozed(
186 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
187 assertTrue(mSnoozeHelper.isSnoozed(
188 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
189
190 mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
191
192 mSnoozeHelper.repost(r.getKey(), UserHandle.USER_SYSTEM);
193 verify(mCallback, never()).repost(UserHandle.USER_SYSTEM, r);
194 }
195
196 @Test
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400197 public void testRepost() throws Exception {
198 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -0500199 mSnoozeHelper.snooze(r, 1000);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400200 NotificationRecord r2 = getNotificationRecord("pkg", 2, "one", UserHandle.ALL);
Julia Reynolds79672302017-01-12 08:30:16 -0500201 mSnoozeHelper.snooze(r2, 1000);
Julia Reynoldsb6c1f992016-11-22 09:26:46 -0500202 mSnoozeHelper.repost(r.getKey(), UserHandle.USER_SYSTEM);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400203 verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r);
204 }
205
206 @Test
Julia Reynolds79672302017-01-12 08:30:16 -0500207 public void testRepost_noUser() throws Exception {
208 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
209 mSnoozeHelper.snooze(r, 1000);
210 NotificationRecord r2 = getNotificationRecord("pkg", 2, "one", UserHandle.ALL);
211 mSnoozeHelper.snooze(r2, 1000);
212 mSnoozeHelper.repost(r.getKey());
213 verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r);
214 }
215
216 @Test
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400217 public void testUpdate() throws Exception {
218 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
Julia Reynolds79672302017-01-12 08:30:16 -0500219 mSnoozeHelper.snooze(r , 1000);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400220 r.getNotification().category = "NEW CATEGORY";
221
222 mSnoozeHelper.update(UserHandle.USER_SYSTEM, r);
223 verify(mCallback, never()).repost(anyInt(), any(NotificationRecord.class));
224
Julia Reynoldsb6c1f992016-11-22 09:26:46 -0500225 mSnoozeHelper.repost(r.getKey(), UserHandle.USER_SYSTEM);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400226 verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r);
227 }
228
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500229 @Test
230 public void testGetSnoozedByUser() throws Exception {
231 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
232 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
233 NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM);
234 NotificationRecord r4 = getNotificationRecord("pkg2", 3, "three", UserHandle.CURRENT);
235 mSnoozeHelper.snooze(r, 1000);
236 mSnoozeHelper.snooze(r2, 1000);
237 mSnoozeHelper.snooze(r3, 1000);
238 mSnoozeHelper.snooze(r4, 1000);
Julia Reynoldsca8e5352018-09-18 13:39:26 -0400239 IntArray profileIds = new IntArray();
240 profileIds.add(UserHandle.USER_SYSTEM);
241 when(mUserProfiles.getCurrentProfileIds()).thenReturn(profileIds);
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500242 assertEquals(3, mSnoozeHelper.getSnoozed().size());
Julia Reynoldsca8e5352018-09-18 13:39:26 -0400243 profileIds = new IntArray();
244 profileIds.add(UserHandle.USER_CURRENT);
245 when(mUserProfiles.getCurrentProfileIds()).thenReturn(profileIds);
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500246 assertEquals(1, mSnoozeHelper.getSnoozed().size());
247 }
248
249 @Test
250 public void testGetSnoozedByUser_managedProfiles() throws Exception {
Julia Reynoldsca8e5352018-09-18 13:39:26 -0400251 IntArray profileIds = new IntArray();
252 profileIds.add(UserHandle.USER_CURRENT);
253 profileIds.add(UserHandle.USER_SYSTEM);
254 when(mUserProfiles.getCurrentProfileIds()).thenReturn(profileIds);
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500255 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
256 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
257 NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM);
258 NotificationRecord r4 = getNotificationRecord("pkg2", 3, "three", UserHandle.CURRENT);
259 mSnoozeHelper.snooze(r, 1000);
260 mSnoozeHelper.snooze(r2, 1000);
261 mSnoozeHelper.snooze(r3, 1000);
262 mSnoozeHelper.snooze(r4, 1000);
263 assertEquals(4, mSnoozeHelper.getSnoozed().size());
264 }
265
Julia Reynoldsa78cdff2017-04-26 10:19:25 -0400266 @Test
267 public void repostGroupSummary_onlyFellowGroupChildren() throws Exception {
268 NotificationRecord r = getNotificationRecord(
269 "pkg", 1, "one", UserHandle.SYSTEM, "group1", false);
270 NotificationRecord r2 = getNotificationRecord(
271 "pkg", 2, "two", UserHandle.SYSTEM, "group1", false);
272 mSnoozeHelper.snooze(r, 1000);
273 mSnoozeHelper.snooze(r2, 1000);
274 mSnoozeHelper.repostGroupSummary("pkg", UserHandle.USER_SYSTEM, "group1");
275
276 verify(mCallback, never()).repost(UserHandle.USER_SYSTEM, r);
277 }
278
279 @Test
280 public void repostGroupSummary_repostsSummary() throws Exception {
Julia Reynoldsca8e5352018-09-18 13:39:26 -0400281 IntArray profileIds = new IntArray();
282 profileIds.add(UserHandle.USER_SYSTEM);
283 when(mUserProfiles.getCurrentProfileIds()).thenReturn(profileIds);
Julia Reynoldsa78cdff2017-04-26 10:19:25 -0400284 NotificationRecord r = getNotificationRecord(
285 "pkg", 1, "one", UserHandle.SYSTEM, "group1", true);
286 NotificationRecord r2 = getNotificationRecord(
287 "pkg", 2, "two", UserHandle.SYSTEM, "group1", false);
288 mSnoozeHelper.snooze(r, 1000);
289 mSnoozeHelper.snooze(r2, 1000);
290 assertEquals(2, mSnoozeHelper.getSnoozed().size());
291 assertEquals(2, mSnoozeHelper.getSnoozed(UserHandle.USER_SYSTEM, "pkg").size());
292
293 mSnoozeHelper.repostGroupSummary("pkg", UserHandle.USER_SYSTEM, r.getGroupKey());
294
295 verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r);
296 verify(mCallback, never()).repost(UserHandle.USER_SYSTEM, r2);
297
298 assertEquals(1, mSnoozeHelper.getSnoozed().size());
299 assertEquals(1, mSnoozeHelper.getSnoozed(UserHandle.USER_SYSTEM, "pkg").size());
300 }
301
Julia Reynolds67c1e962019-01-04 14:01:10 -0500302 @Test
303 public void testClearData() {
304 // snooze 2 from same package
305 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
306 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
307 mSnoozeHelper.snooze(r, 1000);
308 mSnoozeHelper.snooze(r2, 1000);
309 assertTrue(mSnoozeHelper.isSnoozed(
310 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
311 assertTrue(mSnoozeHelper.isSnoozed(
312 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
313
314 // clear data
315 mSnoozeHelper.clearData(UserHandle.USER_SYSTEM, "pkg");
316
317 // nothing snoozed; alarms canceled
318 assertFalse(mSnoozeHelper.isSnoozed(
319 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
320 assertFalse(mSnoozeHelper.isSnoozed(
321 UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
322 // twice for initial snooze, twice for canceling the snooze
323 verify(mAm, times(4)).cancel(any(PendingIntent.class));
324 }
325
326 @Test
327 public void testClearData_otherRecordsUntouched() {
328 // 2 packages, 2 users
329 NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
330 NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.ALL);
331 NotificationRecord r3 = getNotificationRecord("pkg2", 3, "three", UserHandle.SYSTEM);
332 mSnoozeHelper.snooze(r, 1000);
333 mSnoozeHelper.snooze(r2, 1000);
334 mSnoozeHelper.snooze(r3, 1000);
335 assertTrue(mSnoozeHelper.isSnoozed(
336 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
337 assertTrue(mSnoozeHelper.isSnoozed(
338 UserHandle.USER_ALL, r2.sbn.getPackageName(), r2.getKey()));
339 assertTrue(mSnoozeHelper.isSnoozed(
340 UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
341
342 // clear data
343 mSnoozeHelper.clearData(UserHandle.USER_SYSTEM, "pkg");
344
345 assertFalse(mSnoozeHelper.isSnoozed(
346 UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
347 assertTrue(mSnoozeHelper.isSnoozed(
348 UserHandle.USER_ALL, r2.sbn.getPackageName(), r2.getKey()));
349 assertTrue(mSnoozeHelper.isSnoozed(
350 UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
351 // once for each initial snooze, once for canceling one snooze
352 verify(mAm, times(4)).cancel(any(PendingIntent.class));
353 }
354
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400355 private NotificationRecord getNotificationRecord(String pkg, int id, String tag,
Julia Reynoldsa78cdff2017-04-26 10:19:25 -0400356 UserHandle user, String groupKey, boolean groupSummary) {
Geoffrey Pitschaf759c52017-02-15 09:35:38 -0500357 Notification n = new Notification.Builder(getContext(), TEST_CHANNEL_ID)
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400358 .setContentTitle("A")
359 .setGroup("G")
360 .setSortKey("A")
361 .setWhen(1205)
Julia Reynoldsa78cdff2017-04-26 10:19:25 -0400362 .setGroup(groupKey)
363 .setGroupSummary(groupSummary)
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400364 .build();
Geoffrey Pitschaf759c52017-02-15 09:35:38 -0500365 final NotificationChannel notificationChannel = new NotificationChannel(
366 TEST_CHANNEL_ID, "name", NotificationManager.IMPORTANCE_LOW);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400367 return new NotificationRecord(getContext(), new StatusBarNotification(
Julia Reynolds924eed12017-01-19 09:52:07 -0500368 pkg, pkg, id, tag, 0, 0, n, user, null,
Geoffrey Pitscha22f6442017-05-05 16:47:38 +0000369 System.currentTimeMillis()), notificationChannel);
Julia Reynolds423b9fc2016-11-09 09:51:08 -0500370 }
Julia Reynoldsa78cdff2017-04-26 10:19:25 -0400371
372 private NotificationRecord getNotificationRecord(String pkg, int id, String tag,
373 UserHandle user) {
374 return getNotificationRecord(pkg, id, tag, user, null, false);
375 }
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400376}