diff --git a/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt b/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt index b2faacf5df..e915df263a 100644 --- a/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt +++ b/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt @@ -32,6 +32,7 @@ import mozilla.components.service.fxa.manager.SCOPE_SESSION import mozilla.components.service.fxa.manager.SCOPE_SYNC import mozilla.components.service.fxa.manager.SyncEnginesStorage import mozilla.components.service.fxa.sync.GlobalSyncableStoreProvider +import mozilla.components.service.sync.autofill.AutofillCreditCardsAddressesStorage import mozilla.components.service.sync.logins.SyncableLoginsStorage import mozilla.components.support.utils.RunWhenReadyQueue import org.mozilla.fenix.Config @@ -60,6 +61,7 @@ class BackgroundServices( bookmarkStorage: Lazy, passwordsStorage: Lazy, remoteTabsStorage: Lazy, + creditCardsStorage: Lazy, strictMode: StrictModeManager ) { // Allows executing tasks which depend on the account manager, but do not need to eagerly initialize it. @@ -91,16 +93,29 @@ class BackgroundServices( @VisibleForTesting val supportedEngines = - setOf(SyncEngine.History, SyncEngine.Bookmarks, SyncEngine.Passwords, SyncEngine.Tabs) - private val syncConfig = SyncConfig(supportedEngines, PeriodicSyncConfig(periodMinutes = 240)) // four hours + setOf( + SyncEngine.History, + SyncEngine.Bookmarks, + SyncEngine.Passwords, + SyncEngine.Tabs, + SyncEngine.CreditCards + ) + private val syncConfig = + SyncConfig(supportedEngines, PeriodicSyncConfig(periodMinutes = 240)) // four hours + + private val creditCardKeyProvider by lazyMonitored { creditCardsStorage.value.crypto } init { - // Make the "history", "bookmark", "passwords", "tabs" stores + // Make the "history", "bookmark", "passwords", "tabs", "credit cards" stores // accessible to workers spawned by the sync manager. GlobalSyncableStoreProvider.configureStore(SyncEngine.History to historyStorage) GlobalSyncableStoreProvider.configureStore(SyncEngine.Bookmarks to bookmarkStorage) GlobalSyncableStoreProvider.configureStore(SyncEngine.Passwords to passwordsStorage) GlobalSyncableStoreProvider.configureStore(SyncEngine.Tabs to remoteTabsStorage) + GlobalSyncableStoreProvider.configureStore( + storePair = SyncEngine.CreditCards to creditCardsStorage, + keyProvider = lazy { creditCardKeyProvider } + ) } private val telemetryAccountObserver = TelemetryAccountObserver( diff --git a/app/src/main/java/org/mozilla/fenix/components/Components.kt b/app/src/main/java/org/mozilla/fenix/components/Components.kt index 6e1de74e9e..25e60d7c82 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -59,6 +59,7 @@ class Components(private val context: Context) { core.lazyBookmarksStorage, core.lazyPasswordsStorage, core.lazyRemoteTabsStorage, + core.lazyAutofillStorage, strictMode ) } diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index 8eccde5ca7..c18624e347 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -294,7 +294,7 @@ class Core( val lazyHistoryStorage = lazyMonitored { PlacesHistoryStorage(context, crashReporter) } val lazyBookmarksStorage = lazyMonitored { PlacesBookmarksStorage(context) } val lazyPasswordsStorage = lazyMonitored { SyncableLoginsStorage(context, passwordsEncryptionKey) } - private val lazyAutofillStorage = lazyMonitored { AutofillCreditCardsAddressesStorage(context, lazySecurePrefs) } + val lazyAutofillStorage = lazyMonitored { AutofillCreditCardsAddressesStorage(context, lazySecurePrefs) } /** * The storage component to sync and persist tabs in a Firefox Sync account.