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 db217ec40..5fb17e156 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -21,7 +21,7 @@ class Components(private val context: Context) { core.historyStorage, core.bookmarksStorage, core.passwordsStorage, - core.secureAbove22Preferences + core.getSecureAbove22Preferences() ) } val services by lazy { Services(context, backgroundServices.accountManager) } 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 871f5f806..afaef121c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -191,19 +191,17 @@ class Core(private val context: Context) { * Shared Preferences that encrypt/decrypt using Android KeyStore and lib-dataprotect for 23+ * otherwise simply stored */ - val secureAbove22Preferences by lazy { - SecureAbove22Preferences(context, KEY_STORAGE_NAME) - } + fun getSecureAbove22Preferences() = SecureAbove22Preferences(context, KEY_STORAGE_NAME) - private val passwordsEncryptionKey = - secureAbove22Preferences.getString(PASSWORDS_KEY) + private val passwordsEncryptionKey: String = + getSecureAbove22Preferences().getString(PASSWORDS_KEY) ?: generateEncryptionKey(KEY_STRENGTH).also { if (context.settings().passwordsEncryptionKeyGenerated) { // We already had previously generated an encryption key, but we have lost it Sentry.capture("Passwords encryption key for passwords storage was lost and we generated a new one") } context.settings().recordPasswordsEncryptionKeyGenerated() - secureAbove22Preferences.putString(PASSWORDS_KEY, it) + getSecureAbove22Preferences().putString(PASSWORDS_KEY, it) } /** diff --git a/app/src/test/java/org/mozilla/fenix/components/TestCore.kt b/app/src/test/java/org/mozilla/fenix/components/TestCore.kt index 5c1e0c00b..2f8fac928 100644 --- a/app/src/test/java/org/mozilla/fenix/components/TestCore.kt +++ b/app/src/test/java/org/mozilla/fenix/components/TestCore.kt @@ -10,6 +10,7 @@ import mozilla.components.browser.engine.gecko.GeckoEngine import mozilla.components.browser.session.SessionManager import mozilla.components.browser.state.store.BrowserStore import mozilla.components.feature.pwa.WebAppShortcutManager +import mozilla.components.lib.dataprotect.SecureAbove22Preferences class TestCore(context: Context) : Core(context) { @@ -17,4 +18,5 @@ class TestCore(context: Context) : Core(context) { override val sessionManager = SessionManager(engine) override val store = mockk() override val webAppShortcutManager = mockk() + override fun getSecureAbove22Preferences() = mockk(relaxed = true) }