Refactor BatteryOptimizeUtils from enum to @IntDef
Based on the Android API Council guideline, we should avoid using the
Enum structure to define the constant definition.
go/android-api-guidelines#avoid-enum
Bug: 197595292
Test: make SettingsRoboTests
Change-Id: I4b22f0abde7f4ce2c3a0b076db786e619783d93e
Merged-In: I4b22f0abde7f4ce2c3a0b076db786e619783d93e
diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
index 44990ff..eebfaf7 100644
--- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
@@ -37,8 +37,6 @@
import androidx.annotation.VisibleForTesting;
-import com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -135,13 +133,16 @@
for (ApplicationInfo info : applications) {
final int mode = appOps.checkOpNoThrow(
AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, info.uid, info.packageName);
- final AppUsageState state = BatteryOptimizeUtils.getAppUsageState(
+ @BatteryOptimizeUtils.OptimizationMode
+ final int optimizationMode = BatteryOptimizeUtils.getAppOptimizationMode(
mode, allowlistedApps.contains(info.packageName));
// Ignores default optimized or unknown state.
- if (state == AppUsageState.OPTIMIZED || state == AppUsageState.UNKNOWN) {
+ if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED
+ || optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN) {
continue;
}
- final String packageOptimizeMode = info.packageName + DELIMITER_MODE + state;
+ final String packageOptimizeMode =
+ info.packageName + DELIMITER_MODE + optimizationMode;
builder.append(packageOptimizeMode + DELIMITER);
debugLog(packageOptimizeMode);
}
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
index 0be9060..76c1ca7 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
@@ -16,6 +16,7 @@
package com.android.settings.fuelgauge;
+import android.annotation.IntDef;
import android.app.AppOpsManager;
import android.content.Context;
import android.util.Log;
@@ -24,6 +25,9 @@
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/** A utility class for application usage operation. */
public class BatteryOptimizeUtils {
private static final String TAG = "BatteryOptimizeUtils";
@@ -32,21 +36,27 @@
@VisibleForTesting AppOpsManager mAppOpsManager;
@VisibleForTesting BatteryUtils mBatteryUtils;
@VisibleForTesting PowerAllowlistBackend mPowerAllowListBackend;
+
private final String mPackageName;
private final int mUid;
private int mMode;
private boolean mAllowListed;
- /**
- * Usage type of application.
- */
- public enum AppUsageState {
- UNKNOWN,
- RESTRICTED,
- UNRESTRICTED,
- OPTIMIZED,
- }
+ // Optimization modes.
+ static final int MODE_UNKNOWN = 0;
+ static final int MODE_RESTRICTED = 1;
+ static final int MODE_UNRESTRICTED = 2;
+ static final int MODE_OPTIMIZED = 3;
+
+ @IntDef(prefix = {"MODE_"}, value = {
+ MODE_UNKNOWN,
+ MODE_RESTRICTED,
+ MODE_UNRESTRICTED,
+ MODE_OPTIMIZED,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ static @interface OptimizationMode {}
public BatteryOptimizeUtils(Context context, int uid, String packageName) {
mUid = uid;
@@ -59,41 +69,44 @@
mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName);
}
- /** Gets the {@link AppUsageState} based on mode and allowed list. */
- public static AppUsageState getAppUsageState(int mode, boolean isAllowListed) {
+ /** Gets the {@link OptimizationMode} based on mode and allowed list. */
+ @OptimizationMode
+ public static int getAppOptimizationMode(int mode, boolean isAllowListed) {
if (!isAllowListed && mode == AppOpsManager.MODE_IGNORED) {
- return AppUsageState.RESTRICTED;
+ return MODE_RESTRICTED;
} else if (isAllowListed && mode == AppOpsManager.MODE_ALLOWED) {
- return AppUsageState.UNRESTRICTED;
+ return MODE_UNRESTRICTED;
} else if (!isAllowListed && mode == AppOpsManager.MODE_ALLOWED) {
- return AppUsageState.OPTIMIZED;
+ return MODE_OPTIMIZED;
} else {
- return AppUsageState.UNKNOWN;
+ return MODE_UNKNOWN;
}
}
- /** Gets the current {@link AppUsageState}. */
- public AppUsageState getAppUsageState() {
+ /** Gets the {@link OptimizationMode} for associated app. */
+ @OptimizationMode
+ public int getAppOptimizationMode() {
refreshState();
- return getAppUsageState(mMode, mAllowListed);
+ return getAppOptimizationMode(mMode, mAllowListed);
}
- public void setAppUsageState(AppUsageState state) {
- switch (state) {
- case RESTRICTED:
+ /** Sets the {@link OptimizationMode} for associated app. */
+ public void setAppOptimizationMode(@OptimizationMode int mode) {
+ switch (mode) {
+ case MODE_RESTRICTED:
mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
mPowerAllowListBackend.removeApp(mPackageName);
break;
- case UNRESTRICTED:
+ case MODE_UNRESTRICTED:
mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
mPowerAllowListBackend.addApp(mPackageName);
break;
- case OPTIMIZED:
+ case MODE_OPTIMIZED:
mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
mPowerAllowListBackend.removeApp(mPackageName);
break;
default:
- Log.d(TAG, "set unknown app usage state.");
+ Log.d(TAG, "set unknown app optimization mode.");
}
}
diff --git a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
index b2da356..ffec50d 100644
--- a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
@@ -16,8 +16,6 @@
package com.android.settings.fuelgauge;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.OPTIMIZED;
-
import android.content.Context;
import android.util.Log;
@@ -59,7 +57,8 @@
Log.d(TAG, "is system or default app, disable pref");
((RadioButtonPreference) preference).setChecked(false);
preference.setEnabled(false);
- } else if (mBatteryOptimizeUtils.getAppUsageState() == OPTIMIZED) {
+ } else if (mBatteryOptimizeUtils.getAppOptimizationMode()
+ == BatteryOptimizeUtils.MODE_OPTIMIZED) {
Log.d(TAG, "is optimized states");
((RadioButtonPreference) preference).setChecked(true);
} else {
@@ -78,7 +77,7 @@
return false;
}
- mBatteryOptimizeUtils.setAppUsageState(OPTIMIZED);
+ mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_OPTIMIZED);
Log.d(TAG, "Set optimized");
return true;
}
diff --git a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
index b52af57..d50926e 100644
--- a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
@@ -17,8 +17,6 @@
package com.android.settings.fuelgauge;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.RESTRICTED;
-
import android.content.Context;
import android.util.Log;
@@ -57,7 +55,8 @@
Log.d(TAG, "is system or default app, disable pref");
((RadioButtonPreference) preference).setChecked(false);
preference.setEnabled(false);
- } else if (mBatteryOptimizeUtils.getAppUsageState() == RESTRICTED) {
+ } else if (mBatteryOptimizeUtils.getAppOptimizationMode()
+ == BatteryOptimizeUtils.MODE_RESTRICTED) {
Log.d(TAG, "is restricted states");
((RadioButtonPreference) preference).setChecked(true);
} else {
@@ -81,7 +80,7 @@
return false;
}
- mBatteryOptimizeUtils.setAppUsageState(RESTRICTED);
+ mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_RESTRICTED);
Log.d(TAG, "Set restricted");
return true;
}
diff --git a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
index 36141c5..1d66c6c 100644
--- a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
@@ -16,8 +16,6 @@
package com.android.settings.fuelgauge;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.UNRESTRICTED;
-
import android.content.Context;
import android.util.Log;
@@ -55,7 +53,8 @@
if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) {
Log.d(TAG, "is system or default app, unrestricted states only");
((RadioButtonPreference) preference).setChecked(true);
- } else if (mBatteryOptimizeUtils.getAppUsageState() == UNRESTRICTED) {
+ } else if (mBatteryOptimizeUtils.getAppOptimizationMode()
+ == BatteryOptimizeUtils.MODE_UNRESTRICTED) {
Log.d(TAG, "is unrestricted states");
((RadioButtonPreference) preference).setChecked(true);
} else {
@@ -79,7 +78,7 @@
return false;
}
- mBatteryOptimizeUtils.setAppUsageState(UNRESTRICTED);
+ mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_UNRESTRICTED);
Log.d(TAG, "Set unrestricted");
return true;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
index 47fa59e..90e9405 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
@@ -180,8 +180,8 @@
mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps);
- final String expectedResult =
- packageName1 + "|UNRESTRICTED," + packageName2 + "|RESTRICTED,";
+ // 2 for UNRESTRICTED mode and 1 for RESTRICTED mode.
+ final String expectedResult = packageName1 + "|2," + packageName2 + "|1,";
final byte[] expectedBytes = expectedResult.getBytes();
verify(mBackupDataOutput).writeEntityHeader(
BatteryBackupHelper.KEY_OPTIMIZATION_LIST, expectedBytes.length);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
index 89d66be..c1603b8 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
@@ -16,9 +16,9 @@
package com.android.settings.fuelgauge;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.OPTIMIZED;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.RESTRICTED;
-import static com.android.settings.fuelgauge.BatteryOptimizeUtils.AppUsageState.UNRESTRICTED;
+import static com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_OPTIMIZED;
+import static com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_RESTRICTED;
+import static com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED;
import static com.google.common.truth.Truth.assertThat;
@@ -65,30 +65,33 @@
}
@Test
- public void testGetAppUsageState_returnRestricted() {
+ public void testGetAppOptimizationMode_returnRestricted() {
when(mockBackend.isAllowlisted(anyString())).thenReturn(false);
when(mockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_IGNORED);
- assertThat(mBatteryOptimizeUtils.getAppUsageState()).isEqualTo(RESTRICTED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(MODE_RESTRICTED);
}
@Test
- public void testGetAppUsageState_returnUnrestricted() {
+ public void testGetAppOptimizationMode_returnUnrestricted() {
when(mockBackend.isAllowlisted(anyString())).thenReturn(true);
when(mockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_ALLOWED);
- assertThat(mBatteryOptimizeUtils.getAppUsageState()).isEqualTo(UNRESTRICTED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(MODE_UNRESTRICTED);
}
@Test
- public void testGetAppUsageState_returnOptimized() {
+ public void testGetAppOptimizationMode_returnOptimized() {
when(mockBackend.isAllowlisted(anyString())).thenReturn(false);
when(mockAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString()))
.thenReturn(AppOpsManager.MODE_ALLOWED);
- assertThat(mBatteryOptimizeUtils.getAppUsageState()).isEqualTo(OPTIMIZED);
+ assertThat(mBatteryOptimizeUtils.getAppOptimizationMode())
+ .isEqualTo(MODE_OPTIMIZED);
}
@Test
@@ -118,8 +121,8 @@
}
@Test
- public void testSetAppUsageState_Restricted_verifyAction() {
- mBatteryOptimizeUtils.setAppUsageState(RESTRICTED);
+ public void testSetAppOptimizationMode_Restricted_verifyAction() {
+ mBatteryOptimizeUtils.setAppOptimizationMode(MODE_RESTRICTED);
verify(mockBatteryUtils).setForceAppStandby(UID,
PACKAGE_NAME, AppOpsManager.MODE_IGNORED);
@@ -127,8 +130,8 @@
}
@Test
- public void testSetAppUsageState_Unrestricted_verifyAction() {
- mBatteryOptimizeUtils.setAppUsageState(UNRESTRICTED);
+ public void testSetAppOptimizationMode_Unrestricted_verifyAction() {
+ mBatteryOptimizeUtils.setAppOptimizationMode(MODE_UNRESTRICTED);
verify(mockBatteryUtils).setForceAppStandby(UID,
PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
@@ -136,8 +139,8 @@
}
@Test
- public void testSetAppUsageState_Optimized_verifyAction() {
- mBatteryOptimizeUtils.setAppUsageState(OPTIMIZED);
+ public void testSetAppOptimizationMode_Optimized_verifyAction() {
+ mBatteryOptimizeUtils.setAppOptimizationMode(MODE_OPTIMIZED);
verify(mockBatteryUtils).setForceAppStandby(UID,
PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
index 874618d..9df3ac9 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
@@ -76,8 +76,8 @@
@Test
public void testUpdateState_isOptimizedStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
- when(mockBatteryOptimizeUtils.getAppUsageState()).thenReturn(
- BatteryOptimizeUtils.AppUsageState.OPTIMIZED);
+ when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
+ BatteryOptimizeUtils.MODE_OPTIMIZED);
mController.updateState(mPreference);
@@ -98,8 +98,8 @@
mPreference.setKey(mController.KEY_OPTIMIZED_PREF);
mController.handlePreferenceTreeClick(mPreference);
- verify(mockBatteryOptimizeUtils).setAppUsageState(
- BatteryOptimizeUtils.AppUsageState.OPTIMIZED);
+ verify(mockBatteryOptimizeUtils).setAppOptimizationMode(
+ BatteryOptimizeUtils.MODE_OPTIMIZED);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
index 2e17404..0986153 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
@@ -84,8 +84,8 @@
@Test
public void testUpdateState_isRestrictedStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
- when(mockBatteryOptimizeUtils.getAppUsageState()).thenReturn(
- BatteryOptimizeUtils.AppUsageState.RESTRICTED);
+ when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
+ BatteryOptimizeUtils.MODE_RESTRICTED);
mController.updateState(mPreference);
@@ -106,8 +106,8 @@
mPreference.setKey(mController.KEY_RESTRICTED_PREF);
mController.handlePreferenceTreeClick(mPreference);
- verify(mockBatteryOptimizeUtils).setAppUsageState(
- BatteryOptimizeUtils.AppUsageState.RESTRICTED);
+ verify(mockBatteryOptimizeUtils).setAppOptimizationMode(
+ BatteryOptimizeUtils.MODE_RESTRICTED);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
index 63cf760..004e97c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
@@ -84,8 +84,8 @@
@Test
public void testUpdateState_isUnrestrictedStates_prefChecked() {
when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
- when(mockBatteryOptimizeUtils.getAppUsageState()).thenReturn(
- BatteryOptimizeUtils.AppUsageState.UNRESTRICTED);
+ when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
+ BatteryOptimizeUtils.MODE_UNRESTRICTED);
mController.updateState(mPreference);
@@ -106,8 +106,8 @@
mPreference.setKey(mController.KEY_UNRESTRICTED_PREF);
mController.handlePreferenceTreeClick(mPreference);
- verify(mockBatteryOptimizeUtils).setAppUsageState(
- BatteryOptimizeUtils.AppUsageState.UNRESTRICTED);
+ verify(mockBatteryOptimizeUtils).setAppOptimizationMode(
+ BatteryOptimizeUtils.MODE_UNRESTRICTED);
}
@Test