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

Commit 396e91ab authored by Benjamin Franz's avatar Benjamin Franz Committed by Android (Google) Code Review
Browse files

Merge "Do not allow force stopping protected packages" into pi-dev

parents d6e81ab5 00cc0275
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -283,6 +283,10 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
            // User can't force stop device admin.
            Log.w(TAG, "User can't force stop device admin");
            updateForceStopButton(false);
        } else if (mPm.isPackageStateProtected(packageInfo.packageName,
            UserHandle.getUserId(appEntry.info.uid))) {
            Log.w(TAG, "User can't force stop protected packages");
            updateForceStopButton(false);
        } else if (AppUtils.isInstant(packageInfo.applicationInfo)) {
            updateForceStopButton(false);
            mActionButtons.setButton2Visible(false);
+23 −0
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ public class AppActionButtonPreferenceControllerTest {
    private AppInfoDashboardFragment mFragment;
    @Mock
    private ApplicationInfo mAppInfo;
    @Mock
    private PackageManager mPackageManager;

    private Context mContext;
    private AppActionButtonPreferenceController mController;
@@ -95,7 +97,9 @@ public class AppActionButtonPreferenceControllerTest {
        ReflectionHelpers.setField(mController, "mDpm", mDevicePolicyManager);
        ReflectionHelpers.setField(mController, "mApplicationFeatureProvider",
                mFeatureFactory.applicationFeatureProvider);
        ReflectionHelpers.setField(mController, "mPm", mPackageManager);
        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
        when(mContext.getPackageManager()).thenReturn(mPackageManager);
        final PackageInfo packageInfo = mock(PackageInfo.class);
        packageInfo.applicationInfo = mAppInfo;
        when(mFragment.getPackageInfo()).thenReturn(packageInfo);
@@ -213,6 +217,25 @@ public class AppActionButtonPreferenceControllerTest {
        verify(mController.mActionButtons).setButton2Visible(false);
    }

    @Test
    public void checkForceStop_isStateProtected_shouldDisableForceStop() {
        ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
            (InstantAppDataProvider) (i -> false));
        final String packageName = "Package1";
        final PackageInfo packageInfo = new PackageInfo();
        packageInfo.packageName = packageName;
        final ApplicationInfo appInfo = new ApplicationInfo();
        appInfo.uid = 42;
        appInfo.sourceDir = "source";
        final ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(
            mContext, appInfo, 0);
        when(mPackageManager.isPackageStateProtected(packageName, 0)).thenReturn(true);

        mController.checkForceStop(appEntry, packageInfo);

        verify(mController.mActionButtons).setButton2Enabled(false);
    }

    @Test
    public void checkForceStop_hasActiveAdmin_shouldDisableForceStop() {
        ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",