Merge "Introduce config_disable_uninstall_update flag."
This commit is contained in:
committed by
Android (Google) Code Review
commit
bee1a6d990
@@ -173,4 +173,7 @@
|
|||||||
|
|
||||||
<!-- Whether wifi_mac_address should be shown or not. -->
|
<!-- Whether wifi_mac_address should be shown or not. -->
|
||||||
<bool name="config_show_wifi_mac_address">true</bool>
|
<bool name="config_show_wifi_mac_address">true</bool>
|
||||||
|
|
||||||
|
<!-- Whether to disable "Uninstall Updates" menu item for System apps or not.. -->
|
||||||
|
<bool name="config_disable_uninstall_update">false</bool>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -82,8 +82,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
private static final String TAG = "AppInfoDashboard";
|
private static final String TAG = "AppInfoDashboard";
|
||||||
|
|
||||||
// Menu identifiers
|
// Menu identifiers
|
||||||
private static final int UNINSTALL_ALL_USERS_MENU = 1;
|
@VisibleForTesting static final int UNINSTALL_ALL_USERS_MENU = 1;
|
||||||
private static final int UNINSTALL_UPDATES = 2;
|
@VisibleForTesting static final int UNINSTALL_UPDATES = 2;
|
||||||
static final int FORCE_STOP_MENU = 3;
|
static final int FORCE_STOP_MENU = 3;
|
||||||
|
|
||||||
// Result code identifiers
|
// Result code identifiers
|
||||||
@@ -330,7 +330,10 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
|||||||
menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(shouldShowUninstallForAll(mAppEntry));
|
menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(shouldShowUninstallForAll(mAppEntry));
|
||||||
mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
|
||||||
final MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
|
final MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
|
||||||
uninstallUpdatesItem.setVisible(mUpdatedSysApp && !mAppsControlDisallowedBySystem);
|
final boolean uninstallUpdateDisabled = getContext().getResources().getBoolean(
|
||||||
|
R.bool.config_disable_uninstall_update);
|
||||||
|
uninstallUpdatesItem.setVisible(
|
||||||
|
mUpdatedSysApp && !mAppsControlDisallowedBySystem && !uninstallUpdateDisabled);
|
||||||
if (uninstallUpdatesItem.isVisible()) {
|
if (uninstallUpdatesItem.isVisible()) {
|
||||||
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
|
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
|
||||||
uninstallUpdatesItem, mAppsControlDisallowedAdmin);
|
uninstallUpdatesItem, mAppsControlDisallowedAdmin);
|
||||||
|
@@ -62,4 +62,5 @@
|
|||||||
<bool name="config_show_device_model">false</bool>
|
<bool name="config_show_device_model">false</bool>
|
||||||
<bool name="config_show_wifi_ip_address">false</bool>
|
<bool name="config_show_wifi_ip_address">false</bool>
|
||||||
<bool name="config_show_wifi_mac_address">false</bool>
|
<bool name="config_show_wifi_mac_address">false</bool>
|
||||||
|
<bool name="config_disable_uninstall_update">true</bool>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
package com.android.settings.applications.appinfo;
|
package com.android.settings.applications.appinfo;
|
||||||
|
|
||||||
|
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment
|
||||||
|
.UNINSTALL_ALL_USERS_MENU;
|
||||||
|
import static com.android.settings.applications.appinfo.AppInfoDashboardFragment.UNINSTALL_UPDATES;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
@@ -25,6 +29,7 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -36,6 +41,8 @@ import android.content.pm.PackageInfo;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
@@ -128,6 +135,42 @@ public final class AppInfoDashboardFragmentTest {
|
|||||||
assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isFalse();
|
assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPrepareOptionsMenu_setUpdateMenuVisible_byDefaultForSystemApps_shouldBeTrue() {
|
||||||
|
Menu menu = onPrepareOptionsMenuTestsSetup();
|
||||||
|
mFragment.onPrepareOptionsMenu(menu);
|
||||||
|
|
||||||
|
verify(menu.findItem(UNINSTALL_UPDATES), times(1)).setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(qualifiers = "mcc999")
|
||||||
|
public void onPrepareOptionsMenu_setUpdateMenuVisible_ifDisabledByDevice_shouldBeFalse() {
|
||||||
|
Menu menu = onPrepareOptionsMenuTestsSetup();
|
||||||
|
mFragment.onPrepareOptionsMenu(menu);
|
||||||
|
|
||||||
|
verify(menu.findItem(UNINSTALL_UPDATES), times(1)).setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Menu onPrepareOptionsMenuTestsSetup() {
|
||||||
|
// Menu mocking
|
||||||
|
Menu menu = mock(Menu.class);
|
||||||
|
final MenuItem uninstallUpdatesMenuItem = mock(MenuItem.class);
|
||||||
|
final MenuItem uninstallForAllMenuItem = mock(MenuItem.class);
|
||||||
|
when(menu.findItem(UNINSTALL_UPDATES)).thenReturn(uninstallUpdatesMenuItem);
|
||||||
|
when(menu.findItem(UNINSTALL_ALL_USERS_MENU)).thenReturn(uninstallForAllMenuItem);
|
||||||
|
|
||||||
|
// Setup work to prevent NPE
|
||||||
|
final ApplicationInfo info = new ApplicationInfo();
|
||||||
|
info.flags = ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
|
||||||
|
info.enabled = true;
|
||||||
|
final AppEntry appEntry = mock(AppEntry.class);
|
||||||
|
appEntry.info = info;
|
||||||
|
mFragment.setAppEntry(appEntry);
|
||||||
|
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchFragment_hasNoPackageInfo_shouldFinish() {
|
public void launchFragment_hasNoPackageInfo_shouldFinish() {
|
||||||
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
|
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
|
||||||
|
Reference in New Issue
Block a user