Update the restrict app list
Before this cl, we use getPackagesForOps() to populate restrict app list. However in that API not all the apps are currently restricted, so in this cl we filter out all the allowed apps. Bug: 73085780 Test: RunSettingsRoboTest Change-Id: Ia7c1eb95b07a1a0d203b394eb64dcd98d25bd561
This commit is contained in:
@@ -67,17 +67,26 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
|
||||
|
||||
final List<AppOpsManager.PackageOps> packageOpsList = mAppOpsManager.getPackagesForOps(
|
||||
new int[]{AppOpsManager.OP_RUN_ANY_IN_BACKGROUND});
|
||||
final int num = CollectionUtils.size(packageOpsList);
|
||||
mAppInfos = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
for (int i = 0, size = CollectionUtils.size(packageOpsList); i < size; i++) {
|
||||
final AppOpsManager.PackageOps packageOps = packageOpsList.get(i);
|
||||
final List<AppOpsManager.OpEntry> entries = packageOps.getOps();
|
||||
for (int j = 0; j < entries.size(); j++) {
|
||||
AppOpsManager.OpEntry ent = entries.get(j);
|
||||
if (ent.getOp() != AppOpsManager.OP_RUN_ANY_IN_BACKGROUND) {
|
||||
continue;
|
||||
}
|
||||
if (ent.getMode() != AppOpsManager.MODE_ALLOWED) {
|
||||
mAppInfos.add(new AppInfo.Builder()
|
||||
.setPackageName(packageOps.getPackageName())
|
||||
.setUid(packageOps.getUid())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final int num = mAppInfos.size();
|
||||
// Enable the preference if some apps already been restricted, otherwise disable it
|
||||
preference.setEnabled(num > 0);
|
||||
preference.setSummary(
|
||||
|
@@ -18,7 +18,9 @@ package com.android.settings.fuelgauge;
|
||||
|
||||
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
|
||||
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
@@ -47,11 +49,17 @@ import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class RestrictAppPreferenceControllerTest {
|
||||
private static final int ALLOWED_UID = 111;
|
||||
private static final String ALLOWED_PACKAGE_NAME = "com.android.allowed.package";
|
||||
private static final int RESTRICTED_UID = 222;
|
||||
private static final String RESTRICTED_PACKAGE_NAME = "com.android.restricted.package";
|
||||
|
||||
@Mock
|
||||
private AppOpsManager mAppOpsManager;
|
||||
@Mock
|
||||
private AppOpsManager.PackageOps mPackageOps;
|
||||
private AppOpsManager.PackageOps mRestrictedPackageOps;
|
||||
@Mock
|
||||
private AppOpsManager.PackageOps mAllowedPackageOps;
|
||||
@Mock
|
||||
private SettingsActivity mSettingsActivity;
|
||||
@Mock
|
||||
@@ -65,6 +73,21 @@ public class RestrictAppPreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
final AppOpsManager.OpEntry allowOpEntry = new AppOpsManager.OpEntry(
|
||||
AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_ALLOWED, 0, 0, 0, 0, "");
|
||||
final List<AppOpsManager.OpEntry> allowOps = new ArrayList<>();
|
||||
allowOps.add(allowOpEntry);
|
||||
final AppOpsManager.OpEntry restrictedOpEntry = new AppOpsManager.OpEntry(
|
||||
AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_IGNORED, 0, 0, 0, 0, "");
|
||||
final List<AppOpsManager.OpEntry> restrictedOps = new ArrayList<>();
|
||||
restrictedOps.add(restrictedOpEntry);
|
||||
doReturn(ALLOWED_UID).when(mAllowedPackageOps).getUid();
|
||||
doReturn(ALLOWED_PACKAGE_NAME).when(mAllowedPackageOps).getPackageName();
|
||||
doReturn(allowOps).when(mAllowedPackageOps).getOps();
|
||||
doReturn(RESTRICTED_UID).when(mRestrictedPackageOps).getUid();
|
||||
doReturn(RESTRICTED_PACKAGE_NAME).when(mRestrictedPackageOps).getPackageName();
|
||||
doReturn(restrictedOps).when(mRestrictedPackageOps).getOps();
|
||||
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE);
|
||||
doReturn(mContext).when(mSettingsActivity).getApplicationContext();
|
||||
@@ -77,7 +100,7 @@ public class RestrictAppPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void testUpdateState_oneApp_showCorrectSummary() {
|
||||
mPackageOpsList.add(mPackageOps);
|
||||
mPackageOpsList.add(mRestrictedPackageOps);
|
||||
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any());
|
||||
|
||||
mRestrictAppPreferenceController.updateState(mPreference);
|
||||
@@ -86,9 +109,10 @@ public class RestrictAppPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateState_twoApps_showCorrectSummary() {
|
||||
mPackageOpsList.add(mPackageOps);
|
||||
mPackageOpsList.add(mPackageOps);
|
||||
public void testUpdateState_twoRestrictApps_showCorrectSummary() {
|
||||
mPackageOpsList.add(mRestrictedPackageOps);
|
||||
mPackageOpsList.add(mRestrictedPackageOps);
|
||||
mPackageOpsList.add(mAllowedPackageOps);
|
||||
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any());
|
||||
|
||||
mRestrictAppPreferenceController.updateState(mPreference);
|
||||
@@ -97,7 +121,8 @@ public class RestrictAppPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateState_zeroApp_disabled() {
|
||||
public void testUpdateState_zeroRestrictApp_disabled() {
|
||||
mPackageOpsList.add(mAllowedPackageOps);
|
||||
doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any());
|
||||
|
||||
mRestrictAppPreferenceController.updateState(mPreference);
|
||||
|
Reference in New Issue
Block a user