OSDN Git Service

Disable uninstall update option for secondary users.
authorFan Zhang <zhfan@google.com>
Mon, 18 Jun 2018 20:34:21 +0000 (13:34 -0700)
committerFan Zhang <zhfan@google.com>
Mon, 18 Jun 2018 23:29:00 +0000 (16:29 -0700)
Change-Id: Ib3146d37be82dae36392d71b43aa5331762d4684
Fixes: 110249550
Test: manual

src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java

index 4917663..ae40d67 100755 (executable)
@@ -331,8 +331,10 @@ public class AppInfoDashboardFragment extends DashboardFragment
         final MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
         final boolean uninstallUpdateDisabled = getContext().getResources().getBoolean(
                 R.bool.config_disable_uninstall_update);
-        uninstallUpdatesItem.setVisible(
-                mUpdatedSysApp && !mAppsControlDisallowedBySystem && !uninstallUpdateDisabled);
+        uninstallUpdatesItem.setVisible(mUserManager.isAdminUser()
+                && mUpdatedSysApp
+                && !mAppsControlDisallowedBySystem
+                && !uninstallUpdateDisabled);
         if (uninstallUpdatesItem.isVisible()) {
             RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
                     uninstallUpdatesItem, mAppsControlDisallowedAdmin);
index 8314cb7..eb478f6 100644 (file)
@@ -91,7 +91,9 @@ public final class AppInfoDashboardFragmentTest {
         doReturn(mActivity).when(mFragment).getActivity();
         doReturn(mShadowContext).when(mFragment).getContext();
         doReturn(mPackageManager).when(mActivity).getPackageManager();
+        when(mUserManager.isAdminUser()).thenReturn(true);
 
+        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
         // Default to not considering any apps to be instant (individual tests can override this).
         ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
                 (InstantAppDataProvider) (i -> false));
@@ -102,7 +104,7 @@ public final class AppInfoDashboardFragmentTest {
         when(mDevicePolicyManager.packageHasActiveAdmins(nullable(String.class))).thenReturn(false);
         when(mUserManager.getUsers().size()).thenReturn(2);
         ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
-        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
+
         final ApplicationInfo info = new ApplicationInfo();
         info.enabled = true;
         final AppEntry appEntry = mock(AppEntry.class);
@@ -118,7 +120,6 @@ public final class AppInfoDashboardFragmentTest {
         when(mDevicePolicyManager.packageHasActiveAdmins(nullable(String.class))).thenReturn(false);
         when(mUserManager.getUsers().size()).thenReturn(2);
         ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
-        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
         final ApplicationInfo info = new ApplicationInfo();
         info.flags = ApplicationInfo.FLAG_INSTALLED;
         info.enabled = true;
@@ -217,7 +218,6 @@ public final class AppInfoDashboardFragmentTest {
         final PackageInfo packageInfo = mock(PackageInfo.class);
 
         ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
-        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
         ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
 
         assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isFalse();
@@ -249,7 +249,6 @@ public final class AppInfoDashboardFragmentTest {
         userInfos.add(new UserInfo(userID1, "User1", UserInfo.FLAG_PRIMARY));
         userInfos.add(new UserInfo(userID2, "yue", UserInfo.FLAG_GUEST));
         when(mUserManager.getUsers(true)).thenReturn(userInfos);
-        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
         final ApplicationInfo appInfo = new ApplicationInfo();
         appInfo.flags = ApplicationInfo.FLAG_INSTALLED;
         when(mPackageManager.getApplicationInfoAsUser(
@@ -273,7 +272,6 @@ public final class AppInfoDashboardFragmentTest {
         userInfos.add(new UserInfo(userID1, "User1", UserInfo.FLAG_PRIMARY));
         userInfos.add(new UserInfo(userID2, "yue", UserInfo.FLAG_GUEST));
         when(mUserManager.getUsers(true)).thenReturn(userInfos);
-        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
         final ApplicationInfo appInfo = new ApplicationInfo();
         appInfo.flags = ApplicationInfo.FLAG_INSTALLED;
         when(mPackageManager.getApplicationInfoAsUser(