Loading packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +12 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settingslib.fuelgauge; import android.os.IDeviceIdleController; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.support.annotation.VisibleForTesting; import android.util.ArraySet; import android.util.Log; Loading @@ -37,6 +38,7 @@ public class PowerWhitelistBackend { private final IDeviceIdleController mDeviceIdleService; private final ArraySet<String> mWhitelistedApps = new ArraySet<>(); private final ArraySet<String> mSysWhitelistedApps = new ArraySet<>(); private final ArraySet<String> mSysWhitelistedAppsExceptIdle = new ArraySet<>(); public PowerWhitelistBackend() { mDeviceIdleService = IDeviceIdleController.Stub.asInterface( Loading @@ -62,6 +64,10 @@ public class PowerWhitelistBackend { return mWhitelistedApps.contains(pkg); } public boolean isSysWhitelistedExceptIdle(String pkg) { return mSysWhitelistedAppsExceptIdle.contains(pkg); } public void addApp(String pkg) { try { mDeviceIdleService.addPowerSaveWhitelistApp(pkg); Loading @@ -83,6 +89,7 @@ public class PowerWhitelistBackend { @VisibleForTesting public void refreshList() { mSysWhitelistedApps.clear(); mSysWhitelistedAppsExceptIdle.clear(); mWhitelistedApps.clear(); try { String[] whitelistedApps = mDeviceIdleService.getFullPowerWhitelist(); Loading @@ -93,6 +100,11 @@ public class PowerWhitelistBackend { for (String app : sysWhitelistedApps) { mSysWhitelistedApps.add(app); } String[] sysWhitelistedAppsExceptIdle = mDeviceIdleService.getSystemPowerWhitelistExceptIdle(); for (String app : sysWhitelistedAppsExceptIdle) { mSysWhitelistedAppsExceptIdle.add(app); } } catch (RemoteException e) { Log.w(TAG, "Unable to reach IDeviceIdleController", e); } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class PowerWhitelistBackendTest { MockitoAnnotations.initMocks(this); doReturn(new String[] {}).when(mDeviceIdleService).getFullPowerWhitelist(); doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelist(); doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); doNothing().when(mDeviceIdleService).addPowerSaveWhitelistApp(anyString()); doNothing().when(mDeviceIdleService).removePowerSaveWhitelistApp(anyString()); mPowerWhitelistBackend = new PowerWhitelistBackend(mDeviceIdleService); Loading Loading @@ -88,6 +89,15 @@ public class PowerWhitelistBackendTest { assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_ONE)).isTrue(); assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_TWO)).isFalse(); assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isFalse(); } @Test public void testIsSystemWhitelistedExceptIdle() throws Exception { doReturn(new String[]{PACKAGE_TWO}).when( mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); mPowerWhitelistBackend.refreshList(); assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_ONE)).isFalse(); assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_TWO)).isTrue(); } } Loading
packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +12 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settingslib.fuelgauge; import android.os.IDeviceIdleController; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.support.annotation.VisibleForTesting; import android.util.ArraySet; import android.util.Log; Loading @@ -37,6 +38,7 @@ public class PowerWhitelistBackend { private final IDeviceIdleController mDeviceIdleService; private final ArraySet<String> mWhitelistedApps = new ArraySet<>(); private final ArraySet<String> mSysWhitelistedApps = new ArraySet<>(); private final ArraySet<String> mSysWhitelistedAppsExceptIdle = new ArraySet<>(); public PowerWhitelistBackend() { mDeviceIdleService = IDeviceIdleController.Stub.asInterface( Loading @@ -62,6 +64,10 @@ public class PowerWhitelistBackend { return mWhitelistedApps.contains(pkg); } public boolean isSysWhitelistedExceptIdle(String pkg) { return mSysWhitelistedAppsExceptIdle.contains(pkg); } public void addApp(String pkg) { try { mDeviceIdleService.addPowerSaveWhitelistApp(pkg); Loading @@ -83,6 +89,7 @@ public class PowerWhitelistBackend { @VisibleForTesting public void refreshList() { mSysWhitelistedApps.clear(); mSysWhitelistedAppsExceptIdle.clear(); mWhitelistedApps.clear(); try { String[] whitelistedApps = mDeviceIdleService.getFullPowerWhitelist(); Loading @@ -93,6 +100,11 @@ public class PowerWhitelistBackend { for (String app : sysWhitelistedApps) { mSysWhitelistedApps.add(app); } String[] sysWhitelistedAppsExceptIdle = mDeviceIdleService.getSystemPowerWhitelistExceptIdle(); for (String app : sysWhitelistedAppsExceptIdle) { mSysWhitelistedAppsExceptIdle.add(app); } } catch (RemoteException e) { Log.w(TAG, "Unable to reach IDeviceIdleController", e); } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class PowerWhitelistBackendTest { MockitoAnnotations.initMocks(this); doReturn(new String[] {}).when(mDeviceIdleService).getFullPowerWhitelist(); doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelist(); doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); doNothing().when(mDeviceIdleService).addPowerSaveWhitelistApp(anyString()); doNothing().when(mDeviceIdleService).removePowerSaveWhitelistApp(anyString()); mPowerWhitelistBackend = new PowerWhitelistBackend(mDeviceIdleService); Loading Loading @@ -88,6 +89,15 @@ public class PowerWhitelistBackendTest { assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_ONE)).isTrue(); assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_TWO)).isFalse(); assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isFalse(); } @Test public void testIsSystemWhitelistedExceptIdle() throws Exception { doReturn(new String[]{PACKAGE_TWO}).when( mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); mPowerWhitelistBackend.refreshList(); assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_ONE)).isFalse(); assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_TWO)).isTrue(); } }