[B&R] notify BackupManager when app optimization mode is changed am: 935a9321b5
am: 5f3bc01915
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15667992 Change-Id: I8e422e893bb80e202ed50550c05ea5484b1b2756
This commit is contained in:
@@ -6148,7 +6148,7 @@
|
|||||||
<!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
|
<!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
|
||||||
<string name="history_details_title">History details</string>
|
<string name="history_details_title">History details</string>
|
||||||
<!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
|
<!-- 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] -->
|
<!-- 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>
|
<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] -->
|
<!-- Preference summary for advanced battery usage, from last full charge [CHAR LIMIT=40] -->
|
||||||
|
@@ -20,6 +20,7 @@ import android.annotation.UserIdInt;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
|
import android.app.backup.BackupManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -114,7 +115,12 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
SelectorWithWidgetPreference mUnrestrictedPreference;
|
SelectorWithWidgetPreference mUnrestrictedPreference;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
boolean enableTriState = true;
|
boolean mEnableTriState = true;
|
||||||
|
@VisibleForTesting
|
||||||
|
@BatteryOptimizeUtils.OptimizationMode
|
||||||
|
int mOptimizationMode = BatteryOptimizeUtils.MODE_UNKNOWN;
|
||||||
|
@VisibleForTesting
|
||||||
|
BackupManager mBackupManager;
|
||||||
|
|
||||||
private AppButtonsPreferenceController mAppButtonsPreferenceController;
|
private AppButtonsPreferenceController mAppButtonsPreferenceController;
|
||||||
private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
|
private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
|
||||||
@@ -246,7 +252,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
|
||||||
final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
|
final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
|
||||||
if (enableTriState) {
|
if (mEnableTriState) {
|
||||||
onCreateForTriState(packageName);
|
onCreateForTriState(packageName);
|
||||||
} else {
|
} else {
|
||||||
mForegroundPreference = findPreference(KEY_PREF_FOREGROUND);
|
mForegroundPreference = findPreference(KEY_PREF_FOREGROUND);
|
||||||
@@ -264,7 +270,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
initHeader();
|
initHeader();
|
||||||
if (enableTriState) {
|
if (mEnableTriState) {
|
||||||
initPreferenceForTriState(getContext());
|
initPreferenceForTriState(getContext());
|
||||||
final String packageName = mBatteryOptimizeUtils.getPackageName();
|
final String packageName = mBatteryOptimizeUtils.getPackageName();
|
||||||
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
|
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
|
||||||
@@ -277,6 +283,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
|
@VisibleForTesting
|
||||||
void initHeader() {
|
void initHeader() {
|
||||||
final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
|
final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header);
|
||||||
@@ -304,7 +326,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
controller.setIsInstantApp(AppUtils.isInstant(mAppEntry.info));
|
controller.setIsInstantApp(AppUtils.isInstant(mAppEntry.info));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enableTriState) {
|
if (mEnableTriState) {
|
||||||
final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
|
final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
|
||||||
final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
|
final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
|
||||||
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
||||||
@@ -375,7 +397,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getPreferenceScreenResId() {
|
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
|
@Override
|
||||||
@@ -389,7 +411,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
(SettingsActivity) getActivity(), this, getSettingsLifecycle(),
|
(SettingsActivity) getActivity(), this, getSettingsLifecycle(),
|
||||||
packageName, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
|
packageName, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
|
||||||
controllers.add(mAppButtonsPreferenceController);
|
controllers.add(mAppButtonsPreferenceController);
|
||||||
if (enableTriState) {
|
if (mEnableTriState) {
|
||||||
controllers.add(new UnrestrictedPreferenceController(context, uid, packageName));
|
controllers.add(new UnrestrictedPreferenceController(context, uid, packageName));
|
||||||
controllers.add(new OptimizedPreferenceController(context, uid, packageName));
|
controllers.add(new OptimizedPreferenceController(context, uid, packageName));
|
||||||
controllers.add(new RestrictedPreferenceController(context, uid, packageName));
|
controllers.add(new RestrictedPreferenceController(context, uid, packageName));
|
||||||
@@ -469,6 +491,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
|
|
||||||
mBatteryOptimizeUtils = new BatteryOptimizeUtils(
|
mBatteryOptimizeUtils = new BatteryOptimizeUtils(
|
||||||
getContext(), getArguments().getInt(EXTRA_UID), packageName);
|
getContext(), getArguments().getInt(EXTRA_UID), packageName);
|
||||||
|
mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence getAppActiveTime(
|
private CharSequence getAppActiveTime(
|
||||||
|
@@ -30,9 +30,11 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
|
import android.app.backup.BackupManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -123,6 +125,9 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
private BatteryUtils mBatteryUtils;
|
private BatteryUtils mBatteryUtils;
|
||||||
@Mock
|
@Mock
|
||||||
private BatteryOptimizeUtils mBatteryOptimizeUtils;
|
private BatteryOptimizeUtils mBatteryOptimizeUtils;
|
||||||
|
@Mock
|
||||||
|
private BackupManager mBackupManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Preference mForegroundPreference;
|
private Preference mForegroundPreference;
|
||||||
private Preference mBackgroundPreference;
|
private Preference mBackgroundPreference;
|
||||||
@@ -180,9 +185,10 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
mFragment.mHeaderPreference = mHeaderPreference;
|
mFragment.mHeaderPreference = mHeaderPreference;
|
||||||
mFragment.mState = mState;
|
mFragment.mState = mState;
|
||||||
mFragment.enableTriState = true;
|
mFragment.mEnableTriState = true;
|
||||||
mFragment.mBatteryUtils = new BatteryUtils(RuntimeEnvironment.application);
|
mFragment.mBatteryUtils = new BatteryUtils(RuntimeEnvironment.application);
|
||||||
mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
|
mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
|
||||||
|
mFragment.mBackupManager = mBackupManager;
|
||||||
mAppEntry.info = mock(ApplicationInfo.class);
|
mAppEntry.info = mock(ApplicationInfo.class);
|
||||||
|
|
||||||
mTestActivity = spy(new SettingsActivity());
|
mTestActivity = spy(new SettingsActivity());
|
||||||
@@ -231,7 +237,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetPreferenceScreenResId_disableTriState_returnLegacyLayout() {
|
public void testGetPreferenceScreenResId_disableTriState_returnLegacyLayout() {
|
||||||
mFragment.enableTriState = false;
|
mFragment.mEnableTriState = false;
|
||||||
assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(R.xml.power_usage_detail_legacy);
|
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")
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user