Loading src/com/android/settings/users/UserSettings.java +28 −50 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; Loading Loading @@ -240,9 +241,6 @@ public class UserSettings extends SettingsPreferenceFragment case MESSAGE_UPDATE_LIST: updateUserList(); break; case MESSAGE_USER_CREATED: onUserCreated(msg.arg1); break; case MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED: updateUserList(); if (mGuestUserAutoCreated) { Loading Loading @@ -624,14 +622,13 @@ public class UserSettings extends SettingsPreferenceFragment } } private void onUserCreated(int userId) { private void onUserCreated(UserInfo userInfo) { hideUserCreatingDialog(); // prevent crash when config changes during user creation if (getContext() == null) { return; } mAddingUser = false; UserInfo userInfo = mUserManager.getUserInfo(userId); openUserDetails(userInfo, true); } Loading Loading @@ -1011,49 +1008,33 @@ public class UserSettings extends SettingsPreferenceFragment mUserCreatingDialog = new UserCreatingDialog(getActivity()); mUserCreatingDialog.show(); ThreadUtils.postOnBackgroundThread(new AddUserNowImpl(userType, mAddingUserName)); createUser(userType, mAddingUserName); } @VisibleForTesting class AddUserNowImpl implements Runnable{ int mUserType; 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() { void createUser(final int userType, String userName) { Future<?> unusedCreateUserFuture = ThreadUtils.postOnBackgroundThread(() -> { UserInfo user; String username; synchronized (mUserLock) { username = mImplAddUserName; } // Could take a few seconds if (mUserType == USER_TYPE_USER) { user = mUserManager.createUser(username, 0); if (userType == USER_TYPE_USER) { user = mUserManager.createUser( userName, mUserManager.USER_TYPE_FULL_SECONDARY, 0); } else { user = mUserManager.createRestrictedProfile(username); user = mUserManager.createRestrictedProfile(userName); } synchronized (mUserLock) { ThreadUtils.postOnMainThread(() -> { if (user == null) { mAddingUser = false; mPendingUserIcon = null; mPendingUserName = null; ThreadUtils.postOnMainThread(() -> onUserCreationFailed()); onUserCreationFailed(); return; } Future<?> unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> { Drawable newUserIcon = mPendingUserIcon; if (newUserIcon == null) { newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false); Loading @@ -1061,19 +1042,16 @@ public class UserSettings extends SettingsPreferenceFragment mUserManager.setUserIcon( 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; mPendingUserName = null; onUserCreated(user); }); }); } } }; /** * Erase the current user (guest) and switch to another user. Loading tests/componenttests/src/com/android/settings/users/UserSettingsComponentTest.java +1 −3 Original line number Diff line number Diff line Loading @@ -35,7 +35,6 @@ import androidx.test.platform.app.InstrumentationRegistry; import com.android.settings.Settings; import com.android.settings.testutils.AdbUtils; import com.android.settings.testutils.UiUtils; import com.android.settingslib.utils.ThreadUtils; import org.junit.After; import org.junit.Before; Loading Loading @@ -87,8 +86,7 @@ public class UserSettingsComponentTest { ((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0); UserSettings us = (UserSettings) f; Log.d(TAG, "Start to add user :" + randomUserName); ThreadUtils.postOnBackgroundThread( us.new AddUserNowImpl(USER_TYPE_RESTRICTED_PROFILE, randomUserName)); us.createUser(USER_TYPE_RESTRICTED_PROFILE, randomUserName); }); assertThat( Loading Loading
src/com/android/settings/users/UserSettings.java +28 −50 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; Loading Loading @@ -240,9 +241,6 @@ public class UserSettings extends SettingsPreferenceFragment case MESSAGE_UPDATE_LIST: updateUserList(); break; case MESSAGE_USER_CREATED: onUserCreated(msg.arg1); break; case MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED: updateUserList(); if (mGuestUserAutoCreated) { Loading Loading @@ -624,14 +622,13 @@ public class UserSettings extends SettingsPreferenceFragment } } private void onUserCreated(int userId) { private void onUserCreated(UserInfo userInfo) { hideUserCreatingDialog(); // prevent crash when config changes during user creation if (getContext() == null) { return; } mAddingUser = false; UserInfo userInfo = mUserManager.getUserInfo(userId); openUserDetails(userInfo, true); } Loading Loading @@ -1011,49 +1008,33 @@ public class UserSettings extends SettingsPreferenceFragment mUserCreatingDialog = new UserCreatingDialog(getActivity()); mUserCreatingDialog.show(); ThreadUtils.postOnBackgroundThread(new AddUserNowImpl(userType, mAddingUserName)); createUser(userType, mAddingUserName); } @VisibleForTesting class AddUserNowImpl implements Runnable{ int mUserType; 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() { void createUser(final int userType, String userName) { Future<?> unusedCreateUserFuture = ThreadUtils.postOnBackgroundThread(() -> { UserInfo user; String username; synchronized (mUserLock) { username = mImplAddUserName; } // Could take a few seconds if (mUserType == USER_TYPE_USER) { user = mUserManager.createUser(username, 0); if (userType == USER_TYPE_USER) { user = mUserManager.createUser( userName, mUserManager.USER_TYPE_FULL_SECONDARY, 0); } else { user = mUserManager.createRestrictedProfile(username); user = mUserManager.createRestrictedProfile(userName); } synchronized (mUserLock) { ThreadUtils.postOnMainThread(() -> { if (user == null) { mAddingUser = false; mPendingUserIcon = null; mPendingUserName = null; ThreadUtils.postOnMainThread(() -> onUserCreationFailed()); onUserCreationFailed(); return; } Future<?> unusedSettingIconFuture = ThreadUtils.postOnBackgroundThread(() -> { Drawable newUserIcon = mPendingUserIcon; if (newUserIcon == null) { newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false); Loading @@ -1061,19 +1042,16 @@ public class UserSettings extends SettingsPreferenceFragment mUserManager.setUserIcon( 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; mPendingUserName = null; onUserCreated(user); }); }); } } }; /** * Erase the current user (guest) and switch to another user. Loading
tests/componenttests/src/com/android/settings/users/UserSettingsComponentTest.java +1 −3 Original line number Diff line number Diff line Loading @@ -35,7 +35,6 @@ import androidx.test.platform.app.InstrumentationRegistry; import com.android.settings.Settings; import com.android.settings.testutils.AdbUtils; import com.android.settings.testutils.UiUtils; import com.android.settingslib.utils.ThreadUtils; import org.junit.After; import org.junit.Before; Loading Loading @@ -87,8 +86,7 @@ public class UserSettingsComponentTest { ((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0); UserSettings us = (UserSettings) f; Log.d(TAG, "Start to add user :" + randomUserName); ThreadUtils.postOnBackgroundThread( us.new AddUserNowImpl(USER_TYPE_RESTRICTED_PROFILE, randomUserName)); us.createUser(USER_TYPE_RESTRICTED_PROFILE, randomUserName); }); assertThat( Loading