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

Commit 8321e0fd authored by Svet Ganov's avatar Svet Ganov Committed by Svetoslav Ganov
Browse files

Don't offer menu items it they are no-op

In the permission apps screen we have a menu item to show/hide
system apps. It is possible that no system app uses the permission
making the menu item do nothing. We don't add the menu item if
no system app uses the permission.

bug:29395895

Change-Id: I1756981b2f711fc7a886bd4227196fef1a3cea03
parent b0984af0
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -34,9 +34,6 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.packageinstaller.DeviceUtils;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
@@ -81,6 +78,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
    private boolean mHasConfirmedRevoke;

    private boolean mShowSystem;
    private boolean mHasSystemApps;
    private MenuItem mShowSystemMenu;
    private MenuItem mHideSystemMenu;

@@ -110,13 +108,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if (mHasSystemApps) {
            mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
                    R.string.menu_show_system);
            mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
                    R.string.menu_hide_system);
            updateMenu();
        }

        HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
                getClass().getName());
        updateMenu();
    }

    @Override
@@ -186,6 +187,9 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
            }
        }

        mHasSystemApps = false;
        boolean menuOptionsInvalided = false;

        for (PermissionApp app : permissionApps.getApps()) {
            if (!Utils.shouldShowPermission(app)) {
                continue;
@@ -199,6 +203,13 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
            }

            boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);

            if (isSystemApp && !menuOptionsInvalided) {
                mHasSystemApps = true;
                getActivity().invalidateOptionsMenu();
                menuOptionsInvalided = true;
            }

            if (isSystemApp && !isTelevision && !mShowSystem) {
                if (existingPref != null) {
                    screen.removePreference(existingPref);
+18 −5
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
    private boolean mHasConfirmedRevoke;

    private boolean mShowSystem;
    private boolean mHasSystemApps;
    private MenuItem mShowSystemMenu;
    private MenuItem mHideSystemMenu;

@@ -110,12 +111,14 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if (mHasSystemApps) {
            mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
                    R.string.menu_show_system);
            mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
                    R.string.menu_hide_system);
            updateMenu();
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
@@ -184,6 +187,9 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
            }
        }

        mHasSystemApps = false;
        boolean menuOptionsInvalided = false;

        for (PermissionApp app : permissionApps.getApps()) {
            if (!Utils.shouldShowPermission(app)) {
                continue;
@@ -197,6 +203,13 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
            }

            boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);

            if (isSystemApp && !menuOptionsInvalided) {
                mHasSystemApps = true;
                getActivity().invalidateOptionsMenu();
                menuOptionsInvalided = true;
            }

            if (isSystemApp && !isTelevision && !mShowSystem) {
                if (existingPref != null) {
                    screen.removePreference(existingPref);