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

Commit 8d6c004a authored by YK Hung's avatar YK Hung Committed by Android (Google) Code Review
Browse files

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

parents 86717117 35282888
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)