Merge "Update the restrict app list" into pi-dev

This commit is contained in:
Lei Yu
2018-03-15 18:28:48 +00:00
committed by Android (Google) Code Review
2 changed files with 47 additions and 13 deletions

View File

@@ -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);
mAppInfos.add(new AppInfo.Builder()
.setPackageName(packageOps.getPackageName())
.setUid(packageOps.getUid())
.build());
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(

View File

@@ -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,11 +73,26 @@ 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();
mRestrictAppPreferenceController =
new RestrictAppPreferenceController(mSettingsActivity, mFragment);
new RestrictAppPreferenceController(mSettingsActivity, mFragment);
mPackageOpsList = new ArrayList<>();
mPreference = new Preference(mContext);
mPreference.setKey(mRestrictAppPreferenceController.getPreferenceKey());
@@ -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);