Skip to content

Commit 1c08e32

Browse files
author
Julia Reynolds
committed
Restrict alarm broadcast
To android only Test: NotificationManagerTest, NotificationManagerServiceTest Bug: 175614289 Change-Id: I4f8e56729d90f8f5288d08881129b1c45d5790e7 Merged-In: I4f8e56729d90f8f5288d08881129b1c45d5790e7 (cherry picked from commit abf15b7)
1 parent 44ac913 commit 1c08e32

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

services/core/java/com/android/server/notification/NotificationManagerService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6846,6 +6846,7 @@ void scheduleTimeoutLocked(NotificationRecord record) {
68466846
final PendingIntent pi = PendingIntent.getBroadcast(getContext(),
68476847
REQUEST_CODE_TIMEOUT,
68486848
new Intent(ACTION_NOTIFICATION_TIMEOUT)
6849+
.setPackage(PackageManagerService.PLATFORM_PACKAGE_NAME)
68496850
.setData(new Uri.Builder().scheme(SCHEME_TIMEOUT)
68506851
.appendPath(record.getKey()).build())
68516852
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)

services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484

8585
import android.app.ActivityManager;
8686
import android.app.ActivityManagerInternal;
87+
import android.app.AlarmManager;
8788
import android.app.AppOpsManager;
8889
import android.app.AutomaticZenRule;
8990
import android.app.IActivityManager;
@@ -172,6 +173,7 @@
172173
import com.android.server.lights.LogicalLight;
173174
import com.android.server.notification.NotificationManagerService.NotificationAssistants;
174175
import com.android.server.notification.NotificationManagerService.NotificationListeners;
176+
import com.android.server.pm.PackageManagerService;
175177
import com.android.server.statusbar.StatusBarManagerInternal;
176178
import com.android.server.uri.UriGrantsManagerInternal;
177179
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -285,6 +287,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
285287
NotificationHistoryManager mHistoryManager;
286288
@Mock
287289
StatsManager mStatsManager;
290+
@Mock
291+
AlarmManager mAlarmManager;
288292
NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
289293
private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
290294
1 << 30);
@@ -426,6 +430,8 @@ public void setUp() throws Exception {
426430
LocalServices.addService(DeviceIdleInternal.class, deviceIdleInternal);
427431
LocalServices.removeServiceForTest(ActivityManagerInternal.class);
428432
LocalServices.addService(ActivityManagerInternal.class, activityManagerInternal);
433+
mContext.addMockSystemService(Context.ALARM_SERVICE, mAlarmManager);
434+
429435

430436
doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any());
431437

@@ -833,6 +839,26 @@ private NotificationRecord addGroupWithBubblesAndValidateAdded(boolean summaryAu
833839
return nrSummary;
834840
}
835841

842+
@Test
843+
public void testLimitTimeOutBroadcast() {
844+
NotificationChannel channel = new NotificationChannel("id", "name",
845+
NotificationManager.IMPORTANCE_HIGH);
846+
Notification.Builder nb = new Notification.Builder(mContext, channel.getId())
847+
.setContentTitle("foo")
848+
.setSmallIcon(android.R.drawable.sym_def_app_icon)
849+
.setTimeoutAfter(1);
850+
851+
StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, 8, "tag", mUid, 0,
852+
nb.build(), UserHandle.getUserHandleForUid(mUid), null, 0);
853+
NotificationRecord r = new NotificationRecord(mContext, sbn, channel);
854+
855+
mService.scheduleTimeoutLocked(r);
856+
ArgumentCaptor<PendingIntent> captor = ArgumentCaptor.forClass(PendingIntent.class);
857+
verify(mAlarmManager).setExactAndAllowWhileIdle(anyInt(), anyLong(), captor.capture());
858+
assertEquals(PackageManagerService.PLATFORM_PACKAGE_NAME,
859+
captor.getValue().getIntent().getPackage());
860+
}
861+
836862
@Test
837863
public void testDefaultAssistant_overrideDefault() {
838864
final int userId = 0;

0 commit comments

Comments
 (0)