Skip provider switching dialog when app sets a preferred default.
Do not show the provider switching dialog when the app overrides the user default provider to prevent confusion in user experience. Bug: 278607758 Test: manual (see bug for recordings) Change-Id: Iea64792ff860420861d19509fdaaf6ab30435558
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.credentialmanager
|
||||
|
||||
import android.app.Activity
|
||||
import android.os.IBinder
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import androidx.activity.compose.ManagedActivityResultLauncher
|
||||
import androidx.activity.result.ActivityResult
|
||||
@@ -67,9 +68,9 @@ class CredentialSelectorViewModel(
|
||||
|
||||
var uiMetrics: UIMetrics = UIMetrics()
|
||||
|
||||
init{
|
||||
init {
|
||||
uiMetrics.logNormal(LifecycleEvent.CREDMAN_ACTIVITY_INIT,
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
@@ -100,7 +101,7 @@ class CredentialSelectorViewModel(
|
||||
if (this.credManRepo.requestInfo?.token != credManRepo.requestInfo?.token) {
|
||||
this.uiMetrics.resetInstanceId()
|
||||
this.uiMetrics.logNormal(LifecycleEvent.CREDMAN_ACTIVITY_NEW_REQUEST,
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,7 +175,7 @@ class CredentialSelectorViewModel(
|
||||
private fun onInternalError() {
|
||||
Log.w(Constants.LOG_TAG, "UI closed due to illegal internal state")
|
||||
this.uiMetrics.logNormal(LifecycleEvent.CREDMAN_ACTIVITY_INTERNAL_ERROR,
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
credManRepo.requestInfo?.appPackageName)
|
||||
credManRepo.onParsingFailureCancel()
|
||||
uiState = uiState.copy(dialogState = DialogState.COMPLETE)
|
||||
}
|
||||
@@ -314,10 +315,11 @@ class CredentialSelectorViewModel(
|
||||
uiState = uiState.copy(
|
||||
createCredentialUiState = uiState.createCredentialUiState?.copy(
|
||||
currentScreenState =
|
||||
if (activeEntry.activeProvider.id ==
|
||||
userConfigRepo.getDefaultProviderId())
|
||||
if (activeEntry.activeProvider.id == userConfigRepo.getDefaultProviderId() ||
|
||||
!TextUtils.isEmpty(uiState.createCredentialUiState?.requestDisplayInfo
|
||||
?.appPreferredDefaultProviderId))
|
||||
CreateScreenState.CREATION_OPTION_SELECTION
|
||||
else CreateScreenState.MORE_OPTIONS_ROW_INTRO,
|
||||
else CreateScreenState.DEFAULT_PROVIDER_CONFIRMATION,
|
||||
activeEntry = activeEntry
|
||||
)
|
||||
)
|
||||
|
||||
@@ -139,12 +139,12 @@ fun CreateCredentialScreen(
|
||||
onRemoteEntrySelected = viewModel::createFlowOnEntrySelected,
|
||||
onLog = { viewModel.logUiEvent(it) },
|
||||
)
|
||||
CreateScreenState.MORE_OPTIONS_ROW_INTRO -> {
|
||||
CreateScreenState.DEFAULT_PROVIDER_CONFIRMATION -> {
|
||||
if (createCredentialUiState.activeEntry == null) {
|
||||
viewModel.onIllegalUiState("Expect active entry to be non-null" +
|
||||
" upon default provider dialog.")
|
||||
} else {
|
||||
MoreOptionsRowIntroCard(
|
||||
DefaultProviderConfirmationCard(
|
||||
selectedEntry = createCredentialUiState.activeEntry,
|
||||
onIllegalScreenState = viewModel::onIllegalUiState,
|
||||
onChangeDefaultSelected =
|
||||
@@ -420,7 +420,7 @@ fun MoreOptionsSelectionCard(
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MoreOptionsRowIntroCard(
|
||||
fun DefaultProviderConfirmationCard(
|
||||
selectedEntry: ActiveEntry,
|
||||
onIllegalScreenState: (String) -> Unit,
|
||||
onChangeDefaultSelected: () -> Unit,
|
||||
|
||||
@@ -126,6 +126,6 @@ enum class CreateScreenState {
|
||||
PROVIDER_SELECTION,
|
||||
CREATION_OPTION_SELECTION,
|
||||
MORE_OPTIONS_SELECTION,
|
||||
MORE_OPTIONS_ROW_INTRO,
|
||||
DEFAULT_PROVIDER_CONFIRMATION,
|
||||
EXTERNAL_ONLY_SELECTION,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user