Loading src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java +4 −0 Original line number Diff line number Diff line Loading @@ -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); Loading tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ public class AppActionButtonPreferenceControllerTest { private AppInfoDashboardFragment mFragment; @Mock private ApplicationInfo mAppInfo; @Mock private PackageManager mPackageManager; private Context mContext; private AppActionButtonPreferenceController mController; Loading @@ -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); Loading Loading @@ -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", Loading Loading
src/com/android/settings/applications/appinfo/AppActionButtonPreferenceController.java +4 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
tests/robotests/src/com/android/settings/applications/appinfo/AppActionButtonPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ public class AppActionButtonPreferenceControllerTest { private AppInfoDashboardFragment mFragment; @Mock private ApplicationInfo mAppInfo; @Mock private PackageManager mPackageManager; private Context mContext; private AppActionButtonPreferenceController mController; Loading @@ -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); Loading Loading @@ -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", Loading