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

Commit d3ea0f09 authored by “Ankita's avatar “Ankita
Browse files

AppClone: Add new tab only if any user handle has the property set.

This will ensure that a new tab is not created for clone profile. The
existing behavior of creating work tab when managed profile is present
on device remains as-is.

Bug: 248204976
Test: manual (verfied with primary, clone and managed profile present on
device at the same time)
Test: make RunSettingsRoboTests -j

Change-Id: I116a0de69c51e90aa59fdb47e904c567e5d62102
parent 7fd36218
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.pm.UserProperties;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -1163,7 +1164,7 @@ public final class Utils extends com.android.settingslib.Utils {
        final boolean isWork = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
                == ProfileSelectFragment.ProfileType.WORK : false;
        try {
            if (activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
            if (isNewTabNeeded(activity)
                    && ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
                    && !isWork && !isPersonal) {
                f = Fragment.instantiate(activity,
@@ -1177,6 +1178,24 @@ public final class Utils extends com.android.settingslib.Utils {
        return f;
    }

    /**
     * Checks if a new tab is needed or not for any user profile associated with the context user.
     *
     * <p> Checks if any user has the property {@link UserProperties#SHOW_IN_SETTINGS_SEPARATE} set.
     */
    public static boolean isNewTabNeeded(Activity activity) {
        UserManager userManager = activity.getSystemService(UserManager.class);
        List<UserHandle> profiles = userManager.getUserProfiles();
        for (UserHandle userHandle : profiles) {
            UserProperties userProperties = userManager.getUserProperties(userHandle);
            if (userProperties.getShowInSettings()
                    == UserProperties.SHOW_IN_SETTINGS_SEPARATE) {
                return true;
            }
        }
        return false;
    }

    /**
     * Returns true if current binder uid is Settings Intelligence.
     */
+3 −2
Original line number Diff line number Diff line
@@ -478,8 +478,9 @@ public class ManageApplications extends InstrumentedFragment
        mFilterAdapter.enableFilter(filterType);

        if (mListType == LIST_TYPE_MAIN) {
            if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
                    && !mIsPersonalOnly) {
            // Apply the personal and work filter only if new tab should be added
            // for a given user profile. Else let it use the default all apps filter.
            if (Utils.isNewTabNeeded(getActivity()) && !mIsWorkOnly && !mIsPersonalOnly) {
                mFilterAdapter.enableFilter(FILTER_APPS_PERSONAL);
                mFilterAdapter.enableFilter(FILTER_APPS_WORK);
            }