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

Commit 5f3bc019 authored by ykhung's avatar ykhung Committed by Automerger Merge Worker
Browse files

[B&R] notify BackupManager when app optimization mode is changed am: 935a9321

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15667992

Change-Id: I6699e68d8c6e66ee76420c732307af03ee9513fd
parents ef42284a 935a9321
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6148,7 +6148,7 @@
    <!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
    <string name="history_details_title">History details</string>
    <!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
    <string name="advanced_battery_preference_title">Battery Usage</string>
    <string name="advanced_battery_preference_title">Battery usage</string>
    <!-- Preference summary for advanced battery usage, for past 24 hours [CHAR LIMIT=40] -->
    <string name="advanced_battery_preference_summary_with_hours">View usage for past 24 hours</string>
    <!-- Preference summary for advanced battery usage, from last full charge [CHAR LIMIT=40] -->
+29 −6
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.settings.SettingsEnums;
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -113,7 +114,12 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
    @VisibleForTesting
    RadioButtonPreference mUnrestrictedPreference;
    @VisibleForTesting
    boolean enableTriState = true;
    boolean mEnableTriState = true;
    @VisibleForTesting
    @BatteryOptimizeUtils.OptimizationMode
    int mOptimizationMode = BatteryOptimizeUtils.MODE_UNKNOWN;
    @VisibleForTesting
    BackupManager mBackupManager;

    private AppButtonsPreferenceController mAppButtonsPreferenceController;
    private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
@@ -245,7 +251,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        super.onCreate(icicle);

        final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
        if (enableTriState) {
        if (mEnableTriState) {
            onCreateForTriState(packageName);
        } else {
            mForegroundPreference = findPreference(KEY_PREF_FOREGROUND);
@@ -263,7 +269,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        super.onResume();

        initHeader();
        if (enableTriState) {
        if (mEnableTriState) {
            initPreferenceForTriState(getContext());
            final String packageName = mBatteryOptimizeUtils.getPackageName();
            FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
@@ -276,6 +282,22 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        notifyBackupManager();
    }

    @VisibleForTesting
    void notifyBackupManager() {
        if (mEnableTriState
                && mOptimizationMode != mBatteryOptimizeUtils.getAppOptimizationMode()) {
            final BackupManager backupManager = mBackupManager != null
                    ? mBackupManager : new BackupManager(getContext());
            backupManager.dataChanged();
        }
    }

    @VisibleForTesting
    void initHeader() {
        final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
@@ -303,7 +325,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
            controller.setIsInstantApp(AppUtils.isInstant(mAppEntry.info));
        }

        if (enableTriState) {
        if (mEnableTriState) {
            final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
            final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
            final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
@@ -374,7 +396,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements

    @Override
    protected int getPreferenceScreenResId() {
        return enableTriState ? R.xml.power_usage_detail : R.xml.power_usage_detail_legacy;
        return mEnableTriState ? R.xml.power_usage_detail : R.xml.power_usage_detail_legacy;
    }

    @Override
@@ -388,7 +410,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
                (SettingsActivity) getActivity(), this, getSettingsLifecycle(), packageName,
                mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
        controllers.add(mAppButtonsPreferenceController);
        if (enableTriState) {
        if (mEnableTriState) {
            controllers.add(new UnrestrictedPreferenceController(context, uid, packageName));
            controllers.add(new OptimizedPreferenceController(context, uid, packageName));
            controllers.add(new RestrictedPreferenceController(context, uid, packageName));
@@ -467,6 +489,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements

        mBatteryOptimizeUtils = new BatteryOptimizeUtils(
                getContext(), getArguments().getInt(EXTRA_UID), packageName);
        mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
    }

    private CharSequence getAppActiveTime(
+42 −2
Original line number Diff line number Diff line
@@ -30,9 +30,11 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;

import android.app.AppOpsManager;
import android.app.backup.BackupManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -123,6 +125,9 @@ public class AdvancedPowerUsageDetailTest {
    private BatteryUtils mBatteryUtils;
    @Mock
    private BatteryOptimizeUtils mBatteryOptimizeUtils;
    @Mock
    private BackupManager mBackupManager;

    private Context mContext;
    private Preference mForegroundPreference;
    private Preference mBackgroundPreference;
@@ -180,9 +185,10 @@ public class AdvancedPowerUsageDetailTest {

        mFragment.mHeaderPreference = mHeaderPreference;
        mFragment.mState = mState;
        mFragment.enableTriState = true;
        mFragment.mEnableTriState = true;
        mFragment.mBatteryUtils = new BatteryUtils(RuntimeEnvironment.application);
        mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
        mFragment.mBackupManager = mBackupManager;
        mAppEntry.info = mock(ApplicationInfo.class);

        mTestActivity = spy(new SettingsActivity());
@@ -231,7 +237,7 @@ public class AdvancedPowerUsageDetailTest {

    @Test
    public void testGetPreferenceScreenResId_disableTriState_returnLegacyLayout() {
        mFragment.enableTriState = false;
        mFragment.mEnableTriState = false;
        assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(R.xml.power_usage_detail_legacy);
    }

@@ -780,4 +786,38 @@ public class AdvancedPowerUsageDetailTest {
                    new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, "app label")
                });
    }

    @Test
    public void notifyBackupManager_optimizationModeIsNotChanged_notInvokeDataChanged() {
        final int mode = BatteryOptimizeUtils.MODE_RESTRICTED;
        mFragment.mOptimizationMode = mode;
        when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(mode);

        mFragment.notifyBackupManager();

        verifyZeroInteractions(mBackupManager);
    }

    @Test
    public void notifyBackupManager_optimizationModeIsChanged_invokeDataChanged() {
        mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_RESTRICTED;
        when(mBatteryOptimizeUtils.getAppOptimizationMode())
                .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);

        mFragment.notifyBackupManager();

        verify(mBackupManager).dataChanged();
    }

    @Test
    public void notifyBackupManager_triStateIsNotEnabled_notInvokeDataChanged() {
        mFragment.mOptimizationMode = BatteryOptimizeUtils.MODE_RESTRICTED;
        when(mBatteryOptimizeUtils.getAppOptimizationMode())
                .thenReturn(BatteryOptimizeUtils.MODE_UNRESTRICTED);
        mFragment.mEnableTriState = false;

        mFragment.notifyBackupManager();

        verifyZeroInteractions(mBackupManager);
    }
}