Added isUserNameSet
It can be used to check that the value returned by getUserName() was set
by the user and is not a default value returned by the system.
Test: UserManagerServiceUserInfoTest pass
Bug: 38138381
Change-Id: I0ca37970fda548508190bffd1fa7be95d4a15076
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 63e2d4770..30c4009 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -3069,6 +3069,14 @@
}
@Override
+ public boolean isUserNameSet(int userHandle) {
+ synchronized (mUsersLock) {
+ UserInfo userInfo = getUserInfoLU(userHandle);
+ return userInfo != null && userInfo.name != null;
+ }
+ }
+
+ @Override
public int getUserHandle(int userSerialNumber) {
synchronized (mUsersLock) {
for (int userId : mUserIds) {
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
index 575d7a3..092119e 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
@@ -24,6 +24,7 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.filters.MediumTest;
+import android.text.TextUtils;
import com.android.server.LocalServices;
import com.android.server.pm.UserManagerService.UserData;
@@ -38,6 +39,8 @@
import java.util.List;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* <p>Run with:<pre>
@@ -100,6 +103,23 @@
assertUserInfoEquals(info, read);
}
+ @Test
+ public void testGetUserName() throws Exception {
+ assertFalse("System user name shouldn't be set",
+ mUserManagerService.isUserNameSet(UserHandle.USER_SYSTEM));
+ UserInfo userInfo = mUserManagerService.getUserInfo(UserHandle.USER_SYSTEM);
+ assertFalse("A system provided name should be returned for primary user",
+ TextUtils.isEmpty(userInfo.name));
+
+ userInfo = createUser();
+ userInfo.partial = false;
+ final int TEST_ID = 100;
+ userInfo.id = TEST_ID;
+ mUserManagerService.putUserInfo(userInfo);
+ assertTrue("Test user name must be set", mUserManagerService.isUserNameSet(TEST_ID));
+ assertEquals("A Name", mUserManagerService.getUserInfo(TEST_ID).name);
+ }
+
private UserInfo createUser() {
UserInfo user = new UserInfo(/*id*/ 21, "A Name", "A path", /*flags*/ 0x0ff0ff);
user.serialNumber = 5;