From 6db7c2d469807e48eadd740cc2c0752b3ca54df0 Mon Sep 17 00:00:00 2001 From: merrick-cr Date: Mon, 9 Nov 2026 18:05:21 +0000 Subject: [PATCH] [PM-38282] chore: Remove force update KDF settings feature flag (#7596) --- .../data/auth/manager/KdfManagerImpl.kt | 7 ---- .../data/auth/manager/di/AuthManagerModule.kt | 2 - .../data/auth/manager/KdfManagerTest.kt | 37 ------------------- .../core/data/manager/model/FlagKey.kt | 9 ----- .../core/data/manager/model/FlagKeyTest.kt | 5 --- .../components/debug/FeatureFlagListItems.kt | 2 - .../main/res/values/strings_non_localized.xml | 1 - 7 files changed, 63 deletions(-) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerImpl.kt index 12907a0839..f94c0abb24 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerImpl.kt @@ -1,7 +1,6 @@ package com.x8bit.bitwarden.data.auth.manager import com.bitwarden.core.UpdateKdfResponse -import com.bitwarden.core.data.manager.model.FlagKey import com.bitwarden.core.data.util.flatMap import com.bitwarden.crypto.Kdf import com.bitwarden.network.model.KdfTypeJson @@ -14,7 +13,6 @@ import com.x8bit.bitwarden.data.auth.datasource.sdk.util.toKdfRequestModel import com.x8bit.bitwarden.data.auth.repository.model.UpdateKdfMinimumsResult import com.x8bit.bitwarden.data.auth.repository.util.toUserStateJsonKdfUpdatedMinimums import com.x8bit.bitwarden.data.auth.util.KdfParamsConstants.DEFAULT_PBKDF2_ITERATIONS -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource import timber.log.Timber @@ -25,16 +23,11 @@ class KdfManagerImpl( private val authDiskSource: AuthDiskSource, private val vaultSdkSource: VaultSdkSource, private val accountsService: AccountsService, - private val featureFlagManager: FeatureFlagManager, ) : KdfManager { private val activeUserId: String? get() = authDiskSource.userState?.activeUserId override fun needsKdfUpdateToMinimums(userId: String): Boolean { - if (!featureFlagManager.getFeatureFlag(FlagKey.ForceUpdateKdfSettings)) { - return false - } - val account = authDiskSource .userState ?.accounts diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/di/AuthManagerModule.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/di/AuthManagerModule.kt index a18ee84656..3e90b5a49a 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/di/AuthManagerModule.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/auth/manager/di/AuthManagerModule.kt @@ -180,12 +180,10 @@ object AuthManagerModule { authDiskSource: AuthDiskSource, vaultSdkSource: VaultSdkSource, accountsService: AccountsService, - featureFlagManager: FeatureFlagManager, ): KdfManager = KdfManagerImpl( authDiskSource = authDiskSource, vaultSdkSource = vaultSdkSource, accountsService = accountsService, - featureFlagManager = featureFlagManager, ) @Provides diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerTest.kt index ae5f68a2d2..4ab0afd6d4 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/auth/manager/KdfManagerTest.kt @@ -3,7 +3,6 @@ package com.x8bit.bitwarden.data.auth.manager import com.bitwarden.core.MasterPasswordAuthenticationData import com.bitwarden.core.MasterPasswordUnlockData import com.bitwarden.core.UpdateKdfResponse -import com.bitwarden.core.data.manager.model.FlagKey import com.bitwarden.core.data.util.asFailure import com.bitwarden.core.data.util.asSuccess import com.bitwarden.crypto.Kdf @@ -16,11 +15,9 @@ import com.x8bit.bitwarden.data.auth.datasource.disk.model.AccountJson import com.x8bit.bitwarden.data.auth.datasource.disk.model.UserStateJson import com.x8bit.bitwarden.data.auth.datasource.disk.util.FakeAuthDiskSource import com.x8bit.bitwarden.data.auth.repository.model.UpdateKdfMinimumsResult -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource import io.mockk.coEvery import io.mockk.coVerify -import io.mockk.every import io.mockk.mockk import io.mockk.slot import kotlinx.coroutines.test.runTest @@ -36,15 +33,11 @@ class KdfManagerTest { private val fakeAuthDiskSource = FakeAuthDiskSource() private val vaultSdkSource: VaultSdkSource = mockk() private val accountsService: AccountsService = mockk() - private val featureFlagManager: FeatureFlagManager = mockk { - every { getFeatureFlag(FlagKey.ForceUpdateKdfSettings) } returns true - } private val manager: KdfManager = KdfManagerImpl( authDiskSource = fakeAuthDiskSource, vaultSdkSource = vaultSdkSource, accountsService = accountsService, - featureFlagManager = featureFlagManager, ) @Test @@ -266,36 +259,6 @@ class KdfManagerTest { ) } - @Test - @Suppress("MaxLineLength") - fun `updateKdfToMinimumsIfNeeded with feature flag ForceUpdateKdfSettings to false return Success`() = - runTest { - every { - featureFlagManager.getFeatureFlag(FlagKey.ForceUpdateKdfSettings) - } returns false - - fakeAuthDiskSource.userState = SINGLE_USER_STATE_1.copy( - accounts = mapOf( - USER_ID_1 to ACCOUNT_1.copy( - profile = PROFILE_1.copy( - kdfType = KdfTypeJson.PBKDF2_SHA256, - kdfIterations = 1000, - ), - ), - ), - ) - - val result = manager.updateKdfToMinimumsIfNeeded( - userId = USER_ID_1, - password = PASSWORD, - ) - - assertEquals( - UpdateKdfMinimumsResult.Success, - result, - ) - } - @Test fun `updateKdfToMinimumsIfNeeded if sdk throws an error should return Error`() = runTest { val error = Throwable("Kdf update failed") diff --git a/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt b/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt index 479ca3fa44..f08e44e021 100644 --- a/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt +++ b/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt @@ -30,7 +30,6 @@ sealed class FlagKey { */ val activePasswordManagerFlags: List> by lazy { listOf( - ForceUpdateKdfSettings, NoLogoutOnKdfChange, MigrateMyVaultToMyItems, CardScanner, @@ -62,14 +61,6 @@ sealed class FlagKey { override val defaultValue: Boolean = false } - /** - * Data object holding the feature flag key for the Force Update KDF Settings feature. - */ - data object ForceUpdateKdfSettings : FlagKey() { - override val keyName: String = "pm-18021-force-update-kdf-settings" - override val defaultValue: Boolean = false - } - /** * Data object holding the feature flag key for the No Logout On KDF Change feature. */ diff --git a/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt b/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt index 0d5b2df743..15dd13d3a3 100644 --- a/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt +++ b/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt @@ -12,10 +12,6 @@ class FlagKeyTest { FlagKey.BitwardenAuthenticationEnabled.keyName, "bitwarden-authentication-enabled", ) - assertEquals( - FlagKey.ForceUpdateKdfSettings.keyName, - "pm-18021-force-update-kdf-settings", - ) assertEquals( FlagKey.MigrateMyVaultToMyItems.keyName, "pm-20558-migrate-myvault-to-myitems", @@ -87,7 +83,6 @@ class FlagKeyTest { assertTrue( listOf( FlagKey.BitwardenAuthenticationEnabled, - FlagKey.ForceUpdateKdfSettings, FlagKey.MigrateMyVaultToMyItems, FlagKey.AttachmentUpdates, FlagKey.V2EncryptionJitPassword, diff --git a/ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt b/ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt index 13e667e100..c43da50081 100644 --- a/ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt +++ b/ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt @@ -24,7 +24,6 @@ fun FlagKey.ListItemContent( FlagKey.DummyBoolean, FlagKey.BitwardenAuthenticationEnabled, - FlagKey.ForceUpdateKdfSettings, FlagKey.NoLogoutOnKdfChange, FlagKey.MigrateMyVaultToMyItems, FlagKey.CardScanner, @@ -85,7 +84,6 @@ private fun FlagKey.getDisplayLabel(): String = when (this) { FlagKey.DummyString, -> this.keyName - FlagKey.ForceUpdateKdfSettings -> stringResource(BitwardenString.force_update_kdf_settings) FlagKey.NoLogoutOnKdfChange -> stringResource(BitwardenString.avoid_logout_on_kdf_change) FlagKey.BitwardenAuthenticationEnabled -> { stringResource(BitwardenString.bitwarden_authentication_enabled) diff --git a/ui/src/main/res/values/strings_non_localized.xml b/ui/src/main/res/values/strings_non_localized.xml index 8e6836f620..b0d3c5200a 100644 --- a/ui/src/main/res/values/strings_non_localized.xml +++ b/ui/src/main/res/values/strings_non_localized.xml @@ -43,7 +43,6 @@ 2FAS (no password) LastPass (.json) Aegis (.json) - Force update KDF settings Avoid logout on KDF change Migrate My Vault to My Items Trigger cookie acquisition