Merge "Clear app optimized mode sharedpreferences when Reset all app preferences." into main

This commit is contained in:
YK Hung
2024-06-05 15:52:53 +00:00
committed by Android (Google) Code Review
4 changed files with 36 additions and 10 deletions

View File

@@ -33,6 +33,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action; import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils;
import com.android.settingslib.datastore.DataChangeReason; import com.android.settingslib.datastore.DataChangeReason;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend; import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
@@ -138,7 +139,8 @@ public class BatteryOptimizeUtils {
/** Resets optimization mode for all applications. */ /** Resets optimization mode for all applications. */
public static void resetAppOptimizationMode( public static void resetAppOptimizationMode(
Context context, IPackageManager ipm, AppOpsManager aom) { Context context, IPackageManager ipm, AppOpsManager aom) {
resetAppOptimizationMode( AppOptModeSharedPreferencesUtils.clearAll(context);
resetAppOptimizationModeInternal(
context, context,
ipm, ipm,
aom, aom,
@@ -219,7 +221,7 @@ public class BatteryOptimizeUtils {
} }
@VisibleForTesting @VisibleForTesting
static void resetAppOptimizationMode( static void resetAppOptimizationModeInternal(
Context context, Context context,
IPackageManager ipm, IPackageManager ipm,
AppOpsManager aom, AppOpsManager aom,

View File

@@ -41,6 +41,13 @@ object AppOptModeSharedPreferencesUtils {
fun getAllEvents(context: Context): List<AppOptimizationModeEvent> = fun getAllEvents(context: Context): List<AppOptimizationModeEvent> =
synchronized(appOptimizationModeLock) { getAppOptModeEventsMap(context).values.toList() } 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. */ /** Updates the app optimization mode event data. */
@JvmStatic @JvmStatic
fun updateAppOptModeExpiration( fun updateAppOptModeExpiration(

View File

@@ -272,7 +272,7 @@ public class BatteryOptimizeUtilsTest {
} }
@Test @Test
public void testResetAppOptimizationMode_Optimized_verifyAction() throws Exception { public void testResetAppOptimizationModeInternal_Optimized_verifyAction() throws Exception {
runTestForResetWithMode( runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */ AppOpsManager.MODE_ALLOWED, /* allowListed */
false, false,
@@ -287,7 +287,8 @@ public class BatteryOptimizeUtilsTest {
} }
@Test @Test
public void testResetAppOptimizationMode_SystemOrDefault_verifyAction() throws Exception { public void testResetAppOptimizationModeInternal_SystemOrDefault_verifyAction()
throws Exception {
runTestForResetWithMode( runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */ AppOpsManager.MODE_ALLOWED, /* allowListed */
true, true,
@@ -304,7 +305,7 @@ public class BatteryOptimizeUtilsTest {
} }
@Test @Test
public void testResetAppOptimizationMode_Restricted_verifyAction() throws Exception { public void testResetAppOptimizationModeInternal_Restricted_verifyAction() throws Exception {
runTestForResetWithMode( runTestForResetWithMode(
AppOpsManager.MODE_IGNORED, /* allowListed */ AppOpsManager.MODE_IGNORED, /* allowListed */
false, false,
@@ -315,7 +316,7 @@ public class BatteryOptimizeUtilsTest {
} }
@Test @Test
public void testResetAppOptimizationMode_Unrestricted_verifyAction() throws Exception { public void testResetAppOptimizationModeInternal_Unrestricted_verifyAction() throws Exception {
runTestForResetWithMode( runTestForResetWithMode(
AppOpsManager.MODE_ALLOWED, /* allowListed */ AppOpsManager.MODE_ALLOWED, /* allowListed */
true, true,
@@ -346,7 +347,7 @@ public class BatteryOptimizeUtilsTest {
doReturn(isSystemOrDefaultApp).when(mMockBackend).isSysAllowlisted(anyString()); doReturn(isSystemOrDefaultApp).when(mMockBackend).isSysAllowlisted(anyString());
doReturn(isSystemOrDefaultApp).when(mMockBackend).isDefaultActiveApp(anyString(), anyInt()); doReturn(isSystemOrDefaultApp).when(mMockBackend).isDefaultActiveApp(anyString(), anyInt());
BatteryOptimizeUtils.resetAppOptimizationMode( BatteryOptimizeUtils.resetAppOptimizationModeInternal(
mContext, mContext,
mMockIPackageManager, mMockIPackageManager,
mMockAppOpsManager, mMockAppOpsManager,

View File

@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage
import android.content.Context import android.content.Context
import androidx.test.core.app.ApplicationProvider 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.BatteryOptimizeHistoricalLogEntry.Action
import com.android.settings.fuelgauge.BatteryOptimizeUtils import com.android.settings.fuelgauge.BatteryOptimizeUtils
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_OPTIMIZED 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.BatteryOptimizeUtils.MODE_UNRESTRICTED
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@@ -39,9 +41,8 @@ import org.mockito.Mockito.`when` as whenever
import org.mockito.Spy import org.mockito.Spy
import org.mockito.junit.MockitoJUnit import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule import org.mockito.junit.MockitoRule
import org.robolectric.RobolectricTestRunner
@RunWith(RobolectricTestRunner::class) @RunWith(AndroidJUnit4::class)
class AppOptModeSharedPreferencesUtilsTest { class AppOptModeSharedPreferencesUtilsTest {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule() @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
@@ -52,7 +53,12 @@ class AppOptModeSharedPreferencesUtilsTest {
@Before @Before
fun setup() { fun setup() {
AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UID) AppOptModeSharedPreferencesUtils.clearAll(context)
}
@After
fun tearDown() {
AppOptModeSharedPreferencesUtils.clearAll(context)
} }
@Test @Test
@@ -60,6 +66,16 @@ class AppOptModeSharedPreferencesUtilsTest {
assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() 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 @Test
fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() { fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() {
insertAppOptModeEventForTest(expirationTime = 1000L) insertAppOptModeEventForTest(expirationTime = 1000L)