summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Arc Wang <arcwang@google.com> 2021-04-22 20:09:44 +0800
committer Arc Wang <arcwang@google.com> 2021-04-22 21:26:21 +0800
commit7274cd610406b12db0c55b22176d7e55ce080d7e (patch)
treec9d906160d4bc0374792751145e42b1552e012d5
parent78d8d4d6cffc3b2e92b834444ea515d3195f7a20 (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
-rw-r--r--packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java2
-rw-r--r--packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java31
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