Merge "Changing the process to create a new user"
This commit is contained in:
committed by
Android (Google) Code Review
commit
2122313bb5
@@ -97,6 +97,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -240,9 +241,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
case MESSAGE_UPDATE_LIST:
|
case MESSAGE_UPDATE_LIST:
|
||||||
updateUserList();
|
updateUserList();
|
||||||
break;
|
break;
|
||||||
case MESSAGE_USER_CREATED:
|
|
||||||
onUserCreated(msg.arg1);
|
|
||||||
break;
|
|
||||||
case MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED:
|
case MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED:
|
||||||
updateUserList();
|
updateUserList();
|
||||||
if (mGuestUserAutoCreated) {
|
if (mGuestUserAutoCreated) {
|
||||||
@@ -624,14 +622,13 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onUserCreated(int userId) {
|
private void onUserCreated(UserInfo userInfo) {
|
||||||
hideUserCreatingDialog();
|
hideUserCreatingDialog();
|
||||||
// prevent crash when config changes during user creation
|
// prevent crash when config changes during user creation
|
||||||
if (getContext() == null) {
|
if (getContext() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mAddingUser = false;
|
mAddingUser = false;
|
||||||
UserInfo userInfo = mUserManager.getUserInfo(userId);
|
|
||||||
openUserDetails(userInfo, true);
|
openUserDetails(userInfo, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1011,69 +1008,50 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
mUserCreatingDialog = new UserCreatingDialog(getActivity());
|
mUserCreatingDialog = new UserCreatingDialog(getActivity());
|
||||||
mUserCreatingDialog.show();
|
mUserCreatingDialog.show();
|
||||||
ThreadUtils.postOnBackgroundThread(new AddUserNowImpl(userType, mAddingUserName));
|
createUser(userType, mAddingUserName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
class AddUserNowImpl implements Runnable{
|
void createUser(final int userType, String userName) {
|
||||||
int mUserType;
|
Future<?> unusedCreateUserFuture = ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
String mImplAddUserName;
|
|
||||||
|
|
||||||
AddUserNowImpl(final int userType, final String addUserName) {
|
|
||||||
mUserType = userType;
|
|
||||||
mImplAddUserName = addUserName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
runAddUser();
|
|
||||||
Trace.endAsyncSection("UserSettings.addUserNow", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void runAddUser() {
|
|
||||||
UserInfo user;
|
UserInfo user;
|
||||||
String username;
|
|
||||||
|
|
||||||
synchronized (mUserLock) {
|
if (userType == USER_TYPE_USER) {
|
||||||
username = mImplAddUserName;
|
user = mUserManager.createUser(
|
||||||
}
|
userName,
|
||||||
|
mUserManager.USER_TYPE_FULL_SECONDARY,
|
||||||
// Could take a few seconds
|
0);
|
||||||
if (mUserType == USER_TYPE_USER) {
|
|
||||||
user = mUserManager.createUser(username, 0);
|
|
||||||
} else {
|
} else {
|
||||||
user = mUserManager.createRestrictedProfile(username);
|
user = mUserManager.createRestrictedProfile(userName);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mUserLock) {
|
ThreadUtils.postOnMainThread(() -> {
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
mAddingUser = false;
|
mAddingUser = false;
|
||||||
mPendingUserIcon = null;
|
mPendingUserIcon = null;
|
||||||
mPendingUserName = null;
|
mPendingUserName = null;
|
||||||
ThreadUtils.postOnMainThread(() -> onUserCreationFailed());
|
onUserCreationFailed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawable newUserIcon = mPendingUserIcon;
|
Future<?> unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
if (newUserIcon == null) {
|
Drawable newUserIcon = mPendingUserIcon;
|
||||||
newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false);
|
if (newUserIcon == null) {
|
||||||
}
|
newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false);
|
||||||
mUserManager.setUserIcon(
|
}
|
||||||
user.id, UserIcons.convertToBitmapAtUserIconSize(
|
mUserManager.setUserIcon(
|
||||||
getResources(), newUserIcon));
|
user.id, UserIcons.convertToBitmapAtUserIconSize(
|
||||||
|
getResources(), newUserIcon));
|
||||||
if (mUserType == USER_TYPE_USER) {
|
});
|
||||||
mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST);
|
|
||||||
}
|
|
||||||
|
|
||||||
mHandler.sendMessage(mHandler.obtainMessage(
|
|
||||||
MESSAGE_USER_CREATED, user.id, user.serialNumber));
|
|
||||||
|
|
||||||
mPendingUserIcon = null;
|
mPendingUserIcon = null;
|
||||||
mPendingUserName = null;
|
mPendingUserName = null;
|
||||||
}
|
|
||||||
}
|
onUserCreated(user);
|
||||||
};
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erase the current user (guest) and switch to another user.
|
* Erase the current user (guest) and switch to another user.
|
||||||
|
@@ -35,7 +35,6 @@ import androidx.test.platform.app.InstrumentationRegistry;
|
|||||||
import com.android.settings.Settings;
|
import com.android.settings.Settings;
|
||||||
import com.android.settings.testutils.AdbUtils;
|
import com.android.settings.testutils.AdbUtils;
|
||||||
import com.android.settings.testutils.UiUtils;
|
import com.android.settings.testutils.UiUtils;
|
||||||
import com.android.settingslib.utils.ThreadUtils;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -87,8 +86,7 @@ public class UserSettingsComponentTest {
|
|||||||
((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0);
|
((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0);
|
||||||
UserSettings us = (UserSettings) f;
|
UserSettings us = (UserSettings) f;
|
||||||
Log.d(TAG, "Start to add user :" + randomUserName);
|
Log.d(TAG, "Start to add user :" + randomUserName);
|
||||||
ThreadUtils.postOnBackgroundThread(
|
us.createUser(USER_TYPE_RESTRICTED_PROFILE, randomUserName);
|
||||||
us.new AddUserNowImpl(USER_TYPE_RESTRICTED_PROFILE, randomUserName));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
|
Reference in New Issue
Block a user