Merge changes from topic "single_dialog" into udc-dev am: 0624d822d4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22966468 Change-Id: I574cc5822a836026792f2b41c131ed531af85cdf Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -32,11 +32,9 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.settingslib.users.EditUserInfoController;
|
||||
import com.android.settingslib.users.GrantAdminDialogController;
|
||||
import com.android.settingslib.users.CreateUserDialogController;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.user.utils.MultiUserActionsEvent;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -61,20 +59,18 @@ public class CreateUserActivity extends Activity {
|
||||
private static final String EXTRA_IS_KEYGUARD_SHOWING = "extra_is_keyguard_showing";
|
||||
|
||||
private final UserCreator mUserCreator;
|
||||
private final EditUserInfoController mEditUserInfoController;
|
||||
private CreateUserDialogController mCreateUserDialogController;
|
||||
private final IActivityManager mActivityManager;
|
||||
private final ActivityStarter mActivityStarter;
|
||||
private final UiEventLogger mUiEventLogger;
|
||||
private Dialog mGrantAdminDialog;
|
||||
private Dialog mSetupUserDialog;
|
||||
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
|
||||
private boolean mGrantAdminRights;
|
||||
@Inject
|
||||
public CreateUserActivity(UserCreator userCreator,
|
||||
EditUserInfoController editUserInfoController, IActivityManager activityManager,
|
||||
CreateUserDialogController createUserDialogController, IActivityManager activityManager,
|
||||
ActivityStarter activityStarter, UiEventLogger uiEventLogger) {
|
||||
mUserCreator = userCreator;
|
||||
mEditUserInfoController = editUserInfoController;
|
||||
mCreateUserDialogController = createUserDialogController;
|
||||
mActivityManager = activityManager;
|
||||
mActivityStarter = activityStarter;
|
||||
mUiEventLogger = uiEventLogger;
|
||||
@@ -86,19 +82,10 @@ public class CreateUserActivity extends Activity {
|
||||
setShowWhenLocked(true);
|
||||
setContentView(R.layout.activity_create_new_user);
|
||||
if (savedInstanceState != null) {
|
||||
mEditUserInfoController.onRestoreInstanceState(savedInstanceState);
|
||||
}
|
||||
boolean isKeyguardShowing = getIntent().getBooleanExtra(EXTRA_IS_KEYGUARD_SHOWING, true);
|
||||
// Display grant admin dialog only on unlocked device to admin users if multiple admins
|
||||
// are allowed on this device.
|
||||
if (mUserCreator.isMultipleAdminEnabled() && mUserCreator.isUserAdmin()
|
||||
&& !isKeyguardShowing) {
|
||||
mGrantAdminDialog = buildGrantAdminDialog();
|
||||
mGrantAdminDialog.show();
|
||||
} else {
|
||||
mSetupUserDialog = createDialog();
|
||||
mSetupUserDialog.show();
|
||||
mCreateUserDialogController.onRestoreInstanceState(savedInstanceState);
|
||||
}
|
||||
mSetupUserDialog = createDialog();
|
||||
mSetupUserDialog.show();
|
||||
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
||||
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
|
||||
mBackCallback);
|
||||
@@ -110,7 +97,7 @@ public class CreateUserActivity extends Activity {
|
||||
outState.putBundle(DIALOG_STATE_KEY, mSetupUserDialog.onSaveInstanceState());
|
||||
}
|
||||
|
||||
mEditUserInfoController.onSaveInstanceState(outState);
|
||||
mCreateUserDialogController.onSaveInstanceState(outState);
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
@@ -125,48 +112,21 @@ public class CreateUserActivity extends Activity {
|
||||
|
||||
private Dialog createDialog() {
|
||||
String defaultUserName = getString(com.android.settingslib.R.string.user_new_user_name);
|
||||
|
||||
return mEditUserInfoController.createDialog(
|
||||
boolean isKeyguardShowing = getIntent().getBooleanExtra(EXTRA_IS_KEYGUARD_SHOWING, true);
|
||||
return mCreateUserDialogController.createDialog(
|
||||
this,
|
||||
this::startActivity,
|
||||
null,
|
||||
defaultUserName,
|
||||
getString(com.android.settingslib.R.string.user_add_user),
|
||||
(mUserCreator.isMultipleAdminEnabled() && mUserCreator.isUserAdmin()
|
||||
&& !isKeyguardShowing),
|
||||
this::addUserNow,
|
||||
this::finish
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns dialog that allows to grant user admin rights.
|
||||
*/
|
||||
private Dialog buildGrantAdminDialog() {
|
||||
return new GrantAdminDialogController().createDialog(
|
||||
this,
|
||||
(grantAdminRights) -> {
|
||||
mGrantAdminDialog.dismiss();
|
||||
mGrantAdminRights = grantAdminRights;
|
||||
if (mGrantAdminRights) {
|
||||
mUiEventLogger.log(MultiUserActionsEvent
|
||||
.GRANT_ADMIN_FROM_USER_SWITCHER_CREATION_DIALOG);
|
||||
} else {
|
||||
mUiEventLogger.log(MultiUserActionsEvent
|
||||
.NOT_GRANT_ADMIN_FROM_USER_SWITCHER_CREATION_DIALOG);
|
||||
}
|
||||
mSetupUserDialog = createDialog();
|
||||
mSetupUserDialog.show();
|
||||
},
|
||||
() -> {
|
||||
mGrantAdminRights = false;
|
||||
finish();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
mEditUserInfoController.onActivityResult(requestCode, resultCode, data);
|
||||
mCreateUserDialogController.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -178,9 +138,6 @@ public class CreateUserActivity extends Activity {
|
||||
if (mSetupUserDialog != null) {
|
||||
mSetupUserDialog.dismiss();
|
||||
}
|
||||
if (mGrantAdminDialog != null) {
|
||||
mGrantAdminDialog.dismiss();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
@@ -190,7 +147,7 @@ public class CreateUserActivity extends Activity {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void addUserNow(String userName, Drawable userIcon) {
|
||||
private void addUserNow(String userName, Drawable userIcon, Boolean isAdmin) {
|
||||
mSetupUserDialog.dismiss();
|
||||
userName = (userName == null || userName.trim().isEmpty())
|
||||
? getString(com.android.settingslib.R.string.user_new_user_name)
|
||||
@@ -198,7 +155,7 @@ public class CreateUserActivity extends Activity {
|
||||
|
||||
mUserCreator.createUser(userName, userIcon,
|
||||
userInfo -> {
|
||||
if (mGrantAdminRights) {
|
||||
if (isAdmin) {
|
||||
mUserCreator.setUserAdmin(userInfo.id);
|
||||
}
|
||||
switchToUser(userInfo.id);
|
||||
@@ -230,7 +187,7 @@ public class CreateUserActivity extends Activity {
|
||||
*/
|
||||
private void startActivity(Intent intent, int requestCode) {
|
||||
mActivityStarter.dismissKeyguardThenExecute(() -> {
|
||||
mEditUserInfoController.startingActivityForResult();
|
||||
mCreateUserDialogController.startingActivityForResult();
|
||||
startActivityForResult(intent, requestCode);
|
||||
return true;
|
||||
}, /* cancel= */ null, /* afterKeyguardGone= */ true);
|
||||
|
||||
@@ -50,6 +50,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import com.android.systemui.qs.user.UserSwitchDialogController
|
||||
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
|
||||
import com.android.systemui.user.CreateUserActivity
|
||||
import com.android.systemui.user.data.model.UserSwitcherSettingsModel
|
||||
import com.android.systemui.user.data.repository.UserRepository
|
||||
import com.android.systemui.user.data.source.UserRecord
|
||||
@@ -455,13 +456,16 @@ constructor(
|
||||
UserActionModel.ADD_USER -> {
|
||||
uiEventLogger.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
||||
val currentUser = repository.getSelectedUserInfo()
|
||||
showDialog(
|
||||
ShowDialogRequestModel.ShowAddUserDialog(
|
||||
userHandle = currentUser.userHandle,
|
||||
isKeyguardShowing = keyguardInteractor.isKeyguardShowing(),
|
||||
showEphemeralMessage = currentUser.isGuest && currentUser.isEphemeral,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
dismissDialog()
|
||||
activityStarter.startActivity(
|
||||
CreateUserActivity.createIntentForStart(
|
||||
applicationContext,
|
||||
keyguardInteractor.isKeyguardShowing()
|
||||
),
|
||||
/* dismissShade= */ true,
|
||||
/* animationController */ null,
|
||||
/* showOverLockscreenWhenLocked */ true,
|
||||
/* userHandle */ currentUser.getUserHandle(),
|
||||
)
|
||||
}
|
||||
UserActionModel.ADD_SUPERVISED_USER -> {
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.testing.TestableLooper
|
||||
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.util.mockito.any
|
||||
import com.android.systemui.util.mockito.mock
|
||||
import com.android.systemui.util.mockito.nullable
|
||||
import com.android.systemui.util.mockito.whenever
|
||||
@@ -27,9 +28,7 @@ class CreateUserActivityTest : SysuiTestCase() {
|
||||
createDialog(
|
||||
/* activity = */ nullable(),
|
||||
/* activityStarter = */ nullable(),
|
||||
/* oldUserIcon = */ nullable(),
|
||||
/* defaultUserName = */ nullable(),
|
||||
/* title = */ nullable(),
|
||||
/* isMultipleAdminsEnabled = */ any(),
|
||||
/* successCallback = */ nullable(),
|
||||
/* cancelCallback = */ nullable()
|
||||
)
|
||||
|
||||
@@ -482,30 +482,17 @@ class UserInteractorTest : SysuiTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun executeAction_addUser_dialogShown() =
|
||||
fun executeAction_addUser_dismissesDialogAndStartsActivity() =
|
||||
testScope.runTest {
|
||||
val userInfos = createUserInfos(count = 2, includeGuest = false)
|
||||
userRepository.setUserInfos(userInfos)
|
||||
userRepository.setSelectedUserInfo(userInfos[0])
|
||||
keyguardRepository.setKeyguardShowing(false)
|
||||
val dialogRequest = collectLastValue(underTest.dialogShowRequests)
|
||||
val dialogShower: UserSwitchDialogController.DialogShower = mock()
|
||||
|
||||
underTest.executeAction(UserActionModel.ADD_USER, dialogShower)
|
||||
underTest.executeAction(UserActionModel.ADD_USER)
|
||||
verify(uiEventLogger, times(1))
|
||||
.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
||||
assertThat(dialogRequest())
|
||||
.isEqualTo(
|
||||
ShowDialogRequestModel.ShowAddUserDialog(
|
||||
userHandle = userInfos[0].userHandle,
|
||||
isKeyguardShowing = false,
|
||||
showEphemeralMessage = false,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
)
|
||||
|
||||
underTest.onDialogShown()
|
||||
assertThat(dialogRequest()).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -862,7 +849,7 @@ class UserInteractorTest : SysuiTestCase() {
|
||||
|
||||
// Dialog is shown.
|
||||
assertThat(dialogRequest())
|
||||
.isEqualTo(ShowDialogRequestModel.ShowUserSwitcherFullscreenDialog(expandable))
|
||||
.isEqualTo(ShowDialogRequestModel.ShowUserSwitcherFullscreenDialog(expandable))
|
||||
|
||||
underTest.onDialogShown()
|
||||
assertThat(dialogRequest()).isNull()
|
||||
|
||||
Reference in New Issue
Block a user