Add content description string for '<1%'.
Bug: 322855583
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Change-Id: I704a591ab4cba21644e86457c2dd1000ceecc291
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dea6b60..b34a682 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6108,6 +6108,8 @@
<string name="battery_usage_spinner_view_by_systems">View by systems</string>
<!-- [CHAR_LIMIT=NONE] Less than some percentage, e.g. < 1% -->
<string name="battery_usage_less_than_percent">< <xliff:g id="percentage">%1$s</xliff:g></string>
+ <!-- [CHAR_LIMIT=NONE] Accessibility content description for less than some percentage, e.g. less than 1% -->
+ <string name="battery_usage_less_than_percent_content_description">less than <xliff:g id="percentage">%1$s</xliff:g></string>
<!-- Process Stats strings -->
<skip />
<!-- Description of battery information footer text. [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 47c171e..f9565f4 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -88,6 +88,7 @@
@VisibleForTesting FooterPreference mFooterPreference;
@VisibleForTesting BatteryDiffData mBatteryDiffData;
@VisibleForTesting String mPercentLessThanThresholdText;
+ @VisibleForTesting String mPercentLessThanThresholdContentDescription;
@VisibleForTesting boolean mIsHighlightSlot;
@VisibleForTesting int mAnomalyKeyNumber;
@VisibleForTesting String mAnomalyEntryKey;
@@ -202,10 +203,14 @@
mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY);
mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY);
mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
+ final String formatPercentage =
+ Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false);
mPercentLessThanThresholdText =
+ mPrefContext.getString(R.string.battery_usage_less_than_percent, formatPercentage);
+ mPercentLessThanThresholdContentDescription =
mPrefContext.getString(
- R.string.battery_usage_less_than_percent,
- Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false));
+ R.string.battery_usage_less_than_percent_content_description,
+ formatPercentage);
mAppListPreferenceGroup.setOrderingAsAdded(false);
mSpinnerPreference.initializeSpinner(
@@ -394,12 +399,15 @@
@VisibleForTesting
void setPreferencePercentage(PowerGaugePreference preference, BatteryDiffEntry entry) {
- preference.setPercentage(
- entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD
- ? mPercentLessThanThresholdText
- : Utils.formatPercentage(
- entry.getPercentage() + entry.getAdjustPercentageOffset(),
- /* round= */ true));
+ if (entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD) {
+ preference.setPercentage(mPercentLessThanThresholdText);
+ preference.setPercentageContentDescription(mPercentLessThanThresholdContentDescription);
+ } else {
+ preference.setPercentage(
+ Utils.formatPercentage(
+ entry.getPercentage() + entry.getAdjustPercentageOffset(),
+ /* round= */ true));
+ }
}
@VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
index fca618b..2f6b30e 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -47,6 +48,7 @@
private BatteryDiffEntry mBatteryDiffEntry;
private CharSequence mContentDescription;
private CharSequence mProgress;
+ private CharSequence mProgressContentDescription;
private boolean mShowAnomalyIcon;
public PowerGaugePreference(
@@ -87,6 +89,13 @@
/** Sets the percentage to show. */
public void setPercentage(CharSequence percentage) {
mProgress = percentage;
+ mProgressContentDescription = percentage;
+ notifyChanged();
+ }
+
+ /** Sets the content description of the percentage. */
+ public void setPercentageContentDescription(CharSequence contentDescription) {
+ mProgressContentDescription = contentDescription;
notifyChanged();
}
@@ -133,6 +142,9 @@
final TextView subtitle = (TextView) view.findViewById(R.id.widget_summary);
subtitle.setText(mProgress);
+ if (!TextUtils.isEmpty(mProgressContentDescription)) {
+ subtitle.setContentDescription(mProgressContentDescription);
+ }
if (mShowAnomalyIcon) {
subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds(
R.drawable.ic_warning_24dp, 0, 0, 0);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
index 7dcbe3a..4c64808 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
@@ -271,7 +271,7 @@
@Test
public void setPreferencePercent_lessThanThreshold_expectedFormat() {
- final PowerGaugePreference pref = new PowerGaugePreference(mContext);
+ final PowerGaugePreference pref = spy(new PowerGaugePreference(mContext));
final BatteryDiffEntry batteryDiffEntry =
createBatteryDiffEntry(
/* isSystem= */ true,
@@ -282,15 +282,18 @@
batteryDiffEntry.mConsumePower = 0.8;
batteryDiffEntry.setTotalConsumePower(100);
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
+ mBatteryUsageBreakdownController.mPercentLessThanThresholdContentDescription =
+ "test content description";
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
assertThat(pref.getPercentage()).isEqualTo("< 1%");
+ verify(pref).setPercentageContentDescription("test content description");
}
@Test
public void setPreferencePercent_greaterThanThreshold_expectedFormat() {
- final PowerGaugePreference pref = new PowerGaugePreference(mContext);
+ final PowerGaugePreference pref = spy(new PowerGaugePreference(mContext));
final BatteryDiffEntry batteryDiffEntry =
createBatteryDiffEntry(
/* isSystem= */ true,
@@ -301,10 +304,13 @@
batteryDiffEntry.mConsumePower = 16;
batteryDiffEntry.setTotalConsumePower(100);
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
+ mBatteryUsageBreakdownController.mPercentLessThanThresholdContentDescription =
+ "test content description";
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
assertThat(pref.getPercentage()).isEqualTo("16%");
+ verify(pref, never()).setPercentageContentDescription(any());
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
index ef4460b..f64ef49 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
@@ -101,4 +101,13 @@
assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription())
.isEqualTo(CONTENT_DESCRIPTION);
}
+
+ @Test
+ public void testOnBindViewHolder_bindPercentageContentDescription() {
+ mPowerGaugePreference.setPercentageContentDescription(CONTENT_DESCRIPTION);
+ mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder);
+
+ assertThat(mPreferenceViewHolder.findViewById(R.id.widget_summary).getContentDescription())
+ .isEqualTo(CONTENT_DESCRIPTION);
+ }
}