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

Commit af1bf6ec authored by Nikhil Kumar's avatar Nikhil Kumar Committed by Android (Google) Code Review
Browse files

Merge "Added restriction for switching to Headless SYSTEM user."

parents b645ac78 cb776b89
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -919,7 +919,7 @@ package android.content.pm {
    method public boolean isQuietModeEnabled();
    method public boolean isRestricted();
    method public boolean supportsSwitchTo();
    method public boolean supportsSwitchToByUser();
    method @Deprecated public boolean supportsSwitchToByUser();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.UserInfo> CREATOR;
    field public static final int FLAG_ADMIN = 2; // 0x2
+14 −4
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.annotation.TestApi;
import android.annotation.UserIdInt;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
@@ -418,16 +419,25 @@ public class UserInfo implements Parcelable {
            // Don't support switching to pre-created users until they become "real" users.
            return false;
        }
        return !isProfile();
        return isFull() || canSwitchToHeadlessSystemUser();
    }

    /**
     * @return true if user is of type {@link UserManager#USER_TYPE_SYSTEM_HEADLESS} and
     * {@link com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser} is true.
     */
    private boolean canSwitchToHeadlessSystemUser() {
        return UserManager.USER_TYPE_SYSTEM_HEADLESS.equals(userType) && Resources.getSystem()
                .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser);
    }

    /**
     * @return true if this user can be switched to by end user through UI.
     * @deprecated Use {@link UserInfo#supportsSwitchTo} instead.
     */
    @Deprecated
    public boolean supportsSwitchToByUser() {
        // Hide the system user when it does not represent a human user.
        boolean hideSystemUser = UserManager.isHeadlessSystemUserMode();
        return (!hideSystemUser || id != UserHandle.USER_SYSTEM) && supportsSwitchTo();
        return supportsSwitchTo();
    }

    // TODO(b/142482943): Make this logic more specific and customizable. (canHaveProfile(userType))
+4 −0
Original line number Diff line number Diff line
@@ -2781,6 +2781,10 @@
     it can't be deleted or downgraded to non-admin status. -->
    <bool name="config_isMainUserPermanentAdmin">false</bool>

    <!-- Whether switch to headless system user is allowed. If allowed,
    headless system user can run in the foreground even though it is not a full user. -->
    <bool name="config_canSwitchToHeadlessSystemUser">false</bool>

    <!-- Whether UI for multi user should be shown -->
    <bool name="config_enableMultiUserUI">false</bool>

+1 −0
Original line number Diff line number Diff line
@@ -355,6 +355,7 @@
  <java-symbol type="bool" name="config_speed_up_audio_on_mt_calls" />
  <java-symbol type="bool" name="config_useFixedVolume" />
  <java-symbol type="bool" name="config_isMainUserPermanentAdmin"/>
  <java-symbol type="bool" name="config_canSwitchToHeadlessSystemUser"/>
  <java-symbol type="bool" name="config_enableMultiUserUI"/>
  <java-symbol type="bool" name="config_enableMultipleAdmins"/>
  <java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/>
+0 −4
Original line number Diff line number Diff line
@@ -1986,10 +1986,6 @@ class UserController implements Handler.Callback {
            Slogf.w(TAG, "Cannot switch to User #" + targetUserId + ": not supported");
            return false;
        }
        if (targetUserInfo.isProfile()) {
            Slogf.w(TAG, "Cannot switch to User #" + targetUserId + ": not a full user");
            return false;
        }
        if (FactoryResetter.isFactoryResetting()) {
            Slogf.w(TAG, "Cannot switch to User #" + targetUserId + ": factory reset in progress");
            return false;