diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java index 3e376184ac2..3233f0d7aa9 100644 --- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java @@ -33,6 +33,7 @@ import androidx.annotation.VisibleForTesting; 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 @@ public class BatteryOptimizeUtils { /** 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 @@ public class BatteryOptimizeUtils { } @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 7a40cf106ae..1111bd4da64 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt +++ b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt @@ -41,6 +41,13 @@ object AppOptModeSharedPreferencesUtils { fun getAllEvents(context: Context): List = 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 6094208cfaf..84f549e146d 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 @@ public class BatteryOptimizeUtilsTest { } @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 @@ public class BatteryOptimizeUtilsTest { } @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 @@ public class BatteryOptimizeUtilsTest { } @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 @@ public class BatteryOptimizeUtilsTest { } @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 @@ public class BatteryOptimizeUtilsTest { 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 93% 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 f89316d72a9..76ae4911dfa 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 @@ package com.android.settings.fuelgauge.batteryusage 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_UNKNOWN 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.Mockito.`when` as whenever 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 @@ class AppOptModeSharedPreferencesUtilsTest { @Before fun setup() { - AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UID) + AppOptModeSharedPreferencesUtils.clearAll(context) + } + + @After + fun tearDown() { + AppOptModeSharedPreferencesUtils.clearAll(context) } @Test @@ -60,6 +66,16 @@ class AppOptModeSharedPreferencesUtilsTest { assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() } + @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)