Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35282888 authored by mxyyiyi's avatar mxyyiyi
Browse files

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
parent 665b2a58
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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,
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,13 @@ object AppOptModeSharedPreferencesUtils {
    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(
+6 −5
Original line number Diff line number Diff line
@@ -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,
+19 −3
Original line number Diff line number Diff line
@@ -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)