Skip to content

[Brand design updates - Core App Components] Update Address Bar Radius, Icons & Icon Animations - #9490

Draft
mikescamell wants to merge 9 commits into
developfrom
feature/mikescamell/rebrand-address-bar
Draft

[Brand design updates - Core App Components] Update Address Bar Radius, Icons & Icon Animations#9490
mikescamell wants to merge 9 commits into
developfrom
feature/mikescamell/rebrand-address-bar

Conversation

@mikescamell

@mikescamell mikescamell commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/project/1207908166761516/task/1216420975330070?focus=true
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable):

Description

Steps to test this PR

Feature 1

  • [ ]
  • [ ]

UI changes

See this task


Note

Medium Risk
Large omnibar/UI surface with many animation and layout branches; regressions could affect privacy shield display or address bar styling when the toggle flips, though behavior is gated and legacy paths remain when disabled.

Overview
Adds an addressBar() sub-toggle on AppBrandDesignUpdateToggles (pre-warmed with theme()) so address bar radius, shield/cookie/ad-blocking/Duck Player assets, and the 40dp shield box ship behind an internal flag.

When enabled, the omnibar uses 48dp corner radius via applyAddressBarRebrandRadius, isAddressBarRebrandEnabled in OmnibarLayoutViewModel view state (including live toggle updates), and the same radius on BrowserActivity mockup toolbars. Rebrand theme adds rebrandInputRadius, daxColorStatusRed, and maps cookiesAnimationRadius on ThemeOverlay.Rebrand.

Privacy shield picks rebranded Lottie/static assets (shield_color_24, shield_alert_24, exclamation_recolorable_24) and returns a boxed layout flag so OmnibarLayout sizes the shield to toolbarIcon. Cookie and ad-blocking animations and tracker shield setup use brand-update Lotties/drawables when the toggle is on; Duck Player uses video_player_color_24_brand_update on custom tabs and in the leading icon state.

PrivacyShieldAnimationHelper.setAnimationView now requires isAddressBarRebrandEnabled and returns whether the icon is boxed. Tests cover radius application, toggle-driven view state, and asset resolution helpers.

Reviewed by Cursor Bugbot for commit 0d7915c. Bugbot is set up for automated code reviews on this repo. Configure here.

@mikescamell
mikescamell changed the base branch from develop to feature/mikescamell/rebrand-accent-blue August 13, 2026 16:54
@mikescamell mikescamell changed the title Add shared rebrand button styles and metrics [Brand design updates - Core App Components] Update Address Bar Radius, Icons & Icon Animations Aug 13, 2026
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-address-bar branch from 4767d67 to 533544d Compare August 13, 2026 18:22
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-address-bar branch from 533544d to 4085601 Compare August 14, 2026 08:41
R.drawable.ic_video_player_color_24_brand_update
} else {
legacyRes
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ad-block icon swap never matches

Medium Severity

resolveAdBlockingIcon only swaps when the incoming resource is CommonR.drawable.ic_video_player_color_24, but the ad-blocking omnibar animation always supplies ic_video_player_blocked_color_24. The brand-update duck player asset is therefore never applied to that animation when the address-bar rebrand toggle is on.


Please tell me if this was useful or not with a 👍 or 👎.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 4085601. Configure here.

Base automatically changed from feature/mikescamell/rebrand-accent-blue to develop August 14, 2026 08:58
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-address-bar branch from 4085601 to b93b92a Compare August 14, 2026 08:58
Load the address bar toggle alongside the overall brand-design toggle so
its cached value is available before the browser renders its first frame.
Apply the color, alert, and exclamation artwork to both the leading icon
and trackers-blocked animation. Box each asset in a 40dp container with
the shared inset, and verify each protected-state mapping in unit tests.
Use the shared 48dp input-radius token for the real omnibar, its panels, and the top and bottom launch mockups. Resolve the toggle synchronously so the temporary launch toolbar cannot expose the legacy radius.

Reapply the radius from view state so existing tabs restore the legacy 16dp radius when the flag is disabled and return to the rebrand radius when it is re-enabled.
Resolve the cached toggle synchronously for the initial ViewState, then
observe the same toggle for later changes. This prevents legacy icons
from being emitted before the enabled state arrives asynchronously.
Remove the competing view tint and let the opaque vector color render
directly so the icon no longer appears fainter than adjacent actions.
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-address-bar branch from b93b92a to 0d7915c Compare August 14, 2026 14:04

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 3 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ 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 0d7915c. Configure here.

searchIcon.gone()
if (appBrandDesignUpdateToggles.addressBar().isEnabled()) {
duckPlayerIcon.setImageResource(R.drawable.video_player_color_24_brand_update)
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duck Player icon not reset

Medium Severity

duckPlayerIcon / customTabDuckPlayerIcon only swap to video_player_color_24_brand_update when addressBar() is on, and never restore ic_video_player_color_24 when it turns off. After an enable→disable (internal flip or kill switch), the rebrand asset stays visible even though radius and shield assets revert.


Please tell me if this was useful or not with a 👍 or 👎.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 0d7915c. Configure here.

<item name="daxButtonLargeTopPadding">@dimen/rebrandButtonLargeTopPadding</item>
<item name="daxButtonSmallVerticalInset">@dimen/rebrandButtonSmallVerticalInset</item>
<item name="daxButtonLargeVerticalInset">@dimen/rebrandButtonLargeVerticalInset</item>
<item name="cookiesAnimationRadius">@dimen/rebrandInputRadius</item>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cookie radius wrong toggle

Low Severity

cookiesAnimationRadius is updated only in ThemeOverlay.Rebrand (gated by theme()), while cookie Lotties and the address bar radius follow addressBar(). With the toggles independent, the cookie chip can keep the legacy corner radius next to rebranded cookie animations and a pill-shaped address bar—or the reverse.


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 0d7915c. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant