Merge "Fix NPE on modes page when schedule has no days" into main

This commit is contained in:
Treehugger Robot
2025-01-08 11:17:09 -08:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 3 deletions

View File

@@ -109,9 +109,11 @@ class ZenModeTriggerUpdatePreferenceController extends AbstractZenModePreference
tryParseScheduleConditionId(mode.getRule().getConditionId());
if (schedule != null) {
preference.setTitle(SystemZenRules.getTimeSummary(mContext, schedule));
preference.setSummary(Utils.createAccessibleSequence(
SystemZenRules.getDaysOfWeekShort(mContext, schedule),
SystemZenRules.getDaysOfWeekFull(mContext, schedule)));
String shortDaysSummary = SystemZenRules.getDaysOfWeekShort(mContext, schedule);
String fullDaysSummary = SystemZenRules.getDaysOfWeekFull(mContext, schedule);
preference.setSummary(shortDaysSummary != null && fullDaysSummary != null
? Utils.createAccessibleSequence(shortDaysSummary, fullDaysSummary)
: shortDaysSummary);
} else {
// Fallback, but shouldn't happen.
Log.wtf(TAG, "SCHEDULE_TIME mode without schedule: " + mode);

View File

@@ -309,6 +309,25 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
.isEqualTo(ZenModeSetScheduleFragment.class.getName());
}
@Test
public void updateState_scheduleTimeRuleWithNoDays_emptySummary() {
ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
scheduleInfo.days = new int[] {};
scheduleInfo.startHour = 1;
scheduleInfo.endHour = 15;
ZenMode mode = new TestModeBuilder()
.setConditionId(ZenModeConfig.toScheduleConditionId(scheduleInfo))
.setPackage(SystemZenRules.PACKAGE_ANDROID)
.setType(TYPE_SCHEDULE_TIME)
.setTriggerDescription("some schedule")
.build();
mController.updateState(mPreference, mode);
assertThat(mPreference.getTitle()).isEqualTo("1:00 AM - 3:00 PM");
assertThat(mPreference.getSummary()).isNull();
}
@Test
public void updateState_appWithConfigActivity_showsLinkToConfigActivity() {
ZenMode mode = new TestModeBuilder()