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

Commit e21c52a8 authored by Kenny Guy's avatar Kenny Guy Committed by Android (Google) Code Review
Browse files

Merge "Hide managed profiles from user switchers."

parents f5a9ad1c 1a447535
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.content.pm;

import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemProperties;
import android.os.UserHandle;

/**
@@ -116,6 +117,14 @@ public class UserInfo implements Parcelable {
        return (flags & FLAG_MANAGED_PROFILE) == FLAG_MANAGED_PROFILE;
    }

    /**
     * @return true if this user can be switched to.
     **/
    public boolean supportsSwitchTo() {
        // TODO remove fw.show_hidden_users when we have finished developing managed profiles.
        return !isManagedProfile() || SystemProperties.getBoolean("fw.show_hidden_users", false);
    }

    public UserInfo() {
    }

+24 −2
Original line number Diff line number Diff line
@@ -164,11 +164,13 @@ public class UserManager {

    /**
     * Returns whether the system supports multiple users.
     * @return true if multiple users can be created, false if it is a single user device.
     * @return true if multiple users can be created by user, false if it is a single user device.
     * @hide
     */
    public static boolean supportsMultipleUsers() {
        return getMaxSupportedUsers() > 1;
        return getMaxSupportedUsers() > 1
                && SystemProperties.getBoolean("fw.show_multiuserui",
                Resources.getSystem().getBoolean(R.bool.config_enableMultiUserUI));
    }

    /**
@@ -600,6 +602,26 @@ public class UserManager {
                Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));
    }

    /**
     * Returns true if the user switcher should be shown, this will be if there
     * are multiple users that aren't managed profiles.
     * @hide
     * @return true if user switcher should be shown.
     */
    public boolean isUserSwitcherEnabled() {
        List<UserInfo> users = getUsers(true);
        if (users == null) {
           return false;
        }
        int switchableUserCount = 0;
        for (UserInfo user : users) {
            if (user.supportsSwitchTo()) {
                ++switchableUserCount;
            }
        }
        return switchableUserCount > 1;
    }

    /**
     * Returns a serial number on this device for a given userHandle. User handles can be recycled
     * when deleting and creating users, but serial numbers are not reused until the device is wiped.
+2 −0
Original line number Diff line number Diff line
@@ -1189,6 +1189,8 @@

    <!--  Maximum number of supported users -->
    <integer name="config_multiuserMaximumUsers">1</integer>
    <!-- Whether UI for multi user should be shown -->
    <bool name="config_enableMultiUserUI">false</bool>

    <!-- Minimum span needed to begin a touch scaling gesture.
         If the span is equal to or greater than this size, a scaling gesture
+1 −0
Original line number Diff line number Diff line
@@ -289,6 +289,7 @@
  <java-symbol type="bool" name="config_useFixedVolume" />
  <java-symbol type="bool" name="config_forceDefaultOrientation" />
  <java-symbol type="bool" name="config_wifi_batched_scan_supported" />
  <java-symbol type="bool" name="config_enableMultiUserUI"/>

  <java-symbol type="integer" name="config_cursorWindowSize" />
  <java-symbol type="integer" name="config_extraFreeKbytesAdjust" />
+33 −44
Original line number Diff line number Diff line
@@ -1051,9 +1051,6 @@ public class KeyguardHostView extends KeyguardViewBase {
    }

    private void enableUserSelectorIfNecessary() {
        if (!UserManager.supportsMultipleUsers()) {
            return; // device doesn't support multi-user mode
        }
        final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
        if (um == null) {
            Throwable t = new Throwable();
@@ -1063,27 +1060,20 @@ public class KeyguardHostView extends KeyguardViewBase {
        }

        // if there are multiple users, we need to enable to multi-user switcher
        final List<UserInfo> users = um.getUsers(true);
        if (users == null) {
            Throwable t = new Throwable();
            t.fillInStackTrace();
            Log.e(TAG, "list of users is null.", t);
        if (!um.isUserSwitcherEnabled()) {
            return;
        }

        final View multiUserView = findViewById(R.id.keyguard_user_selector);
        if (multiUserView == null) {
            Throwable t = new Throwable();
            t.fillInStackTrace();
            Log.e(TAG, "can't find user_selector in layout.", t);
            if (DEBUG) Log.d(TAG, "can't find user_selector in layout.");
            return;
        }

        if (users.size() > 1) {
        if (multiUserView instanceof KeyguardMultiUserSelectorView) {
            mKeyguardMultiUserSelectorView = (KeyguardMultiUserSelectorView) multiUserView;
            mKeyguardMultiUserSelectorView.setVisibility(View.VISIBLE);
                mKeyguardMultiUserSelectorView.addUsers(users);
            mKeyguardMultiUserSelectorView.addUsers(um.getUsers(true));
            UserSwitcherCallback callback = new UserSwitcherCallback() {
                @Override
                public void hideSecurityView(int duration) {
@@ -1120,7 +1110,6 @@ public class KeyguardHostView extends KeyguardViewBase {
            }
        }
    }
    }

    @Override
    public void cleanUp() {
Loading