[B&R] avoid to backup & restore app which is in the PowerSaveWhitelistExceptIdle

BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current
adb shell bmgr restore 3e9867a7660315b8 com.android.settings

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I78f34870af3146698e6d1b9fbc5ec4385a8d5384
diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
index af16edb..24080fe 100644
--- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
@@ -263,7 +263,9 @@
     private boolean isSystemOrDefaultApp(String packageName) {
         final PowerAllowlistBackend powerAllowlistBackend = getPowerAllowlistBackend();
         return powerAllowlistBackend.isSysAllowlisted(packageName)
-                || powerAllowlistBackend.isDefaultActiveApp(packageName);
+                || powerAllowlistBackend.isDefaultActiveApp(packageName)
+                // Optimize mode only for app which is in the allow list not idle app.
+                || powerAllowlistBackend.isAllowlistedExceptIdle(packageName);
     }
 
     private List<ApplicationInfo> getInstalledApplications() {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
index 5ac8553..aa1caf9 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
@@ -114,6 +114,9 @@
         mockUid(1001 /*fake uid*/, PACKAGE_NAME1);
         mockUid(1002 /*fake uid*/, PACKAGE_NAME2);
         mockUid(BatteryUtils.UID_NULL, PACKAGE_NAME3);
+        doReturn(false).when(mPowerAllowlistBackend).isDefaultActiveApp(anyString());
+        doReturn(false).when(mPowerAllowlistBackend).isDefaultActiveApp(anyString());
+        doReturn(false).when(mPowerAllowlistBackend).isAllowlistedExceptIdle(anyString());
     }
 
     @After
@@ -218,7 +221,6 @@
         createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3);
         // Sets "com.android.testing.1" as system app.
         doReturn(true).when(mPowerAllowlistBackend).isSysAllowlisted(PACKAGE_NAME1);
-        doReturn(false).when(mPowerAllowlistBackend).isDefaultActiveApp(anyString());
 
         mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps);
 
@@ -234,7 +236,21 @@
         createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3);
         // Sets "com.android.testing.1" as device default app.
         doReturn(true).when(mPowerAllowlistBackend).isDefaultActiveApp(PACKAGE_NAME1);
-        doReturn(false).when(mPowerAllowlistBackend).isSysAllowlisted(anyString());
+
+        mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps);
+
+        // "com.android.testing.2" for RESTRICTED mode.
+        final String expectedResult = PACKAGE_NAME2 + ":1,";
+        verifyBackupData(expectedResult);
+    }
+
+    @Test
+    public void backupOptimizationMode_backupOptimizationAndIgnoreAppInTheAllowlist()
+            throws Exception {
+        final List<String> allowlistedApps = Arrays.asList(PACKAGE_NAME1);
+        createTestingData(PACKAGE_NAME1, PACKAGE_NAME2, PACKAGE_NAME3);
+        // Sets "com.android.testing.1" in the allowlist.
+        doReturn(true).when(mPowerAllowlistBackend).isAllowlistedExceptIdle(PACKAGE_NAME1);
 
         mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, allowlistedApps);