Disable the optimization mode preference if the app is not settable
https://screenshot.googleplex.com/BbQyEv6YCjPVwUF (allowlist) https://screenshot.googleplex.com/3hTb8TQwGMQqcwS https://screenshot.googleplex.com/6hdTAT2yNFucD9N (system app) https://screenshot.googleplex.com/77T5JyAD5nZJpDT (normal app) Fix: 281566984 Test: make test RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.* Change-Id: If7aa4b61bc806daa570187da24b7f454cd069dec
This commit is contained in:
@@ -343,7 +343,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
final String stateString;
|
final String stateString;
|
||||||
final String footerString;
|
final String footerString;
|
||||||
|
|
||||||
if (!mBatteryOptimizeUtils.isValidPackageName()) {
|
if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
|
||||||
// Present optimized only string when the package name is invalid.
|
// Present optimized only string when the package name is invalid.
|
||||||
stateString = context.getString(R.string.manager_battery_usage_optimized_only);
|
stateString = context.getString(R.string.manager_battery_usage_optimized_only);
|
||||||
footerString = context.getString(
|
footerString = context.getString(
|
||||||
|
@@ -128,11 +128,10 @@ public class BatteryOptimizeUtils {
|
|||||||
mContext, mode, mUid, mPackageName, mBatteryUtils, mPowerAllowListBackend, action);
|
mContext, mode, mUid, mPackageName, mBatteryUtils, mPowerAllowListBackend, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Return {@code true} if it is disabled for default optimized mode only. */
|
||||||
* Return {@code true} if package name is valid (can get an uid).
|
public boolean isDisabledForOptimizeModeOnly() {
|
||||||
*/
|
return getAllowList(mContext).contains(mPackageName)
|
||||||
public boolean isValidPackageName() {
|
|| mBatteryUtils.getPackageUid(mPackageName) == BatteryUtils.UID_NULL;
|
||||||
return mBatteryUtils.getPackageUid(mPackageName) != BatteryUtils.UID_NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -46,8 +46,8 @@ public class OptimizedPreferenceController extends AbstractPreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
if (!mBatteryOptimizeUtils.isValidPackageName()) {
|
if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
|
||||||
Log.d(TAG, "invalid package name, optimized states only");
|
Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
|
||||||
preference.setEnabled(true);
|
preference.setEnabled(true);
|
||||||
((SelectorWithWidgetPreference) preference).setChecked(true);
|
((SelectorWithWidgetPreference) preference).setChecked(true);
|
||||||
return;
|
return;
|
||||||
|
@@ -14,7 +14,6 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -43,8 +42,8 @@ public class RestrictedPreferenceController extends AbstractPreferenceController
|
|||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
|
|
||||||
if (!mBatteryOptimizeUtils.isValidPackageName()) {
|
if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
|
||||||
Log.d(TAG, "invalid package name, disable pref");
|
Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
|
||||||
preference.setEnabled(false);
|
preference.setEnabled(false);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -42,8 +42,8 @@ public class UnrestrictedPreferenceController extends AbstractPreferenceControll
|
|||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
|
|
||||||
if (!mBatteryOptimizeUtils.isValidPackageName()) {
|
if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
|
||||||
Log.d(TAG, "invalid package name, disable pref");
|
Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
|
||||||
preference.setEnabled(false);
|
preference.setEnabled(false);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -710,7 +710,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initPreferenceForTriState_isValidPackageName_hasCorrectString() {
|
public void initPreferenceForTriState_isValidPackageName_hasCorrectString() {
|
||||||
when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
|
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
|
||||||
|
|
||||||
mFragment.initPreferenceForTriState(mContext);
|
mFragment.initPreferenceForTriState(mContext);
|
||||||
|
|
||||||
@@ -720,7 +720,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initPreferenceForTriState_isSystemOrDefaultApp_hasCorrectString() {
|
public void initPreferenceForTriState_isSystemOrDefaultApp_hasCorrectString() {
|
||||||
when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
|
|
||||||
mFragment.initPreferenceForTriState(mContext);
|
mFragment.initPreferenceForTriState(mContext);
|
||||||
@@ -731,7 +731,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initPreferenceForTriState_hasCorrectString() {
|
public void initPreferenceForTriState_hasCorrectString() {
|
||||||
when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
|
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
|
||||||
|
|
||||||
mFragment.initPreferenceForTriState(mContext);
|
mFragment.initPreferenceForTriState(mContext);
|
||||||
|
@@ -136,16 +136,16 @@ public class BatteryOptimizeUtilsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsValidPackageName_InvalidPackageName_returnFalse() {
|
public void isDisabledForOptimizeModeOnly_invalidPackageName_returnTrue() {
|
||||||
final BatteryOptimizeUtils testBatteryOptimizeUtils =
|
final BatteryOptimizeUtils testBatteryOptimizeUtils =
|
||||||
new BatteryOptimizeUtils(mContext, UID, null);
|
new BatteryOptimizeUtils(mContext, UID, null);
|
||||||
|
|
||||||
assertThat(testBatteryOptimizeUtils.isValidPackageName()).isFalse();
|
assertThat(testBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsValidPackageName_validPackageName_returnTrue() {
|
public void isDisabledForOptimizeModeOnly_validPackageName_returnFalse() {
|
||||||
assertThat(mBatteryOptimizeUtils.isValidPackageName()).isTrue();
|
assertThat(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -52,7 +52,7 @@ public class OptimizedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_invalidPackage_prefEnabled() {
|
public void testUpdateState_invalidPackage_prefEnabled() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ public class OptimizedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
|
public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_OPTIMIZED);
|
BatteryOptimizeUtils.MODE_OPTIMIZED);
|
||||||
@@ -74,7 +74,7 @@ public class OptimizedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
@@ -85,7 +85,7 @@ public class OptimizedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isOptimizedStates_prefChecked() {
|
public void testUpdateState_isOptimizedStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_OPTIMIZED);
|
BatteryOptimizeUtils.MODE_OPTIMIZED);
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ public class OptimizedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_prefUnchecked() {
|
public void testUpdateState_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isValidPackage_prefEnabled() {
|
public void testUpdateState_isValidPackage_prefEnabled() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_invalidPackage_prefDisabled() {
|
public void testUpdateState_invalidPackage_prefDisabled() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
|
public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_RESTRICTED);
|
BatteryOptimizeUtils.MODE_RESTRICTED);
|
||||||
@@ -82,7 +82,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
@@ -93,7 +93,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isRestrictedStates_prefChecked() {
|
public void testUpdateState_isRestrictedStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_RESTRICTED);
|
BatteryOptimizeUtils.MODE_RESTRICTED);
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ public class RestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_prefUnchecked() {
|
public void testUpdateState_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -53,7 +52,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isValidPackage_prefEnabled() {
|
public void testUpdateState_isValidPackage_prefEnabled() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -62,7 +61,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_invalidPackage_prefDisabled() {
|
public void testUpdateState_invalidPackage_prefDisabled() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
@@ -71,7 +70,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
|
public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_UNRESTRICTED);
|
BatteryOptimizeUtils.MODE_UNRESTRICTED);
|
||||||
@@ -83,7 +82,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
@@ -94,7 +93,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_isUnrestrictedStates_prefChecked() {
|
public void testUpdateState_isUnrestrictedStates_prefChecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
|
||||||
BatteryOptimizeUtils.MODE_UNRESTRICTED);
|
BatteryOptimizeUtils.MODE_UNRESTRICTED);
|
||||||
|
|
||||||
@@ -105,7 +104,7 @@ public class UnrestrictedPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_prefUnchecked() {
|
public void testUpdateState_prefUnchecked() {
|
||||||
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
|
when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user