Update battery optimize page states condition

- Keep apps optimize state as what it set even it's a system or default
   app
 - Previously we force system/defualt apps present as Unrestricted mode
   only and disable other options but that can not shows that apps
   actual optimize states, it's possible to be other states even it's a
   system or default apps, so we change the UI logic back to: present
   it's actual states and disable other options when it's a system or
   default apps.

Bug: 234419032
Test: make SettingsRoboTests
Change-Id: Ib5b6cb0aacb570cb8d15b1bb9ac2d480356eda49
This commit is contained in:
Wesley Wang
2022-07-19 16:27:14 +08:00
parent d3bead822c
commit 7e8d79b3c2
6 changed files with 55 additions and 17 deletions

View File

@@ -53,16 +53,16 @@ public class OptimizedPreferenceController extends AbstractPreferenceController
return;
}
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, disable pref");
((SelectorWithWidgetPreference) preference).setChecked(false);
preference.setEnabled(false);
} else if (mBatteryOptimizeUtils.getAppOptimizationMode()
if (mBatteryOptimizeUtils.getAppOptimizationMode()
== BatteryOptimizeUtils.MODE_OPTIMIZED) {
Log.d(TAG, "is optimized states");
((SelectorWithWidgetPreference) preference).setChecked(true);
} else {
((SelectorWithWidgetPreference) preference).setChecked(false);
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, disable pref");
preference.setEnabled(false);
}
}
}

View File

@@ -51,16 +51,16 @@ public class RestrictedPreferenceController extends AbstractPreferenceController
preference.setEnabled(true);
}
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, disable pref");
((SelectorWithWidgetPreference) preference).setChecked(false);
preference.setEnabled(false);
} else if (mBatteryOptimizeUtils.getAppOptimizationMode()
if (mBatteryOptimizeUtils.getAppOptimizationMode()
== BatteryOptimizeUtils.MODE_RESTRICTED) {
Log.d(TAG, "is restricted states");
((SelectorWithWidgetPreference) preference).setChecked(true);
} else {
((SelectorWithWidgetPreference) preference).setChecked(false);
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, disable pref");
preference.setEnabled(false);
}
}
}

View File

@@ -50,15 +50,16 @@ public class UnrestrictedPreferenceController extends AbstractPreferenceControll
preference.setEnabled(true);
}
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, unrestricted states only");
((SelectorWithWidgetPreference) preference).setChecked(true);
} else if (mBatteryOptimizeUtils.getAppOptimizationMode()
if (mBatteryOptimizeUtils.getAppOptimizationMode()
== BatteryOptimizeUtils.MODE_UNRESTRICTED) {
Log.d(TAG, "is unrestricted states");
((SelectorWithWidgetPreference) preference).setChecked(true);
} else {
((SelectorWithWidgetPreference) preference).setChecked(false);
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, disable pref");
preference.setEnabled(false);
}
}
}

View File

@@ -60,6 +60,18 @@ public class OptimizedPreferenceControllerTest {
assertThat(mPreference.isChecked()).isTrue();
}
@Test
public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
assertThat(mPreference.isChecked()).isTrue();
}
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);

View File

@@ -69,7 +69,19 @@ public class RestrictedPreferenceControllerTest {
}
@Test
public void testUpdateState_isSystemOrDefaultApp_prefChecked() {
public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_RESTRICTED);
mController.updateState(mPreference);
assertThat(mPreference.isChecked()).isTrue();
}
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);

View File

@@ -70,13 +70,26 @@ public class UnrestrictedPreferenceControllerTest {
}
@Test
public void testUpdateState_isSystemOrDefaultApp_prefChecked() {
public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_UNRESTRICTED);
mController.updateState(mPreference);
assertThat(mPreference.isChecked()).isTrue();
}
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
mController.updateState(mPreference);
assertThat(mPreference.isChecked()).isTrue();
assertThat(mPreference.isChecked()).isFalse();
assertThat(mPreference.isEnabled()).isFalse();
}
@Test