Merge "User switcher dialog morphs again." into tm-qpr-dev am: a24fa7985f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20224776 Change-Id: I83211a26856be0fb49e9d00306b5170442765bdc Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -429,6 +429,7 @@ constructor(
|
||||
isGuestEphemeral = currentlySelectedUserInfo.isEphemeral,
|
||||
isKeyguardShowing = keyguardInteractor.isKeyguardShowing(),
|
||||
onExitGuestUser = this::exitGuestUser,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
)
|
||||
return
|
||||
@@ -443,6 +444,7 @@ constructor(
|
||||
isGuestEphemeral = currentlySelectedUserInfo.isEphemeral,
|
||||
isKeyguardShowing = keyguardInteractor.isKeyguardShowing(),
|
||||
onExitGuestUser = this::exitGuestUser,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
)
|
||||
return
|
||||
@@ -477,6 +479,7 @@ constructor(
|
||||
userHandle = currentUser.userHandle,
|
||||
isKeyguardShowing = keyguardInteractor.isKeyguardShowing(),
|
||||
showEphemeralMessage = currentUser.isGuest && currentUser.isEphemeral,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,14 +18,18 @@
|
||||
package com.android.systemui.user.domain.model
|
||||
|
||||
import android.os.UserHandle
|
||||
import com.android.systemui.qs.user.UserSwitchDialogController
|
||||
|
||||
/** Encapsulates a request to show a dialog. */
|
||||
sealed class ShowDialogRequestModel {
|
||||
sealed class ShowDialogRequestModel(
|
||||
open val dialogShower: UserSwitchDialogController.DialogShower? = null,
|
||||
) {
|
||||
data class ShowAddUserDialog(
|
||||
val userHandle: UserHandle,
|
||||
val isKeyguardShowing: Boolean,
|
||||
val showEphemeralMessage: Boolean,
|
||||
) : ShowDialogRequestModel()
|
||||
override val dialogShower: UserSwitchDialogController.DialogShower?,
|
||||
) : ShowDialogRequestModel(dialogShower)
|
||||
|
||||
data class ShowUserCreationDialog(
|
||||
val isGuest: Boolean,
|
||||
@@ -37,5 +41,6 @@ sealed class ShowDialogRequestModel {
|
||||
val isGuestEphemeral: Boolean,
|
||||
val isKeyguardShowing: Boolean,
|
||||
val onExitGuestUser: (guestId: Int, targetId: Int, forceRemoveGuest: Boolean) -> Unit,
|
||||
) : ShowDialogRequestModel()
|
||||
override val dialogShower: UserSwitchDialogController.DialogShower?,
|
||||
) : ShowDialogRequestModel(dialogShower)
|
||||
}
|
||||
|
||||
@@ -19,8 +19,10 @@ package com.android.systemui.user.ui.dialog
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import com.android.internal.jank.InteractionJankMonitor
|
||||
import com.android.settingslib.users.UserCreatingDialog
|
||||
import com.android.systemui.CoreStartable
|
||||
import com.android.systemui.animation.DialogCuj
|
||||
import com.android.systemui.animation.DialogLaunchAnimator
|
||||
import com.android.systemui.broadcast.BroadcastSender
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
@@ -71,37 +73,58 @@ constructor(
|
||||
}
|
||||
}
|
||||
|
||||
currentDialog =
|
||||
val (dialog, dialogCuj) =
|
||||
when (request) {
|
||||
is ShowDialogRequestModel.ShowAddUserDialog ->
|
||||
AddUserDialog(
|
||||
context = context.get(),
|
||||
userHandle = request.userHandle,
|
||||
isKeyguardShowing = request.isKeyguardShowing,
|
||||
showEphemeralMessage = request.showEphemeralMessage,
|
||||
falsingManager = falsingManager.get(),
|
||||
broadcastSender = broadcastSender.get(),
|
||||
dialogLaunchAnimator = dialogLaunchAnimator.get(),
|
||||
Pair(
|
||||
AddUserDialog(
|
||||
context = context.get(),
|
||||
userHandle = request.userHandle,
|
||||
isKeyguardShowing = request.isKeyguardShowing,
|
||||
showEphemeralMessage = request.showEphemeralMessage,
|
||||
falsingManager = falsingManager.get(),
|
||||
broadcastSender = broadcastSender.get(),
|
||||
dialogLaunchAnimator = dialogLaunchAnimator.get(),
|
||||
),
|
||||
DialogCuj(
|
||||
InteractionJankMonitor.CUJ_USER_DIALOG_OPEN,
|
||||
INTERACTION_JANK_ADD_NEW_USER_TAG,
|
||||
),
|
||||
)
|
||||
is ShowDialogRequestModel.ShowUserCreationDialog ->
|
||||
UserCreatingDialog(
|
||||
context.get(),
|
||||
request.isGuest,
|
||||
Pair(
|
||||
UserCreatingDialog(
|
||||
context.get(),
|
||||
request.isGuest,
|
||||
),
|
||||
null,
|
||||
)
|
||||
is ShowDialogRequestModel.ShowExitGuestDialog ->
|
||||
ExitGuestDialog(
|
||||
context = context.get(),
|
||||
guestUserId = request.guestUserId,
|
||||
isGuestEphemeral = request.isGuestEphemeral,
|
||||
targetUserId = request.targetUserId,
|
||||
isKeyguardShowing = request.isKeyguardShowing,
|
||||
falsingManager = falsingManager.get(),
|
||||
dialogLaunchAnimator = dialogLaunchAnimator.get(),
|
||||
onExitGuestUserListener = request.onExitGuestUser,
|
||||
Pair(
|
||||
ExitGuestDialog(
|
||||
context = context.get(),
|
||||
guestUserId = request.guestUserId,
|
||||
isGuestEphemeral = request.isGuestEphemeral,
|
||||
targetUserId = request.targetUserId,
|
||||
isKeyguardShowing = request.isKeyguardShowing,
|
||||
falsingManager = falsingManager.get(),
|
||||
dialogLaunchAnimator = dialogLaunchAnimator.get(),
|
||||
onExitGuestUserListener = request.onExitGuestUser,
|
||||
),
|
||||
DialogCuj(
|
||||
InteractionJankMonitor.CUJ_USER_DIALOG_OPEN,
|
||||
INTERACTION_JANK_EXIT_GUEST_MODE_TAG,
|
||||
),
|
||||
)
|
||||
}
|
||||
currentDialog = dialog
|
||||
|
||||
if (request.dialogShower != null && dialogCuj != null) {
|
||||
request.dialogShower?.showDialog(dialog, dialogCuj)
|
||||
} else {
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
currentDialog?.show()
|
||||
interactor.get().onDialogShown()
|
||||
}
|
||||
}
|
||||
@@ -120,4 +143,9 @@ constructor(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val INTERACTION_JANK_ADD_NEW_USER_TAG = "add_new_user"
|
||||
private const val INTERACTION_JANK_EXIT_GUEST_MODE_TAG = "exit_guest_mode"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import androidx.test.filters.SmallTest
|
||||
import com.android.internal.R.drawable.ic_account_circle
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.common.shared.model.Text
|
||||
import com.android.systemui.qs.user.UserSwitchDialogController
|
||||
import com.android.systemui.user.data.model.UserSwitcherSettingsModel
|
||||
import com.android.systemui.user.data.source.UserRecord
|
||||
import com.android.systemui.user.domain.model.ShowDialogRequestModel
|
||||
@@ -316,14 +317,16 @@ class UserInteractorRefactoredTest : UserInteractorTest() {
|
||||
keyguardRepository.setKeyguardShowing(false)
|
||||
var dialogRequest: ShowDialogRequestModel? = null
|
||||
val job = underTest.dialogShowRequests.onEach { dialogRequest = it }.launchIn(this)
|
||||
val dialogShower: UserSwitchDialogController.DialogShower = mock()
|
||||
|
||||
underTest.executeAction(UserActionModel.ADD_USER)
|
||||
underTest.executeAction(UserActionModel.ADD_USER, dialogShower)
|
||||
assertThat(dialogRequest)
|
||||
.isEqualTo(
|
||||
ShowDialogRequestModel.ShowAddUserDialog(
|
||||
userHandle = userInfos[0].userHandle,
|
||||
isKeyguardShowing = false,
|
||||
showEphemeralMessage = false,
|
||||
dialogShower = dialogShower,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user