Fix battery optimization display problems

Root cause:
RequestIgnoreBatteryOptimizations adds package in
PowerWhitelistManager#addToWhitelist for intent
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.

Settings UI uses PowerAllowlistBackend to check if
an APP is in power allow list. Each UI component should
PowerAllowlistBackend#refreshList() or UI will get
a stale result.

Solution:
This change fixes below display problems by refreshing
allow list from DeviceIdleController service.

1. Battery optimization summary in Battery usage details.
2. Battery optimization list.

BYPASS_INCLUSIVE_LANGUAGE_REASON=I need the object name
to describe the root cause.

Bug: 171064162
Test: make RunSettingsRoboTests ROBOTEST_FILTER=BatteryOptimizationPreferenceControllerTest
      manual
      Switch battery optimazion of a APP and observer the UI display.
Change-Id: I75b269eec5d1b904dcaa71948798f169d4e4ddfa
This commit is contained in:
Arc Wang
2020-10-21 22:22:10 +08:00
parent b6bba3e9a2
commit f81d22ef28
3 changed files with 9 additions and 0 deletions

View File

@@ -69,6 +69,7 @@ public class BatteryOptimizationPreferenceController extends AbstractPreferenceC
@Override
public void updateState(Preference preference) {
mBackend.refreshList();
final boolean isAllowlisted = mBackend.isAllowlisted(mPackageName);
preference.setSummary(isAllowlisted ? R.string.high_power_on : R.string.high_power_off);
}