diff options
| author | 2018-03-29 18:14:04 -0400 | |
|---|---|---|
| committer | 2018-03-29 18:14:04 -0400 | |
| commit | 369dd4257ca7928ca525ff1e1391fe985bee113b (patch) | |
| tree | 54d78b54351968ece056e74a292513c87ad910df | |
| parent | f0e720ecde1a8c3e4f99ede06510e17643689df5 (diff) | |
Don't exit dnd rule for old alarms
Bug: 77209521
Test: atest ScheduleCalendarTest
Change-Id: I394a6a74872f76f90b75238593197bb6c50531ef
| -rw-r--r-- | core/java/android/service/notification/ScheduleCalendar.java | 3 | ||||
| -rw-r--r-- | services/tests/uiservicestests/src/com/android/server/notification/ScheduleCalendarTest.java | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/core/java/android/service/notification/ScheduleCalendar.java b/core/java/android/service/notification/ScheduleCalendar.java index 8a7ff4da26e3..01287104f9b2 100644 --- a/core/java/android/service/notification/ScheduleCalendar.java +++ b/core/java/android/service/notification/ScheduleCalendar.java @@ -144,7 +144,8 @@ public class ScheduleCalendar { } return mSchedule.exitAtAlarm && mSchedule.nextAlarm != 0 - && time >= mSchedule.nextAlarm; + && time >= mSchedule.nextAlarm + && isInSchedule(mSchedule.nextAlarm); } private boolean isInSchedule(int daysOffset, long time, long start, long end) { diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleCalendarTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleCalendarTest.java index 36136a8932c9..ce7445788489 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ScheduleCalendarTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ScheduleCalendarTest.java @@ -206,6 +206,31 @@ public class ScheduleCalendarTest extends UiServiceTestCase { } @Test + public void testShouldExitForAlarm_oldAlarm() { + // Cal: today 2:15pm + Calendar cal = new GregorianCalendar(); + cal.set(Calendar.HOUR_OF_DAY, 14); + cal.set(Calendar.MINUTE, 15); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + + // ScheduleInfo: today 12:16pm - today 3:15pm + mScheduleInfo.days = new int[] {getTodayDay()}; + mScheduleInfo.startHour = 12; + mScheduleInfo.endHour = 3; + mScheduleInfo.startMinute = 16; + mScheduleInfo.endMinute = 15; + mScheduleInfo.exitAtAlarm = true; + mScheduleInfo.nextAlarm = 1000; // very old alarm + + mScheduleCalendar.setSchedule(mScheduleInfo); + assertTrue(mScheduleCalendar.isInSchedule(cal.getTimeInMillis())); + + // don't exit for an alarm if it's an old alarm + assertFalse(mScheduleCalendar.shouldExitForAlarm(1000)); + } + + @Test public void testMaybeSetNextAlarm_settingOff() { mScheduleInfo.exitAtAlarm = false; mScheduleInfo.nextAlarm = 0; |