Add edge-to-edge to WebView, onboarding and misc activity groups#9081
Add edge-to-edge to WebView, onboarding and misc activity groups#9081aibrahim- wants to merge 7 commits into
Conversation
aa85f2d to
e6b5cea
Compare
e6b5cea to
4e7a2c3
Compare
4f7618d to
90b6f8b
Compare
|
@aibrahim- I'm seeing differences between the status bar for the settings screen in dark mode. Light mode seems fine. Edit: Also seems to apply to most sub-settings screens.
|
|
@aibrahim- We're also a little tight with padding at the bottom of the
|
|
@aibrahim- Did we do anything for bottom sheets already? For instance I noticed the Import passwords from Google bottomsheet has a scrim for the gesture navigation bar, where I would have expected it to be transparent like the Passwords & Autofill screen
|
|
@aibrahim- In phone landscape, on the Passwords & Autofill screen, there's not enough content padding between the last item in the list and the gesture bar
|
|
re modals/bottom-sheets, they were originally planned for next week, but I can do it now to avoid an extra ship-review: https://app.asana.com/1/137249556945/project/1212608036467427/task/1214047527401585?focus=true |
|
@aibrahim- Seems we have a couple of issues with navigation on Bookmarks screen, this was a Pixel 4a, API 33
|
The solution for this would probably solve the same problem in the
|
|
@aibrahim- Downloads screen also has the last item being overlayed by the gesture bar
|
Roll out Android 15 edge-to-edge handling to three screen groups, each gated behind a new sub-toggle of the existing `edgeToEdge` remote feature (default INTERNAL) so the rollout is remotely controllable per group: - webview: WebView, SettingsWebView, Subscriptions/Pir dashboards, EmailProtection in-context signup, GPM/Takeout import flows, PrivacyDashboard, Survey - onboarding: SystemSearch, WidgetThemeConfiguration, AddWidgetInstructions - misc: About, ChangeIcon, Bookmarks, BookmarkFolders, Downloads, GetDesktopBrowser, Windows, MacOs, Feedback, SubscriptionFeedback, RestoreSubscription, ChangePlan, Pir, EmailProtectionUnsupported Each activity enables a transparent edge-to-edge window when its bucket is enabled and applies status-bar / navigation-bar / display-cutout / IME insets via EdgeToEdgeHandler. Adds a Theme.DuckDuckGo.SplashScreen.EdgeToEdge theme (with a values-land override that reserves the display cutout as a letterbox in landscape) for splash-themed screens, plus the common-utils MISC bucket, misc() toggle, provider wiring and unit tests.
Adds EdgeToEdgeBucket.BOTTOM_SHEETS so the edge-to-edge changes applied to bottom sheets can be remotely toggled independently, instead of the unconditional enableEdgeToEdge flag that was previously baked into the app's default bottom sheet theme. Each affected theme gets a plain/EdgeToEdge sibling pair, and each dialog picks between them via EdgeToEdgeProvider. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
90b6f8b to
a0dcee7
Compare
d13f764 to
78553cf
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ 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 78553cf. Configure here.














Task/Issue URL: https://app.asana.com/1/137249556945/project/1212608036467427/task/1214047527401583?focus=true
Tech Design URL (if applicable): https://app.asana.com/1/137249556945/project/1212608036467427/task/1213993229311556?focus=true
Description
Roll out Android 15 edge-to-edge handling to web/onboarding/misc buckets, each gated behind a new sub-toggle of the existing
edgeToEdgeremote feature (default INTERNAL):Each activity enables a transparent edge-to-edge window when its bucket is enabled and applies status-bar / navigation-bar / display-cutout / IME insets via EdgeToEdgeHandler.
Steps to test this PR
UI changes
Screenshots selection: https://app.asana.com/1/137249556945/project/1212608036467427/task/1216217807064104?focus=true
Note
Medium Risk
Wide UI-only rollout behind remote toggles, but touches many entry points (system search, browser scrims, nested scroll/inset edge cases) where regressions would be visible rather than silent.
Overview
Extends the gated edge-to-edge rollout with four new remote sub-toggles (
webview,onboarding,misc,bottomSheets) and wires many activities, VPN/autofill flows, and bottom sheets to respect them.Infrastructure:
EdgeToEdgeHandlergains scrollable nav-bar insets (applyScrollableNavigationBarInsets), combined horizontal + nav margin insets, fullapplySystemBarInsets, optional status-bar scrims (installScrim = falseon browser/custom tab), andView.applyBottomSystemBarInsetPadding()for Material bottom-sheet windows. Shared.EdgeToEdgebottom-sheet themes disable Material bottom auto-padding to avoid double padding. Splash usesTheme.DuckDuckGo.SplashScreen.EdgeToEdge(landscape API 27+ sets cutout modeneverfor letterboxing).Activities: When a bucket is on, screens call
enableTransparentEdgeToEdge()and apply tailored insets—e.g. SystemSearch (top vs bottom omnibar), WebView hosts wrapped in containers, fixed bottom CTAs padded above the nav bar (drawBehindGestureNav = false), lists/recyclers using scrollable nav insets. VPN activity feed only insets when not nested in a parent scroller.Bottom sheets: Fragments pick plain vs
.EdgeToEdgethemes viaEdgeToEdgeBucket.BOTTOM_SHEETSand pad dialog roots withapplyBottomSystemBarInsetPadding().Reviewed by Cursor Bugbot for commit b09e894. Bugbot is set up for automated code reviews on this repo. Configure here.