Clear app optimized mode sharedpreferences when Reset all app preferences.
- Clear events when user click Settings > Apps > All apps > top-right button > "Reset app preferences"
- Update AppOptModeSharedPreferencesUtilsTest from robotest to unit test.
Bug: 338965652
Test: atest + manual
Change-Id: Ib0a1bd113ab31fea247e5a5430ab35b252c6e1f5
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
index 3e37618..3233f0d 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
@@ -33,6 +33,7 @@
import com.android.settings.R;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
+import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils;
import com.android.settingslib.datastore.DataChangeReason;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
@@ -138,7 +139,8 @@
/** Resets optimization mode for all applications. */
public static void resetAppOptimizationMode(
Context context, IPackageManager ipm, AppOpsManager aom) {
- resetAppOptimizationMode(
+ AppOptModeSharedPreferencesUtils.clearAll(context);
+ resetAppOptimizationModeInternal(
context,
ipm,
aom,
@@ -219,7 +221,7 @@
}
@VisibleForTesting
- static void resetAppOptimizationMode(
+ static void resetAppOptimizationModeInternal(
Context context,
IPackageManager ipm,
AppOpsManager aom,
diff --git a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
index 7a40cf1..1111bd4 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
+++ b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
@@ -41,6 +41,13 @@
fun getAllEvents(context: Context): List<AppOptimizationModeEvent> =
synchronized(appOptimizationModeLock) { getAppOptModeEventsMap(context).values.toList() }
+ /** Removes all app optimization mode events. */
+ @JvmStatic
+ fun clearAll(context: Context) =
+ synchronized(appOptimizationModeLock) {
+ getSharedPreferences(context).edit().clear().apply()
+ }
+
/** Updates the app optimization mode event data. */
@JvmStatic
fun updateAppOptModeExpiration(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
index 6094208..84f549e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
@@ -272,7 +272,7 @@
}
@Test
- public void testResetAppOptimizationMode_Optimized_verifyAction() throws Exception {
+ public void testResetAppOptimizationModeInternal_Optimized_verifyAction() throws Exception {
runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */
false,
@@ -287,7 +287,8 @@
}
@Test
- public void testResetAppOptimizationMode_SystemOrDefault_verifyAction() throws Exception {
+ public void testResetAppOptimizationModeInternal_SystemOrDefault_verifyAction()
+ throws Exception {
runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */
true,
@@ -304,7 +305,7 @@
}
@Test
- public void testResetAppOptimizationMode_Restricted_verifyAction() throws Exception {
+ public void testResetAppOptimizationModeInternal_Restricted_verifyAction() throws Exception {
runTestForResetWithMode(
AppOpsManager.MODE_IGNORED, /* allowListed */
false,
@@ -315,7 +316,7 @@
}
@Test
- public void testResetAppOptimizationMode_Unrestricted_verifyAction() throws Exception {
+ public void testResetAppOptimizationModeInternal_Unrestricted_verifyAction() throws Exception {
runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */
true,
@@ -346,7 +347,7 @@
doReturn(isSystemOrDefaultApp).when(mMockBackend).isSysAllowlisted(anyString());
doReturn(isSystemOrDefaultApp).when(mMockBackend).isDefaultActiveApp(anyString(), anyInt());
- BatteryOptimizeUtils.resetAppOptimizationMode(
+ BatteryOptimizeUtils.resetAppOptimizationModeInternal(
mContext,
mMockIPackageManager,
mMockAppOpsManager,
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
similarity index 92%
rename from tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
rename to tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
index f89316d..76ae491 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
+++ b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
@@ -18,6 +18,7 @@
import android.content.Context
import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action
import com.android.settings.fuelgauge.BatteryOptimizeUtils
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_OPTIMIZED
@@ -26,6 +27,7 @@
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
import com.google.common.truth.Truth.assertThat
+import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -39,9 +41,8 @@
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-import org.robolectric.RobolectricTestRunner
-@RunWith(RobolectricTestRunner::class)
+@RunWith(AndroidJUnit4::class)
class AppOptModeSharedPreferencesUtilsTest {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
@@ -52,7 +53,12 @@
@Before
fun setup() {
- AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UID)
+ AppOptModeSharedPreferencesUtils.clearAll(context)
+ }
+
+ @After
+ fun tearDown() {
+ AppOptModeSharedPreferencesUtils.clearAll(context)
}
@Test
@@ -61,6 +67,16 @@
}
@Test
+ fun clearAll_withData_verifyCleared() {
+ insertAppOptModeEventForTest(expirationTime = 1000L)
+ assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).hasSize(1)
+
+ AppOptModeSharedPreferencesUtils.clearAll(context)
+
+ assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
+ }
+
+ @Test
fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() {
insertAppOptModeEventForTest(expirationTime = 1000L)