Add package to DND alarm broadcast

Test: ScheduleConditionProviderTest
Fixes: 204213412
Change-Id: I3698d82dcce970f548619f84538d91607bf3c1d3
This commit is contained in:
Julia Reynolds
2021-11-05 09:25:47 -04:00
parent 9fef807c68
commit 39e58e2f9d
2 changed files with 21 additions and 6 deletions

View File

@@ -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());

View File

@@ -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);