Merge "Skip provider switching dialog when app sets a preferred default." into udc-dev

This commit is contained in:
Helen Qin
2023-04-18 17:56:55 +00:00
committed by Android (Google) Code Review
3 changed files with 13 additions and 11 deletions

View File

@@ -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
)
)

View File

@@ -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,

View File

@@ -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,
}