diff options
4 files changed, 20 insertions, 37 deletions
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index 1e5bd7bf843e..7d433648df28 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt @@ -152,22 +152,6 @@ class CredentialManagerRepo( return CreateFlowUtils.toRequestDisplayInfo(requestInfo, context) } - companion object { - // TODO: find a way to resolve this static field leak problem - lateinit var repo: CredentialManagerRepo - - fun setup( - context: Context, - intent: Intent, - ) { - repo = CredentialManagerRepo(context, intent) - } - - fun getInstance(): CredentialManagerRepo { - return repo - } - } - // TODO: below are prototype functionalities. To be removed for productionization. private fun testCreateCredentialEnabledProviderList(): List<CreateCredentialProviderData> { return listOf( diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt index 686415f9d3e9..0620f9aa8c82 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt @@ -45,19 +45,19 @@ import kotlinx.coroutines.launch class CredentialSelectorActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - CredentialManagerRepo.setup(this, intent) + val credManRepo = CredentialManagerRepo(this, intent) UserConfigRepo.setup(this) - val requestInfo = CredentialManagerRepo.getInstance().requestInfo + val requestInfo = credManRepo.requestInfo setContent { CredentialSelectorTheme { - CredentialManagerBottomSheet(DialogType.toDialogType(requestInfo.type)) + CredentialManagerBottomSheet(DialogType.toDialogType(requestInfo.type), credManRepo) } } } @ExperimentalMaterialApi @Composable - fun CredentialManagerBottomSheet(dialogType: DialogType) { + fun CredentialManagerBottomSheet(dialogType: DialogType, credManRepo: CredentialManagerRepo) { val providerActivityResult = remember { mutableStateOf<ProviderActivityResult?>(null) } val launcher = rememberLauncherForActivityResult( ActivityResultContracts.StartIntentSenderForResult() @@ -66,7 +66,9 @@ class CredentialSelectorActivity : ComponentActivity() { } when (dialogType) { DialogType.CREATE_PASSKEY -> { - val viewModel: CreateCredentialViewModel = viewModel() + val viewModel: CreateCredentialViewModel = viewModel{ + CreateCredentialViewModel(credManRepo) + } lifecycleScope.launch { viewModel.observeDialogResult().collect{ dialogResult -> onCancel(dialogResult) @@ -79,7 +81,9 @@ class CredentialSelectorActivity : ComponentActivity() { CreateCredentialScreen(viewModel = viewModel, providerActivityLauncher = launcher) } DialogType.GET_CREDENTIALS -> { - val viewModel: GetCredentialViewModel = viewModel() + val viewModel: GetCredentialViewModel = viewModel{ + GetCredentialViewModel(credManRepo) + } lifecycleScope.launch { viewModel.observeDialogResult().collect{ dialogResult -> onCancel(dialogResult) diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt index 3e1137df345f..ac84503583a8 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt @@ -52,10 +52,9 @@ data class CreateCredentialUiState( ) class CreateCredentialViewModel( - credManRepo: CredentialManagerRepo = CredentialManagerRepo.getInstance(), - userConfigRepo: UserConfigRepo = UserConfigRepo.getInstance() + private val credManRepo: CredentialManagerRepo, + userConfigRepo: UserConfigRepo = UserConfigRepo.getInstance(), ) : ViewModel() { - var providerEnableListUiState = credManRepo.getCreateProviderEnableListInitialUiState() var providerDisableListUiState = credManRepo.getCreateProviderDisableListInitialUiState() @@ -142,12 +141,12 @@ class CreateCredentialViewModel( } fun onDisabledProvidersSelected() { - CredentialManagerRepo.getInstance().onCancel() + credManRepo.onCancel() dialogResult.tryEmit(DialogResult(ResultState.LAUNCH_SETTING_CANCELED)) } fun onCancel() { - CredentialManagerRepo.getInstance().onCancel() + credManRepo.onCancel() dialogResult.tryEmit(DialogResult(ResultState.NORMAL_CANCELED)) } @@ -189,7 +188,7 @@ class CreateCredentialViewModel( hidden = true, ) } else { - CredentialManagerRepo.getInstance().onOptionSelected( + credManRepo.onOptionSelected( providerId, entryKey, entrySubkey @@ -243,7 +242,7 @@ class CreateCredentialViewModel( "$providerId, key=${entry.entryKey}, subkey=${entry.entrySubkey}, " + "resultCode=$resultCode, resultData=$resultData}" ) - CredentialManagerRepo.getInstance().onOptionSelected( + credManRepo.onOptionSelected( providerId, entry.entryKey, entry.entrySubkey, resultCode, resultData, ) } else { diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt index af59a0a39c72..6f0f76b72e50 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt @@ -46,9 +46,7 @@ data class GetCredentialUiState( val isNoAccount: Boolean = false, ) -class GetCredentialViewModel( - credManRepo: CredentialManagerRepo = CredentialManagerRepo.getInstance() -) : ViewModel() { +class GetCredentialViewModel(private val credManRepo: CredentialManagerRepo) : ViewModel() { var uiState by mutableStateOf(credManRepo.getCredentialInitialUiState()) private set @@ -70,9 +68,7 @@ class GetCredentialViewModel( hidden = true, ) } else { - CredentialManagerRepo.getInstance().onOptionSelected( - entry.providerId, entry.entryKey, entry.entrySubkey, - ) + credManRepo.onOptionSelected(entry.providerId, entry.entryKey, entry.entrySubkey) dialogResult.tryEmit(DialogResult(ResultState.COMPLETE)) } } @@ -110,7 +106,7 @@ class GetCredentialViewModel( "${entry.providerId}, key=${entry.entryKey}, subkey=${entry.entrySubkey}, " + "resultCode=$resultCode, resultData=$resultData}" ) - CredentialManagerRepo.getInstance().onOptionSelected( + credManRepo.onOptionSelected( entry.providerId, entry.entryKey, entry.entrySubkey, resultCode, resultData, ) @@ -144,7 +140,7 @@ class GetCredentialViewModel( } fun onCancel() { - CredentialManagerRepo.getInstance().onCancel() + credManRepo.onCancel() dialogResult.tryEmit(DialogResult(ResultState.NORMAL_CANCELED)) } } |