commit c999a98b42e7569d80e24a18b967b6628432a7b6 parent 0490c73f2f226982928bccb4b32ed716c48bbfa4 Author: Cosmin Sabou <csabou@mozilla.com> Date: Tue, 16 Dec 2025 21:51:12 +0200 Revert "Bug 1979206 - Handled AutofillApiException and changed getAllCreditCards to return Result type r=android-reviewers,android-l10n-reviewers,flod,matt-tighe" for causing fenix failures on FakeCreditCardsStorage This reverts commit 6224e0d18940ad45d96715b28b63850086411b7f. Revert "Bug 1979206 - Handled AutofillApiException and changed getAllAddresses to return Result type r=android-reviewers,android-l10n-reviewers,flod,matt-tighe" This reverts commit bcc86c1763f0800c43a3bb7a085cbf04957c7152. Diffstat:
17 files changed, 49 insertions(+), 133 deletions(-)
diff --git a/mobile/android/android-components/components/concept/storage/src/main/java/mozilla/components/concept/storage/CreditCardsAddressesStorage.kt b/mobile/android/android-components/components/concept/storage/src/main/java/mozilla/components/concept/storage/CreditCardsAddressesStorage.kt @@ -49,10 +49,9 @@ interface CreditCardsAddressesStorage { /** * Retrieves a list of all the credit cards. * - * @return A [Result] containing the list of [CreditCard]s on success, or a failure if the - * underlying autofill storage throws an [AutofillApiException]. + * @return A list of all [CreditCard]. */ - suspend fun getAllCreditCards(): Result<List<CreditCard>> + suspend fun getAllCreditCards(): List<CreditCard> /** * Deletes the credit card with the given [guid]. @@ -89,10 +88,9 @@ interface CreditCardsAddressesStorage { /** * Retrieves a list of all the addresses. * - * @return A [Result] containing the list of [Address]s on success, or a failure if the - * underlying autofill storage throws an [AutofillApiException]. + * @return A list of all [Address]. */ - suspend fun getAllAddresses(): Result<List<Address>> + suspend fun getAllAddresses(): List<Address> /** * Updates the fields in the provided address. @@ -443,11 +441,6 @@ interface CreditCardValidationDelegate { * can be used to update its information. */ data class CanBeUpdated(val foundCreditCard: CreditCard) : Result() - - /** - * Indicates that an error occurred in the storage layer. - */ - data object StorageFailure : Result() } /** diff --git a/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/creditcard/CreditCardSaveDialogFragment.kt b/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/creditcard/CreditCardSaveDialogFragment.kt @@ -32,7 +32,6 @@ import mozilla.components.feature.prompts.dialog.KEY_SHOULD_DISMISS_ON_LOAD import mozilla.components.feature.prompts.dialog.PromptDialogFragment import mozilla.components.feature.prompts.facts.emitCreditCardAutofillCreatedFact import mozilla.components.feature.prompts.facts.emitCreditCardAutofillUpdatedFact -import mozilla.components.support.base.log.logger.Logger import mozilla.components.support.ktx.android.content.appName import mozilla.components.support.ktx.android.view.toScope import mozilla.components.support.utils.creditCardIssuerNetwork @@ -55,8 +54,6 @@ internal class CreditCardSaveDialogFragment : PromptDialogFragment() { @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal var confirmResult: Result = Result.CanBeCreated - private val logger = Logger("CreditCardSaveDialogFragment") - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return BottomSheetDialog(requireContext(), R.style.MozDialogStyle).apply { setCancelable(true) @@ -128,7 +125,6 @@ internal class CreditCardSaveDialogFragment : PromptDialogFragment() { is Result.CanBeUpdated -> { emitCreditCardAutofillUpdatedFact() } - else -> {} } } @@ -145,8 +141,7 @@ internal class CreditCardSaveDialogFragment : PromptDialogFragment() { */ private fun updateUI(view: View) = view.toScope().launch(IO) { val validationDelegate = feature?.creditCardValidationDelegate ?: return@launch - val result = validationDelegate.shouldCreateOrUpdate(creditCard) - confirmResult = result + confirmResult = validationDelegate.shouldCreateOrUpdate(creditCard) withContext(Main) { when (confirmResult) { @@ -163,14 +158,6 @@ internal class CreditCardSaveDialogFragment : PromptDialogFragment() { confirmButtonText = requireContext().getString(R.string.mozac_feature_prompt_update_confirmation), showMessageBody = false, ) - is Result.StorageFailure -> { - logger.error("Failed to validate credit card before showing prompt") - feature?.onCancel( - sessionId = sessionId, - promptRequestUID = promptRequestUID, - ) - dismiss() - } } } } diff --git a/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/AutofillCreditCardsAddressesStorage.kt b/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/AutofillCreditCardsAddressesStorage.kt @@ -123,8 +123,8 @@ class AutofillCreditCardsAddressesStorage( } } - override suspend fun getAllCreditCards(): Result<List<CreditCard>> = withContext(coroutineContext) { - Result.runCatching { conn.getStorage().getAllCreditCards().map { it.into() } } + override suspend fun getAllCreditCards(): List<CreditCard> = withContext(coroutineContext) { + conn.getStorage().getAllCreditCards().map { it.into() } } override suspend fun deleteCreditCard(guid: String): Boolean = withContext(coroutineContext) { @@ -148,8 +148,8 @@ class AutofillCreditCardsAddressesStorage( } } - override suspend fun getAllAddresses(): Result<List<Address>> = withContext(coroutineContext) { - Result.runCatching { conn.getStorage().getAllAddresses().map { it.into() } } + override suspend fun getAllAddresses(): List<Address> = withContext(coroutineContext) { + conn.getStorage().getAllAddresses().map { it.into() } } override suspend fun updateAddress(guid: String, address: UpdatableAddressFields) = diff --git a/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/DefaultCreditCardValidationDelegate.kt b/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/DefaultCreditCardValidationDelegate.kt @@ -26,9 +26,7 @@ class DefaultCreditCardValidationDelegate( override suspend fun shouldCreateOrUpdate(creditCard: CreditCardEntry): Result = withContext(coroutineContext) { - val creditCards = storage.value.getAllCreditCards().getOrElse { - return@withContext Result.StorageFailure - } + val creditCards = storage.value.getAllCreditCards() val foundCreditCard = if (creditCards.isEmpty()) { // No credit cards exist in the storage -> create a new credit card diff --git a/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/GeckoCreditCardsAddressesStorageDelegate.kt b/mobile/android/android-components/components/service/sync-autofill/src/main/java/mozilla/components/service/sync/autofill/GeckoCreditCardsAddressesStorageDelegate.kt @@ -17,7 +17,6 @@ import mozilla.components.concept.storage.CreditCardsAddressesStorageDelegate import mozilla.components.concept.storage.ManagedKey import mozilla.components.concept.storage.NewCreditCardFields import mozilla.components.concept.storage.UpdatableCreditCardFields -import mozilla.components.support.base.log.logger.Logger import mozilla.components.support.ktx.kotlin.last4Digits /** @@ -36,7 +35,6 @@ class GeckoCreditCardsAddressesStorageDelegate( private val isCreditCardAutofillEnabled: () -> Boolean = { false }, private val isAddressAutofillEnabled: () -> Boolean = { false }, ) : CreditCardsAddressesStorageDelegate { - private val logger = Logger("GeckoCCAddressesStorageDelegate") override suspend fun getOrGenerateKey(): ManagedKey { val crypto = storage.value.getCreditCardCrypto() @@ -55,10 +53,7 @@ class GeckoCreditCardsAddressesStorageDelegate( if (!isAddressAutofillEnabled()) { emptyList() } else { - storage.value.getAllAddresses().getOrElse { - logger.error("Failed to load addresses for autofill", it) - emptyList() - } + storage.value.getAllAddresses() } } @@ -71,10 +66,7 @@ class GeckoCreditCardsAddressesStorageDelegate( if (!isCreditCardAutofillEnabled()) { emptyList() } else { - storage.value.getAllCreditCards().getOrElse { - logger.error("Failed to load credit cards for autofill", it) - emptyList() - } + storage.value.getAllCreditCards() } } @@ -108,7 +100,6 @@ class GeckoCreditCardsAddressesStorageDelegate( ), ) } - is CreditCardValidationDelegate.Result.StorageFailure -> {} } } } diff --git a/mobile/android/android-components/components/service/sync-autofill/src/test/java/mozilla/components/service/sync/autofill/AutofillCreditCardsAddressesStorageTest.kt b/mobile/android/android-components/components/service/sync-autofill/src/test/java/mozilla/components/service/sync/autofill/AutofillCreditCardsAddressesStorageTest.kt @@ -128,7 +128,7 @@ class AutofillCreditCardsAddressesStorageTest { val creditCard2 = storage.addCreditCard(creditCardFields2) val creditCard3 = storage.addCreditCard(creditCardFields3) - val creditCards = storage.getAllCreditCards().getOrThrow() + val creditCards = storage.getAllCreditCards() val key = storage.crypto.getOrGenerateKey() val savedCreditCard1 = creditCards.find { it == creditCard1 } @@ -317,7 +317,7 @@ class AutofillCreditCardsAddressesStorageTest { val address2 = storage.addAddress(addressFields2) val address3 = storage.addAddress(addressFields3) - val addresses = storage.getAllAddresses().getOrThrow() + val addresses = storage.getAllAddresses() val savedAddress1 = addresses.find { it == address1 } assertNotNull(savedAddress1) diff --git a/mobile/android/android-components/components/service/sync-autofill/src/test/java/mozilla/components/service/sync/autofill/GeckoCreditCardsAddressesStorageDelegateTest.kt b/mobile/android/android-components/components/service/sync-autofill/src/test/java/mozilla/components/service/sync/autofill/GeckoCreditCardsAddressesStorageDelegateTest.kt @@ -79,7 +79,7 @@ class GeckoCreditCardsAddressesStorageDelegateTest { runTest(testDispatcher) { val storage: AutofillCreditCardsAddressesStorage = mock() val storedCards = listOf<CreditCard>(mock()) - doReturn(Result.success(storedCards)).`when`(storage).getAllCreditCards() + doReturn(storedCards).`when`(storage).getAllCreditCards() delegate = GeckoCreditCardsAddressesStorageDelegate(lazy { storage }, testDispatcher, isCreditCardAutofillEnabled = { true }) val result = delegate.onCreditCardsFetch() @@ -93,7 +93,7 @@ class GeckoCreditCardsAddressesStorageDelegateTest { runTest(testDispatcher) { val storage: AutofillCreditCardsAddressesStorage = mock() val storedCards = listOf<CreditCard>(mock()) - doReturn(Result.success(storedCards)).`when`(storage).getAllCreditCards() + doReturn(storedCards).`when`(storage).getAllCreditCards() delegate = GeckoCreditCardsAddressesStorageDelegate(lazy { storage }, testDispatcher, isCreditCardAutofillEnabled = { false }) val result = delegate.onCreditCardsFetch() @@ -214,7 +214,7 @@ class GeckoCreditCardsAddressesStorageDelegateTest { runTest(testDispatcher) { val storage: AutofillCreditCardsAddressesStorage = mock() val storedAddresses = listOf<Address>(mock(), mock()) - doReturn(Result.success(storedAddresses)).`when`(storage).getAllAddresses() + doReturn(storedAddresses).`when`(storage).getAllAddresses() delegate = GeckoCreditCardsAddressesStorageDelegate(lazy { storage }, testDispatcher, isAddressAutofillEnabled = { true }) val result = delegate.onAddressesFetch() @@ -228,7 +228,7 @@ class GeckoCreditCardsAddressesStorageDelegateTest { runTest(testDispatcher) { val storage: AutofillCreditCardsAddressesStorage = mock() val storedCards = listOf<CreditCard>(mock()) - doReturn(Result.success(storedCards)).`when`(storage).getAllCreditCards() + doReturn(storedCards).`when`(storage).getAllCreditCards() delegate = GeckoCreditCardsAddressesStorageDelegate(lazy { storage }, testDispatcher, isAddressAutofillEnabled = { false }) val result = delegate.onAddressesFetch() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt @@ -1002,10 +1002,8 @@ open class FenixApplication : LocaleAwareApplication(), Provider { GlobalScope.launch(IO) { try { val autoFillStorage = applicationContext.components.core.autofillStorage - val addresses = autoFillStorage.getAllAddresses().getOrElse { throw it } - Addresses.savedAll.set(addresses.size.toLong()) - val ccs = autoFillStorage.getAllCreditCards().getOrElse { throw it } - CreditCards.savedAll.set(ccs.size.toLong()) + Addresses.savedAll.set(autoFillStorage.getAllAddresses().size.toLong()) + CreditCards.savedAll.set(autoFillStorage.getAllCreditCards().size.toLong()) } catch (e: AutofillApiException) { logger.error("Failed to fetch autofill data", e) } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/addresses/AddressesTools.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/addresses/AddressesTools.kt @@ -31,7 +31,6 @@ import kotlinx.coroutines.launch import mozilla.components.compose.base.button.FilledButton import mozilla.components.concept.storage.Address import mozilla.components.concept.storage.CreditCardsAddressesStorage -import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.R import org.mozilla.fenix.compose.SwitchWithLabel import org.mozilla.fenix.compose.list.RadioButtonListItem @@ -56,43 +55,29 @@ fun AddressesTools( possibleDebugRegions = possibleDebugRegions.updateRegionEnabled(region, isEnabled) } - val logger = Logger - val scope = rememberCoroutineScope() var addresses by remember { mutableStateOf(listOf<Address>()) } LaunchedEffect(Unit) { - creditCardsAddressesStorage.getAllAddresses() - .onSuccess { addresses = it } - .onFailure { logger.error("Failed to load addresses", it) } + addresses = creditCardsAddressesStorage.getAllAddresses() } val onAddAddress: (String) -> Unit = { selectedLangTag -> scope.launch { creditCardsAddressesStorage.addAddress(selectedLangTag.generateFakeAddressForLangTag()) - creditCardsAddressesStorage.getAllAddresses() - .onSuccess { addresses = it } - .onFailure { logger.error("Failed to reload addresses after add", it) } + addresses = creditCardsAddressesStorage.getAllAddresses() } } val onDeleteAddress: (Address) -> Unit = { address -> scope.launch { creditCardsAddressesStorage.deleteAddress(address.guid) - creditCardsAddressesStorage.getAllAddresses() - .onSuccess { addresses = it } - .onFailure { logger.error("Failed to reload addresses after delete", it) } + addresses = creditCardsAddressesStorage.getAllAddresses() } } val onDeleteAllAddresses: () -> Unit = { scope.launch { - creditCardsAddressesStorage.getAllAddresses() - .onSuccess { loaded -> - loaded.forEach { address -> - creditCardsAddressesStorage.deleteAddress(address.guid) - } - creditCardsAddressesStorage.getAllAddresses() - .onSuccess { addresses = it } - .onFailure { logger.error("Failed to reload addresses after delete all", it) } - } - .onFailure { logger.error("Failed to load addresses before delete all", it) } + creditCardsAddressesStorage.getAllAddresses().forEach { address -> + creditCardsAddressesStorage.deleteAddress(address.guid) + } + addresses = creditCardsAddressesStorage.getAllAddresses() } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/addresses/FakeCreditCardsAddressesStorage.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/addresses/FakeCreditCardsAddressesStorage.kt @@ -104,9 +104,7 @@ internal class FakeCreditCardsAddressesStorage : CreditCardsAddressesStorage { throw UnsupportedOperationException() } - override suspend fun getAllCreditCards(): Result<List<CreditCard>> { - return Result.success(creditCards) - } + override suspend fun getAllCreditCards(): List<CreditCard> = creditCards override suspend fun deleteCreditCard(guid: String): Boolean { return creditCards.remove(creditCards.find { it.guid == guid }) @@ -125,8 +123,9 @@ internal class FakeCreditCardsAddressesStorage : CreditCardsAddressesStorage { return addresses.find { it.guid == guid } } - override suspend fun getAllAddresses(): Result<List<Address>> = - Result.success(addresses) + override suspend fun getAllAddresses(): List<Address> { + return addresses + } override suspend fun updateAddress(guid: String, address: UpdatableAddressFields) { throw UnsupportedOperationException() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/creditcards/CreditCardsTools.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/creditcards/CreditCardsTools.kt @@ -45,27 +45,26 @@ fun CreditCardsTools( val scope = rememberCoroutineScope() var creditCards by remember { mutableStateOf(listOf<CreditCard>()) } LaunchedEffect(Unit) { - creditCards = creditCardsAddressesStorage.getAllCreditCards().getOrDefault(emptyList()) + creditCards = creditCardsAddressesStorage.getAllCreditCards() } val onAddCreditCard: () -> Unit = { scope.launch { creditCardsAddressesStorage.addCreditCard(FakeCreditCardsAddressesStorage.generateCreditCard()) - creditCards = creditCardsAddressesStorage.getAllCreditCards().getOrDefault(emptyList()) + creditCards = creditCardsAddressesStorage.getAllCreditCards() } } val onDeleteCreditCard: (CreditCard) -> Unit = { creditCard -> scope.launch { creditCardsAddressesStorage.deleteCreditCard(creditCard.guid) - creditCards = creditCardsAddressesStorage.getAllCreditCards().getOrDefault(emptyList()) + creditCards = creditCardsAddressesStorage.getAllCreditCards() } } val onDeleteAllCreditCards: () -> Unit = { scope.launch { - creditCardsAddressesStorage.getAllCreditCards().getOrDefault(emptyList()) - .forEach { creditCard -> - creditCardsAddressesStorage.deleteCreditCard(creditCard.guid) - } - creditCards = creditCardsAddressesStorage.getAllCreditCards().getOrDefault(emptyList()) + creditCardsAddressesStorage.getAllCreditCards().forEach { creditCard -> + creditCardsAddressesStorage.deleteCreditCard(creditCard.guid) + } + creditCards = creditCardsAddressesStorage.getAllCreditCards() } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/address/AddressManagementFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/address/AddressManagementFragment.kt @@ -12,7 +12,6 @@ import androidx.fragment.app.Fragment import androidx.fragment.compose.content import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController -import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import mozilla.components.lib.state.ext.consumeFrom @@ -96,16 +95,10 @@ class AddressManagementFragment : Fragment() { */ private fun loadAddresses() { lifecycleScope.launch { - val result = requireContext().components.core.autofillStorage.getAllAddresses() + val addresses = requireContext().components.core.autofillStorage.getAllAddresses() + lifecycleScope.launch(Dispatchers.Main) { - result.onSuccess { store.dispatch(AutofillAction.UpdateAddresses(it)) } - result.onFailure { - Snackbar.make( - requireView(), - R.string.autofill_addresses_load_error, - Snackbar.LENGTH_LONG, - ).show() - } + store.dispatch(AutofillAction.UpdateAddresses(addresses)) } } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/autofill/AutofillSettingFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/autofill/AutofillSettingFragment.kt @@ -24,7 +24,6 @@ import androidx.preference.Preference import androidx.preference.SwitchPreference import com.google.android.material.color.MaterialColors import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -403,21 +402,12 @@ class AutofillSettingFragment : BiometricPromptPreferenceFragment() { val creditCards = requireComponents.core.autofillStorage.getAllCreditCards() lifecycleScope.launch(Dispatchers.Main) { - addresses.onSuccess { store.dispatch(AutofillAction.UpdateAddresses(it)) } - creditCards.onSuccess { store.dispatch(AutofillAction.UpdateCreditCards(it)) } - val errorMessageId = when { - addresses.isFailure && creditCards.isFailure -> R.string.autofill_load_error - addresses.isFailure -> R.string.autofill_addresses_load_error - creditCards.isFailure -> R.string.autofill_credit_card_load_error - else -> null - } - - errorMessageId?.let { - Snackbar.make(requireView(), it, Snackbar.LENGTH_LONG).show() - } + store.dispatch(AutofillAction.UpdateAddresses(addresses)) + store.dispatch(AutofillAction.UpdateCreditCards(creditCards)) } - isAutofillStateLoaded = true } + + isAutofillStateLoaded = true } /** diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/autofill/ui/AutofillSettingsMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/autofill/ui/AutofillSettingsMiddleware.kt @@ -16,7 +16,6 @@ import mozilla.components.lib.state.MiddlewareContext import mozilla.components.lib.state.Store import mozilla.components.service.fxa.manager.FxaAccountManager import mozilla.components.service.sync.autofill.AutofillCreditCardsAddressesStorage -import mozilla.components.support.base.log.logger.Logger import org.mozilla.fenix.settings.autofill.AutofillScreenDestination import org.mozilla.fenix.settings.logins.ui.LoginsAction @@ -44,8 +43,6 @@ internal class AutofillSettingsMiddleware( private val scope = CoroutineScope(ioDispatcher) private lateinit var observer: AccountObserver - private val logger = Logger - override fun invoke( context: MiddlewareContext<AutofillSettingsState, AutofillSettingsAction>, next: (AutofillSettingsAction) -> Unit, @@ -111,12 +108,8 @@ internal class AutofillSettingsMiddleware( val addresses = autofillSettingsStorage.getAllAddresses() val creditCards = autofillSettingsStorage.getAllCreditCards() - addresses.onSuccess { dispatch(UpdateAddresses(addresses = it)) } - creditCards.onSuccess { dispatch(UpdateCreditCards(creditCards = it)) } - val failure = addresses.exceptionOrNull() ?: creditCards.exceptionOrNull() - if (failure != null) { - logger.error("Failed to load autofill data", failure) - } + dispatch(UpdateAddresses(addresses = addresses)) + dispatch(UpdateCreditCards(creditCards = creditCards)) } private fun Store<AutofillSettingsState, AutofillSettingsAction>.registerObserverForAccountChanges( diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/creditcards/CreditCardsManagementFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/creditcards/CreditCardsManagementFragment.kt @@ -10,7 +10,6 @@ import android.view.View import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController -import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import mozilla.components.lib.state.ext.consumeFrom @@ -102,10 +101,7 @@ class CreditCardsManagementFragment : SecureFragment() { val creditCards = requireContext().components.core.autofillStorage.getAllCreditCards() lifecycleScope.launch(Dispatchers.Main) { - creditCards.onSuccess { store.dispatch(AutofillAction.UpdateCreditCards(it)) } - creditCards.onFailure { - Snackbar.make(requireView(), R.string.autofill_load_error, Snackbar.LENGTH_LONG).show() - } + store.dispatch(AutofillAction.UpdateCreditCards(creditCards)) } } } diff --git a/mobile/android/fenix/app/src/main/res/values/strings.xml b/mobile/android/fenix/app/src/main/res/values/strings.xml @@ -2533,12 +2533,6 @@ <string name="preferences_addresses_add_address">Add address</string> <!-- Preference option for managing saved addresses --> <string name="preferences_addresses_manage_addresses">Manage addresses</string> - <!-- Snackbar message shown when autofill addresses data cannot be loaded --> - <string name="autofill_addresses_load_error">Could not load addresses autofill data</string> - <!-- Snackbar message shown when autofill data cannot be loaded --> - <string name="autofill_load_error">Could not load autofill data</string> - <!-- Snackbar message shown when autofill credit card data cannot be loaded --> - <string name="autofill_credit_card_load_error">Could not load credit card data</string> <!-- Preference for saving and filling addresses --> <string name="preferences_addresses_save_and_autofill_addresses_2">Save and fill addresses</string> <!-- Preference summary for saving and filling address data --> diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/creditcards/ui/FakeCreditCardsStorage.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/creditcards/ui/FakeCreditCardsStorage.kt @@ -96,7 +96,7 @@ class FakeCreditCardsStorage( override suspend fun getAddress(guid: String): Address? = null - override suspend fun getAllAddresses(): Result<List<Address>> = Result.success(emptyList()) + override suspend fun getAllAddresses(): List<Address> = emptyList() override suspend fun updateAddress(guid: String, address: UpdatableAddressFields) = Unit