Onboarding Brand Design Update: Add in-context Trackers Blocked dialog#8479
Conversation
9ce56f5 to
abdc187
Compare
abdc187 to
d5674d7
Compare
d5674d7 to
b9a5cda
Compare
9207123 to
7335178
Compare
b9a5cda to
7d9b64a
Compare
7335178 to
1451253
Compare
7d9b64a to
c23d1ca
Compare
1451253 to
3698120
Compare
c23d1ca to
6d41103
Compare
3698120 to
7263236
Compare
6d41103 to
6909efc
Compare
364e7bc to
fd1d514
Compare
6909efc to
7079813
Compare
fd1d514 to
c0ff122
Compare
7079813 to
3d6239a
Compare
c0ff122 to
ea30049
Compare
3d6239a to
8a4cb8c
Compare
ea30049 to
67d0384
Compare
8a4cb8c to
0717262
Compare
| override fun onTypingAnimationSettled(onTypingAnimationFinished: () -> Unit) { | ||
| onTypingAnimationFinished() | ||
| } |
There was a problem hiding this comment.
The onTypingAnimationSettled contract seems entirely misplaced. I understand it re-uses the mechanism that was established before, but it's a function override with a set of criteria applicable to only one view. On top of that, at this call site it has nothing to do with the typing animation - it's actually controlled entirely in the parent class.
Could you create a follow-up task to give this a pass separately and see how it could be cleaned up after we ship?
0717262 to
d1078f6
Compare
67d0384 to
b7e3dc9
Compare
- base class onTypingAnimationSettled defaults to no-op so only DaxTrackersBlocked triggers the privacy-shield highlight, matching legacy single-CTA gating (C1) - TrackersBlocked stub docstring reflects the no-op default (C2) - hideOnboardingCta cancels the typing animation defensively (I3) - base-class tests cover the empty-title branch and assert titleView.alpha on mid-animation tap-to-skip (I2) - renamed rapidDoubleTap test to respectsAlreadySettledFlag (M1) - Skill 2 preconditions table uses actual sentinel hint names (I1)
…xtual dialog Populate the Stage-1 stub with the dynamic trackers description helper and the onTypingAnimationSettled override, replace sentinels across CtaViewModel and BrowserTabViewModel, and add the per-dialog unit test.
8 WebP variants (4 densities × light/dark) at 90% quality. Used by the TrackersBlocked CTA and shared by MainNetwork and NoTrackers when their banners land in subsequent stack branches.
d1078f6 to
c93d5b5
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c93d5b5. Configure here.
…g v2 (#8565) Task/Issue URL: https://app.asana.com/1/137249556945/project/1207908166761516/task/1214598065379691?focus=true This was accidentally removed from develop. See #8479 for description. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes onboarding CTA selection/rendering for the trackers-blocked flow and its interaction timing, which could affect when dialogs show and how the privacy shield highlight is triggered. Risk is mitigated by added unit tests around toggle behavior and pixel/dismissal side effects. > > **Overview** > Routes the *trackers blocked* onboarding CTA to a new `DaxTrackersBlockedBrandDesignUpdateContextualCta` when the brand-design update is enabled, while keeping the legacy `OnboardingDaxDialogCta.DaxTrackersBlockedCta` path as fallback. > > Fills in the previously-stubbed brand-design CTA to render the trackers-blocked description, apply a dedicated background, wire the primary button click, and trigger the post-typing callback used to mirror the legacy privacy-shield highlight behavior. > > Adds a focused test suite covering toggle-based CTA selection plus pixel firing and dismissal persistence for the new CTA. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit a1c4212. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->


Task/Issue URL: https://app.asana.com/1/137249556945/project/1207908166761516/task/1214598065379691?focus=true
Description
Migrates the Trackers Blocked contextual onboarding dialog to the new brand-design layout introduced in #8439, gated behind the
onboardingBrandDesignUpdatefeature flag.With the flag on:
Also folds in the Stage 1 foundation review feedback fixes against the brand-design contextual base class introduced in #8439.
Out of scope (still legacy / stub-only with the flag on, queued in follow-up PRs in this stack): main-network, no-trackers, fire-button, end. Their
Dax*BrandDesignUpdateContextualCtaclasses remain as scaffolding.Steps to test this PR
Designs
Please run all testing steps for in-context dialog changes from the contextual-end branch/PR to ease the testing burden.
To see these changes patch (Linear onboarding flag included just for continuity)
UI changes
Screenshots
Note
Medium Risk
Changes onboarding CTA selection/rendering for the Trackers Blocked dialog behind the brand-design flag and adds new UI wiring that could affect CTA sequencing and privacy-shield highlighting/pixels.
Overview
When the onboarding brand-design update flag is enabled, the Trackers Blocked in-context DAX dialog now uses
DaxTrackersBlockedBrandDesignUpdateContextualCtainstead of the legacyDaxTrackersBlockedCta.The new CTA is no longer a stub: it selects the brand-design content include, sets the trackers-blocked background, populates the description from the legacy trackers text, wires the primary button click handler, and triggers the typing-animation-settled callback (to keep the existing privacy-shield highlight/dismiss behavior aligned). A new unit test verifies the flag-gated CTA selection and that shown/OK/close pixels and dismissal persistence behave as expected.
Reviewed by Cursor Bugbot for commit c93d5b5. Bugbot is set up for automated code reviews on this repo. Configure here.