From 39e58e2f9d934e4b47285d28ef73ef9cd6d8861f Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Fri, 5 Nov 2021 09:25:47 -0400 Subject: [PATCH] Add package to DND alarm broadcast Test: ScheduleConditionProviderTest Fixes: 204213412 Change-Id: I3698d82dcce970f548619f84538d91607bf3c1d3 --- .../ScheduleConditionProvider.java | 19 +++++++++++++------ .../ScheduleConditionProviderTest.java | 8 ++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java index 14affe7b4dd56..92cdce7ddceb4 100644 --- a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java +++ b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java @@ -40,6 +40,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.server.notification.NotificationManagerService.DumpFilter; +import com.android.server.pm.PackageManagerService; import java.io.PrintWriter; import java.util.ArrayList; @@ -218,12 +219,7 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { private void updateAlarm(long now, long time) { final AlarmManager alarms = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); - final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, - REQUEST_CODE_EVALUATE, - new Intent(ACTION_EVALUATE) - .addFlags(Intent.FLAG_RECEIVER_FOREGROUND) - .putExtra(EXTRA_TIME, time), - PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + final PendingIntent pendingIntent = getPendingIntent(time); alarms.cancel(pendingIntent); if (time > now) { if (DEBUG) Slog.d(TAG, String.format("Scheduling evaluate for %s, in %s, now=%s", @@ -234,6 +230,17 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { } } + @VisibleForTesting + PendingIntent getPendingIntent(long time) { + return PendingIntent.getBroadcast(mContext, + REQUEST_CODE_EVALUATE, + new Intent(ACTION_EVALUATE) + .setPackage(PackageManagerService.PLATFORM_PACKAGE_NAME) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND) + .putExtra(EXTRA_TIME, time), + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + } + public long getNextAlarm() { final AlarmManager.AlarmClockInfo info = mAlarmManager.getNextAlarmClock( ActivityManager.getCurrentUser()); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java index 7446e9e0bb9f6..7d89d87b6efe9 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleConditionProviderTest.java @@ -7,6 +7,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import android.app.Application; +import android.app.PendingIntent; import android.content.Intent; import android.net.Uri; import android.service.notification.Condition; @@ -18,6 +19,7 @@ import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; import com.android.server.UiServiceTestCase; +import com.android.server.pm.PackageManagerService; import org.junit.Before; import org.junit.Test; @@ -326,6 +328,12 @@ public class ScheduleConditionProviderTest extends UiServiceTestCase { assertEquals(Condition.STATE_FALSE, condition.state); } + @Test + public void testGetPendingIntent() { + PendingIntent pi = mService.getPendingIntent(1000); + assertEquals(PackageManagerService.PLATFORM_PACKAGE_NAME, pi.getIntent().getPackage()); + } + private Calendar getNow() { Calendar now = new GregorianCalendar(); now.set(Calendar.HOUR_OF_DAY, 14);