Merge "Do not allow force stopping protected packages" into pi-dev
am: 396e91abf0
Change-Id: I725a5a666ef7155fe98d6beb4d9c5ec461af4377
This commit is contained in:
@@ -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);
|
||||||
|
@@ -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",
|
||||||
|
Reference in New Issue
Block a user