Merge "Help talkback to read the hyphen of time frame '{day}{time}-{time}'" into main
This commit is contained in:
@@ -6080,6 +6080,8 @@
|
||||
<string name="battery_usage_chart_label_now">now</string>
|
||||
<!-- [CHAR_LIMIT=NONE] A hyphen for two timestamps. For example, "6 AM - 8 AM", which means "from 6 AM to 8 AM". Please notice the spaces around the hyphen -->
|
||||
<string name="battery_usage_timestamps_hyphen"><xliff:g id="from_timestamp">%1$s</xliff:g> - <xliff:g id="to_timestamp">%2$s</xliff:g></string>
|
||||
<!-- [CHAR_LIMIT=NONE] Accessibility content description for two timestamps. For example, Battery usage for "6 AM to 8 PM" -->
|
||||
<string name="battery_usage_timestamps_content_description"><xliff:g id="from_timestamp">%1$s</xliff:g> to <xliff:g id="to_timestamp">%2$s</xliff:g></string>
|
||||
<!-- [CHAR_LIMIT=NONE] The first slot is a week day (e.g. "Monday"); the second slot is a hourly time span (e.g. "6 AM - 8 AM"). -->
|
||||
<string name="battery_usage_day_and_hour"><xliff:g id="day">%1$s</xliff:g> <xliff:g id="hour">%2$s</xliff:g></string>
|
||||
<!-- [CHAR_LIMIT=NONE] Accessibility content description for each slot in battery chart view. -->
|
||||
|
||||
@@ -404,7 +404,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
}
|
||||
}
|
||||
|
||||
String getSlotInformation() {
|
||||
String getSlotInformation(boolean isAccessibilityText) {
|
||||
if (mDailyViewModel == null || mHourlyViewModels == null) {
|
||||
// No data
|
||||
return null;
|
||||
@@ -413,13 +413,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
return null;
|
||||
}
|
||||
|
||||
final String selectedDayText = mDailyViewModel.getFullText(mDailyChartIndex);
|
||||
final String selectedDayText =
|
||||
isAccessibilityText
|
||||
? mDailyViewModel.getContentDescription(mDailyChartIndex)
|
||||
: mDailyViewModel.getFullText(mDailyChartIndex);
|
||||
if (mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
|
||||
return selectedDayText;
|
||||
}
|
||||
|
||||
final String selectedHourText =
|
||||
mHourlyViewModels.get(mDailyChartIndex).getFullText(mHourlyChartIndex);
|
||||
isAccessibilityText
|
||||
? mHourlyViewModels
|
||||
.get(mDailyChartIndex)
|
||||
.getContentDescription(mHourlyChartIndex)
|
||||
: mHourlyViewModels.get(mDailyChartIndex).getFullText(mHourlyChartIndex);
|
||||
if (isBatteryLevelDataInOneDay()) {
|
||||
return selectedHourText;
|
||||
}
|
||||
@@ -444,7 +451,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
}
|
||||
|
||||
private String getAccessibilityAnnounceMessage() {
|
||||
final String slotInformation = getSlotInformation();
|
||||
final String slotInformation = getSlotInformation(/* isAccessibilityText= */ true);
|
||||
final String slotInformationMessage =
|
||||
slotInformation == null
|
||||
? mPrefContext.getString(
|
||||
@@ -600,6 +607,11 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
|
||||
private abstract class BaseLabelTextGenerator
|
||||
implements BatteryChartViewModel.LabelTextGenerator {
|
||||
@Override
|
||||
public String generateContentDescription(List<Long> timestamps, int index) {
|
||||
return generateFullText(timestamps, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateSlotBatteryLevelText(List<Integer> levels, int index) {
|
||||
final int fromBatteryLevelIndex =
|
||||
@@ -673,6 +685,16 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
generateText(timestamps, index + 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateContentDescription(List<Long> timestamps, int index) {
|
||||
return index == timestamps.size() - 1
|
||||
? generateText(timestamps, index)
|
||||
: mContext.getString(
|
||||
R.string.battery_usage_timestamps_content_description,
|
||||
generateText(timestamps, index),
|
||||
generateText(timestamps, index + 1));
|
||||
}
|
||||
|
||||
HourlyChartLabelTextGenerator updateSpecialCaseContext(
|
||||
@NonNull final BatteryLevelData batteryLevelData) {
|
||||
BatteryLevelData.PeriodBatteryLevelData firstDayLevelData =
|
||||
|
||||
@@ -784,7 +784,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
|
||||
}
|
||||
final AccessibilityNodeInfo childInfo =
|
||||
new AccessibilityNodeInfo(BatteryChartView.this, index);
|
||||
final String slotTimeInfo = mViewModel.getFullText(index);
|
||||
final String slotTimeInfo = mViewModel.getContentDescription(index);
|
||||
final String batteryLevelInfo = mViewModel.getSlotBatteryLevelText(index);
|
||||
onInitializeAccessibilityNodeInfo(childInfo);
|
||||
childInfo.setClickable(isValidToDraw(mViewModel, index));
|
||||
|
||||
@@ -43,9 +43,12 @@ class BatteryChartViewModel {
|
||||
/** Generates the label text. The text may be abbreviated to save space. */
|
||||
String generateText(List<Long> timestamps, int index);
|
||||
|
||||
/** Generates the full text for accessibility. */
|
||||
/** Generates the full text for slot information. */
|
||||
String generateFullText(List<Long> timestamps, int index);
|
||||
|
||||
/** Generates the full text for accessibility. */
|
||||
String generateContentDescription(List<Long> timestamps, int index);
|
||||
|
||||
/** Generates the battery level text of a slot for accessibility.*/
|
||||
String generateSlotBatteryLevelText(List<Integer> levels, int index);
|
||||
}
|
||||
@@ -56,6 +59,7 @@ class BatteryChartViewModel {
|
||||
private final LabelTextGenerator mLabelTextGenerator;
|
||||
private final String[] mTexts;
|
||||
private final String[] mFullTexts;
|
||||
private final String[] mContentDescription;
|
||||
private final String[] mBatteryLevelTexts;
|
||||
|
||||
private int mSelectedIndex = SELECTED_INDEX_ALL;
|
||||
@@ -79,6 +83,7 @@ class BatteryChartViewModel {
|
||||
mLabelTextGenerator = labelTextGenerator;
|
||||
mTexts = new String[size()];
|
||||
mFullTexts = new String[size()];
|
||||
mContentDescription = new String[size()];
|
||||
// Last one for SELECTED_INDEX_ALL
|
||||
mBatteryLevelTexts = new String[size() + 1];
|
||||
}
|
||||
@@ -105,6 +110,14 @@ class BatteryChartViewModel {
|
||||
return mFullTexts[index];
|
||||
}
|
||||
|
||||
public String getContentDescription(int index) {
|
||||
if (mContentDescription[index] == null) {
|
||||
mContentDescription[index] =
|
||||
mLabelTextGenerator.generateContentDescription(mTimestamps, index);
|
||||
}
|
||||
return mContentDescription[index];
|
||||
}
|
||||
|
||||
public String getSlotBatteryLevelText(int index) {
|
||||
final int textIndex = index != SELECTED_INDEX_ALL ? index : size();
|
||||
if (mBatteryLevelTexts[textIndex] == null) {
|
||||
|
||||
@@ -239,7 +239,9 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
||||
}
|
||||
final int dailyIndex = mBatteryChartPreferenceController.getDailyChartIndex();
|
||||
final int hourlyIndex = mBatteryChartPreferenceController.getHourlyChartIndex();
|
||||
final String slotInformation = mBatteryChartPreferenceController.getSlotInformation();
|
||||
final String slotInformation =
|
||||
mBatteryChartPreferenceController.getSlotInformation(
|
||||
/* isAccessibilityText= */ false);
|
||||
final BatteryDiffData slotUsageData = mBatteryUsageMap.get(dailyIndex).get(hourlyIndex);
|
||||
mScreenOnTimeController.handleSceenOnTimeUpdated(
|
||||
slotUsageData != null ? slotUsageData.getScreenOnTime() : 0L, slotInformation);
|
||||
|
||||
@@ -383,7 +383,7 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(null);
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo(null);
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 100% to 66%");
|
||||
}
|
||||
@@ -394,7 +394,7 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 0;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(null);
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo(null);
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 100% to 66%");
|
||||
}
|
||||
@@ -405,7 +405,7 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 1;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo("Sunday");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo("Sunday");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 83% to 59%");
|
||||
}
|
||||
@@ -416,8 +416,10 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 0;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = 2;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation())
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
|
||||
.isEqualTo("10 AM - 12 PM");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
|
||||
.isEqualTo("10 AM to 12 PM");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 97% to 95%");
|
||||
}
|
||||
@@ -428,8 +430,10 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 1;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = 8;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation())
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
|
||||
.isEqualTo("Sunday 4 PM - 6 PM");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
|
||||
.isEqualTo("Sunday 4 PM to 6 PM");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 67% to 65%");
|
||||
}
|
||||
@@ -440,8 +444,10 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 0;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = 0;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation())
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
|
||||
.isEqualTo("7:01 AM - 8 AM");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
|
||||
.isEqualTo("7:01 AM to 8 AM");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 100% to 99%");
|
||||
}
|
||||
@@ -452,7 +458,10 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 0;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = 3;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo("12 PM - now");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
|
||||
.isEqualTo("12 PM - now");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
|
||||
.isEqualTo("12 PM to now");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 95% to 66%");
|
||||
}
|
||||
@@ -463,8 +472,10 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mBatteryChartPreferenceController.mDailyChartIndex = 0;
|
||||
mBatteryChartPreferenceController.mHourlyChartIndex = 0;
|
||||
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation())
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
|
||||
.isEqualTo("7:01 AM - now");
|
||||
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
|
||||
.isEqualTo("7:01 AM to now");
|
||||
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
|
||||
.isEqualTo("Battery level percentage from 100% to 66%");
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public final class ScreenOnTimeControllerTest {
|
||||
@Test
|
||||
public void handleSceenOnTimeUpdated_nullScreenOnTime_hideAllPreference() {
|
||||
mScreenOnTimeController.handleSceenOnTimeUpdated(
|
||||
/* screenOnTime= */ null, "Friday 12:00-now");
|
||||
/* screenOnTime= */ null, "Friday 12:00 to now");
|
||||
|
||||
verify(mRootPreference).setVisible(false);
|
||||
verify(mScreenOnTimeTextPreference).setVisible(false);
|
||||
@@ -84,9 +84,9 @@ public final class ScreenOnTimeControllerTest {
|
||||
|
||||
@Test
|
||||
public void showCategoryTitle_notNull_slotTimestamp() {
|
||||
mScreenOnTimeController.showCategoryTitle("Friday 12:00-now");
|
||||
mScreenOnTimeController.showCategoryTitle("Friday 12:00 to now");
|
||||
|
||||
verify(mRootPreference).setTitle("Screen time for Friday 12:00-now");
|
||||
verify(mRootPreference).setTitle("Screen time for Friday 12:00 to now");
|
||||
verify(mRootPreference).setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user