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

am: 396e91abf0

Change-Id: I725a5a666ef7155fe98d6beb4d9c5ec461af4377
This commit is contained in:
Benjamin Franz
2018-03-26 09:24:02 +00:00
committed by android-build-merger
2 changed files with 27 additions and 0 deletions

View File

@@ -283,6 +283,10 @@ public class AppActionButtonPreferenceController extends BasePreferenceControlle
// User can't force stop device admin. // User can't force stop device admin.
Log.w(TAG, "User can't force stop device admin"); Log.w(TAG, "User can't force stop device admin");
updateForceStopButton(false); 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)) { } else if (AppUtils.isInstant(packageInfo.applicationInfo)) {
updateForceStopButton(false); updateForceStopButton(false);
mActionButtons.setButton2Visible(false); mActionButtons.setButton2Visible(false);

View File

@@ -79,6 +79,8 @@ public class AppActionButtonPreferenceControllerTest {
private AppInfoDashboardFragment mFragment; private AppInfoDashboardFragment mFragment;
@Mock @Mock
private ApplicationInfo mAppInfo; private ApplicationInfo mAppInfo;
@Mock
private PackageManager mPackageManager;
private Context mContext; private Context mContext;
private AppActionButtonPreferenceController mController; private AppActionButtonPreferenceController mController;
@@ -95,7 +97,9 @@ public class AppActionButtonPreferenceControllerTest {
ReflectionHelpers.setField(mController, "mDpm", mDevicePolicyManager); ReflectionHelpers.setField(mController, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mController, "mApplicationFeatureProvider", ReflectionHelpers.setField(mController, "mApplicationFeatureProvider",
mFeatureFactory.applicationFeatureProvider); mFeatureFactory.applicationFeatureProvider);
ReflectionHelpers.setField(mController, "mPm", mPackageManager);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
final PackageInfo packageInfo = mock(PackageInfo.class); final PackageInfo packageInfo = mock(PackageInfo.class);
packageInfo.applicationInfo = mAppInfo; packageInfo.applicationInfo = mAppInfo;
when(mFragment.getPackageInfo()).thenReturn(packageInfo); when(mFragment.getPackageInfo()).thenReturn(packageInfo);
@@ -213,6 +217,25 @@ public class AppActionButtonPreferenceControllerTest {
verify(mController.mActionButtons).setButton2Visible(false); 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 @Test
public void checkForceStop_hasActiveAdmin_shouldDisableForceStop() { public void checkForceStop_hasActiveAdmin_shouldDisableForceStop() {
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider", ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",