Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7d3c16b9bb778a09b643288fe47bae4c1d8e53b7
commit 7d3c16b9bb778a09b643288fe47bae4c1d8e53b7
Author: Jingping Sun <jings@microsoft.com>
Date: Mon Apr 27 10:58:12 2026 -0700
[Unchecked] Enable -Xlint:unchecked for Chromium-owned code
Conditionally append -Xlint:unchecked to the base javac flags only when
options.chromium_code is true. This makes javac fail the build on any
new unchecked-conversion / heap-pollution / raw-type warnings in
Chromium-owned Java code, while leaving synced third-party Java sources
(chromium_code=false; auto-defaulted for third_party/ paths without
org.chromium namespace) compiled silently as before.
Why conditional, not global: Synced third-party Java code under
third_party/{junit,google-truth}/ src/ contains unchecked-warning sites
we cannot fix in chromium code base.
Bug: 358366667
Change-Id: I904b09cd4484098cee3b59e6d4aae94eba8d33ae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7790536
Commit-Queue: Andrew Grieve <agrieve@chromium.org>
Reviewed-by: Peter Wen <wnwen@chromium.org>
Commit-Queue: Jingping Sun <jings@microsoft.com>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1621171}
Adds support for the https://brave.com/deeplink-android-origin-promo
deep link so that Google Play promotional content events for Brave
Origin can route users directly into the Origin payment screen (or
settings page for existing subscribers).
Routing happens via the existing autoVerified brave.com App Link.
BraveActivity catches the intent before upstream's URL handling in
initializeState (cold start) and onNewIntent (warm start), and the
Play Install Referrer flow continues to support deferred routing for
first-install attribution.
Resolves: https://github.com/brave/brave-browser/issues/55654
Brave Origin subscribers on Android currently receive general-engagement
notifications and unbidden promo dialogs that are not tied to any
Origin-disabled feature. Suppress them under the product stance that
Origin users get a cleaner, promo-free experience.
Surfaces gated:
- RetentionNotificationPublisher: HOUR_3, HOUR_24, DAY_6, EVERY_SUNDAY,
and DORMANT_USERS_DAY_14/25/40 notification fire-time.
- BraveActivity: showDormantUsersEngagementDialog (cold-start and
in-foreground tap paths), India ad-free callout, YouTube-in-Brave
dialog.
The existing getIsSubscriptionActive() pref only reflects Play Store
purchases, so it misses desktop-linked subscribers. Introduce a new
Java-side cached boolean BRAVE_ORIGIN_CREDENTIAL_SUMMARY_CACHED, written
from two authoritative any-source signals:
- fetchOrderCredentials success (primes the cache immediately on a
successful Play Store purchase).
- requestCredentialSummary callback (covers Play Store and
desktop-linked paths; the Skus service resolves both internally).
BraveActivity.finishNativeInitialization now calls
requestCredentialSummary on every app start to keep the cache fresh.
Resolves: https://github.com/brave/brave-browser/issues/54791
brave:// should be converted to chrome:// as early as possible so all internal checks for chrome:// are valid. You can still open brave:// urls and they should display as brave:// urls, but internally both the actual url and virtual url should be chrome://
The email aliases toggle in Brave Origin settings was always visible
regardless of whether the feature flag is enabled. Since the feature is
disabled by default, users would see a non-functional toggle.
Expose kEmailAliases to Java via ChromeFeatureList and hide the
preference when the flag is disabled.
Resolves: https://github.com/brave/brave-browser/issues/53323
Added an ability to start shred manually from two places:
- tab's context menu (includes support of the menu customization)
- tab switch mode
Added confirmation dialog before the site data shred operation
Resolves: https://github.com/brave/brave-browser/issues/51326
---------
Signed-off-by: Vadym Struts <vstruts@brave.com>
This PR focuses on cleaning up Android onboarding and the old the day-zero experiment.
Removed the unused NewAndroidOnboarding feature flag and its references (android/java/org/chromium/base/BraveFeatureList.java, browser/ brave_browser_features.{h,cc}, chromium_src/chrome/browser/flags/android/chrome_feature_list.cc).
Day-zero experiment manager remains unused but now it propagates correctly the assigned variant to Android via JNI, storing it through DayZeroHelper.setDayZeroVariant for Java-side access (android/java/org/chromium/chrome/browser/ day_zero/DayZeroHelper.java).
WelcomeOnboardingActivity is simplified to a single default flow: removed variant-specific paths that were completely unused, consolidated WDP handling, improved exception logging, extracted the leaf animation helper, and other minor enhancement.
Here we remove the original interfaces and move them directly to the places they are used.
Interfaces are still genereric, replacing them to a specific interfaces should be done when these parts of code are touched.
In addition, in this PR were fixed presubmit warnings in the files that were touched.
[Android] Adds kBraveFreshNtpAfterIdleExpirement experiment flag.
That commit adds the flag with parameters and a functionality
to use cached flags on Android.
Resolves: https://github.com/brave/brave-browser/issues/50567
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/80937223ea10c49f6c9359d5174a0c9c7283e03c
commit 80937223ea10c49f6c9359d5174a0c9c7283e03c
Author: Peilin Wang <peilinwang@google.com>
Date: Tue Aug 5 09:08:14 2025 -0700
[Bottom toolbar] Don't animate position changes if changed in settings
When the bottom toolbar's position change is animated, the renderer is
driving the animation by sending the new offsets to the browser on every
animation tick.
However, if the position change was done in chrome's settings, the
browser won't get these updates (I'm guessing because the settings UI is
covering up the toolbar?) which is why BrowserControlsManager explicitly
updates the browser's offset when the position changes. However, this
doesn't work with BCIV, because it causes the browser to submit a frame
with the new height before viz receives the animation offset from the
renderer, so the controls could appear to be in the wrong position for a
frame or two.
The position of the toolbar was controlled by a boolean
SharedPreference. This CL adds more state to this SharedPreference, to
include where the update came from. With this CL, if the update came
from the settings page, the position change will not be animated.
Bug: 433524798
Change-Id: Ic47106b1caec3d99752550edb54476f773553b2e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6811960
Reviewed-by: Patrick Noland <pnoland@chromium.org>
Commit-Queue: Peilin Wang <peilinwang@google.com>
Cr-Commit-Position: refs/heads/main@{#1496957}
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.
* Tweak background video playback description in flag page
* Remove redundant call to allow Javascript injection
The method `content::RenderFrameHost::AllowInjectingJavaScript()` is already called in
`background_video_playback_tab_helper` for those domains that correctly have a match so
it's not needed in `brave_browser_main_parts`.
* Fix boolean logic
* Make `IsBackgroundVideoPlaybackEnabled` method more readable
* Remove unneeded predefined default value from XML
* Refactor logic and remove old code
* Enable background video playback preference by default
* Remove unused constant
* Fixed some NullAway Java warnings and suppressed some others
* Suppressed warning around ContextUtils.getAppSharedPreferences()
because we cannot depend on //chrome from //base to use ChromeSharedPreferences
Fixesbrave/brave-browser#45541
* Add support for diferent variants
* Remove omnibox highlight which shows up right after onboarding
* Add different variants function
* Add search widget promo on NTP
* Add notification permission changes
* Update widget promo UI
* Update wdp check
Resolve presubmit issue
* Add an option to allow users to take screenshots in private mode
* Update strings for settings option and format code
* Update title/description for private tab screenshot option
* Add rewards 3.0 feature flag
* Add a function to check for rewards 3.0 flag
Update entry points for rewards with rewards 3.0 flag
* Add RewardsPageActivity/RewardsCustomTabRootUiCoordinator to show rewards 3.0 changes in custom tab
* Address rewards reset for rewards 3.0
* Add activity transition for rewards page
* Remove onBackPressed override
* Add close button to close the rewards panel as we have disabled back press
Update close button position on the page
* Add creator changes for rewards 3.0
Remove logs
Add null check
Remove changes for backpress
* Add changes for handling creators
Encode Url for creators
* Add open url native fucntion
* Add bubble in query params
* Add bytecode changes for BaseCustomTabActivity
Add native function to open url into rewards_page_ui
* Update copyright header year
* Update close icon for rewards page
Remove comments and refactor changes
* Address naming related changes
* Add test for bytecode changes
Resolve rebase error
* Update changes to use TabUtils open tab
* Remove close button
* Add FullScreenCustomTabActivity
* Adds a settings to show SafeBrowsing errors under Developer options on Android
* Update browser/ui/android/strings/android_brave_strings.grd
Co-authored-by: Francois Marier <francois@brave.com>
* Fixes a header
---------
Co-authored-by: Francois Marier <francois@brave.com>
Presubmit:
../../brave/android/java/org/chromium/base/BraveReflectionUtil.java:43: warning: [UnnecessaryParentheses] These grouping parentheses are unnecessary; it is unlikely the code will be misinterpreted without them
assert (false);
^
(see https://errorprone.info/bugpattern/UnnecessaryParentheses)
Did you mean 'assert false;'?