[PM-29572] feat: Add save-password-credential flow with user interaction#2762
[PM-29572] feat: Add save-password-credential flow with user interaction#2762fedemkr wants to merge 6 commits into
Conversation
Implements iOS 26.2 silent password save via performWithoutUserInteractionIfPossible(savePasswordRequest:). Adds the savePasswordWithoutUserInteraction extension mode, a new savePasswordCredential method on AppProcessor, and a CipherView convenience initialiser that builds a login cipher from a username, password, and URI.
…iceIdentifier extension The same serviceIdentifier.type switch existed in two places. Extracted to a single normalizedURI property so future changes to identifier-type handling only need to be made once.
Implements the iOS 26.2 prepareInterface(for:ASSavePasswordRequest) path in the AutoFill extension, which presents the full Add/Edit Item form pre-populated with the credential data. On successful save the extension is dismissed via completeSavePasswordRequest(). On error an alert is shown and the user stays on the form.
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE This PR adds the iOS 26.2 Code Review DetailsNo issues found. Notes:
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## PM-29571/extension-save-password-no-ui #2762 +/- ##
==========================================================================
- Coverage 87.80% 87.80% -0.01%
==========================================================================
Files 1709 1709
Lines 165862 165956 +94
==========================================================================
+ Hits 145641 145712 +71
- Misses 20221 20244 +23 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-29572
📔 Objective
Implements the iOS 26.2
prepareInterface(for:ASSavePasswordRequest)override in the AutoFill extension — the with-user-interaction path for saving a new password credential.When iOS determines the vault is locked (or the no-UI path fails), it escalates to this flow, which presents the full Add/Edit Item form pre-populated with the credential's username, password, URI, and title. On successful save the extension is dismissed via
completeSavePasswordRequest(completionHandler:). On error an alert is shown and the user stays on the form.Note:
CredentialProviderModenow uses a singlesavePasswordCredential(any SavePasswordRequestProxy, userInteraction: Bool)case for both the UI and no-UI paths, mirroring theautofillFido2Credentialpattern.📸 Screenshots
Save.autofill.extension.with.user.interaction.mov