Updates the Day Zero onboarding experience on smartphones and small screen devices to a multi‑step, horizontally advancing flow driven by CTA buttons.
It introduces distinct layouts per step, a pager animation helper, and updates onboarding logic to support a scalable, multi‑step sequence with minimal duplication.
Tablet support is intentionally out of scope and will be handled in a separate PR.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/8e0ca53362ef330a49b98c7add3a7857fc82405e
commit 8e0ca53362ef330a49b98c7add3a7857fc82405e
Author: Martin Šrámek <msramek@chromium.org>
Date: Tue Oct 7 11:40:45 2025 -0700
Remove the kLinkedServicesSetting disabled code on Desktop and Android
Since the feature has been launched.
Apart from removing many references to the feature, flag, and tests, we're also adapting the ManageSyncSettings code from the previous approach (where the old strings were set in the XML file and the new strings programmatically overwritten in the Java code) to one where the strings are simply set in the XML file.
We're not removing the equivalent codepaths on iOS, where it hasn't launched yet.
Bug: 343132001
Change-Id: I8b92689b67db9485e87dd99657a32f1601277553
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7006398
Reviewed-by: Rainhard Findling <rainhard@chromium.org>
Commit-Queue: Martin Šrámek <msramek@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1526439}
Remove Android Super Referrals. The feature is no longer supported or
used, and this cleanup helps reduce unused code and simplify the overall
system as part of https://github.com/brave/brave-browser/issues/44403.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c818a3850128c73f62537482e36f43367e9c40ce
commit c818a3850128c73f62537482e36f43367e9c40ce
Author: Tomasz Wiszkowski <ender@google.com>
Date: Fri Oct 3 15:11:19 2025 -0700
Ensure all StatusIcons meet the specific size constraint.
We've observed a weird behavior when toggling search engines results
in oversize and cropped search engine icon shown in the omnibox.
This is partially because the ChromeTransitionDrawable animating
between states receives Drawables of inconsistent sizes, and changes
its intrinsic size, trying to accommodate the larger of the drawables.
Second more important factor is that the StatusIconResource carrying
drawable was shared between two different views - the NTP Fakebox and
the Omnibox. One view altering the Drawable state made the other view
instantly see these alterations, resulting in wrong positioning of
the icon.
This change aligns all StatusView icon sizes, ensuring that no icon
can ever change the intrinsic size of the TransitionDrawable.
Change intentionally kept small as it will need to be cherrypicked.
Fixed: 449181250
Change-Id: I59953971b99a01d015aa2398db058677c7816d7c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7007583
Commit-Queue: Tomasz Wiszkowski <ender@google.com>
Reviewed-by: Patrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1525046}
* [Android] Update header image for quick shortcuts and optimization
Optimizations done:
- Initialize leo and wallet controllers regardless if feature enabled or not. This is because at this point native is not guaranteed to be initialized to check the feature. Check for option visibility is done in `BraveRadioButtonGroupAdaptiveToolbarPreference` instead.
- Override `buildUiStateForStats` to avoid asserts on Brave specific options.
* Fix for tests
* Fix for JUnit tests
This change has been produced using a Ruby script that implements the
following logic:
1. For each <color> tag in the destination, try to find one in the
source with the same name
2. If found, update the destination tag with the colour from the source
tag
3. If not found, do nothing and move onto the next tag.
4. Tags that exist in the source but not the destination are ignored.
Currently, some tags exist in the destination XML that are missing from
the source and also vice versa.
Once this has been resolved, we should be able to delete the files in
this diff and move to simply copying the generated XML files straight
out of brave/leo.
Additionally, a small change has been made to the Brave Sync "Add New
Device" button to use a Nala-defined colour rather than being hard-coded
to white.
Closesbrave/brave-browser#49143
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e981dd46821f563acaa6a5a3d8fd51e046e311e2
commit e981dd46821f563acaa6a5a3d8fd51e046e311e2
Author: Patrick Noland <pnoland@google.com>
Date: Wed Aug 13 13:37:18 2025 -0700
[Toolbar] Rework hairline positioning
Manually calculating the margin for the hairline is error-prone and
tedious when multiple components can alter the height of the toolbar.
Instead of manual manipulation, we can position it "for free" by using
coordinator layout's anchor gravity concept.
This does require switching the toolbar container to be a
CoordinatorLayout. Mostly this is easy since CoordinatorLayout is a more
powerful FrameLayout. There is one consideration: OptimizedFrameLayout,
formerly in the inheritance chain for the toolbar container, reduced the
number of measure calls on ToolbarLayout for performance reasons.
This ends up not mattering because CoordinatorLayout performs the same
number of measure calls.
NO_IFTTT=Adding block for the first time
Change-Id: Idfbb41afbbb1d361214cd0e8e585fefa545aee89
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6828889
Reviewed-by: Xi Han <hanxi@chromium.org>
Reviewed-by: Wenyu Fu <wenyufu@chromium.org>
Commit-Queue: Patrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1501003}
* [Android] Refactor PasswordSettings.java to use an XML layout file.
The PasswordSettings.java file now integrates with a new XML file that
contains the layout for the page. This modification was completed using
Cursor but does not appear to have introduced any breaks.
There should be no semantic changes caused by this commit and the Brave
Password settings screen should continue to function exactly as it did
prior to this commit.
* [Android] Introduce new Import/Export items to password manager menu.
The password manager dialog now features two items for export and
import. Prior to this commit, Export was hidden away in a small
drop-down menu accessible from the top-right of the screen.
The import item is also present, but non-functional in this commit.
* [Android] Implement importing passwords from CSV.
We now support importing a CSV file containing the user's passwords.
This commit builds upon its parent by implementing the necessary code to
call Chromium's password manager which is responsible for executing the
import.
Additionally, the icons in the password manager screen have been changed
to new ones taken from Google's Material UI icon set.
Localisation strings have been introduced - some of which are copied
from Google's base since, after discussion, this is the way we currently
make strings usable for Android. If this changes in future, these could
be de-duplicated. Translations into other languages are still necessary
since only English is implemented.
Closesbrave/brave-browser#35729
The custom menu item preference screen follows the Figma design and is composed by two sections, Main menu and Page actions.
The screen shows only those items that are supported by the device, items that will never appear won't be shown.
Each item's visibility will default to true and each preference is saved on shared preferences.
The only two items whose visibility cannot be modified are the Main Settings item and the Custom Menu item itself.
Let users to display only one tiles row in in quick action search
widget
There are cases on some devices where it is impossible to display
only one tiles row, it displays two right away.
Resolves: https://github.com/brave/brave-browser/issues/49110
The list was not updated nor maintained, and even had invalid entries.
On device which uses a local ML model was tied to this preference for some reason too, so that keeps the preference around and has a checkbox for just that now.
For Android, it doesn't support on device suggestions because the ML
models aren't available there, so no checkbox was added there.
Chromium change:
https://source.chromium.org/chromium/chromium/src/+/2460bafb67b67c895e7eb21e63fcdfaac1bcfbf5
sync: Add extensions checkbox to settings on desktop Android
Support for extensions sync was recently added to desktop Android.
Update the sync settings page to add a checkbox for the sync data
type.
toggles sync data type in chrome://sync-internals
Test: added to chrome_public_test_apk
Test: manually verified checkbox appears on desktop Android and
Test: manually verified checkbox does not appear on non-desktop Android
Bug: 424217517
Change-Id: Ifd6643e1d8b013e5d5383d21ef31a51863277650
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6652500
Implements Brave origin paywall screen and handles subscription
purchases on Google Play Store. There is no entry point to it
currently, it will be done in the feature PRs
Resolves: https://github.com/brave/brave-browser/issues/48279
* [Android] Initial integration of quick shortcut button
- Adds flag for quick shortcut (disabled until all Brave items are available)
- Makes parity with options available with the upstream
- Visual and UI fixes
* Moves flag under Android guards
Implemented back-end mojo call to return a list of categories
for Android and iOS. The visibility of several categories depends
on the state of the appropriate custom filter.
Added the category dropdown list to the Webcompat Reporter dialog
and used the mentioned call to populate it on Android.
Resolves: https://github.com/brave/brave-browser/issues/47650
---------
Signed-off-by: Vadym Struts <vstruts@brave.com>
Co-authored-by: StephenHeaps <5314553+StephenHeaps@users.noreply.github.com>