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 */);