mirror of
https://github.com/bitwarden/android.git
synced 2026-08-13 22:08:44 -05:00
Closed
opened 2026-05-12 03:24:16 -05:00 by GiteaMirror
·
0 comments
No Branch/Tag Specified
main
PM-40531-lock-who-can-view-when-enforced
PM-41295/identity-autofill-multiple-address
PM-41296/identity-autofill-vault-selection-type
PM-41297/identity-autofill-fill-assit
PM-41293/identity-autofill-fill-assist-field-mapping
PM-41294/identity-autofill-multi-partition-pipeline
PM-41292/identity-autofill-heuristic-field-detection
PM-38570/firebase-testharness-dist
PM-41291/identity-autofill-model-and-data-layer
llm/plan-implement-review-command
auth/pm-41503-and-pm-41533/registration-add-open-org-invite-support
cxf/editable-fields
crowdin-pull
release/2026.8-rc60
agp-update
PM-40295-mp-policy-on-unlock
test-stack-2
test-stack-1
release/2026.7-rc59
worktree-QA-2177-blockeduri-testtag
release/2026.7-rc58
PM-37256/merge-fill-assist-with-traverse
update-billing-api
agalles/create-deploy-workflow-trigger
allow-user-certs
vvolkgang/fdroid-update
release/2026.6-rc57
agalles/create-github-workflow-trigger
release/2026.6-rc56
release/2026.5-rc55
release/2026.5-rc53
release/2026.5-rc54
PM-37255/consume-fill-assist-rules-data
PM-26896-autofill-fix
release/hotfix-v2026.4.1-bwpm
target-sdk-37
agalles/fdroid-only
BWA-99/show-next-totp
BWA-99/add-preview-next-totp-code-setting
sync-min-sdk
release/2026.4-rc51
related-origin-passkey-creation
release/2026.4-rc50
platform/android-breaking-change-detection
innovation-sprint-2026-send-folder
release/2026.3-rc49
PM-34193-vault-lockout
android-collections
QA-1523/sanity-test-saucelabs
release/2026.3-rc48
release/2026.2-rc47
pr-6572
release/2026.2-rc46
release/2026.1-rc45
PM-30644/added-logs-for-debug
PM-30644/quicktile-nav-not-showing-migration
minor-gradle-updates
release/2026.1-rc42
release/2026.1-rc44
release/2026.1-rc43
PM-28834/set-landscape-on-horizonos-devices
PM-28468/validate-and-navigate-to-vault-migration
PM-20026/force-ltr-passwords-and-codes
release/2025.12-rc41
cmcg/testCoverage
PM-29014/talkback-support-for-passwords
release/2025.12-rc40
BRE-1305/publish_test
accept-user-certs
autofill-permissions
release/2025.11-rc39
PM-22479/check-all-certificates-validate-asset-links
release/2025.10-rc38
agalles/android-latest
retro-agent
PM-27001/skip-account-selection-only-one-exists-cxp
release/2025.10-rc37
agalles/test-1118
release/2025.10-rc36
PM-20593-token-refresh
QA-1126b/adding-native-sanity-test
release/2025.9-rc35
pm-25933/sdk-update-password
release/2025.9-rc34
release/2025.8-rc33
agalles/20250821-release
debug-release-issues
pm-24249-allow-automated-prs-for-sdk-updates
release/2025.8-rc32
release/WORKFLOW-TEST-2025.8-rc28
agalles/20250807release
release/2025.07-rc25
release/hotfix-v2025.7.0-bwa
pm-23311/export-vault-policy-bypass
release/2025.07-rc24
authenticator-pm-sync-flags-issue
release/hotfix-v2025.6.0-bwpm
release/2025.06-rc21
agalles/automate-android-fastlane-patch
release/2025.05-rc20
release/2025.04-rc19
languages/basque
release/2025.03-rc19
update-readme
qrcode/feature
innovation/archive/pm-19153-archive-items
qrcode/2-ui-fields
qrcode/1-page
hold-on-biometric-prompt-alternative
release-notes-process
release/2025.02-rc16
bwa-monorepo
PM-8223/new-device-verification-ux-improvements
pm-18451/exempt-from-policies
test-bwa
release/2025.01-rc15
release/2025.01-rc14
release/2024.12-rc13
pm-16670/sync-leave-notice
821
PM-16695/backport-lean-more-new-device-verification
release/hotfix-v2024.11.7
release/2024.11-rc1
pm-11304/collection-add-item-button
PM-14241/disabling-logs-app-crash
poc/offline-editing
new-version-calc
pm-11649/expired-link-services
pm-6702/add-feature-flag
pm-6702/email-verification-feature
pm-9933/marketing-copy-update
pm-6702/registration-flows
update-templates
pm-6701/email-verification-selfhost-registration
v2026.7.1-bwpm
v2026.7.1-bwa
v2026.7.0-bwpm
v2026.7.0-bwa
v2026.6.1-bwa
v2026.6.1-bwpm
v2026.6.0-bwpm
v2026.6.0-bwa
v2026.5.1-bwpm
v2026.5.1-bwa
v2026.5.0-bwpm
v2026.5.0-bwa
v2026.4.2-bwpm
v2026.4.1-bwa
v2026.4.1-bwpm
v2026.4.0-bwa
v2026.4.0-bwpm
v2026.3.1-bwa
v2026.3.1-bwpm
v2026.3.0-bwpm
v2026.3.0-bwa
v2026.2.1-bwpm
v2026.2.1-bwa
v2026.2.0-bwpm
v2026.2.0-bwa
v2026.1.1-bwa
v2026.1.1-bwpm
temp-test
v2026.1.0-bwpm
v2026.1.0-bwa
v2025.12.1-bwa
v2025.12.1-bwpm
v2025.12.0-bwa
v2025.12.0-bwpm
v2025.11.1-bwpm
v2025.11.1-bwa
v2025.11.0-bwpm
v2025.11.0-bwa
v2025.10.1-bwa
v2025.10.1-bwpm
v2025.10.0-bwa
v2025.10.0-bwpm
v2025.9.1-bwa
v2025.9.1-bwpm
v2025.9.0-bwa
v2025.9.0-bwpm
v2025.8.1-bwa
v2025.8.1-bwpm
v2025.8.0-bwa
v2025.8.0-bwpm
v2025.7.2-bwa
v2025.7.2-bwpm
v2025.7.1-bwa
v2025.7.1-bwpm
v2025.7.0-bwa
v2025.7.0-bwpm
v2025.6.1-bwpm
v2025.6.0-bwa
v2025.6.0-bwpm
v2025.1.0-bwa
v2025.5.0-bwa
v2025.5.0-bwpm
v2025.5.999
2025.4.0
v2025.4.0
untagged-4731eaadac73f3dfbbb8
v2025.3.0
v2025.2.0
untagged-815a165c5d70ffe75bc7
v2025.1.2
v2025.1.1
v2025.1.0
v2024.12.0
untagged-5a76b6392a4c8998c63a
v2024.11.7
v2024.11.6
v2024.11.5
v2024.11.4
v2024.11.3
v2024.11.2
v2024.11.1
v2024.11.0
v2024.10.2
v2024.10.1
v2024.10.0
v2024.9.0
v2024.8.1
v2024.8.0
v2024.7.3
v2024.7.2
v2024.7.1
v2024.7.0
v2024.6.1
v2024.6.0
v2024.5.1
v2024.4.1
v2024.4.2
v2024.4.0
v2024.3.3
v2024.3.1
v2024.3.0
v2024.2.1
v2024.2.0
v2024.1.1
v2024.1.0
v2023.12.0
v2023.10.0
v2023.9.2
maui-single-project-android
v2023.9.1
v2023.9.0
v2023.8.0
v2023.7.0
v2023.5.0
v2023.4.0
v2023.3.2
v2023.3.1
v2023.3.0
v2023.2.0
v2023.1.0
v2022.11.0
v2022.10.0
v2022.9.1
v2022.9.0
v2022.8.0
v2022.6.2
v2022.6.1
v2022.6.0
v2022.05.0
v2.18.0
v2.17.0
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.15.0
v2.14.2
v2.14.1
v2.14.0
v2.13.0
v2.12.0
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.0
v2.9.1
v2.9.0
v2.8.2
v2.8.1
v2.8.0
v2.7.2
v2.7.0
v2.6.1
v2.6.0
v2.5.6
v.2.5.5
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.8
v2.2.7
v2.2.6
v2.2.2
v2.2.1
v2.2.0
v2.1.2
v2.1.0
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.22.1
v1.22.0
v1.21.0
v1.20.0
v1.19.0
v1.18.1
v1.18.0
v1.17.0
v1.16.0
v1.15.2
v1.15.1
v1.15.0
v1.14.4
v1.14.1
v1.14.0
v1.13.0
v1.12.2
v1.12.1
v1.12.0
v1.11.1
v1.11.0
v1.10.0
v1.9.0
v1.8.1
v1.8.0
v1.7.0
v1.6.5
v1.6.1
v1.6.0
v1.5.1
v1.5.0
v1.4.4
v1.4.3
v1.4.0
v1.3.0
v1.2.1
v1.2.0
v1.1.0
v1.0.0
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
No labels
pull-request
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/android#63906
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/bitwarden/android/pull/6517
Author: @SaintPatrck
Created: 2/10/2026
Status: ✅ Merged
Merged: 2/11/2026
Merged by: @SaintPatrck
Base:
main← Head:cookie-vending/p8-t3_server-comm-config-platform-api📝 Commits (4)
e2d56ac[PM-32029] Implement SDK interfaces for cookie managementcf1146aRemove deleteCookieConfig in favor of storeCookieConfig with null7529cdfMerge remote-tracking branch 'origin/main' into cookie-vending/p8-t3_server-comm-config-platform-apifeb5e33Add detailed KDoc to explain cookie acquisition fallback📊 Changes
27 files changed (+836 additions, -5 deletions)
View changed files
📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/CookieDiskSource.kt(+3 -3)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/CookieDiskSourceImpl.kt(+2 -2)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/error/CookiesRequiredException.kt(+12 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/CookieAcquisitionRequestManager.kt(+24 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/CookieAcquisitionRequestManagerImpl.kt(+24 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/SdkClientManagerImpl.kt(+6 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt(+25 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/model/CookieAcquisitionRequest.kt(+10 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/SdkPlatformApiFactory.kt(+14 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/SdkPlatformApiFactoryImpl.kt(+20 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/SdkRepositoryFactory.kt(+6 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/SdkRepositoryFactoryImpl.kt(+12 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/platformapi/ServerCommunicationConfigPlatformApiImpl.kt(+53 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/repository/ServerCommunicationConfigRepositoryImpl.kt(+76 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/util/AcquiredCookieExtensions.kt(+19 -0)➕
app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/util/CookieConfigurationDataExtensions.kt(+18 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/ScopedVaultSdkSourceImpl.kt(+3 -0)📝
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/di/VaultSdkModule.kt(+3 -0)📝
app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/CookieDiskSourceTest.kt(+44 -0)➕
app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/sdk/ServerCommunicationConfigPlatformApiTest.kt(+64 -0)...and 7 more files
📄 Description
🎟️ Tracking
PM-32039
📔 Objective
Implement the repository and platform API interfaces required by the
servercommunicationconfigSDK module. It wires them into the SDK client, handles the cookie acquisition flow, and provides the necessary data conversions and state management.Integrate the
servercommunicationconfigSDK by implementing itsServerCommunicationConfigRepositoryandServerCommunicationConfigPlatformApiinterfaces, enabling the SDK to manage cookie-based authentication configurations.Behavioral Changes
CookieAcquisitionRequeststate change and throw aCookiesRequiredException. This is designed to halt the current operation and signal the UI to navigate to a cookie acquisition screen.Specific Changes
Part A: SDK Platform API Implementation
ServerCommunicationConfigPlatformApiImpl: Implements the SDK'sServerCommunicationConfigPlatformApi.-
acquireCookies(): When called by the SDK, it usesCookieAcquisitionRequestManagerto set a pending acquisition request. It then throws aCookiesRequiredExceptionto cancel the current API call, allowing the UI to handle the navigation flow.CookieAcquisitionRequestManager: A new manager with aStateFlow(cookieAcquisitionRequestFlow) to broadcast the need for cookie acquisition to the application's UI/navigation layer.CookiesRequiredException: A newIOExceptionto signal that an operation was halted because cookies are required.SdkPlatformApiFactory: A new factory responsible for creating instances of theServerCommunicationConfigPlatformApiImpl, now integrated intoSdkClientManager.Part B: SDK Repository Implementation
ServerCommunicationConfigRepositoryImpl: Implements the SDK'sServerCommunicationConfigRepository.- Bridges the SDK's storage contract to the application's
CookieDiskSourceandConfigDiskSource.-
get(): Reads the server communication bootstrap config and the locally stored cookies, converting them into the SDK'sServerCommunicationConfigmodel. It returnsBootstrapConfig.Directif the configuration is notssoCookieVendor.-
save(): Converts the SDK'sServerCommunicationConfigback into the application'sCookieConfigurationDataand persists it usingCookieDiskSource.- It handles
BootstrapConfig.Directby deleting any existing cookie configuration for the given hostname.CookieDiskSource: Extended with adeleteCookieConfig(hostname)method.Part C: Data Model and Utilities
CookieConfigurationDataExtensions/AcquiredCookieExtensions: New extension functions to seamlessly convert between the SDK'sAcquiredCookieand the application's domain modelCookieConfigurationData.Cookie.CookieAcquisitionRequest: New data class to represent a pending cookie acquisition request, containing the target hostname.Part D: Dependency Injection & Integration
PlatformManagerModule: Updated to provideCookieAcquisitionRequestManager,SdkPlatformApiFactory, and to inject new dependencies intoSdkRepositoryFactoryImplandSdkClientManagerImpl.SdkClientManagerImpl: Now configured with theServerCommunicationConfigRepositoryandServerCommunicationConfigPlatformApiduring client initialization.SdkRepositoryFactory/SdkPlatformApiFactory: Interfaces and implementations are created to manage the lifecycle of SDK-related repositories and platform APIs.Tests: 9 new tests, all passing
ServerCommunicationConfigRepositoryTest: 6 tests coveringgetandsavelogic, including conversions and handling different bootstrap types.ServerCommunicationConfigPlatformApiTest: 2 tests verifying thatacquireCookiessets the manager state and throws the correct exception.CookieAcquisitionRequestManagerTest: 4 tests for the StateFlow behavior.AcquiredCookieExtensionsTest&CookieConfigurationDataExtensionsTest: 4 tests confirming correct data model conversions.SdkPlatformApiFactoryTests&SdkRepositoryFactoryTests: New tests for the factories.CookieDiskSourceTest: 2 new tests for thedeleteCookieConfigfunctionality.SdkClientManagerTestwere updated to accommodate new dependencies.⏰ Reminders before review
🦮 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.