[PR #5033] [MERGED] [PM-20508] Centralize passkey credential entry creation #5420

Closed
opened 2025-11-26 23:59:35 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/5033
Author: @SaintPatrck
Created: 4/11/2025
Status: Merged
Merged: 4/30/2025
Merged by: @SaintPatrck

Base: mainHead: passkeys/favicons


📝 Commits (1)

  • 121e24d [PM-20508] Centralize passkey credential entry creation

📊 Changes

20 files changed (+702 additions, -478 deletions)

View changed files

📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/di/Fido2ProviderModule.kt (+17 -4)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManager.kt (+11 -0)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt (+212 -1)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/processor/Fido2ProviderProcessorImpl.kt (+23 -129)
📝 app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/util/Fido2IntentUtils.kt (+4 -3)
📝 app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt (+20 -7)
📝 app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerImpl.kt (+1 -36)
📝 app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/model/GetFido2CredentialsResult.kt (+2 -2)
📝 app/src/main/java/com/x8bit/bitwarden/ui/platform/composition/LocalManagerProvider.kt (+1 -1)
📝 app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/intent/IntentManager.kt (+2 -0)
📝 app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/intent/IntentManagerImpl.kt (+7 -0)
📝 app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModel.kt (+9 -6)
📝 app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerTest.kt (+240 -1)
📝 app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/processor/Fido2ProviderProcessorTest.kt (+100 -212)
📝 app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/util/Fido2IntentUtilsTest.kt (+16 -1)
📝 app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt (+14 -11)
📝 app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt (+5 -2)
📝 app/src/test/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerTest.kt (+5 -59)
📝 app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt (+1 -1)
📝 app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt (+12 -2)

📄 Description

🎟️ Tracking

Resolves PM-20176
Resolves PM-20127

📔 Objective

Move the responsibility of building credential entries from Fido2ProviderProcessor to Fido2CredentialManager. This change centralizes the credential handling and simplifies the code in Fido2ProviderProcessor by delegating this task.

Key changes:

  • Fido2CredentialManager:
    • Implemented getCredentialEntries() to handle the retrieval and creation of CredentialEntry objects.
    • Now uses the VaultRepository to fetch and decrypt credential data.
    • Uses EnvironmentRepository to get base icon url.
    • Now uses Glide for network image loading (currently disabled).
    • Includes logic to handle biometric prompts.
  • Fido2ProviderProcessor:
    • Removed the logic for building CredentialEntry.
    • Now relies on Fido2CredentialManager to provide the credential entries.
    • Updated logic in handleFido2GetCredentialsRequest to delegate credential retrieval to manager.
  • Fido2CompletionManager:
    • Updated to use CredentialEntry.
    • Updated logic to use new GetFido2CredentialsResult.
  • VaultItemListingViewModel:
    • Updated logic in handleFido2GetCredentialsRequest to delegate credential retrieval to manager.
  • Tests:
    • Updated unit tests to reflect the changes in Fido2ProviderProcessor, VaultItemListingScreenTest, and Fido2CompletionManager.
  • Dependencies:
    • Removed redundant dependencies.
  • Cleanup:
    • Removed unnecessary code and comments.
  • Module dependency:
    • Added dispatcher and environment modules dependencies to Fido2Provider module.
  • LocalManagerProvider:
    • Fido2CompletionManager doesn't need IntentManager anymore.

Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Protected functional changes with optionality (feature flags)
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/5033 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 4/11/2025 **Status:** ✅ Merged **Merged:** 4/30/2025 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `passkeys/favicons` --- ### 📝 Commits (1) - [`121e24d`](https://github.com/bitwarden/android/commit/121e24d7491291c5928c68845a111bfd1cf26ca9) [PM-20508] Centralize passkey credential entry creation ### 📊 Changes **20 files changed** (+702 additions, -478 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/di/Fido2ProviderModule.kt` (+17 -4) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManager.kt` (+11 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerImpl.kt` (+212 -1) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/processor/Fido2ProviderProcessorImpl.kt` (+23 -129) 📝 `app/src/main/java/com/x8bit/bitwarden/data/autofill/fido2/util/Fido2IntentUtils.kt` (+4 -3) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt` (+20 -7) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerImpl.kt` (+1 -36) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/model/GetFido2CredentialsResult.kt` (+2 -2) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/platform/composition/LocalManagerProvider.kt` (+1 -1) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/intent/IntentManager.kt` (+2 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/platform/manager/intent/IntentManagerImpl.kt` (+7 -0) 📝 `app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModel.kt` (+9 -6) 📝 `app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/manager/Fido2CredentialManagerTest.kt` (+240 -1) 📝 `app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/processor/Fido2ProviderProcessorTest.kt` (+100 -212) 📝 `app/src/test/java/com/x8bit/bitwarden/data/autofill/fido2/util/Fido2IntentUtilsTest.kt` (+16 -1) 📝 `app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/sdk/model/CipherViewUtil.kt` (+14 -11) 📝 `app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt` (+5 -2) 📝 `app/src/test/java/com/x8bit/bitwarden/ui/autofill/fido2/manager/Fido2CompletionManagerTest.kt` (+5 -59) 📝 `app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingScreenTest.kt` (+1 -1) 📝 `app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/itemlisting/VaultItemListingViewModelTest.kt` (+12 -2) </details> ### 📄 Description ## 🎟️ Tracking Resolves PM-20176 Resolves PM-20127 ## 📔 Objective Move the responsibility of building credential entries from `Fido2ProviderProcessor` to `Fido2CredentialManager`. This change centralizes the credential handling and simplifies the code in `Fido2ProviderProcessor` by delegating this task. Key changes: - **Fido2CredentialManager:** - Implemented `getCredentialEntries()` to handle the retrieval and creation of `CredentialEntry` objects. - Now uses the `VaultRepository` to fetch and decrypt credential data. - Uses `EnvironmentRepository` to get base icon url. - Now uses Glide for network image loading (currently disabled). - Includes logic to handle biometric prompts. - **Fido2ProviderProcessor:** - Removed the logic for building `CredentialEntry`. - Now relies on `Fido2CredentialManager` to provide the credential entries. - Updated logic in `handleFido2GetCredentialsRequest` to delegate credential retrieval to manager. - **Fido2CompletionManager:** - Updated to use `CredentialEntry`. - Updated logic to use new `GetFido2CredentialsResult`. - **VaultItemListingViewModel:** - Updated logic in `handleFido2GetCredentialsRequest` to delegate credential retrieval to manager. - **Tests:** - Updated unit tests to reflect the changes in `Fido2ProviderProcessor`, `VaultItemListingScreenTest`, and `Fido2CompletionManager`. - **Dependencies:** - Removed redundant dependencies. - **Cleanup:** - Removed unnecessary code and comments. - **Module dependency:** - Added dispatcher and environment modules dependencies to Fido2Provider module. - **LocalManagerProvider:** - `Fido2CompletionManager` doesn't need `IntentManager` anymore. ## ⏰ Reminders before review - Contributor guidelines followed - All formatters and local linters executed and passed - Written new unit and / or integration tests where applicable - Protected functional changes with optionality (feature flags) - Used internationalization (i18n) for all UI strings - CI builds passed - Communicated to DevOps any deployment requirements - Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team ## 🦮 Reviewer guidelines <!-- Suggested interactions but feel free to use (or not) as you desire! --> - 👍 (`:+1:`) or similar for great changes - 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info - ❓ (`:question:`) for questions - 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - 🎨 (`:art:`) for suggestions / improvements - ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or concerns needing attention - 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or indications of technical debt - ⛏ (`:pick:`) for minor or nitpick changes --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2025-11-26 23:59:35 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#5420