Commit Graph
76494 Commits
Author SHA1 Message Date
Netzenbot e38f0fc98c Fix intermittent ContainersBrowserTest.MixedTabsPersistence (#34921)
Fix intermittent ContainersBrowserTest.MixedTabsPersistence failure

After session restore, background tabs use deferred loading and may not
have loaded their pages yet. The test was calling EvalJs to read
document.cookie on restored tabs without ensuring they were loaded,
causing a SecurityError on unloaded tabs with opaque origins.

Fix: Activate each tab and wait for load stop before accessing content,
following the standard Chromium session restore test pattern.

Resolves brave/brave-browser#53772
2026-03-25 08:45:30 -04:00
Netzenbot 789bb611b6 Disable flaky InstallableManagerBrowserTest.CheckWebapp on Windows (#34872)
* Disable flaky InstallableManagerBrowserTest.CheckWebapp on Windows ASAN

This Chromium test fails intermittently on Windows x64 ASAN builds.
ManifestSilentUpdateCommand queues a background GetData() task whose
FinishAndStartNextTask cleanup may still be pending when HasCurrent()
is asserted after run_loop.Run() completes. ASAN overhead widens
the race window.

Upstream LUCI Analysis shows 0.6% flake rate (30 days). No Brave
modifications to the installable manager code path.

Resolves https://github.com/brave/brave-browser/issues/53717

* Address review: move filter to browser_tests-windows.filter

Move InstallableManagerBrowserTest.CheckWebapp from the ASAN-only
filter to the general Windows filter since the upstream flake rate
is not limited to ASAN builds.
2026-03-25 08:44:23 -04:00
brave-builds fb8c50a9d0 1.90.66 2026-03-25 12:33:20 +00:00
brave-builds c3b383c50d 1.90.65 2026-03-25 12:03:23 +00:00
vadims 7b79a531f5 [PSST] Added the infobar (#34809)
The infobar is displayed when the PSST feature is available for the 
website. Accepting the infobar allows the flow to proceed and the policy
script to run, otherwise, declining it interrupts the flow.

Resolves: https://github.com/brave/brave-browser/issues/53706

---------

Signed-off-by: Vadym Struts <vstruts@brave.com>
2026-03-25 11:42:45 +01:00
Anton Paymyshev 7e9c32bbbc Support more Cardano addresses (#34251) 2026-03-25 14:24:42 +07:00
Pavel Beloborodov 0c285e3920 Fixed possible html injection in speedreader. (#34778)
* Using AppendText instead of raw strings manipulation.
2026-03-25 11:39:34 +07:00
brave-builds cb5849eea0 1.90.64 2026-03-25 00:02:58 +00:00
Kevin Smith d71c57efde [Rewards] Remove Rewards extension API (#34879) 2026-03-24 19:17:28 -04:00
Kevin Smith 79f10deb5e [Shields Panel] Add tooltip for site host element (#34963) 2026-03-24 19:17:06 -04:00
Szilard Szaloki 224565eac7 Account: <...-otp-input>, <...-otp-dialog> (#34839) 2026-03-24 17:12:40 -06:00
Agustín Ruiz c9e10424f6 Split view active tab color update color from orange to primary50 (#34950)
* Update brave_tab_color_mixer.cc

* presubmit fix
2026-03-24 23:00:37 +01:00
Pete Miller 00e7084fd0 [createInterfaceApi] Supplement partial updates with placeholder data when no real data has been received (#34961)
This especially effected "state" queries which are only ever updated via update calls and not fetch results
2026-03-24 22:31:59 +01:00
Nuo Xu 5e2c3af5f1 [iOS][Wallet] Fix iOS wallet webui onboarding flow not landing on Portfolio after wallet creation (#34949)
iOS wallet webui onboarding flow

navigate wallet webui from WalletRoutes.OnboardingWelcome to WalletRoutes.PortfolioAssets once user has created a wallet from the native onboarding flow.
2026-03-24 16:55:16 -04:00
Nuo Xu e57c1fbac4 [iOS][Wallet] support cardano send non-ada tokens (#34924)
support cardano send non-ada tokens
2026-03-24 16:52:35 -04:00
Terry Mancey d067437987 [ads] Fixes [ASAN] LSAN memory leak in brave_ads (brave_ads::ml::NormalizationTransformation) (#34953)
Fixes [ASAN] LSAN memory leak in brave_ads (brave_ads::ml::NormalizationTransformation)
2026-03-24 20:44:59 +01:00
Francois Marier 7b3f5fcac0 Use correct project license in appdata.xml (#34947) 2026-03-24 20:23:09 +01:00
Kyle Hickinson d20d8f46df [iOS] Always show mode option picker when adding a device to sync (#34904) 2026-03-24 19:07:28 +00:00
Netzenbot d0163c7f97 Disable flaky Chromium LayoutInstabilityTest.* on Windows (#34957)
* Disable flaky Chromium test LayoutInstabilityTest.SimpleBlockMovement on Windows

This is an upstream Chromium test that intermittently times out when the
PageLoadMetricsTestWaiter waits for layout shift IPC from the renderer.
Chromium disables all LayoutInstabilityTest.* on all platforms in their
CFT filter files. Already disabled on Linux in Brave. Upstream flake
rate: 0.3% over 30 days per LUCI Analysis, increasing to ~1% recently.

Brave has no chromium_src overrides for LayoutShiftTracker,
PageTimingMetricsSender, MetricsWebContentsObserver, or PageLoadTracker.
The Brave PerfPredictorPageMetricsObserver does not interact with layout
shift data.

Resolves brave/brave-browser#53785

* Update filter to disable all LayoutInstabilityTest.* on Windows

Match the Linux filter wildcard and upstream Chromium CFT filters
which disable all LayoutInstabilityTest.* on all platforms. Also
clarify comment to reflect upstream STABLE verdict while noting
Chromium still disables in CFT.
2026-03-24 15:01:09 -04:00
Kyle Hickinson 01eee1ef48 [iOS] Add link options to Origin settings view (#34943) 2026-03-24 14:54:38 -04:00
brave-buildsandbrave-builds-ro 742be79e8b Roll perf profiles update (update-perf-profile-2026-03-24-16-16) (#34946)
* Update perf profile brave-typical-android using v1.90.48
* Update perf profile chrome-typical-android using v1.90.48
* Update perf profile brave-typical-mac using v1.90.60
* Update perf profile chrome-typical-mac using v1.90.60
* Update perf profile brave-typical-win using v1.90.61
* Update perf profile chrome-typical-win using v1.90.61
---------

Co-authored-by: brave-builds-ro <devops+robuilds@brave.com>
2026-03-25 01:39:36 +07:00
Kyle Hickinson 2783197e1e [iOS] Add reset functionality to Brave Origin settings (#34938) 2026-03-24 13:12:10 -04:00
Serg a537c15708 [Android] Implement Origin subscription linking after purchase (#34719)
Add support for linking Brave Origin subscriptions after purchase on
Android, following the same link-order flow used by Leo (AI Chat).

- Add OriginIAPSubscription Mojo interface and C++ implementation to
  read purchase token/order ID from prefs and persist link status
- Handle product=origin in SubscriptionRenderFrameObserver: inject
  braveOrigin.receipt and braveOrigin.orderId into localStorage on
  the initial landing page, and linkResult.setStatus() callback on
  the /order-link/ result page
- Register OriginIAPSubscription Mojo binding in
  BraveContentBrowserClient
- Update LinkSubscriptionUtils to use link-order intent for Origin
- Hide Purchase section in Origin preferences when already linked
- Move subscription_render_frame_observer.h include out of
  ENABLE_BRAVE_VPN guard so it is available for all Android
  subscription products
- Generalize Leo-specific constants (kIntentParamValueLeo,
  kResultLandingPagePathLeo) since they are now shared with Origin
- Add Origin test cases to browser tests

Resolves: https://github.com/brave/brave-browser/issues/53613
2026-03-24 12:59:55 -04:00
brave-builds 9486920856 1.90.63 2026-03-24 16:03:23 +00:00
StephenHeaps 17b40b40e5 [iOS] Add debug view for excluding rules from adblock engine & content blocker (#34490)
* Add Adblock Rule Exclusion debug view, exclude rules from AdBlockEngine &
the Content Blockers.
2026-03-24 10:57:40 -04:00
Netzenbot 4c85540ecd Fix duplicate review comments from cross-chunk deduplication (#34908) 2026-03-24 10:40:58 -04:00
Terry Mancey 8d015d2211 [ads][CodeHealth] Rename should_generate_random_uuids (#34935) 2026-03-24 09:28:36 -05:00
Terry Mancey 578b1385fb [ads] Add time period storage condition matcher (#34841)
Add time_period_storage[=<duration>] support to condition matcher pref
resolution, allowing numerical operators to match against aggregated
pref values such as SERP visit counts. When a list pref path component
is a time_period_storage key, the list entries are summed over the
specified time window and returned as a numeric value for matching. This
also allows the numerical operator operand to be a pref path resolved at
match time, enabling conditions that compare two pref values against
each other rather than against a literal number. All matching occurs on
the device and nothing leaves the device.
2026-03-24 15:25:14 +01:00
Nuo Xu b7629ee991 [iOS] Gracefully scale showTabs button's border stroke width (#34871)
gracefully scale showTabs button's border stroke width
2026-03-24 10:21:41 -04:00
Kyle Hickinson a0877d1461 [iOS] Add new favicon status to TabState (#34909)
This exposes the new favicon status method from WebState in TabState. In the future the `Favicon` value will be removed
2026-03-24 09:59:06 -04:00
Kevin Smith 6a07646ae0 [Shields UI] Add blocked resource favicons to panel (#34798) 2026-03-24 09:33:47 -04:00
Brian R. Bondy 92aae1ccc6 Update network endpoint best practices (#34906)
Clarify that network auditor entries are only needed for
endpoints that do not require user opt-in. Add new best
practice (BS-056) requiring all new Brave endpoints be
added to the HSTS pin list.
2026-03-24 08:44:56 -04:00
brave-builds 164841be40 1.90.62 2026-03-24 12:33:19 +00:00
Brian R. Bondy 0b14f04c96 Remove ARCH-052 mojom default values best practice (#34912)
Mojom code generation already value-initializes all struct fields
via the default constructor, making explicit defaults redundant.
2026-03-24 08:22:20 -04:00
brave-builds bbe85775ef 1.90.61 2026-03-24 12:03:20 +00:00
Anthony Tseng 2ff565eb25 Fix intermittent LocalAIServiceTest DCHECK crash on iOS CI (#34930)
LocalModelsUpdaterUnitTest::ComponentReady sets install_dir on the
singleton LocalModelsUpdaterState but never clears it. When tests
are shuffled on CI, this pollutes LocalAIServiceTest causing the
BarrierClosure to be called more than expected times, triggering
a DCHECK in base/barrier_closure.cc.

This only affects iOS because all gtest tests run in a single xctest
process where the singleton persists across suites. On desktop and
Android, the test launcher spawns separate child processes per batch,
so each gets a fresh singleton and cross-suite pollution cannot occur.

Add TearDown to LocalModelsUpdaterUnitTest to reset the singleton.
2026-03-24 06:56:53 -04:00
Sangwoo Ko ce0f439a19 [Tree Tabs] Support tab groups in tree tab strip (#34826)
* Support tab groups in tree tab strip

Integrate tab groups with the tree tab strip so that groups are represented
as a single tree node wrapping the group (not one tree node per tab). Tabs
inside a group remain direct children of the group collection.

Collection and delegate:
- BraveTreeTabStripCollectionDelegate: When adding a tab with new_group_id,
  add to collection without wrapping in a tree node; the group wraps it.
  MoveTabsRecursive: handle empty tab_indices (no-op when moving within same
  group), and route move-out-of-group and move-into-group to new helpers.
- MoveTabsIntoGroup: unwrap tabs from tree nodes (or detach from other
  groups), add to target group; when group is detached (new group), wrap
  group in a TreeTabNode and attach at the correct tree position.
- MoveTabsOutOfGroup: move tabs from TabGroupTabCollection back into the
  tree by wrapping each in a tree node at the destination index.
- BraveTabStripCollection: add PopDetachedGroupCollectionForDelegate and
  GetTreeTabNodeIdForGroup; chromium_src TabStripCollection gains virtual
  GetTreeTabNodeIdForGroup. BraveTabStripCollectionDelegate implements
  GetTreeTabNodeIdForGroup.

TreeTabNodeTabCollection:
- BuildTreeTabs: wrap entire groups in one tree node (processed_groups set);
  grouped tabs stay as direct children of the group.
- New constructor that wraps a TabGroupTabCollection (for creating a group
  in tree mode). Single-tab constructor allows null for GetEmptyTreeTabNode
  when a tab was moved into a group and the view still holds the old node id.

Model, controller, and UI:
- BraveTabStripModel::GetTreeTabNodeIdForGroup returns the tree node id for
  a group (or nullptr if tree tabs off). Wired through controller and
  BraveTabStripCollection.
- BraveBrowserTabStripController::GetTreeTabNode returns GetEmptyTreeTabNode()
  when the node is null (e.g. tab just moved into group, before
  TabGroupedStateChanged/AddTabToGroup updates the view).
- OnTreeTabChanged: handle tab index kNoTab and detached state during group
  creation; avoid double-clearing when AddTabToGroup will clear the node id.
- BraveTabStrip::AddTabToGroup override sets the tab's tree_tab_node from
  GetTreeTabNodeIdForGroup when adding to a group in tree mode.
2026-03-24 11:18:48 +01:00
Sangwoo Ko 8dab9ab437 [Containers] Customize page action view for Partitioned storage (#34856)
* Customize page action view for Partitioned storage

* Set fixed height for partitioned storage page action view.
* Center the view in the container when the height is set.
* Ensure the label is always shown when the height is set.

* Use gfx::TruncateString to truncate the name of the partitioned storage page action
2026-03-24 15:35:50 +09:00
Pete Miller 1dd349ef58 [AI Chat] Make the conversation iframe the scroll container (#34205)
* [AI Chat] Make the conversation iframe the scroll container
2026-03-23 22:04:49 -07:00
Douglas Daniel 3ea80b12fd [Wallet]: Fix Wallet Button Menu Position Flip (#34897)
Adds some position flip logic to the Wallet ButtonMenu's so that the menus will flip position depending on where they are at in a container.
2026-03-23 21:15:29 -05:00
Simon Hong 019a278a0f Fixed wrong frame border inset on macOS with fullscreen and vertical tab (#34889)
Resolves brave/brave-browser#53856

We don't need additional insets for frame border in fullscreen(browser or tab).
Originally it worked but accidently changed to only handle browser-fullscreen mode.

TEST=BraveBrowserViewTabbedLayoutImplMacTest.AddFrameBorderInsets
2026-03-24 11:14:42 +09:00
Kamil Jozwiak 53a41f2f01 Upgrade from Chromium 146.0.7680.153 to Chromium 146.0.7680.164. (#34916)
<!-- Add brave-browser issue below that this PR will resolve -->
Resolves https://github.com/brave/brave-browser/issues/53876

<!-- CI-related labels that can be applied to this PR:
* CI/disable-pipeline-step-cache - instruct CI to not cache build steps
between runs for the same commit hash
* CI/enable-coverage - enable coverage reporting for your code changes
* CI/enable-test-only-affected - instruct CI to only run tests affected
by your change
* CI/run-audit-deps (1) - check for known npm/cargo vulnerabilities
(audit_deps)
* CI/run-network-audit (1) - run network-audit
* CI/run-perf-smoke-tests - run smoke performance tests
* CI/storybook-url (1) - deploy storybook and provide a unique URL for
each build
* CI/run-upstream-tests - run Chromium unit and browser tests on Linux
and Windows (otherwise only on Linux)
* CI/skip-upstream-tests - do not run Chromium unit, or browser tests
(otherwise only on Linux)
* CI/run-teamcity - run TeamCity
* CI/skip-teamcity - skip TeamCity
* CI/skip - do not run CI builds (except noplatform)
* CI/run-linux-arm64, CI/run-macos-x64, CI/run-windows-arm64,
CI/run-windows-x86 - run builds that would otherwise be skipped
* CI/skip-linux-x64, CI/skip-android, CI/skip-macos-arm64, CI/skip-ios,
CI/skip-windows-x64 - skip CI builds for specific platforms

(1) applied automatically when some files are changed (see:
https://github.com/brave/brave-core/blob/master/.github/labeler.yml)
-->

<!--
## Checklist:

- Review design docs
[Browser design
principles](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/chrome_browser_design_principles.md)
[Style
guide](https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++.md)
[Core principles](https://www.chromium.org/developers/core-principles/)
- Ensure there are
(tests)[https://www.chromium.org/developers/testing/]. Unit test as much
as possible (including edge cases), but also include browser tests
covering high level functionality.
- Ensure that there are comments explaining what classes/methods are/do.
The "why" is often more important than the "what" in comments. Also
update any relevant docs (moving docs from wiki to brave-core if
necessary).
- Request security or other review (third-party libraries, rust code,
etc...) if applicable [security/privacy review is
needed](https://github.com/brave/brave-browser/wiki/Security-reviews)
[other review](https://github.com/brave/reviews/issues/new/choose)
Also see [adding third-party
libraries](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/adding_to_third_party.md)
for general guidelines on using third party code
- Make sure there is a
[ticket](https://github.com/brave/brave-browser/issues) for your issue
- Use Github [auto-closing
keywords](https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)
in the PR description above
- Write a good [PR/commit
description](https://google.github.io/eng-practices/review/developer/cl-descriptions.html)
- Squash any review feedback or "fixup" commits before merge, so that
history is a record of what happened in the repo, not your PR
- Add appropriate labels (`QA/Yes` or `QA/No`; `release-notes/include`
or `release-notes/exclude`; `OS/...`) to the associated issue
- Checked the PR locally:
* `npm run test -- brave_browser_tests`, `npm run test --
brave_unit_tests`
[wiki](https://github.com/brave/brave-browser/wiki/Tests)
* `npm run presubmit`
[wiki](https://github.com/brave/brave-browser/wiki/Presubmit-checks),
`npm run gn_check`, `npm run tslint`
- Run `git rebase master` (if needed)
-->
2026-03-23 21:59:02 -04:00
Brian Johnson 2ac3a19ee1 Restore old brave:// schemes as chrome:// and revert verbatim_match.cc removal from (#34913)
This fixes several bugs introduced by #34913. Previously saved sessions with `brave://` virtual urls were not properly restored and brave:// urls were sometimes treated as searches on android
2026-03-24 02:05:50 +01:00
brave-builds 4f58e0cdfa 1.90.60 2026-03-24 00:03:20 +00:00
Serg 079729bb4f [Android] Fix crash in BraveRewardsNativeWorker when profile is not ready (#34907)
BraveRewardsNativeWorker crashes when constructed before the browser is
fully initialized. This happens when an AlarmManager retention
notification (DAY_10/DAY_30/DAY_35) fires and the app process is started
by Android just to handle the broadcast — ProfileManager::
GetActiveUserProfile() dereferences a null g_browser_process in this
case.

The fix:
- Checks that GetActiveUserProfile() returns a valid profile before
  creating the native worker in JNI_BraveRewardsNativeWorker_Init. If it
  doesn't, the native object is not created.
- Resets the Java singleton when native init is skipped, so subsequent
  calls can retry once the browser is fully initialized.
- Adds null-profile guards to IsSupported, IsSupportedSkipRegionCheck,
  and IsRewardsEnabled which also call GetActiveUserProfile()
  independently.
- Adds null checks for getInstance() at all call sites since it can now
  return null.

Resolves: https://github.com/brave/brave-browser/issues/53877
2026-03-24 00:19:52 +01:00
Kevin Smith 5da94a45c1 [Shields Panel] Add aria-labels to appropriate links and buttons (#34898) 2026-03-23 18:06:17 -04:00
Kyle Hickinson f0b6d88595 [iOS] Disable inline predictions for sync code words text view (#34902) 2026-03-23 22:48:10 +01:00
Max Karolinskiy cac19dca0c Update patches from Chromium 146.0.7680.153 to Chromium 146.0.7680.164. 2026-03-23 17:47:53 -04:00
Max Karolinskiy fbcc75833b Update from Chromium 146.0.7680.153 to Chromium 146.0.7680.164. 2026-03-23 17:41:16 -04:00
Max Karolinskiy 7005797116 Revert "Disable FixMarkerSuppressionForAppearanceAuto (#34830)"
This change has been applied upstream.

This reverts commit c48af23fd8.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/dfc7be06fd30e478f604a49e487fab73ada0a5fd

commit dfc7be06fd30e478f604a49e487fab73ada0a5fd
Author: Mason Freed <masonf@chromium.org>
Date:   Tue Mar 17 11:58:49 2026 -0700

    Disable FixMarkerSuppressionForAppearanceAuto feature

    It causes a layout bug - crbug.com/492945641.

    This CL leaves the code to fix crbug.com/408002786 in place, but
    disables the flag, so that it can be fixed after this lands.

    Fixed: 492945641
    Bug: 408002786
2026-03-23 17:35:02 -04:00