diff options
author | 2021-04-22 20:09:44 +0800 | |
---|---|---|
committer | 2021-04-22 21:26:21 +0800 | |
commit | 7274cd610406b12db0c55b22176d7e55ce080d7e (patch) | |
tree | c9d906160d4bc0374792751145e42b1552e012d5 | |
parent | 78d8d4d6cffc3b2e92b834444ea515d3195f7a20 (diff) |
Fix UsageProgressBarPreference number pattern problem
Original design uses the pattern digits + . + digits
to recognize a number. However, some locales (e.g., Dutch)
uses comma (,) as floating point.
This change uses the pattern digits + . or , + digits
to recognize a number.
Bug: 185666660
Test: atest UsageProgressBarPreferenceTest
Change-Id: Ie72b3e8a5ddc4eb3621bdd72976836b9285e96d0
2 files changed, 27 insertions, 6 deletions
diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java index 0a8570b1b180..782b483848e6 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java +++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java @@ -40,7 +40,7 @@ import java.util.regex.Pattern; */ public class UsageProgressBarPreference extends Preference { - private final Pattern mNumberPattern = Pattern.compile("[\\d]*\\.?[\\d]+"); + private final Pattern mNumberPattern = Pattern.compile("[\\d]*[\\.,]?[\\d]+"); private CharSequence mUsageSummary; private CharSequence mTotalSummary; diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java index 42fb5d0daca4..a9ad00d90ab8 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java @@ -75,20 +75,41 @@ public class UsageProgressBarPreferenceTest { final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); final SpannedString summary = new SpannedString(usageSummary.getText()); - assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length) - .isEqualTo(1); + final AbsoluteSizeSpan[] spans = summary + .getSpans(0, summary.length(), AbsoluteSizeSpan.class); + assertThat(spans.length).isEqualTo(1); + assertThat(summary.getSpanStart(spans[0])).isEqualTo(0); + assertThat(summary.getSpanEnd(spans[0])).isEqualTo(2); } @Test - public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() { + public void setUsageSummary_floatingPointNumber_findAbsoluteSizeSpan() { mUsageProgressBarPreference.setUsageSummary("3.14Test"); mUsageProgressBarPreference.onBindViewHolder(mViewHolder); final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); final SpannedString summary = new SpannedString(usageSummary.getText()); - assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length) - .isEqualTo(1); + final AbsoluteSizeSpan[] spans = summary + .getSpans(0, summary.length(), AbsoluteSizeSpan.class); + assertThat(spans.length).isEqualTo(1); + assertThat(summary.getSpanStart(spans[0])).isEqualTo(0); + assertThat(summary.getSpanEnd(spans[0])).isEqualTo(4); + } + + @Test + public void setUsageSummary_commaFloatingPointNumber_findAbsoluteSizeSpan() { + mUsageProgressBarPreference.setUsageSummary("3,14Test"); + + mUsageProgressBarPreference.onBindViewHolder(mViewHolder); + + final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); + final SpannedString summary = new SpannedString(usageSummary.getText()); + final AbsoluteSizeSpan[] spans = summary + .getSpans(0, summary.length(), AbsoluteSizeSpan.class); + assertThat(spans.length).isEqualTo(1); + assertThat(summary.getSpanStart(spans[0])).isEqualTo(0); + assertThat(summary.getSpanEnd(spans[0])).isEqualTo(4); } @Test |