Merge "Ensure getUserName cannot return null" into tm-dev am: 1503b56202

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18126297

Change-Id: Id4c754cbba26b3774ad525b0aaccbec064c1df09
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Adam Bookatz
2022-05-04 17:41:41 +00:00
committed by Automerger Merge Worker
4 changed files with 15 additions and 6 deletions

View File

@@ -919,7 +919,7 @@ package android.content.pm {
field public int id; field public int id;
field public String lastLoggedInFingerprint; field public String lastLoggedInFingerprint;
field public long lastLoggedInTime; field public long lastLoggedInTime;
field public String name; field @Nullable public String name;
field public boolean partial; field public boolean partial;
field public boolean preCreated; field public boolean preCreated;
field public int profileBadge; field public int profileBadge;

View File

@@ -18,6 +18,7 @@ package android.content.pm;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi; import android.annotation.TestApi;
import android.annotation.UserIdInt; import android.annotation.UserIdInt;
import android.compat.annotation.UnsupportedAppUsage; import android.compat.annotation.UnsupportedAppUsage;
@@ -170,7 +171,7 @@ public class UserInfo implements Parcelable {
@UnsupportedAppUsage @UnsupportedAppUsage
public int serialNumber; public int serialNumber;
@UnsupportedAppUsage @UnsupportedAppUsage
public String name; public @Nullable String name;
@UnsupportedAppUsage @UnsupportedAppUsage
public String iconPath; public String iconPath;
@UnsupportedAppUsage @UnsupportedAppUsage

View File

@@ -2179,7 +2179,10 @@ public class UserManager {
} }
} else { } else {
UserInfo userInfo = getUserInfo(mUserId); UserInfo userInfo = getUserInfo(mUserId);
return userInfo == null ? "" : userInfo.name; if (userInfo != null && userInfo.name != null) {
return userInfo.name;
}
return "";
} }
} }

View File

@@ -1430,6 +1430,8 @@ public class UserManagerService extends IUserManager.Stub {
/** /**
* Returns a UserInfo object with the name filled in, for Owner and Guest, or the original * Returns a UserInfo object with the name filled in, for Owner and Guest, or the original
* if the name is already set. * if the name is already set.
*
* Note: Currently, the resulting name can be null if a user was truly created with a null name.
*/ */
private UserInfo userWithName(UserInfo orig) { private UserInfo userWithName(UserInfo orig) {
if (orig != null && orig.name == null) { if (orig != null && orig.name == null) {
@@ -1638,7 +1640,7 @@ public class UserManagerService extends IUserManager.Stub {
} }
@Override @Override
public String getUserName() { public @NonNull String getUserName() {
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
if (!hasQueryOrCreateUsersPermission() if (!hasQueryOrCreateUsersPermission()
&& !hasPermissionGranted( && !hasPermissionGranted(
@@ -1649,7 +1651,10 @@ public class UserManagerService extends IUserManager.Stub {
final int userId = UserHandle.getUserId(callingUid); final int userId = UserHandle.getUserId(callingUid);
synchronized (mUsersLock) { synchronized (mUsersLock) {
UserInfo userInfo = userWithName(getUserInfoLU(userId)); UserInfo userInfo = userWithName(getUserInfoLU(userId));
return userInfo == null ? "" : userInfo.name; if (userInfo != null && userInfo.name != null) {
return userInfo.name;
}
return "";
} }
} }
@@ -4165,7 +4170,7 @@ public class UserManagerService extends IUserManager.Stub {
* @return the converted user, or {@code null} if no pre-created user could be converted. * @return the converted user, or {@code null} if no pre-created user could be converted.
*/ */
private @Nullable UserInfo convertPreCreatedUserIfPossible(String userType, private @Nullable UserInfo convertPreCreatedUserIfPossible(String userType,
@UserInfoFlag int flags, String name, @Nullable Object token) { @UserInfoFlag int flags, @Nullable String name, @Nullable Object token) {
final UserData preCreatedUserData; final UserData preCreatedUserData;
synchronized (mUsersLock) { synchronized (mUsersLock) {
preCreatedUserData = getPreCreatedUserLU(userType); preCreatedUserData = getPreCreatedUserLU(userType);