Move PowerWhitelistBackend to SettingsLib

Bug: 70716754
Test: RunSettingsRoboTests
Change-Id: I897ce3469bb2d72a0cbe96b16b8de1a565ba4e64
diff --git a/src/com/android/settings/applications/AppStatePowerBridge.java b/src/com/android/settings/applications/AppStatePowerBridge.java
index 16de600..ce03544 100644
--- a/src/com/android/settings/applications/AppStatePowerBridge.java
+++ b/src/com/android/settings/applications/AppStatePowerBridge.java
@@ -15,11 +15,11 @@
  */
 package com.android.settings.applications;
 
-import com.android.settings.fuelgauge.PowerWhitelistBackend;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 import com.android.settingslib.applications.ApplicationsState.AppFilter;
 import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 
 import java.util.ArrayList;
 
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 7371294..d19c472 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -101,7 +101,6 @@
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.fuelgauge.HighPowerDetail;
-import com.android.settings.fuelgauge.PowerWhitelistBackend;
 import com.android.settings.notification.AppNotificationSettings;
 import com.android.settings.notification.ConfigureNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
@@ -114,6 +113,7 @@
 import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
 import com.android.settingslib.applications.ApplicationsState.VolumeFilter;
 import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 import com.android.settingslib.utils.ThreadUtils;
 import com.android.settingslib.wrapper.PackageManagerWrapper;
 
diff --git a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
index 14aba85..6323715 100644
--- a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java
@@ -37,6 +37,7 @@
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.wrapper.DevicePolicyManagerWrapper;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 
 /**
  * Controller to control whether an app can run in the background
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
index 10e4280..da5b6c6 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
@@ -25,6 +25,7 @@
 import com.android.settings.applications.manageapplications.ManageApplications;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 
 /**
  * Controller that jumps to high power optimization fragment
diff --git a/src/com/android/settings/fuelgauge/HighPowerDetail.java b/src/com/android/settings/fuelgauge/HighPowerDetail.java
index a086986..9cafbcb 100644
--- a/src/com/android/settings/fuelgauge/HighPowerDetail.java
+++ b/src/com/android/settings/fuelgauge/HighPowerDetail.java
@@ -36,6 +36,7 @@
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 
 public class HighPowerDetail extends InstrumentedDialogFragment implements OnClickListener,
         View.OnClickListener {
diff --git a/src/com/android/settings/fuelgauge/PowerWhitelistBackend.java b/src/com/android/settings/fuelgauge/PowerWhitelistBackend.java
deleted file mode 100644
index 5590a46..0000000
--- a/src/com/android/settings/fuelgauge/PowerWhitelistBackend.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.fuelgauge;
-
-import android.os.IDeviceIdleController;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.support.annotation.VisibleForTesting;
-
-import android.util.ArraySet;
-import android.util.Log;
-
-
-/**
- * Handles getting/changing the whitelist for the exceptions to battery saving features.
- */
-public class PowerWhitelistBackend {
-
-    private static final String TAG = "PowerWhitelistBackend";
-
-    private static final String DEVICE_IDLE_SERVICE = "deviceidle";
-
-    private static PowerWhitelistBackend sInstance;
-
-    private final IDeviceIdleController mDeviceIdleService;
-    private final ArraySet<String> mWhitelistedApps = new ArraySet<>();
-    private final ArraySet<String> mSysWhitelistedApps = new ArraySet<>();
-
-    public PowerWhitelistBackend() {
-        mDeviceIdleService = IDeviceIdleController.Stub.asInterface(
-                ServiceManager.getService(DEVICE_IDLE_SERVICE));
-        refreshList();
-    }
-
-    public int getWhitelistSize() {
-        return mWhitelistedApps.size();
-    }
-
-    public boolean isSysWhitelisted(String pkg) {
-        return mSysWhitelistedApps.contains(pkg);
-    }
-
-    public boolean isWhitelisted(String pkg) {
-        return mWhitelistedApps.contains(pkg);
-    }
-
-    public void addApp(String pkg) {
-        try {
-            mDeviceIdleService.addPowerSaveWhitelistApp(pkg);
-            mWhitelistedApps.add(pkg);
-        } catch (RemoteException e) {
-            Log.w(TAG, "Unable to reach IDeviceIdleController", e);
-        }
-    }
-
-    public void removeApp(String pkg) {
-        try {
-            mDeviceIdleService.removePowerSaveWhitelistApp(pkg);
-            mWhitelistedApps.remove(pkg);
-        } catch (RemoteException e) {
-            Log.w(TAG, "Unable to reach IDeviceIdleController", e);
-        }
-    }
-
-    @VisibleForTesting
-    void refreshList() {
-        mSysWhitelistedApps.clear();
-        mWhitelistedApps.clear();
-        try {
-            String[] whitelistedApps = mDeviceIdleService.getFullPowerWhitelist();
-            for (String app : whitelistedApps) {
-                mWhitelistedApps.add(app);
-            }
-            String[] sysWhitelistedApps = mDeviceIdleService.getSystemPowerWhitelist();
-            for (String app : sysWhitelistedApps) {
-                mSysWhitelistedApps.add(app);
-            }
-        } catch (RemoteException e) {
-            Log.w(TAG, "Unable to reach IDeviceIdleController", e);
-        }
-    }
-
-    public static PowerWhitelistBackend getInstance() {
-        if (sInstance == null) {
-            sInstance = new PowerWhitelistBackend();
-        }
-        return sInstance;
-    }
-
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java
index 092f602..3d04ac5 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java
@@ -41,6 +41,7 @@
 import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceControllerTest.java
index 77e3198..426f3cb 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceControllerTest.java
@@ -120,10 +120,11 @@
     /**
      * Create this test class so we could mock it
      */
-    public static class TestPowerWhitelistBackend extends PowerWhitelistBackend {
+    public static class TestPowerWhitelistBackend extends
+            com.android.settingslib.fuelgauge.PowerWhitelistBackend {
 
         @Override
-        void refreshList() {
+        public void refreshList() {
             // Do nothing so we could mock it without error
         }
     }