Add active admin app to power white list.

So user can't restrict it in settings app.

Bug: 110337989
Test: RunSettingsLibTests
Change-Id: Ie32dc8b2204369c9ca8f704436d5c988f76481ae
This commit is contained in:
Lei Yu
2018-06-28 14:06:29 -07:00
parent ca48d74547
commit 333c175985
2 changed files with 22 additions and 2 deletions

View File

@@ -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;
@@ -90,6 +91,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;
}

View File

@@ -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,8 @@ 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(new String[] {}).when(mDeviceIdleService).getFullPowerWhitelist();
doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelist();
doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelistExceptIdle();
@@ -67,6 +71,7 @@ public class PowerWhitelistBackendTest {
doNothing().when(mDeviceIdleService).removePowerSaveWhitelistApp(anyString());
mPackageManager = Shadow.extract(mContext.getPackageManager());
mPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, true);
doReturn(mDevicePolicyManager).when(mContext).getSystemService(DevicePolicyManager.class);
mPowerWhitelistBackend = new PowerWhitelistBackend(mContext, mDeviceIdleService);
}
@@ -122,6 +127,13 @@ public class PowerWhitelistBackendTest {
assertThat(mPowerWhitelistBackend.isWhitelisted(testDialer)).isTrue();
}
@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();