Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bee1a6d9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Introduce config_disable_uninstall_update flag."

parents c0850a75 bba02d88
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -173,4 +173,7 @@

    <!-- Whether wifi_mac_address should be shown or not. -->
    <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>
+6 −3
Original line number Diff line number Diff line
@@ -82,8 +82,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
    private static final String TAG = "AppInfoDashboard";

    // Menu identifiers
    private static final int UNINSTALL_ALL_USERS_MENU = 1;
    private static final int UNINSTALL_UPDATES = 2;
    @VisibleForTesting static final int UNINSTALL_ALL_USERS_MENU = 1;
    @VisibleForTesting static final int UNINSTALL_UPDATES = 2;
    static final int FORCE_STOP_MENU = 3;

    // Result code identifiers
@@ -330,7 +330,10 @@ public class AppInfoDashboardFragment extends DashboardFragment
        menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(shouldShowUninstallForAll(mAppEntry));
        mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
        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()) {
            RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
                    uninstallUpdatesItem, mAppsControlDisallowedAdmin);
+1 −0
Original line number Diff line number Diff line
@@ -62,4 +62,5 @@
    <bool name="config_show_device_model">false</bool>
    <bool name="config_show_wifi_ip_address">false</bool>
    <bool name="config_show_wifi_mac_address">false</bool>
    <bool name="config_disable_uninstall_update">true</bool>
</resources>
+43 −0
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

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 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.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -36,6 +41,8 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.UserManager;
import android.view.Menu;
import android.view.MenuItem;

import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
@@ -128,6 +135,42 @@ public final class AppInfoDashboardFragmentTest {
        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
    public void launchFragment_hasNoPackageInfo_shouldFinish() {
        ReflectionHelpers.setField(mFragment, "mPackageInfo", null);