Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 992444b7 authored by Lei Yu's avatar Lei Yu Committed by Android (Google) Code Review
Browse files

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

parents ea2ef1af cb77823b
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -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(
+32 −7
Original line number Diff line number Diff line
@@ -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);