From f891cef5723c7b1ff6d6628e18e4feb48b0ac85e Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Tue, 20 Apr 2021 15:55:20 +0800 Subject: [PATCH] Fix UsageProgressBarPreference progress bug when zero total size When zero total size, should update progress to zero. Bug: 185869705 Test: atest UsageProgressBarPreferenceTest Change-Id: I02dae2fbea23b56dad07941c614d9ef3500eeae4 --- .../widget/UsageProgressBarPreference.java | 9 ++++++++- .../widget/UsageProgressBarPreferenceTest.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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 fbf325c7603aa..0a8570b1b1803 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java +++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java @@ -113,7 +113,14 @@ public class UsageProgressBarPreference extends Preference { /** Set percentage of the progress bar. */ public void setPercent(long usage, long total) { - if (total == 0L || usage > total) { + if (usage > total) { + return; + } + if (total == 0L) { + if (mPercent != 0) { + mPercent = 0; + notifyChanged(); + } return; } final int percent = (int) (usage / (double) total * 100); 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 cd78addf254fb..83bd5703faf11 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 @@ -124,6 +124,17 @@ public class UsageProgressBarPreferenceTest { assertThat(progressBar.getProgress()).isEqualTo((int) (31.0f / 80 * 100)); } + @Test + public void setPercent_totalSizeZero_getProgressZero() { + mUsageProgressBarPreference.setPercent(0 /* usage */, 0 /* total */); + + mUsageProgressBarPreference.onBindViewHolder(mViewHolder); + + final ProgressBar progressBar = (ProgressBar) mViewHolder + .findViewById(android.R.id.progress); + assertThat(progressBar.getProgress()).isEqualTo(0); + } + @Test public void setCustomContent_setNullImageView_noChild() { mUsageProgressBarPreference.setCustomContent(null /* imageView */);