diff options
2 files changed, 23 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java index 7234788b2e04..c9990e574eed 100644 --- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java @@ -16,6 +16,7 @@  package com.android.settingslib.fuelgauge; +import android.app.admin.DevicePolicyManager;  import android.content.ComponentName;  import android.content.Context;  import android.content.pm.PackageManager; @@ -89,6 +90,13 @@ public class PowerWhitelistBackend {          if (TextUtils.equals(pkg, defaultDialer)) {              return true;          } + +        final DevicePolicyManager devicePolicyManager = mAppContext.getSystemService( +                DevicePolicyManager.class); +        if (devicePolicyManager.packageHasActiveAdmins(pkg)) { +            return true; +        } +          return false;      } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java index a23eebcce797..5c932586dd28 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java @@ -21,8 +21,10 @@ import static org.mockito.ArgumentMatchers.anyString;  import static org.mockito.Mockito.atLeastOnce;  import static org.mockito.Mockito.doNothing;  import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy;  import static org.mockito.Mockito.verify; +import android.app.admin.DevicePolicyManager;  import android.content.ComponentName;  import android.content.Context;  import android.content.pm.PackageManager; @@ -51,7 +53,8 @@ public class PowerWhitelistBackendTest {      @Mock      private IDeviceIdleController mDeviceIdleService; - +    @Mock +    private DevicePolicyManager mDevicePolicyManager;      private PowerWhitelistBackend mPowerWhitelistBackend;      private ShadowPackageManager mPackageManager;      private Context mContext; @@ -59,7 +62,9 @@ public class PowerWhitelistBackendTest {      @Before      public void setUp() throws Exception {          MockitoAnnotations.initMocks(this); -        mContext = RuntimeEnvironment.application; +        mContext = spy(RuntimeEnvironment.application); +        doReturn(mContext).when(mContext).getApplicationContext(); +        doReturn(mDevicePolicyManager).when(mContext).getSystemService(DevicePolicyManager.class);          doReturn(new String[] {}).when(mDeviceIdleService).getFullPowerWhitelist();          doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelist();          doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); @@ -68,6 +73,7 @@ public class PowerWhitelistBackendTest {          mPackageManager = Shadow.extract(mContext.getPackageManager());          mPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, true); +          mPowerWhitelistBackend = new PowerWhitelistBackend(mContext, mDeviceIdleService);      } @@ -123,6 +129,13 @@ public class PowerWhitelistBackendTest {      }      @Test +    public void isWhitelisted_shouldWhitelistActiveDeviceAdminApp() { +        doReturn(true).when(mDevicePolicyManager).packageHasActiveAdmins(PACKAGE_ONE); + +        assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isTrue(); +    } + +    @Test      public void testIsSystemWhitelisted() throws Exception {          doReturn(new String[] {PACKAGE_ONE}).when(mDeviceIdleService).getSystemPowerWhitelist();          mPowerWhitelistBackend.refreshList();  |