From 1e8933123a7fc84ac64c1194ebf3b6458f9cb1fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Hern=C3=A1ndez?= Date: Mon, 28 Oct 2024 12:00:28 +0100 Subject: [PATCH] Add TtsSpan to schedule-time modes trigger segment so that full day names are read Bug: 370358575 Test: atest ZenModeTriggerUpdatePreferenceControllerTest + manual with Talkback Flag: android.app.modes_ui Change-Id: Ia9ed53c75176d887f26da90a713f1038cf26e01f --- .../ZenModeTriggerUpdatePreferenceController.java | 5 ++++- .../ZenModeTriggerUpdatePreferenceControllerTest.java | 11 ++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java index 014a1905b3b..13d5c6e9904 100644 --- a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java @@ -40,6 +40,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settingslib.PrimarySwitchPreference; import com.android.settingslib.notification.modes.ZenMode; import com.android.settingslib.notification.modes.ZenModesBackend; @@ -108,7 +109,9 @@ class ZenModeTriggerUpdatePreferenceController extends AbstractZenModePreference tryParseScheduleConditionId(mode.getRule().getConditionId()); if (schedule != null) { preference.setTitle(SystemZenRules.getTimeSummary(mContext, schedule)); - preference.setSummary(SystemZenRules.getShortDaysSummary(mContext, schedule)); + preference.setSummary(Utils.createAccessibleSequence( + SystemZenRules.getDaysOfWeekShort(mContext, schedule), + SystemZenRules.getDaysOfWeekFull(mContext, schedule))); } else { // Fallback, but shouldn't happen. Log.wtf(TAG, "SCHEDULE_TIME mode without schedule: " + mode); diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java index b7af71b50fd..d916dcfb068 100644 --- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java @@ -44,6 +44,8 @@ import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.service.notification.SystemZenRules; import android.service.notification.ZenModeConfig; +import android.text.Spanned; +import android.text.style.TtsSpan; import android.widget.TextView; import androidx.preference.PreferenceManager; @@ -293,7 +295,14 @@ public class ZenModeTriggerUpdatePreferenceControllerTest { assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.getTitle()).isEqualTo("1:00 AM - 3:00 PM"); - assertThat(mPreference.getSummary()).isEqualTo("Mon - Tue, Thu"); + Spanned summary = (Spanned) mPreference.getSummary(); + assertThat(summary.toString()).isEqualTo("Mon - Tue, Thu"); + TtsSpan[] ttsSpans = summary.getSpans(0, summary.length(), TtsSpan.class); + assertThat(ttsSpans).hasLength(1); + assertThat(ttsSpans[0].getType()).isEqualTo(TtsSpan.TYPE_TEXT); + assertThat(ttsSpans[0].getArgs().getString(TtsSpan.ARG_TEXT)).isEqualTo( + "Monday to Tuesday, Thursday"); + // Destination as written into the intent by SubSettingLauncher assertThat( mPreference.getIntent().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))