Add content description string for '<1%'.

Bug: 322855583
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Change-Id: I704a591ab4cba21644e86457c2dd1000ceecc291
This commit is contained in:
mxyyiyi
2024-04-18 18:59:25 +08:00
parent 3950632041
commit 6853021975
5 changed files with 47 additions and 10 deletions

View File

@@ -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">&lt; <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] -->

View File

@@ -88,6 +88,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
@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 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
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 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
@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

View File

@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage;
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 @@ public class PowerGaugePreference extends AppPreference {
private BatteryDiffEntry mBatteryDiffEntry;
private CharSequence mContentDescription;
private CharSequence mProgress;
private CharSequence mProgressContentDescription;
private boolean mShowAnomalyIcon;
public PowerGaugePreference(
@@ -87,6 +89,13 @@ public class PowerGaugePreference extends AppPreference {
/** 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 @@ public class PowerGaugePreference extends AppPreference {
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);

View File

@@ -271,7 +271,7 @@ public final class BatteryUsageBreakdownControllerTest {
@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 @@ public final class BatteryUsageBreakdownControllerTest {
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 @@ public final class BatteryUsageBreakdownControllerTest {
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

View File

@@ -101,4 +101,13 @@ public class PowerGaugePreferenceTest {
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);
}
}