Merge "Clear app optimized mode sharedpreferences when Reset all app preferences." into main
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)