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: Ic9d828e4021effccaa4fa1bb8824f5db80352b41 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 androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.settingslib.users.EditUserInfoController;
|
import com.android.settingslib.users.CreateUserDialogController;
|
||||||
import com.android.settingslib.users.GrantAdminDialogController;
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.plugins.ActivityStarter;
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.user.utils.MultiUserActionsEvent;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
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 static final String EXTRA_IS_KEYGUARD_SHOWING = "extra_is_keyguard_showing";
|
||||||
|
|
||||||
private final UserCreator mUserCreator;
|
private final UserCreator mUserCreator;
|
||||||
private final EditUserInfoController mEditUserInfoController;
|
private CreateUserDialogController mCreateUserDialogController;
|
||||||
private final IActivityManager mActivityManager;
|
private final IActivityManager mActivityManager;
|
||||||
private final ActivityStarter mActivityStarter;
|
private final ActivityStarter mActivityStarter;
|
||||||
private final UiEventLogger mUiEventLogger;
|
private final UiEventLogger mUiEventLogger;
|
||||||
private Dialog mGrantAdminDialog;
|
|
||||||
private Dialog mSetupUserDialog;
|
private Dialog mSetupUserDialog;
|
||||||
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
|
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
|
||||||
private boolean mGrantAdminRights;
|
|
||||||
@Inject
|
@Inject
|
||||||
public CreateUserActivity(UserCreator userCreator,
|
public CreateUserActivity(UserCreator userCreator,
|
||||||
EditUserInfoController editUserInfoController, IActivityManager activityManager,
|
CreateUserDialogController createUserDialogController, IActivityManager activityManager,
|
||||||
ActivityStarter activityStarter, UiEventLogger uiEventLogger) {
|
ActivityStarter activityStarter, UiEventLogger uiEventLogger) {
|
||||||
mUserCreator = userCreator;
|
mUserCreator = userCreator;
|
||||||
mEditUserInfoController = editUserInfoController;
|
mCreateUserDialogController = createUserDialogController;
|
||||||
mActivityManager = activityManager;
|
mActivityManager = activityManager;
|
||||||
mActivityStarter = activityStarter;
|
mActivityStarter = activityStarter;
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
@@ -86,19 +82,10 @@ public class CreateUserActivity extends Activity {
|
|||||||
setShowWhenLocked(true);
|
setShowWhenLocked(true);
|
||||||
setContentView(R.layout.activity_create_new_user);
|
setContentView(R.layout.activity_create_new_user);
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mEditUserInfoController.onRestoreInstanceState(savedInstanceState);
|
mCreateUserDialogController.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 = createDialog();
|
||||||
mSetupUserDialog.show();
|
mSetupUserDialog.show();
|
||||||
}
|
|
||||||
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
||||||
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
|
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
|
||||||
mBackCallback);
|
mBackCallback);
|
||||||
@@ -110,7 +97,7 @@ public class CreateUserActivity extends Activity {
|
|||||||
outState.putBundle(DIALOG_STATE_KEY, mSetupUserDialog.onSaveInstanceState());
|
outState.putBundle(DIALOG_STATE_KEY, mSetupUserDialog.onSaveInstanceState());
|
||||||
}
|
}
|
||||||
|
|
||||||
mEditUserInfoController.onSaveInstanceState(outState);
|
mCreateUserDialogController.onSaveInstanceState(outState);
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,48 +112,21 @@ public class CreateUserActivity extends Activity {
|
|||||||
|
|
||||||
private Dialog createDialog() {
|
private Dialog createDialog() {
|
||||||
String defaultUserName = getString(com.android.settingslib.R.string.user_new_user_name);
|
String defaultUserName = getString(com.android.settingslib.R.string.user_new_user_name);
|
||||||
|
boolean isKeyguardShowing = getIntent().getBooleanExtra(EXTRA_IS_KEYGUARD_SHOWING, true);
|
||||||
return mEditUserInfoController.createDialog(
|
return mCreateUserDialogController.createDialog(
|
||||||
this,
|
this,
|
||||||
this::startActivity,
|
this::startActivity,
|
||||||
null,
|
(mUserCreator.isMultipleAdminEnabled() && mUserCreator.isUserAdmin()
|
||||||
defaultUserName,
|
&& !isKeyguardShowing),
|
||||||
getString(com.android.settingslib.R.string.user_add_user),
|
|
||||||
this::addUserNow,
|
this::addUserNow,
|
||||||
this::finish
|
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
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
mEditUserInfoController.onActivityResult(requestCode, resultCode, data);
|
mCreateUserDialogController.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -178,9 +138,6 @@ public class CreateUserActivity extends Activity {
|
|||||||
if (mSetupUserDialog != null) {
|
if (mSetupUserDialog != null) {
|
||||||
mSetupUserDialog.dismiss();
|
mSetupUserDialog.dismiss();
|
||||||
}
|
}
|
||||||
if (mGrantAdminDialog != null) {
|
|
||||||
mGrantAdminDialog.dismiss();
|
|
||||||
}
|
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +147,7 @@ public class CreateUserActivity extends Activity {
|
|||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addUserNow(String userName, Drawable userIcon) {
|
private void addUserNow(String userName, Drawable userIcon, Boolean isAdmin) {
|
||||||
mSetupUserDialog.dismiss();
|
mSetupUserDialog.dismiss();
|
||||||
userName = (userName == null || userName.trim().isEmpty())
|
userName = (userName == null || userName.trim().isEmpty())
|
||||||
? getString(com.android.settingslib.R.string.user_new_user_name)
|
? getString(com.android.settingslib.R.string.user_new_user_name)
|
||||||
@@ -198,7 +155,7 @@ public class CreateUserActivity extends Activity {
|
|||||||
|
|
||||||
mUserCreator.createUser(userName, userIcon,
|
mUserCreator.createUser(userName, userIcon,
|
||||||
userInfo -> {
|
userInfo -> {
|
||||||
if (mGrantAdminRights) {
|
if (isAdmin) {
|
||||||
mUserCreator.setUserAdmin(userInfo.id);
|
mUserCreator.setUserAdmin(userInfo.id);
|
||||||
}
|
}
|
||||||
switchToUser(userInfo.id);
|
switchToUser(userInfo.id);
|
||||||
@@ -230,7 +187,7 @@ public class CreateUserActivity extends Activity {
|
|||||||
*/
|
*/
|
||||||
private void startActivity(Intent intent, int requestCode) {
|
private void startActivity(Intent intent, int requestCode) {
|
||||||
mActivityStarter.dismissKeyguardThenExecute(() -> {
|
mActivityStarter.dismissKeyguardThenExecute(() -> {
|
||||||
mEditUserInfoController.startingActivityForResult();
|
mCreateUserDialogController.startingActivityForResult();
|
||||||
startActivityForResult(intent, requestCode);
|
startActivityForResult(intent, requestCode);
|
||||||
return true;
|
return true;
|
||||||
}, /* cancel= */ null, /* afterKeyguardGone= */ 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.plugins.ActivityStarter
|
||||||
import com.android.systemui.qs.user.UserSwitchDialogController
|
import com.android.systemui.qs.user.UserSwitchDialogController
|
||||||
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
|
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.model.UserSwitcherSettingsModel
|
||||||
import com.android.systemui.user.data.repository.UserRepository
|
import com.android.systemui.user.data.repository.UserRepository
|
||||||
import com.android.systemui.user.data.source.UserRecord
|
import com.android.systemui.user.data.source.UserRecord
|
||||||
@@ -455,13 +456,16 @@ constructor(
|
|||||||
UserActionModel.ADD_USER -> {
|
UserActionModel.ADD_USER -> {
|
||||||
uiEventLogger.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
uiEventLogger.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
||||||
val currentUser = repository.getSelectedUserInfo()
|
val currentUser = repository.getSelectedUserInfo()
|
||||||
showDialog(
|
dismissDialog()
|
||||||
ShowDialogRequestModel.ShowAddUserDialog(
|
activityStarter.startActivity(
|
||||||
userHandle = currentUser.userHandle,
|
CreateUserActivity.createIntentForStart(
|
||||||
isKeyguardShowing = keyguardInteractor.isKeyguardShowing(),
|
applicationContext,
|
||||||
showEphemeralMessage = currentUser.isGuest && currentUser.isEphemeral,
|
keyguardInteractor.isKeyguardShowing()
|
||||||
dialogShower = dialogShower,
|
),
|
||||||
)
|
/* dismissShade= */ true,
|
||||||
|
/* animationController */ null,
|
||||||
|
/* showOverLockscreenWhenLocked */ true,
|
||||||
|
/* userHandle */ currentUser.getUserHandle(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
UserActionModel.ADD_SUPERVISED_USER -> {
|
UserActionModel.ADD_SUPERVISED_USER -> {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.testing.TestableLooper
|
|||||||
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
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.mock
|
||||||
import com.android.systemui.util.mockito.nullable
|
import com.android.systemui.util.mockito.nullable
|
||||||
import com.android.systemui.util.mockito.whenever
|
import com.android.systemui.util.mockito.whenever
|
||||||
@@ -27,9 +28,7 @@ class CreateUserActivityTest : SysuiTestCase() {
|
|||||||
createDialog(
|
createDialog(
|
||||||
/* activity = */ nullable(),
|
/* activity = */ nullable(),
|
||||||
/* activityStarter = */ nullable(),
|
/* activityStarter = */ nullable(),
|
||||||
/* oldUserIcon = */ nullable(),
|
/* isMultipleAdminsEnabled = */ any(),
|
||||||
/* defaultUserName = */ nullable(),
|
|
||||||
/* title = */ nullable(),
|
|
||||||
/* successCallback = */ nullable(),
|
/* successCallback = */ nullable(),
|
||||||
/* cancelCallback = */ nullable()
|
/* cancelCallback = */ nullable()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -482,30 +482,17 @@ class UserInteractorTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun executeAction_addUser_dialogShown() =
|
fun executeAction_addUser_dismissesDialogAndStartsActivity() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
val userInfos = createUserInfos(count = 2, includeGuest = false)
|
val userInfos = createUserInfos(count = 2, includeGuest = false)
|
||||||
userRepository.setUserInfos(userInfos)
|
userRepository.setUserInfos(userInfos)
|
||||||
userRepository.setSelectedUserInfo(userInfos[0])
|
userRepository.setSelectedUserInfo(userInfos[0])
|
||||||
keyguardRepository.setKeyguardShowing(false)
|
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))
|
verify(uiEventLogger, times(1))
|
||||||
.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
.log(MultiUserActionsEvent.CREATE_USER_FROM_USER_SWITCHER)
|
||||||
assertThat(dialogRequest())
|
|
||||||
.isEqualTo(
|
|
||||||
ShowDialogRequestModel.ShowAddUserDialog(
|
|
||||||
userHandle = userInfos[0].userHandle,
|
|
||||||
isKeyguardShowing = false,
|
|
||||||
showEphemeralMessage = false,
|
|
||||||
dialogShower = dialogShower,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
underTest.onDialogShown()
|
underTest.onDialogShown()
|
||||||
assertThat(dialogRequest()).isNull()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user