Move Google passwords import pixels to the import web flow - #9674
Merged
catalinradoiu merged 3 commits intoSep 12, 2026
Merged
Conversation
4 tasks
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
12 tasks
Contributor
|
Privacy Review task: https://app.asana.com/0/69071770703008/1218020222494663 |
Base automatically changed from
feature/cradoiu/onboarding-password-import-flow
to
develop
September 3, 2026 16:15
Contributor
Author
|
Will update this #9624 (comment) as part of this PR. |
catalinradoiu
force-pushed
the
refactor/cradoiu/move-passwords-import-pixels
branch
from
September 7, 2026 14:29
59b1c57 to
e5e78d0
Compare
catalinradoiu
marked this pull request as ready for review
September 8, 2026 09:14
catalinradoiu
commented
Sep 8, 2026
| private val binding: PreOnboardingDaxDialogCtaBrandDesignUpdateBinding, | ||
| private val contentValues: ContentValueStore, | ||
| private val onContentBound: (LinearOnboardingStepId, ContentConfig) -> Unit, | ||
| private val onBeforeContentBound: (LinearOnboardingStepId, ContentConfig) -> Unit, |
31 tasks
CDRussell
approved these changes
Sep 8, 2026
catalinradoiu
force-pushed
the
refactor/cradoiu/move-passwords-import-pixels
branch
2 times, most recently
from
September 11, 2026 10:47
41e0e28 to
a45caf8
Compare
Result pixels (user cancelled, CSV parsing error, WebView crash) now fire from ImportGooglePasswordsWebFlowViewModel, which receives the launch source via assisted injection. The import success pixel fires from an app-scoped observer of the credential importer's status flow, so consumers of the web flow no longer need import pixel logic of their own. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The callback fires at the top of ContentControllerImpl.bind, before the binder renders, so the resolved content state is ready for the bind. The name now reflects that ordering. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
catalinradoiu
force-pushed
the
refactor/cradoiu/move-passwords-import-pixels
branch
from
September 11, 2026 10:53
a45caf8 to
72203d3
Compare
catalinradoiu
deleted the
refactor/cradoiu/move-passwords-import-pixels
branch
September 12, 2026 01:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Task/Issue URL: https://app.asana.com/1/137249556945/project/1202552961248957/task/1218056082137357?focus=true
Tech Design URL (if applicable): https://app.asana.com/1/137249556945/project/481882893211075/task/1217143698674642
API Proposals URL(s) (if applicable): None
Description
Moves the Google Password Manager import result pixels from the consumers of the import web flow into the web flow itself, so that new consumers (like the onboarding passwords import step) don't need their own import pixel logic.
ImportGooglePasswordsWebFlowViewModel, which receives the launch source via assisted injection (activity params → fragment args → assisted factory).ImportPasswordsResultPixelObserverthat observesCredentialImporter.getImportStatus()from process start, with the launch source carried inImportResult.Finished. This keeps the pixel firing even though the import outlives the screen that started it.ImportFromGooglePasswordsDialog(ViewModel)no longer fires the result pixels; the pre-import prompt pixels stay there since that prompt is the dialog's own UI.onboardingsource value) inPixelDefinitions/pixels/definitions/autofill.json5.Steps to test this PR
Import from password management
autofill_import_google_passwords_result_successfires once with bucketedsaved_credentials/skipped_credentialsand the correctsourceautofill_import_google_passwords_result_user_cancelledfires once with the web flowstageandsourceImport from onboarding
NewUserOnboardingPlanProvider.kt — force-enable password import steps
source=onboardingUI changes
Note
Medium Risk
Changes where import outcome pixels fire and extends the credential import API with launch source; risk is mainly duplicate or missed telemetry if replay/collection timing is wrong, not credential handling logic.
Overview
Centralizes Google Password Manager import telemetry so new entry points (e.g. onboarding) do not duplicate pixel logic.
Pixel definitions in
autofill.json5now document the pre-import prompt, success (bucketed counts), user-cancelled (stage+source), CSV parse failure, and WebView crash events, including anonboardinglaunchsource.Web flow threads
AutofillImportLaunchSourcefrom activity params → fragment args → assistedImportGooglePasswordsWebFlowViewModel, which fires cancel, parse error, and WebView crash pixels.CredentialImportertakessourceand includes it onImportResult.Finished; a new app-scopedImportPasswordsResultPixelObserveremits the success pixel after bulk insert completes (even if the starting screen is gone).ImportFromGooglePasswordsDialogno longer fires result pixels (pre-import prompt pixels stay).ImportPasswordsPixelSendermoves to AppScope.Onboarding only renames
onContentBound→onBeforeContentBoundin the config-driven content controller hook.Reviewed by Cursor Bugbot for commit 72203d3. Bugbot is set up for automated code reviews on this repo. Configure here.