Files
brave-core/android/java/res/layout
fd28b5f240 Upgrade from Chromium 147 to Chromium 148 (#34644)
* Update from Chromium 147.0.7727.117 to Chromium 148.0.7778.60.

* Conflict-resolved patches from Chromium 147.0.7727.102 to Chromium 148.0.7778.48.

* [cr148] `gnrt` run for Chromium 148.0.7765.1.

* [cr148] `BookmarkContextMenuController` added `can_paste`

This requires adding extra atgs on our own overrides of these classes.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bca4b0a240b3c641d10a1518b232bc432c9f7472

commit bca4b0a240b3c641d10a1518b232bc432c9f7472
Author: Tom Anderson <thomasanderson@chromium.org>
Date:   Mon Mar 9 14:47:10 2026 -0700

    [Reland] Fix BookmarkContextMenu paste menu enabled state

    BookmarkContextMenu::BookmarkContextMenu indirectly called
    BookmarkContextMenuController::IsCommandIdEnabled for IDC_PASTE. This
    breaks since can_paste_ is only set when showing the menu. This CL fixes
    the issue by passing can_paste to BookmarkContextMenu().

    R=avi

    Bug: 40398800
    Change-Id: I130da5d5fca333508bbde8e0b02c57f03adb5e78
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7640749
    Reviewed-by: David Yeung <dayeung@chromium.org>
    Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
    Reviewed-by: Avi Drissman <avi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596622}

* [cr148] `ShowTabSearchBubble` dropped `section` arg

This argument was not being used in Brave, so it is of no consequence.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bb4630838cd0fd2567b306b6c481750fdf2b95dd

commit bb4630838cd0fd2567b306b6c481750fdf2b95dd
Author: Emily Shack <emshack@chromium.org>
Date:   Mon Mar 9 16:23:28 2026 -0700

    [TabOrganization] Deprecate tab index pref

    Deprecates kTabSearchTabIndex and any reference to tab search sections,
    following up to the removal of auto tab groups and declutter from tab
    search.

    Bug: 488463961
    Change-Id: I5c9ecc7024e2125ddd524f381451c59a8cda1ee2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7630127
    Reviewed-by: Alex Gough <ajgo@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596690}

* [cr148] `SidePanelUtil` renamed to `SidePanelHelper`

This change corrects all uses and override for this class to use the new
path and refer to the new name. It is important to notice though that
upstream has introduced a new `SidePanelUtil`, and
`GetSidePanelContentProxy` was subsequently moved out of
`SidePanelHelper` and into the new `SidePanelUtil`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f1041bd627b995b8c64f3738472a4c16768e8488
https://chromium.googlesource.com/chromium/src/+/2af163009adf96c9bfd7b7918dd6ed32dc08f1b8

commit f1041bd627b995b8c64f3738472a4c16768e8488
Author: Mark Schillaci <mschillaci@google.com>
Date:   Mon Mar 9 17:53:26 2026 -0700

    [Side Panel Infra] Make the SidePanelContentProxy platform agnostic

    This CL continues the work to prepare the Side Panel to be built on
    Android. We make the SidePanelContentProxy generalized so that we can
    include the SidePanelEntryWaiter on Android without having to add
    many special-case #ifdef's for it. We move the remaining utility method
    out of the views package to be in the platform agnostic package, and
    move the content proxy files and update BUILD files as needed.

    Bypass-Check-License: This is a moved file, not a new file or content.
    Bug: 489780669
    Change-Id: Ib69ffd474c62201276916de031d7741661cfccb2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644871
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Commit-Queue: Mark Schillaci <mschillaci@google.com>
    Cr-Commit-Position: refs/heads/main@{#1596748}

commit 2af163009adf96c9bfd7b7918dd6ed32dc08f1b8
Author: Mark Schillaci <mschillaci@google.com>
Date:   Mon Mar 9 17:52:12 2026 -0700

    [Side Panel Intra] Rename SidePanelUtil to SidePanelHelper

    This CL is a simple rename of an existing class. We rename the utils to
    be clear that it is specifically for views::View related methods. In
    upcoming CLs we will split the non-views related code out of this file
    so that we can generalize the SidePanelContentProxy class to be
    platform agnostic.

    Bypass-Check-License: We are renaming files, not creating new ones.
    Bug: 489780669
    Change-Id: Icaed502e09e06f394fd4ad5f8cb960bb0395a490
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644629
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Commit-Queue: Mark Schillaci <mschillaci@google.com>
    Cr-Commit-Position: refs/heads/main@{#1596746}

* [cr148] `BrowserAppMenuButton` icon override dropped

The override being removed was introduced to make sure taht
`GetIconSize()` was passed into `FromVectorIcon`. This is now being done
by upstream, making the override obsolete.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f3170a166a701d5b7d29130f44dfb407eeab3837

commit f3170a166a701d5b7d29130f44dfb407eeab3837
Author: Emily Shack <emshack@chromium.org>
Date:   Tue Mar 10 15:59:39 2026 -0700

    [GlowUp] Animate the app menu icon on hover

    Adds a Lottie animation so that the app menu transforms into the Chrome
    logo when hovered. This is implemented behind the kTabStripDeclutter
    flag.

    Also updates the app menu icon (not behind a flag), which didn't match
    the latest UX mocks

    Bug: 486253264
    Change-Id: I040f74e60bfae26ff87ac8245a7b0d1d00f23fc9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7649384
    Reviewed-by: David Pennington <dpenning@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597385}

* [cr148] Fixing `ad_tracker` inclusion

This header has been moved and this has to be corrected on our use of
it.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/1eb011788b5d7286578552bd807a588de4f5218a

commit 1eb011788b5d7286578552bd807a588de4f5218a
Author: Josh Karlin <jkarlin@chromium.org>
Date:   Mon Mar 9 14:44:08 2026 -0700

    Move the AdTracker into its own directory

    Bug: 435683890
    Change-Id: Ic243ac8c7a114d613777a2b788b631251696c84f
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7639470
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Reviewed-by: Nate Chapin <japhet@chromium.org>
    Commit-Queue: Josh Karlin <jkarlin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596619}

* [cr148][ios] `TargetDeviceInfo` no longer includes `full_name` and `short_name` fields

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c9dcfbf7aa3318b019a3802c0bdc0f7ee452c731

commit c9dcfbf7aa3318b019a3802c0bdc0f7ee452c731
Author: Michael Tatarski <mtatarski@google.com>
Date:   Tue Mar 10 08:07:45 2026 -0700

    Consolidate device name resolution logic into sync_device_info

    Building on the previous extraction of `GetDeviceDisplayNames`
    (https://crrev.com/c/7638170), this CL further centralizes device naming
    logic by introducing `GetDeviceDisplayNamesForList()`.

    Previously, both Send Tab to Self and Sharing Message independently
    implemented logic to deduplicate device lists, filter out the local
    device, and choose between short and full device names based on name
    collisions. This logic is now unified within `sync_device_info`.

    This is a pure refactoring and introduces no functional changes to the
    generated device lists or names.

    Bug: 485549442
    Change-Id: Ib1f2c020386f23306edc35b43b9521027b9624ba
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7645592
    Commit-Queue: Michael Tatarski <mtatarski@google.com>
    Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
    Reviewed-by: Mikel Astiz <mastiz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597067}

* [cr148] `kSyncAutofillLoyaltyCard` deleted and made default

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ba1bc87f5b13d8446edbd4d30013806bd4ce2d41

commit ba1bc87f5b13d8446edbd4d30013806bd4ce2d41
Author: Norge Vizcay <vizcay@google.com>
Date:   Wed Mar 11 00:42:18 2026 -0700

    Remove kSyncAutofillLoyaltyCard feature flag

    The kSyncAutofillLoyaltyCard feature has been launched. This CL removes
    the feature flag and its associated conditional logic, making the
    syncing of loyalty cards from Google Wallet enabled by default.

    Bug: b:393119606
    Test: components_unittests --gtest_filter=ValuablesDataManagerTest.*
    Test: sync_integration_tests --gtest_filter=SingleClientValuablesSyncTest.*
    Test: unit_tests --gtest_filter=SyncServiceFactoryTest.*
    Change-Id: I63f09797a9cab0c28edb0f0439c7d1ef130e4fbb
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7654135
    Commit-Queue: Norge Vizcay <vizcay@google.com>
    Reviewed-by: Marc Treib <treib@chromium.org>
    Reviewed-by: Etienne Bergeron <etienneb@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597558}

* [cr148] `SidePanelRegistry` now retrieved as unowned data

This instance used to be retrieved through the tab features instance.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/2970137b00570120a51fea804f2c54e3a2f15f87

commit 2970137b00570120a51fea804f2c54e3a2f15f87
Author: Mark Schillaci <mschillaci@google.com>
Date:   Wed Mar 11 06:02:38 2026 -0700

    [Side Panel Infra] Move SidePanelRegistry for tabs to unowned user data

    This CL updates the SidePanelRegistry to have a new From methods that
    takes a TabInterface and uses unowned user data to fetch the registry.
    We do this so that we can break the dependency on Browser* for clients
    of the SidePanelRegistry, which will allow porting of the code to
    Android. We add SidePanelRegistry as a tab scoped unowned data, and
    update all callsites. The GetDeprecated method is still included but
    future CLs can refactor those call sites to use this new approach.

    Bug: 491476669
    Change-Id: I88f94c7c7c5c62e9a4a16b35b2917902d9eba59b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7653790
    Auto-Submit: Mark Schillaci <mschillaci@google.com>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Commit-Queue: Caroline Rising <corising@chromium.org>
    Reviewed-by: Bryant Chandler <bryantchandler@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597683}

* [cr148] `PerformActionsCallback` dropped args

This callback now only passes the `action_results` vector, from which
the information contained on the dropped args should be retrieved with.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/0b4371bdac738a1d3694383d097bfb3f1962c8ab

commit 0b4371bdac738a1d3694383d097bfb3f1962c8ab
Author: mark a. foltz <mfoltz@chromium.org>
Date:   Tue Mar 10 18:33:33 2026 -0700

    [actor] simplify PerformActions API

    This CL removes result_code and index_of_failed_action from the
    actor::PerformActionsCallback and related Act callbacks.

    These values are now derived from the action_results vector:
    - If all results are kOk, the task is successful.
    - Otherwise, the first non-kOk result determines the result_code and
      index_of_failed_action.

    Bug: 490381613
    Change-Id: Ic2cb372f425ffada667096b0678aebc74a85a433
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644888
    Reviewed-by: Rodney Ding <rodneyding@google.com>
    Commit-Queue: Mark Foltz <mfoltz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597461}

* [cr148] Fix `PermissionPrompt::Delegate` mock class

A new pure virtual method was added to this delegate, namely,
`ShouldShowLocationPrecisionSelector`, and therefore a stub for it is
required in `MockPermissionPromptDelegate`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/03df9c4b7a0c4d970594c7966ce8857b5bb717c4

commit 03df9c4b7a0c4d970594c7966ce8857b5bb717c4
Author: Tom Van Goethem <tov@chromium.org>
Date:   Wed Mar 11 08:05:20 2026 -0700

    Add support for approximate-only geolocation prompts.

    This CL introduces support for the approximate-only geolocation prompts
    that can be requested through the <geolocation> element and the API. In
    this CL, only the prompt string and the decision of when to trigger the
    approximate-only prompt based on the permission request are added. The
    connection to the API or <geolocation> element are not added yet. These
    still need to be added in order to display the approximate-only prompts.

    Bug: 483114849
    Change-Id: I3b4e4c5186f4af5c3997e781d13426d42754331c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7559277
    Reviewed-by: Antonio Sartori <antoniosartori@chromium.org>
    Commit-Queue: Tom Van Goethem <tov@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597751}

* [cr148] Use spanified `WriteAtCurrentPos`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/42d167bff187e08502aeab99bc9ec8fe81e0d233

commit 42d167bff187e08502aeab99bc9ec8fe81e0d233
Author: Andrew Paseltiner <apaseltiner@chromium.org>
Date:   Wed Mar 11 05:24:26 2026 -0700

    Make non-spanified base::File::WriteAtCurrentPos overload private

    Bug: 435317390
    Change-Id: Iab79430a615d36c1a528a3cd4f96bca1cd38bec3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7653098
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Reviewed-by: Petr Cermak <petrcermak@chromium.org>
    Commit-Queue: Andrew Paseltiner <apaseltiner@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597668}

* [cr148] `ProfileMetricsService` required by `PrimaryAccountManager`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/de412c3b43b45b5d201a968f8e1266de89d72475

commit de412c3b43b45b5d201a968f8e1266de89d72475
Author: Ryan Sultanem <rsult@google.com>
Date:   Wed Mar 11 14:31:56 2026 -0700

    [PerProfileMetrics] Implement metric for SignIn/Out.Completed

    Bug: 417921579
    Change-Id: I4210b45c70759dc79c2304eac30cb2cfc78f0048
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7637630
    Reviewed-by: David Roger <droger@chromium.org>
    Commit-Queue: Ryan Sultanem <rsult@google.com>
    Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
    Reviewed-by: Jérôme Lebel <jlebel@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597997}

* [cr148][Android] FragmentDependencyProvider.ctor windowAndroidSupplierarg changed

From `MonotonicObservableSupplier` to `OneshotSupplier`

Chromim change:
https://source.chromium.org/chromium/chromium/src/+/1886db4b40ccf9dfad5270be7861fefbb44c5ed3

commit 1886db4b40ccf9dfad5270be7861fefbb44c5ed3
Author: Anton Goncharenko <agonch@google.com>
Date:   Tue Mar 10 17:49:16 2026 -0700

    [Signin][Android] SafetyHub: Wait for UI dependencies before initializing sign-in coordinator.

    For consistency with other fragments' provided dependencies, pass
    Suppliers to SafetyHubModuleDelegateImpl rather than assuming the
    Suppliers have already been initialized. Able to repro a
    NullPointerException (WindowAndroid not being initialized) during
    Activity recreation when killing Chrome during the "add new account"
    sign-in flow (see repro steps in crbug.com/479179162).

    Bug: 479179162
    Change-Id: I8a37a6a532cf5d4650849ec86151e1ee9c9ee0f2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7642808
    Reviewed-by: Menghan Yang <myuu@google.com>
    Commit-Queue: Anton Goncharenko <agonch@google.com>
    Reviewed-by: Zaina Al-Mashni <zalmashni@google.com>
    Reviewed-by: Jinsuk Kim <jinsukkim@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597438}

* [AI Chat] [Tab Focus] Decouple tab focus UI from removed upstream tab organization (#34637)

[AI Chat] [Tab Focus] Decouple tab focus UI from removed upstream tab organization

Upstream (549edd60fe) removed their tab organization UI in CR147,
leaving the tab search bubble as a plain search list. To prepare
for this change, this PR updates how we hook into upstream tab
search UI, and decouples our pref change notification methods and
method to open learn more page to our own instead of overriding
upstream's.

Main changes:

Restore the deleted auto_tab_groups WebUI under
browser/resources/tab_search/tab_focus/ with Brave naming
(TabFocusPageElement / 'tab-focus-page'), since our Leo-based
tab focus feature uses a customized version that doesn't depend
on upstream.

Wrap the upstream app with <brave-tab-search-app> that adds
cr-tabs navigation between "Tab Search" and "Tab Focus",
conditionally showing the tab organization page based on the
AI Chat feature flag and user pref, falling back to search-only
when disabled.

Add Brave Page callbacks (TabFocusEnabledChanged,
TabFocusShowFREChanged) via BraveExtend on the Page interface
for live pref updates, and add OpenLearnMorePage to PageHandler
for the tab focus learn more link.

Fix friend declaration hook to match an upstream private method
that still exists in CR147, and fix unit test by injecting
MOCK_METHODs into upstream MockPage via BindNewPipeAndPassRemote()
hook.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/549edd60fee41974de823b6bc2b4a715a526cb66

commit 549edd60fee41974de823b6bc2b4a715a526cb66
Author: Emily Shack <emshack@chromium.org>
Date:   Fri Mar 6 13:08:50 2026 -0800

    [TabOrganization] Remove ATG WebUI code

    Auto tab groups has been deprecated, this removes all associated WebUI
    code. Mojom/page handler code will be handled in a follow-up to minimize
    CL size.

    Bug: 488463961
    Change-Id: Idb49a5303953194c53b5ed2a12ec4132ca037918
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7629718
    Reviewed-by: Alison Gale <agale@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1595647}

* [cr147] Fixes for the deletion of ATG webui code

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/549edd60fee41974de823b6bc2b4a715a526cb66

commit 549edd60fee41974de823b6bc2b4a715a526cb66
Author: Emily Shack <emshack@chromium.org>
Date:   Fri Mar 6 13:08:50 2026 -0800

    [TabOrganization] Remove ATG WebUI code

    Auto tab groups has been deprecated, this removes all associated WebUI
    code. Mojom/page handler code will be handled in a follow-up to minimize
    CL size.

    Bug: 488463961
    Change-Id: Idb49a5303953194c53b5ed2a12ec4132ca037918
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7629718
    Reviewed-by: Alison Gale <agale@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1595647}

* [cr148] Add our own `PrefChangeRegistrar` for `TabSearchPageHandler` since upstream has eliminated theirs

Upstream no longer initializes or otherwise uses `pref_change_registrar_` in
`TabSearchPageHandler` but they forgot to remove it. Since we still need to
monitor pref changes, add our own to our override of their class.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bb4630838cd0fd2567b306b6c481750fdf2b95dd

commit bb4630838cd0fd2567b306b6c481750fdf2b95dd
Author: Emily Shack <emshack@chromium.org>
Date:   Mon Mar 9 16:23:28 2026 -0700

    [TabOrganization] Deprecate tab index pref

    Deprecates kTabSearchTabIndex and any reference to tab search sections,
    following up to the removal of auto tab groups and declutter from tab
    search.

    Bug: 488463961
    Change-Id: I5c9ecc7024e2125ddd524f381451c59a8cda1ee2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7630127
    Reviewed-by: Alex Gough <ajgo@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596690}

* [cr148] `kSideBySide` feature flag deleted

Since upstream deleted the related user education badges, we no longer need to
suppress those.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/13f2ce9b0bb3e2dc58238a7ac69a2f009b5b6a18

commit 13f2ce9b0bb3e2dc58238a7ac69a2f009b5b6a18
Author: Alison Gale <agale@chromium.org>
Date:   Thu Mar 12 09:08:54 2026 -0700

    [SxS] Clean up split view flags

    The bulk of the cleanup was done previously. This just removes the new
    badge.

    Bug: 473848046
    Change-Id: I83c89e1ce5184b371f518003438235a95a4030ea
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7658827
    Commit-Queue: Alison Gale <agale@chromium.org>
    Reviewed-by: David Pennington <dpenning@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598469}

* [cr148] Reanchor `BraveTabSearchButton` override

Upstream removed `TabSearchContainer`, so we need to move our override of
`BraveTabSearchButton` to the class where `TabSearchButton` is constructed
now (`HorizontalTabvStripRegionView`)

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d43a49df6f998a2e3828a410402cc46d41fae43a

commit d43a49df6f998a2e3828a410402cc46d41fae43a
Author: Emily Shack <emshack@chromium.org>
Date:   Wed Mar 11 16:17:46 2026 -0700

    [TabOrganization] Remove TabSearchContainer

    Removes the auto tab groups nudge button, which in turn makes
    TabSearchContainer obsolete. Replaces TabSearchContainer with a direct
    reference to the tab search button itself.

    Bug: 488463961
    Change-Id: Ib1941ceabe6bccf6835c47561f9bff2a9d810bac
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7651705
    Reviewed-by: Darryl James <dljames@chromium.org>
    Commit-Queue: Emily Shack <emshack@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598058}

* [cr148] Deps fixes

* [cr148][ios] Use spanified version of `WriteAtCurrentPos`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/42d167bff187e08502aeab99bc9ec8fe81e0d233

commit 42d167bff187e08502aeab99bc9ec8fe81e0d233
Author: Andrew Paseltiner <apaseltiner@chromium.org>
Date:   Wed Mar 11 05:24:26 2026 -0700

    Make non-spanified base::File::WriteAtCurrentPos overload private

    Bug: 435317390
    Change-Id: Iab79430a615d36c1a528a3cd4f96bca1cd38bec3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7653098
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Reviewed-by: Petr Cermak <petrcermak@chromium.org>
    Commit-Queue: Andrew Paseltiner <apaseltiner@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597668}

* [cr148] Filter upstream tests as needed

* [cr148] `is_paste_and_match_style_enabled` plumbed into context menu

This argument only gets passed along for our purposes.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/54777b8f87dcd034f40ffa2bae1ffe0e5b59d321

commit 54777b8f87dcd034f40ffa2bae1ffe0e5b59d321
Author: Tom Anderson <thomasanderson@chromium.org>
Date:   Thu Mar 12 20:04:07 2026 -0700

    [Clipboard] Async GetAllAvailableFormats replaces sync IsFormatAvailable

    This change replaces the synchronous IsFormatAvailable method in
    ui::Clipboard with an asynchronous GetAllAvailableFormats method. The
    new method takes a callback and returns a set of all available formats.

    All platform implementations (Android, Windows, Mac, Ozone, iOS, and the
    non-backed implementation) have been updated. Callers across the
    codebase have been refactored to use the new asynchronous API, often
    utilizing a pseudo-synchronous pattern where acceptable or updating to
    full async.

    Synchronous convenience functions were added to clipboard_test_util to
    facilitate the update of the extensive test suite.

    IsFormatAvailable is most commonly used to enable the "Paste" menu item
    in context menus. The strategy is to obtain this state before the menu
    is created, since the menu delegate interface for determining if a
    command is enabled should remain synchronous.

    Behavior is preserved by this change except for a change in Textfield
    (and it's subclass OmniboxViewViews): when pasting, the clipboard is
    assumed to contain content. The consequence of this is event propagation
    of Ctrl-V keypresses will stop on the Textfield when it may otherwise
    have been propagated to parent views. This is deemed an acceptable
    tradeoff for the async migration since this behavior is unlikely to ever
    get hit.

    Bug: 40398800
    Change-Id: Ibc005d100d9cfd21cb9f06c758ce0a98282fdb97
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7631097
    Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
    Reviewed-by: Mikel Astiz <mastiz@chromium.org>
    Reviewed-by: Colin Blundell <blundell@chromium.org>
    Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
    Reviewed-by: Avi Drissman <avi@chromium.org>
    Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
    Reviewed-by: Mike Wasserman <msw@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598848}

* [cr148] `TabCardView` created from `TabHoverCardBubbleView`

Several of the members from `TabHoverCardBubbleView` are now part of
`TabCardView`. This change corrects our override for this class and
several places where the interface was being used and needs to be
corrected.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/56e1946e9a5ef3f98eb5988bcf76292174df7860

commit 56e1946e9a5ef3f98eb5988bcf76292174df7860
Author: Dominic Austria <dominicaustria@google.com>
Date:   Thu Mar 12 21:41:50 2026 -0700

    Wrap TabHoverCardBubbleView child views

    We put the child views of TabHoverCardBubbleView into a single view. Later on we will implement a view for tab group headers, called GroupCardView. This will have two child views, one to hold the title of the tab groups, and the other to hold the title of the tabs in the corresponding tab group. Having two wrapper child views for the hover card content will make it easier to implement cross fading when the hovercard moves from tab group to tab.

    Bug: 481392191
    Change-Id: I953282830c0849bad9b046f85603ab6f1112df55
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7630129
    Reviewed-by: Emily Shack <emshack@chromium.org>
    Commit-Queue: Dominic Austria <dominicaustria@google.com>
    Cr-Commit-Position: refs/heads/main@{#1598874}

* [cr148] `AtomicString::LowerASCII` deleted

There's a new method to beused called `ToAsciiLower`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/fcbc3d11008b8ba6c1a2e18a962e5a3f5333295d

commit fcbc3d11008b8ba6c1a2e18a962e5a3f5333295d
Author: Kent Tamura <tkent@chromium.org>
Date:   Fri Mar 13 02:54:54 2026 -0700

    WTF: Remove LowerASCII() methods of String and AtomicString

    We prefer ToAsciiLower().
    This CL has no behavior changes.

    Change-Id: I28ccfc28722922c86e1410b2dad167d7b6e222c9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7657126
    Commit-Queue: Fredrik Söderquist <fs@opera.com>
    Reviewed-by: Fredrik Söderquist <fs@opera.com>
    Auto-Submit: Kent Tamura <tkent@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598954}

* [cr148] Tab strip model shadow files moved

These sources are moved on upstream and this change corrects their
location in Brave as well.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c9b4d76b7163c9c52a2742824dcf98230b7dee85

commit c9b4d76b7163c9c52a2742824dcf98230b7dee85
Author: Fred Shih <ffred@chromium.org>
Date:   Fri Mar 13 11:28:57 2026 -0700

    Make tab strip service truly platform agnostic

    While the core logic of the service was (mostly) platform agnostic, some
    of the components still had hard dependencies on TSM. This change
    removes those hard dependency in subcomponents.

    tl;dr start --

    Move all TSM related stuff into tab_strip_model_impl folder. Remove all
    TSM includes from all other files outside of that package.

    Potential followup work: move all the non-tab_strip_model_impl package
    outside of the chrome/browser/ui/tabs directory to prevent confusion.

    -- end tl;dr

    Overall, with the exception of some book keeping, it wasn't too
    terrible, because most of the TSM language is already translated to an
    internal language past the integration points. Most of the work was just
    updating the includes and namespacing.

    We did have two instances where TSM concepts bled into the service, but
    they were reasonably easy to remove.

    The configuration for the adapters is sufficiently complex enough that I
    introduced a PlatformAdaptersProvider object to hold onto the different
    pieces needed by the service. This should prevent future churn when
    adding new dependencies, as it won't trigger a massive refactoring to
    add new dependencies or to change interfaces.

    Change-Id: Ieaf575de81f2b2fe51a7a5ab590a0c52f16a8b9c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7652133
    Commit-Queue: Fred Shih <ffred@chromium.org>
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: David Yeung <dayeung@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599199}

* [cr148] Support new `ProtectionLevel` in `ElevationService`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/0fdbaef65b9ade5730c98d5af4fe57ece28f3341

commit 0fdbaef65b9ade5730c98d5af4fe57ece28f3341
Author: Will Harris <wfh@chromium.org>
Date:   Fri Mar 13 10:35:06 2026 -0700

    Add new app-bound validation type for isolated data

    Data encrypted by a process running isolated cannot be decrypted by a
    process not running isolated.

    However, isolated processes can decrypt data from both isolated or
    unisolated processes, which enables data security upgrade scenarios for
    when a process becomes isolated.

    SetIsolationState is extended to re-encrypt data to an unisolated state
    if downgrading protection. This ensures the data remains accessible when
    running unisolated. To achieve this, App-Bound takes an option to force
    a re-encrypt to a particular protection level, and this is also exposed
    via the App-Bound key provider.

    Tests are added for all of this new behavior.

    BUG=433545123

    Change-Id: Ibff7119ec151f5ef11a7d5091b5360709db787ee
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644512
    Commit-Queue: Will Harris <wfh@chromium.org>
    Reviewed-by: Greg Thompson <grt@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599157}

* [cr148][Android] SyncServiceAndroidBridge methods signature changed

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/7555add0775582ef4c8b7458f4e95f7493c80d9e

commit 7555add0775582ef4c8b7458f4e95f7493c80d9e
Author: Andrew Grieve <agrieve@chromium.org>
Date:   Wed Mar 11 17:24:07 2026 -0700

    Add @JniType to a batch of files in //components (#4)

    Bug: 491444984
    Change-Id: I14feaa20d1cde9479f5742c171e955d504fd3f05
    Cq-Include-Trybots: luci.chrome.try:android-internal-dbg,android-internal-binary-size
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7654452
    Reviewed-by: Peter Wen <wnwen@chromium.org>
    Owners-Override: Andrew Grieve <agrieve@chromium.org>
    Commit-Queue: Andrew Grieve <agrieve@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598092}

* [cr148][Android] Move SigninManagerImpl to signin.services target

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/737d3e35abb1641430e6aed3f1b9d7bac36fd9c1

commit 737d3e35abb1641430e6aed3f1b9d7bac36fd9c1
Author: Liza Bipin <mlbipin@google.com>
Date:   Thu Mar 12 03:02:24 2026 -0700

    [Signin][Android] Move SigninManagerImpl to signin.services target

    Fixed: 40163288
    Bypass-Check-License: Files were moved and so contain an older licence date.
    Change-Id: I99d2710096ce9e918995038d9834038adba28048
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7633764
    Reviewed-by: Menghan Yang <myuu@google.com>
    Commit-Queue: Liza Bipin <mlbipin@google.com>
    Cr-Commit-Position: refs/heads/main@{#1598309}

* [cr148][Android] FeedSurfaceMediator.ctor changed

Removed:
- headerModel;
- openingTabId;
- optionsCoordinator;
- uiConfig.

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

commit c65d635f364e1be31350bce04819b1e0a1465425
Author: Yanling <yanlinghu@google.com>
Date:   Thu Mar 12 12:33:33 2026 -0700

    [Feed] Reland: Removes feed header related code

    This CL is a reland of
    https://www.google.com/search?q=https://chromium-review.git.corp.google.com/c/chromium/src/%2B/7620591

    The code in this CL is identical to the original. The previous CL was
    reverted because the feed header tests were not completely removed in
    Clank. Those tests have now been cleaned up, making it safe to land this
    CL.

    Bug: 407797637
    Change-Id: I06b6481b0f998a811d1498e8d790e3c6f82d9c4c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7620591
    Reviewed-by: Xi Han <hanxi@chromium.org>
    Commit-Queue: Yanling Hu <yanlinghu@google.com>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Original-Commit-Position: refs/heads/main@{#1597904}
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7661925
    Cr-Commit-Position: refs/heads/main@{#1598611}

* [cr148][Android] SnapScrollHelperImpl.ctor takes NewTabPageCoordinator now

SnapScrollHelperImpl constructor changed to accept NewTabPageCoordinator
instead of NewTabPageLayout. Added mNewTabPageCoordinator shadow field to
BraveNewTabPage and create it in initializeMainView after inflating the
layout.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/040e46a7c7697d0eb32e58b30a39e9822d045d81

commit 040e46a7c7697d0eb32e58b30a39e9822d045d81
Author: Xi Han <hanxi@google.com>
Date:   Wed Mar 11 18:33:45 2026 -0700

    [NtpRefactor] Split NewTabPageLayout into NewTabPageCoordinator and
    layout.

    This is a refactor CL without any behavior changes. In this CL:
    1. Split major logic from  NewTabPageLayout to NewTabPageCoordinator,
       only Layout implementations remains in the NewTabPageLayout;
    2. To preserve the renaming history, temporarily renaming
       NewTabPageLayout to NtpLayout. We will rename back in follow up CL
       https://crrev.com/c/7658503.
    Design doc: go/ntp-mvc-refactor.

    Bug: 487641528
    Bypass-Check-License: NewTabPageCoordinator is a renamed from NewTabPageLayout.
    Change-Id: Ief8fd9b048696a875ccd8167421d88ad2e667f04
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7658403
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598132}

* [cr148][Android] ToolbarManager.ctor gained ActivityResultTracker and DeviceLockActivityLauncher

Two new parameters added to ToolbarManager constructor between
WindowAndroid and OneshotSupplier<ChromeAndroidTask>:
- ActivityResultTracker
- DeviceLockActivityLauncher

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

commit c0e37322747db4f16956a53ff936c85905593c3b
Author: Sophie Crowley <crowleso@google.com>
Date:   Wed Mar 11 10:30:11 2026 -0700

    [Signin][Android] Add piping for Signin button onclick functionality

    This will be immediately followed by its child CL
    https://crrev.com/c/7604273 which uses all of these dependencies in
    adding Seamless Signin + settings onclick functionality for this Signin
    button. Split CL for ease of review. Adapted from
    IdentityDiscController.java

    Bug: 478828569
    Change-Id: I600617b391ac061000998b1820ba573a57079e86
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7600378
    Commit-Queue: Sophie Crowley <crowleso@google.com>
    Reviewed-by: Liza Bipin <mlbipin@google.com>
    Cr-Commit-Position: refs/heads/main@{#1597857}

* [cr148][Android] TopToolbarCoordinator.ctor gained 7 new parameters

Seven new parameters added to TopToolbarCoordinator constructor after
MonotonicObservableSupplier<Profile>:
- SigninAndHistorySyncActivityLauncher
- WindowAndroid
- ActivityResultTracker
- DeviceLockActivityLauncher
- BottomSheetController
- ModalDialogManager
- SnackbarManager

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

commit c0e37322747db4f16956a53ff936c85905593c3b
Author: Sophie Crowley <crowleso@google.com>
Date:   Wed Mar 11 10:30:11 2026 -0700

    [Signin][Android] Add piping for Signin button onclick functionality

    This will be immediately followed by its child CL
    https://crrev.com/c/7604273 which uses all of these dependencies in
    adding Seamless Signin + settings onclick functionality for this Signin
    button. Split CL for ease of review. Adapted from
    IdentityDiscController.java

    Bug: 478828569
    Change-Id: I600617b391ac061000998b1820ba573a57079e86
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7600378
    Commit-Queue: Sophie Crowley <crowleso@google.com>
    Reviewed-by: Liza Bipin <mlbipin@google.com>
    Cr-Commit-Position: refs/heads/main@{#1597857}

* [cr148][Android] ResourceButtonData moved to ui/actions package

Update import for ResourceButtonData which was moved from
org.chromium.chrome.browser.hub to org.chromium.chrome.browser.ui.actions.

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

commit d364b657773ea7874b8ba6781d44cb9c2e54f55f
Author: Dan Polanco <polardz@google.com>
Date:   Wed Mar 11 15:05:22 2026 -0700

    Create ui/actions and move generic ButtonData

    Moves DisplayButtonData, FullButtonData, and their generic
    implementations out of the hub package into
    chrome/browser/ui/android/actions.

    Bug: 483096892
    Bypass-Check-License: Rename/move files.
    Change-Id: I9701129bf1d86ea20ac2786c9c66aa9778f1c64a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7654411
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Auto-Submit: Dan Polanco <polardz@google.com>
    Commit-Queue: Dan Polanco <polardz@google.com>
    Cr-Commit-Position: refs/heads/main@{#1598021}

* [cr148][Android] bottom_controls_stub renamed to tab_group_ui_container_stub

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/7f45d5ea69f24f70aa752408de0b2918d09b09c5

commit 7f45d5ea69f24f70aa752408de0b2918d09b09c5
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Fri Mar 13 10:44:30 2026 -0700

    [BottomControls] More renames in preparation for bottom app bar

    Bug: 492262214
    Change-Id: I6cd721bdb6b403d5ebf608d8509bb30e074ed69d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7666737
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Auto-Submit: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599164}

* [cr148][Android] BottomControlsMediator/Coordinator gained layerType param

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

commit d0dca8d3d103b066d551f6713a3ab53b1072ee51
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Fri Mar 13 10:44:15 2026 -0700

    [BottomControls] Make bottom controls more generic

    * Simplify back press logic.
    * Extract LayerType so the component can be reused for multiple layers.
    * Misc. cleanup and reorganization.

    Bug: 492262214
    Change-Id: Ic35a7613f950d73470471b4b5c8b62497c535cee
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7665618
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Reviewed-by: Dan Polanco <polardz@google.com>
    Auto-Submit: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599163}

* [cr148] `//third_party/mock` removed from gsutil third_party code

`//third_party/mock` was removed from the gsutil third_party code. We were
previously touching the Changelog file in this directory because it was needed
for our test suites to run properly on Android (see
https://github.com/brave/brave-browser/issues/31641). However, we can no longer
do that so removed that code (there was no adverse effect after removing it).

Chromium changes:
https://chromium.googlesource.com/external/github.com/catapult-project/catapult/+/ac70fe6a2cd8d142ff08e4692fa3230fb954a211

commit ac70fe6a2cd8d142ff08e4692fa3230fb954a211
Author: Andrew Grieve <agrieve@chromium.org>
Date:   Thu Mar 12 14:36:11 2026 -0400

    Roll //third_party/gsutil 5.29 -> 5.36

    And also set "Shipped: No" in the README.chromium

    Required to support python3. Currently, I'm seeing:

    >>> from devil.android import device_utils
    >>> d = device_utils.DeviceUtils.HealthyDevices()
    <snip>
      File "/usr/local/google/code/clankium-rebaser/src/third_party/catapult/third_party/gsutil/third_party/apitools/apitools/base/protorpclite/messages.py", line 319, in __init__
        raise EnumDefinitionError(
        ...<2 lines>...
            (attribute, value))
    apitools.base.protorpclite.messages.EnumDefinitionError: May only use integers in Enum definitions.  Found: __static_attributes__ = ()

    Change-Id: Ieb949db930984a1a84061b3a0a2159b12e5c0e30
    Reviewed-on: https://chromium-review.googlesource.com/c/catapult/+/7658464
    Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
    Auto-Submit: Andrew Grieve <agrieve@chromium.org>
    Reviewed-by: Haiyang Pan <hypan@google.com>
    Reviewed-by: Brian Sheedy <bsheedy@chromium.org>

* [cr148] `chrome_select_file_policy.h` moved

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/74754be9d4550a487df006a51a33318245d37301

commit 74754be9d4550a487df006a51a33318245d37301
Author: Andrii Natiahlyi <natiahlyi@google.com>
Date:   Mon Mar 16 07:03:16 2026 -0700

    Componentize ChromeSelectFilePolicy to fix circular dependency

    Extract ChromeSelectFilePolicy and its unit tests from the monolithic
    //chrome/browser/ui target into a standalone source_set under
    //chrome/browser/ui/select_file_policy/.

    This refactoring breaks a circular dependency between
    //chrome/browser/ui and //chrome/browser/ui/passwords/settings:impl.
    BUILD files and includes have been updated across the codebase to
    reflect the new location.

    Bug: 437811373
    Bypass-Check-License: Files were moved to a sub-folder.
    Change-Id: I7ce28ca446211f5f6fe6dafab71c19b20bf18d18
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7665700
    Reviewed-by: Marc Treib <treib@chromium.org>
    Auto-Submit: Andrii Natiahlyi <natiahlyi@google.com>
    Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
    Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599862}

* [cr148] Replace `SetCrashedOverlayView` with `TakeCrashedOverlayView` for shared pinned tab dummy view

Upstream removed `WebView::SetCrashedOverlayView()` (the borrow variant) in
favour of `TakeCrashedOverlayView()`, which takes ownership of the overlay view
via unique_ptr.

Update `SharedPinnedTabDummyViewViews::Install()` to transfer ownership to the
WebView using `TakeCrashedOverlayView()`. The `Install()` signature now accepts
`std::unique_ptr<SharedPinnedTabDummyView>` so the caller can hand off ownership
at the call site. `SetVisible(true)` is still required to force the overlay
visible: the dummy `WebContents` is created with `kNoRendererProcess` so
`UpdateCrashedOverlayView()` is not called again after installation, but it runs
once inside `TakeCrashedOverlayView()` and hides the overlay (since the contents
is not in a crashed state).

Note: AI-assisted: requires thorough review

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/cbbb5425a554127e6b5b69bdb180274c0fccfdd1
https://chromium.googlesource.com/chromium/src/+/b5d130cdc7fdd3b744f1ac723ce09111184f3ef3

commit cbbb5425a554127e6b5b69bdb180274c0fccfdd1
Author: Robert Liao <robliao@chromium.org>
Date:   Mon Mar 16 15:11:52 2026 -0700

    Remove WebView::SetCrashedOverlayView

    This concludes the SadTab set_owned_by_client() removal.

    Fixed: 486052969
    Change-Id: I8996b978c265a1ea6f0be894c80a7a9edce3cae3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7670120
    Auto-Submit: Robert Liao <robliao@chromium.org>
    Commit-Queue: Allen Bauer <kylixrd@chromium.org>
    Reviewed-by: Allen Bauer <kylixrd@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600154}

commit b5d130cdc7fdd3b744f1ac723ce09111184f3ef3
Author: Robert Liao <robliao@chromium.org>
Date:   Wed Apr 1 20:20:55 2026 -0700

    Remove WebView::SetCrashedOverlayView

    This concludes the SadTab set_owned_by_client() removal.

    Fixed: 486052969
    Change-Id: Ifcb897e910ccd2335b155cb6cb782c0d9eff844b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722236
    Commit-Queue: Robert Liao <robliao@chromium.org>
    Auto-Submit: Robert Liao <robliao@chromium.org>
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1608957}

* [cr148] ESLint checks for `CrLitElement` source name

Turn off `eslint-comments/no-unlimited-disable` for chromium_src overrides, so
that we can use `// eslint-disable-next-line` in our TypeScript overrides when
necessary. There was no simpler way to avoid the original lint check, as it
would require splitting our override into multiple source files and including
those in the build.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d9c984b9e016d609c4cafbe55787123ded99ae14

commit d9c984b9e016d609c4cafbe55787123ded99ae14
Author: dpapad <dpapad@chromium.org>
Date:   Fri Mar 13 18:20:00 2026 -0700

    WebUI: Add ESLint check to disallow use of chrome.send in Desktop.

    This is added as part of build_webui() ESLint checks and is enforcing
    the updated guidance at [1]. Exceptions are added for all existing users
    of chrome.send().

    [1] https://chromium.googlesource.com/chromium/src/+/main/docs/webui/webui_explainer.md#Pre_Mojo-alternative_chrome_send_WebUIMessageHandler

    Bug: 40245923
    Change-Id: I175ce9be0f7c4ad3f280c93ee41ff54f399a18e9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7662733
    Auto-Submit: Demetrios Papadopoulos <dpapad@chromium.org>
    Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
    Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599429}

* [cr148] `AccountConsistencyMethod` dropped from auth token

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/63307d4b1d2659d399b608c54ff3fa223260e711

commit 63307d4b1d2659d399b608c54ff3fa223260e711
Author: Alex Ilin <alexilin@chromium.org>
Date:   Mon Mar 16 08:28:59 2026 -0700

    [signin] Deprecate account_consistency in MutablePO2TSDelegate

    This CL removes the account_consistency parameter from the
    IdentityManager initialization flow and specifically from the
    MutableProfileOAuth2TokenServiceDelegate.

    MutableProfileOAuth2TokenServiceDelegate is only used on Desktop
    platforms that use kDice account consistency, so the code can always
    assume that kDice is being used.

    account_consistency could be set to `kDisabled` when Chrome sign-in
    isn't allowed. However, in this case Chrome will automatically remove
    all accounts [1] so there is no point for
    MutableProfileOAuth2TokenServiceDelegate to have an extra logic
    preserving only primary but not secondary accounts in this case.

    [1] https://crsrc.org/c/chrome/browser/signin/accounts_policy_manager.cc;drc=75bd37cd98d8654e740d5b267c1be6fbf81c6ede;l=279

    Fixed: 487335996
    Change-Id: I0dc317f40a384b0db0c5b2511ba9182a5663ad4b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7654078
    Reviewed-by: Monica Salama <msalama@chromium.org>
    Auto-Submit: Alex Ilin <alexilin@chromium.org>
    Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
    Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1599910}

* [cr148][Android] New arg contentDelegateSupplier at BottomControlsMediator.ctor

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/5214142978dc8e29bf94564a9949636c987a1d4c

commit 5214142978dc8e29bf94564a9949636c987a1d4c
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Mon Mar 16 12:17:37 2026 -0700

    [BottomBar] Expose capability to control the color and scroll behavior

    Per comments on BottomControlsLayer interface it is already possible to dynamically update the color and scroll behavior, then make a call to request an update.

    This CL exposes mechanisms to control the BottomControlsContentDelegate implementation and provides a callback to BottomBarContainerCoordinator to update the render state.

    Bug: 492262214
    Change-Id: I31d265c95b5771c121e120d2bdf1c4cd096c8a1e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7664742
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Madhav Pruthi <madhavpruthi@google.com>
    Reviewed-by: Dan Polanco <polardz@google.com>
    Auto-Submit: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Madhav Pruthi <madhavpruthi@google.com>
    Cr-Commit-Position: refs/heads/main@{#1600048}

* [cr148][Android] Delete TinkerTank

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/4783f6f061ceee0788a1d52ab273510ffa42f19a

commit 4783f6f061ceee0788a1d52ab273510ffa42f19a
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Mon Mar 16 10:45:32 2026 -0700

    Delete TinkerTank

    - Delegate is kept until downstream use is cleaned up.

    Bug: None
    Change-Id: I32692bdf3e76a8ba4645555dd1a3ff5ac1bb42a6
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7669831
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Auto-Submit: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Yaron Friedman <yfriedman@chromium.org>
    Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600003}

* Reapply "[cr148] `Tab::SetData` dropped"

This reverts commit 424e2e5e76fe01a450f7002e456639f9b8c7ce2b.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6f42aa179cbcfdb3dc07de43809701f59479071c

commit 6f42aa179cbcfdb3dc07de43809701f59479071c
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Mar 17 12:59:15 2026 -0700

    [TabData] Reland Tab sets data from TabDataObserver

    This CL has the tab directly subscribe for tab data updates from the
    TabDataObserver instead of relying on other classes to set its data.

    The original CL was reverted because a crash occurs when the
    ThumbnailImage::Subscribe() is invoked, but the ThumbnailImage's
    delegate is null. The delegate is the TabThumbnailHelper and this
    can be null when the WebContents is destroyed. This implies that the
    hover card is trying to update with stale TabData after the tab's
    web contents is destroyed, but before the tab is destroyed.
    Therefore, this CL attempts to fix this crash by clearing out the
    thumbnail data when the TabInterface is deleted to avoid this case.

    Bug: 447214891
    Change-Id: Ifc9e6146d932e8d04af735a31e876945901c0b8d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7666899
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600750}

* [cr148] `kSCTAuditing` feature flag deleted

Since this feature flag is deleted, the Brave security team recommended
disabling `features::kSCTAuditingHashdance` (done) and
`prefs::kSafeBrowsingScoutReportingEnabled` (already was in place for Android,
so this commit moves it to a common area for Android and desktop both).

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/24258bf7bdd67889b7bcdaf5dfa7abce5eccf18b

commit 24258bf7bdd67889b7bcdaf5dfa7abce5eccf18b
Author: Joe DeBlasio <jdeblasio@chromium.org>
Date:   Mon Mar 16 21:58:39 2026 -0700

    [SCT Auditing] Remove sct-auditing flag and kSCTAuditing feature

    The 'sct-auditing' chrome://flags entry and the 'kSCTAuditing' feature
    flag are no longer needed as the feature is now permanently enabled for
    Chrome-branded builds on non-Android platforms.

    This CL:
    - Replaces checks for features::kSCTAuditing with direct checks for
      SystemNetworkContextManager::IsCertificateTransparencyEnabled() and !IS_ANDROID in SCTReportingService.
    - Hard-codes the default sampling rate to 0.0001.
    - Adds SCTReportingService::SetSamplingRateForTesting() to allow browser
      tests to continue using deterministic sampling rates.
    - Removes the 'sct-auditing' flag, its variations, descriptions, and
      metadata.
    - Updates sct_reporting_service_browsertests.cc to use the new testing
      override and wraps tests in a branding check.

    Fixed: 40258303
    Change-Id: Id1a338bd83dbebbfb34cfd4417acaa9c9cac9409
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7665502
    Reviewed-by: Chris Thompson <cthomp@chromium.org>
    Commit-Queue: Joe DeBlasio <jdeblasio@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600335}

* [cr148] `ActorTasks` require a `TaskSourceInfo`

This change adds a basic `TaskSourceInfo` instance for an experimental
actor.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f2504cdf2460473d2b2ced505f25867704ed5e4e

commit f2504cdf2460473d2b2ced505f25867704ed5e4e
Author: David Bokan <bokan@chromium.org>
Date:   Tue Mar 17 10:40:42 2026 -0700

    Actor: Add TaskSourceInfo to ActorTasks

    Add a TaskSourceInfo struct in a new components/actor directory, usable
    outside of chrome/. This enables identifying the source creating an
    ActorTask which allows other features to tie actions taken by that task
    to the source. For example, the chrome://history page would be able to
    use the source info to group navigations (initiated by a Glic ActorTask)
    by conversation.

    This CL adds the struct and plumbs it into ActorTask. This requires
    updating a lot of test call sites. Additionally, update the Glic test
    harness to register a conversation so actor can assume a conversation id
    is always available, as it would be in the real world. GlicAPI tests
    were the only case that already register a conversation so these avoid
    the new path.

    Downstream CLs update the history service to make use of TaskSourceInfo.

    Bug: b:475235393
    Change-Id: I9b69beea3639da7b610b3776c186d192ffb8d07c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7634587
    Commit-Queue: David Bokan <bokan@chromium.org>
    Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
    Reviewed-by: Alex Gough <ajgo@chromium.org>
    Reviewed-by: Erik Chen <erikchen@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600646}

* [cr148] Fix unwated `kMaxStarterPackId` replacement

The use of this constant for inserting a new key on the same enum class
is too fragile, and has fallen apart with with a new mention of
`kMaxStarterPackId` being introduced.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ed834a558a91d08a5a47995444a932d66b5638ad

commit ed834a558a91d08a5a47995444a932d66b5638ad
Author: Amelie Schneider <amelies@google.com>
Date:   Tue Mar 17 10:54:29 2026 -0700

    [Search] Refactor disabled starter pack IDs retrieval

    Until now, it was determined directly in
    `TemplateURLTableModel::Reload()` whether starter packs should be
    disabled or not. Since we will have to use this logic directly inside
    the `TemplateURLService`, move it to the `SearchEnginesHandler` instead.

    Bug: 490314640
    Change-Id: I0f49443617b56cfdb71124b468a39200e90312a6
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7670799
    Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
    Commit-Queue: Amelie Schneider <amelies@google.com>
    Cr-Commit-Position: refs/heads/main@{#1600663}

* [cr148] `DeriveKeyScrypt` => `Scrypt`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/640d483f00a40ea99f9b5949ae395ac93566e050

commit 640d483f00a40ea99f9b5949ae395ac93566e050
Author: Elly <ellyjones@chromium.org>
Date:   Tue Mar 17 16:14:05 2026 -0700

    crypto/kdf: rename PBKDF2 and Scrypt

    To match the others:

    * DeriveKeyPbkdf2HmacSha1 -> Pbkdf2HmacSha1
    * DeriveKeyScrypt -> Scrypt

    and all clients are changed as well.

    AI-Model: Gemini 3 Flash
    Fixed: 430635195
    Change-Id: Ifda8165bcf9985265fd4d738a05ba80097e2d387
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7674112
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Elly FJ <ellyjones@chromium.org>
    Owners-Override: Daniel Cheng <dcheng@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600858}

* [cr148] Fix `ancestorOrigins` override signature

This is a simple adjustment to make the sinagtures match.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/8ab1ce0d367dc9ed4f2467374678b65792f47b56

commit 8ab1ce0d367dc9ed4f2467374678b65792f47b56
Author: Yeonghan Kim <soosungp33@gmail.com>
Date:   Mon Mar 16 21:09:36 2026 -0700

    Change location's ancestorOrigins to be calculated at Document creation

    According to [1], the spec was changed to calculate ancestor origins at
    Document creation time in order to compute them correctly. The current
    implementation creates new ancestor origins every time ancestorOrigins
    is called. Therefore, this patch moves ancestor origins to a Document
    and changes it to be calculated only once at Document creation time.

    [1] https://github.com/whatwg/html/pull/12071

    Bug: 483610021
    Change-Id: Ib6fc07ca5f17f6a31250cfe95ffc4991e8e48fbc
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7615609
    Commit-Queue: YeongHan Kim <soosungp33@gmail.com>
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Reviewed-by: Mason Freed <masonf@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600317}

* [cr148] Add `kProcessIsolationLearnMoreUrl` to `url_constants.h` override

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ef672f4fe9e9c5b87b4a477958080b76a64d8473

commit ef672f4fe9e9c5b87b4a477958080b76a64d8473
Author: Will Harris <wfh@chromium.org>
Date:   Tue Mar 17 17:08:00 2026 -0700

    Settings: Add UI control for enabling Process Isolation

    Add a new UI switch in chrome://settings/system for Process Isolation.

    The switch is currently behind a disabled-by-default flag available from
    chrome://flags UI as it is still experimental. The setting is connected
    to a pref that backs the logic required to change the isolation state.

    When the switch is changed, the pref is set that signals for the
    `SetIsolationState` API to be called to set the isolation state, which
    is an asynchronous operation as data might need to be re-encrypted to
    the new state.

    A WebUI test, as well as a browser test are added to verify that the
    switch is wired up correctly.

    Bug: 487857179
    Change-Id: If19c100161c2f4546be0d1f698a3c0b2765573a2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644989
    Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
    Commit-Queue: Will Harris <wfh@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600891}

* [cr148][Android] - kAutofillEnableLoyaltyCardsFilling removed

Removed PREF_LOYALTY_CARDS from preferences.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/9d45f2f1f7f2f4e07a9ebf93be1873fd2bc34109

commit 9d45f2f1f7f2f4e07a9ebf93be1873fd2bc34109
Author: Norge Vizcay <vizcay@google.com>
Date:   Fri Mar 13 07:52:52 2026 -0700

    Remove kAutofillEnableLoyaltyCardsFilling feature flag

    The AutofillEnableLoyaltyCardsFilling feature has been launched.
    This CL removes the feature flag and all related code/tests that
    were conditionally enabled by it. All loyalty card filling
    functionality is now enabled by default.

    Bug: 395831853
    Test: CQ passes
    Change-Id: I1a686fcdf1724138ade660229b54760d563f4d66
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7661784
    Reviewed-by: Christoph Schwering <schwering@google.com>
    Reviewed-by: Florian Leimgruber <fleimgruber@google.com>
    Commit-Queue: Norge Vizcay <vizcay@google.com>
    Cr-Commit-Position: refs/heads/main@{#1599049}

* [cr148][Android] Changes around BottomBarHostManager

New arg bottomBarHostManager at:
- HubManagerImpl.ctor
- TabbedRootUiCoordinator.ctor
- ToolbarManager.ctor

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/9be4e7a3e1f68c9a7405c62e06cbe8b4ed8832d5

commit 9be4e7a3e1f68c9a7405c62e06cbe8b4ed8832d5
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Tue Mar 17 16:49:31 2026 -0700

    [BottomBar] handle view ownership transfer

    Bug: 491509787
    Change-Id: Ia8baf8095c55fe9580d718bb8806deab9fd0f5e1
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7667562
    Reviewed-by: Madhav Pruthi <madhavpruthi@google.com>
    Reviewed-by: Dan Polanco <polardz@google.com>
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600877}

* [cr148][Android] New arg hubManagerSupplier at TabbedAppMenuPropertiesDelegate.ctor

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/729996f4d16b4a3859c0c162623b7e1b1b1aea43

commit 729996f4d16b4a3859c0c162623b7e1b1b1aea43
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Mon Mar 16 07:51:46 2026 -0700

    [Hub] Remove select_tabs from the overflow menu on non-tabs panes

    This also sets us up to support other "pane specific" customizations in
    the future.

    Fixed: 493182478
    Change-Id: Iab2f3b072ae5fffa3c55c63d8c50afe35f7285a1
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7667560
    Reviewed-by: Madhav Pruthi <madhavpruthi@google.com>
    Auto-Submit: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Madhav Pruthi <madhavpruthi@google.com>
    Reviewed-by: Dan Polanco <polardz@google.com>
    Cr-Commit-Position: refs/heads/main@{#1599889}

* [cr148][ios] Add Cobalt to `brave_providers`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d496e5519d6508de272a548da0d2ce586461dd1c

commit d496e5519d6508de272a548da0d2ce586461dd1c
Author: Quentin Pubert <qpubert@google.com>
Date:   Tue Mar 17 13:29:39 2026 -0700

    [iOS] Add Cobalt overflow menu destination

    This CL adds an overflow menu destination for the Cobalt feature. It is
    only visible if `web::features::IsCobaltEnabled()` and the browser is
    not managed.

    NO_IFTTT=Files have been moved thus invalidating IFTTT guards

    Bug: 475807780
    Change-Id: I20ed089aca62c181c58666b4eaf249317c405f1a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7670757
    Reviewed-by: Gauthier Ambard <gambard@chromium.org>
    Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
    Auto-Submit: Quentin Pubert <qpubert@google.com>
    Commit-Queue: Quentin Pubert <qpubert@google.com>
    Cr-Commit-Position: refs/heads/main@{#1600776}

* [cr148] Fix ESLint reports for mixed imports

There's a now a check that flags the mixed imports of types and values
in the same statement.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/48ab71207d8bad222480e7fd5db54cb9120b391d

commit 48ab71207d8bad222480e7fd5db54cb9120b391d
Author: rbpotter <rbpotter@chromium.org>
Date:   Wed Mar 18 15:34:00 2026 -0700

    WebUI: Add a check for mixed type and value imports

    Bug: 493319444
    Change-Id: I2ddf4cb23367149deb52053cb37982a5296f33d2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7671332
    Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
    Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601585}

* [cr148] `kShortcutsNotApps` deleted

This feature flag was being disabled in brave, but the code for it was
already completely gutted and gone.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/3151653f293f62d7e812a78bda34e9a6d6526f34

commit 3151653f293f62d7e812a78bda34e9a6d6526f34
Author: Mitsuru Oshima <oshima@chromium.org>
Date:   Tue Mar 17 20:03:44 2026 -0700

    Remove obsolete chrome/common feature flags

    Bug: 356602087
    Change-Id: Ib7c464905216473deda3c83bf2c9b3d6a9bacc76
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7671306
    Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
    Commit-Queue: Mitsuru Oshima <oshima@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600983}

* [cr148] `MultiContentsViewMiniToolbar` dropped menu model

The split view mini toolbar is now gone, remove our associated code.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a24edb79bad2baf2c6fcdb2a64d52d8f60c14004

commit a24edb79bad2baf2c6fcdb2a64d52d8f60c14004
Author: Alison Gale <agale@chromium.org>
Date:   Wed Mar 18 13:23:21 2026 -0700

    [SxS] Switch mini toolbar back to the close button

    When finalizing the experiment in code, the wrong branch was used so the
    3-dot menu was rolled out. This switches back to the original close
    button implementation which had been launched via Finch originally.

    https://screenshot.googleplex.com/4CfAFU3JeYqBVQz

    Bug: 493229082
    Change-Id: I8cf4f7e902c6464b54f7d91147fce4df5ad7df49
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7673623
    Commit-Queue: Alison Gale <agale@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601489}

* [cr148] `LocationBarView::profile()` deleted

There's now `GetProfile`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c9f68395d9f709328031191385f3bdcd353aadb9

commit c9f68395d9f709328031191385f3bdcd353aadb9
Author: Maks Orlovich <morlovich@chromium.org>
Date:   Wed Mar 18 08:12:00 2026 -0700

    Add interfaces at LocationBar level needed for (webui) omnibox popup.

    ...As a prereq for creating it with WebUILocationBar; and
    implement the new methods in WebUILocationBar.

    Bug: 470042732
    Change-Id: I830816a3daad56502c81a5f98ab188e371d8d09e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7674319
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: Justin Donnelly <jdonnelly@chromium.org>
    Commit-Queue: Maks Orlovich <morlovich@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601285}

* [cr148] `PinnedToolbarActionsContainer` access abstracted

This acccess now occurs through a an abstract call that is frendly both
to views and webui.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/9d0cfb34e94018e9780f14d7de6ed44c9293f8ff

commit 9d0cfb34e94018e9780f14d7de6ed44c9293f8ff
Author: Paul Jensen <pauljensen@chromium.org>
Date:   Wed Mar 18 12:15:22 2026 -0700

    More preparation for WebUI pinned toolbar actions

    This change does not introduce any functional differences.

    This change abstracts most of the remaining Views dependencies away
    from PinnedToolbarActionsContainer so that existing UI code can work
    seamlessly with either a Views or a WebUI pinned toolbar actions
    implementation.  Main pieces include:
    - abstracting ToolbarView::GetPinnedToolbarActions()
    - abstracting ToolbarButtonProvider::GetPinnedToolbarActions()
    - abstracting PinnedToolbarActionsController

    The major remaining steps to implementing a WebUI pinned toolbar
    actions, which are left for future changes are:
    - implement the WebUI component including BrowserControlsService and
      ToolbarUIService support
    - convert PinnedToolbarActions::Get{Download,Cast}Button() APIs to
      work with WebUI buttons also
    - convert ToolbarView::GetBubbleAnchor to work with WebUI

    Bug: 474061420
    Change-Id: I6f932a750ad7b958094ecdd9455d1494edb56c77
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7669107
    Commit-Queue: Paul Jensen <pauljensen@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Reviewed-by: Mickey Burks <mickeyburks@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601455}

* [cr148] `IsValidWebAppUrl` moved under `//components`

This function is now called `IsUrlEligibleForWebApp`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f79eb8c0c496682cea5e54a3c038b7f770a97804

commit f79eb8c0c496682cea5e54a3c038b7f770a97804
Author: Lichen Liu <lichenliu@microsoft.com>
Date:   Wed Mar 18 22:54:15 2026 -0700

    [PWA] Centralize URL eligibility check for web app features

    Add IsUrlEligibleForWebApp() and AddValidChromeUrlHostForTesting() in
    components/webapps/browser/web_app_url_config.h to centralize the logic
    that determines whether a URL is eligible for web app features (banners,
    installation, etc.).

    Bug: 481017409
    Change-Id: Iaa3d36fcbcc18677eb57073eb2d51063a30240f9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7665546
    Reviewed-by: Yoshiki Iguchi <yoshiki@chromium.org>
    Reviewed-by: Daniel Murphy <dmurph@chromium.org>
    Commit-Queue: Lichen Liu <lichenliu@microsoft.com>
    Cr-Commit-Position: refs/heads/main@{#1601772}

* [cr148][Android] SidePanelUI::Toggle default empty implementation

The commit is intended to fix this build error:

../../chrome/browser/ui/side_panel/internal/android/side_panel_coordinator_android.cc:22:11: error: allocating an object of abstract class type 'SidePanelCoordinatorAndroid'
   22 |       new SidePanelCoordinatorAndroid(env, caller));
      |           ^
../../chrome/browser/ui/side_panel/side_panel_ui.h:62:16: note: unimplemented pure virtual method 'Toggle' in 'SidePanelCoordinatorAndroid'
   62 |   virtual void Toggle(SidePanelEntryKey key,
      |                ^
../../brave/chromium_src/chrome/browser/ui/side_panel/side_panel_ui.h:10:3: note: expanded from macro 'Toggle'
   10 |   Toggle() = 0; \
      |   ^
1 error generated.

* [cr148][Android] Removed tabReparentingDelegate from MultiInstanceManagerApi31.ctor

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/1eff3e2dfcb821e6a6fbccae543632bb5ebbce98

commit 1eff3e2dfcb821e6a6fbccae543632bb5ebbce98
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Wed Mar 18 15:32:23 2026 -0700

    [MIR] Create MultiInstanceOrchestrator as a singleton to hold business
    logic that is not scoped to a specific ChromeTabbedActivity

    This CL attempts to simplify accessing multi-instance business logic
    from callers that do not have access to a MultiInstanceManager instance
    (for example, CCT context based feature implementations), by introducing
    a MultiInstanceOrchestrator singleton implementation.

    The CL only moves method moveTabsToWindowByIdChecked() as an initial
    example for usage of this class. Other MultiInstanceManager API methods
    that can be extracted into the singleton will be moved in followup CLs.

    Bug: 491893859
    Change-Id: I459a5ed79b058b548f42fd3c85f0b9382e756803
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7659642
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Cr-Commit-Position: refs/heads/main@{#1601584}

* [cr148][Android] Removed moveTabsToWindowByIdChecked from MultiInstanceManagerApi31.ctor

Used MultiInstanceOrchestratorImpl override.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/1eff3e2dfcb821e6a6fbccae543632bb5ebbce98

commit 1eff3e2dfcb821e6a6fbccae543632bb5ebbce98
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Wed Mar 18 15:32:23 2026 -0700

    [MIR] Create MultiInstanceOrchestrator as a singleton to hold business
    logic that is not scoped to a specific ChromeTabbedActivity

    This CL attempts to simplify accessing multi-instance business logic
    from callers that do not have access to a MultiInstanceManager instance
    (for example, CCT context based feature implementations), by introducing
    a MultiInstanceOrchestrator singleton implementation.

    The CL only moves method moveTabsToWindowByIdChecked() as an initial
    example for usage of this class. Other MultiInstanceManager API methods
    that can be extracted into the singleton will be moved in followup CLs.

    Bug: 491893859
    Change-Id: I459a5ed79b058b548f42fd3c85f0b9382e756803
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7659642
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Cr-Commit-Position: refs/heads/main@{#1601584}

* [cr148] Google update patch file renamed

This patchfile has been made explicitly win-only.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/0a9bc888a3bfa54c36d176aef7e5dc60769a344d

commit 0a9bc888a3bfa54c36d176aef7e5dc60769a344d
Author: Andrzej Fiedukowicz <afie@google.com>
Date:   Thu Mar 19 08:01:13 2026 -0700

    Move posix implementation of google_update_settings to chrome/installer/util

    Additionally rename windows specific file to _win.cc to make it clear
    how it is used.

    Bypass-Check-License: The files are only moved
    Bug: 494165190
    Change-Id: Ie990e93635af17b90a4bb05430f8b8ab88e56a00
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7664503
    Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
    Reviewed-by: Ramon Cano Aparicio <rcanoaparicio@google.com>
    Commit-Queue: Andrzej Fiedukowicz <afie@google.com>
    Reviewed-by: Greg Thompson <grt@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601974}

* [cr148] `kDevToolsPrivacyUI` deleted

This flag had already been gutted for a while now.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ad5ad97302ce69b8446ece7e3aa74f20dae99b74

commit ad5ad97302ce69b8446ece7e3aa74f20dae99b74
Author: Fiona Macintosh <fmacintosh@google.com>
Date:   Thu Mar 19 08:15:12 2026 -0700

    Delete kDevToolsPrivacyUI feature

    Change-Id: I3ae100b1d4cc3382e723fb322db1904748bac076
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7681872
    Commit-Queue: Fiona Macintosh <fmacintosh@google.com>
    Auto-Submit: Fiona Macintosh <fmacintosh@google.com>
    Reviewed-by: Avi Drissman <avi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601979}

* [cr148] Rename install file override to new Windows-specific file name

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/0a9bc888a3bfa54c36d176aef7e5dc60769a344d

commit 0a9bc888a3bfa54c36d176aef7e5dc60769a344d
Author: Andrzej Fiedukowicz <afie@google.com>
Date:   Thu Mar 19 08:01:13 2026 -0700

    Move posix implementation of google_update_settings to chrome/installer/util

    Additionally rename windows specific file to _win.cc to make it clear
    how it is used.

    Bypass-Check-License: The files are only moved
    Bug: 494165190
    Change-Id: Ie990e93635af17b90a4bb05430f8b8ab88e56a00
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7664503
    Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
    Reviewed-by: Ramon Cano Aparicio <rcanoaparicio@google.com>
    Commit-Queue: Andrzej Fiedukowicz <afie@google.com>
    Reviewed-by: Greg Thompson <grt@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601974}

* [cr148][Android] MultiWindowUtils.canEnterMultiWindowMode is now static

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

commit dc47bc94e21a021492a10bb6ada51f6903f9faa5
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Thu Mar 19 16:55:50 2026 -0700

    [MIR] Cleanup MultiWindowUtils#canEnterMultiWindowMode()

    1. Make this method static.
    2. Cleanup methods aospMultiWindowModeSupported() and
    customMultiWindowModeSupported() and move the implementations inline
    (since these contain trivial OS/OEM checks).
    3. Remove MultiWindowModeStateDispatcher#canEnterMultiWindowMode() and
    replace callsites with the static method.
    4. Remove MultiWindowUtils#instanceSwitcherEnabled() that performs a
    trivial OS check and is redundant at callsites.
    5. Remove superfluous code in TabbedAppMenuPropertiesDelegate.

    Bug: 493261092
    Change-Id: Ib15040a694642549b51040db68329cad64545777
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7668482
    Reviewed-by: Sirisha Kavuluru <skavuluru@google.com>
    Reviewed-by: Jinsuk Kim <jinsukkim@chromium.org>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Cr-Commit-Position: refs/heads/main@{#1602333}

* [cr148] Update lookalike test to respect new Unicode standard

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f72d48e70a239af8aa3f1ed603f90ad0cd9024cd

commit f72d48e70a239af8aa3f1ed603f90ad0cd9024cd
Author: Dominik Röttsches <drott@chromium.org>
Date:   Thu Mar 19 04:29:17 2026 -0700

    Roll ICU to 78.2

    Updating Unicode data to Unicode 17 and CLDR 48.

    Major changes leading to test failures and their resolutions:
    * Timezone formatting: Output changed from 'GMT' to 'GMT+0' in CLDR to
      enable distinguishing the timezone and daylight saving
      definition. Rebaselined in some general cases, but kept hard-coded GMT
      in HTTP header dates, as the RFC 7231 mandates that.
    * Korean and Thai AM/PM was changing incorrectly, upstream ICU issue
      reported and locally patched:
      https://unicode-org.atlassian.net/browse/ICU-23332
    * Date format adjustments rebaselined for Spanish ("a las"), Turkish,
      and Chinese (U+2009 space) due to CLDR updates.  Addressed primarily
      by rebaselining.
    * Various changes in IDNA processing: Unicode tightened and modified
      confusables.txt and IdentifierStatus.txt definitions, leading to tight
      restrictions on IDNA spoof checks. Some IDNA tests update to use new
      test characters, and partially disabled or rebaselined. Required test
      updates filed as https://crbug.com/492063443
    * Unicode pkgdata tool required a local modification to not run out of
      storage space, see ICU-23276.
    * Use emoji data from ICU again, see character_emoji.cc ICU version
      macro conditional.

    Bug: 473861785
    Binary-Size: Required data file upgrades for Unicode 17.
    Cq-Include-Trybots: luci.chromium.try:linux-blink-rel,mac15-blink-rel,win11-blink-rel
    Change-Id: I81354b73ee3e698231ee31cc74764bea30d1226c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7623512
    Reviewed-by: Kent Tamura <tkent@chromium.org>
    Commit-Queue: Dominik Röttsches <drott@chromium.org>
    Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
    Reviewed-by: Paul Adedeji <pauladedeji@google.com>
    Reviewed-by: Mustafa Emre Acer <meacer@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1601880}

* [cr148][Android] Removed search_resumption_module_layout

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/4830d983661a2b06590463a1d2dd8e10e8aa80b2

commit 4830d983661a2b06590463a1d2dd8e10e8aa80b2
Author: Xi Han <hanxi@google.com>
Date:   Mon Mar 16 11:41:07 2026 -0700

    [SearchResumption] Clean up search resumption module.

    In this CL:
    1. Remove the entire chrome/browser/search_resumption dir;
    2. Clean up feature flag SearchResumptionModuleAndroid;
    3. Remove the entry point from NewTabPage and new_tab_page_layout.xml.
    4. Clean up strings and histograms.

    Bug: 40227734
    Change-Id: Ic3881a9e536ee09ad5f64efee5a0e734b9090e7f
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7664722
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600031}

* [cr148][Android] Split NewTabPageLayout into NewTabPageCoordinator and layout

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/040e46a7c7697d0eb32e58b30a39e9822d045d81

commit 040e46a7c7697d0eb32e58b30a39e9822d045d81
Author: Xi Han <hanxi@google.com>
Date:   Wed Mar 11 18:33:45 2026 -0700

    [NtpRefactor] Split NewTabPageLayout into NewTabPageCoordinator and
    layout.

    This is a refactor CL without any behavior changes. In this CL:
    1. Split major logic from  NewTabPageLayout to NewTabPageCoordinator,
       only Layout implementations remains in the NewTabPageLayout;
    2. To preserve the renaming history, temporarily renaming
       NewTabPageLayout to NtpLayout. We will rename back in follow up CL
       https://crrev.com/c/7658503.
    Design doc: go/ntp-mvc-refactor.

    Bug: 487641528
    Bypass-Check-License: NewTabPageCoordinator is a renamed from NewTabPageLayout.
    Change-Id: Ief8fd9b048696a875ccd8167421d88ad2e667f04
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7658403
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1598132}

* [cr148] Fix crash in `MockTabInterfaceWeakPtr` in `TreeTab` tests

`MockTabInterface` relies on `ui::UnownedUserDataHost` and has other lifetime
constraints imposed by upstream that make it difficult to test effectively
as-is. Instead of using the `TabInterface` version of `TreeTabNodeTabCollection`
use the `SplitTabCollection` override instead. This avoids the need to create a
MockTabInterface at all and avoids the messy lifetime issues inherent in that
approach.

* [cr148] `TaskStateChangedCallback` bundled args

This function used to take a closure with tow args, but now it bundles
all args under `ActorTask`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/24300df2dae5fbbbdd80c34b7fbed08dc807ee33

commit 24300df2dae5fbbbdd80c34b7fbed08dc807ee33
Author: Salvador Guerrero <salg@google.com>
Date:   Fri Mar 20 17:13:47 2026 -0700

    [Actor] fixed crash when calling getActiveTasks in a callback

    This CL fixes a crash that occurs when a task is completed and
    ActorKeyedService has a task state change callback that calls
    getActiveTasks.

    NotifyTaskStateChanged would run the callbacks before removing the
    completed task from active_tasks_, so the call to getActiveTasks would
    hit a CHECK as there's an inactive task in active_tasks_.

    This CL fixes the crash by first removing the task from active_tasks_
    before running the callbacks. It solves the availability of the task in
    the callback by refactoring the callback to return a reference to the
    affected task.

    Additionally, this CL fixes an issue found in `IsTaskResumed` in
    `password_change_from_checkup_delegate.cc`, where the wrong task state
    was used to determine if a task was being resumed.

    Bug: b:493610427
    Change-Id: Ifdf6c23a1f48f657cbdc1818b5ba53b084af4ddd
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7676998
    Reviewed-by: David Trainor <dtrainor@chromium.org>
    Reviewed-by: David Bokan <bokan@chromium.org>
    Commit-Queue: Salvador Guerrero Ramos <salg@google.com>
    Reviewed-by: Carlos Knippschild <carlosk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1602924}

* [cr148] Fixing `@typescript-eslint/no-unnecessary-type-conversion`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/9eceb536a2914a554400cce52cf3e8e6725a422d

commit 9eceb536a2914a554400cce52cf3e8e6725a422d
Author: dpapad <dpapad@chromium.org>
Date:   Thu Mar 19 17:48:48 2026 -0700

    WebUI: Enable @typescript-eslint/no-unnecessary-type-conversion on Desktop.

    Unnecessary type conversions make it harder to reason about the code, as
    they create doubt about whether the type system can be trusted. For
    example converting a variable that is already declared as `string` to a
    string using `.toString()` is either unnecessary or an indication that
    the variable is not actually a `string` to begin with. Disallowing
    unnecessary conversions improves the code by forcing developers to
    accurately declare types.

    The check is currently only enabled for Desktop WebUIs (aka non-CrOS)
    since fixing all existing CrOS violations is not trivial and to avoid
    blocking rolling out the check until CrOS violations are also fixed.

    Bug: 40519637
    Change-Id: I0f6000b2718a35d2c34fc49655c6363d37105fda
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7673843
    Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
    Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1602360}

* [cr148] Search engine using ID rather than model index

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c7ddf19f71a752bd6f0a01380026f2cb25326afa

commit c7ddf19f71a752bd6f0a01380026f2cb25326afa
Author: Amelie Schneider <amelies@google.com>
Date:   Fri Mar 20 07:30:00 2026 -0700

    [Search] Use ID instead of table model index for accessing TemplateURLs

    In order to deprecate the use of the table model in the search engines
    handler, remove the `modelIndex` parameter and migrate functions to
    access TemplateURLs through their ID rather than index in the table.

    Bug: 491802735
    Change-Id: I81a3468e55ea38782b078ddc023621d2f832a727
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7679351
    Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
    Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
    Commit-Queue: Amelie Schneider <amelies@google.com>
    Cr-Commit-Position: refs/heads/main@{#1602583}

* [cr148] `chrome::GetTabbedBrowserCount` deleted

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ebb63bfebd07fca069dcb835769790f65ee42964

commit ebb63bfebd07fca069dcb835769790f65ee42964
Author: Thomas Lukaszewicz <tluk@chromium.org>
Date:   Sun Mar 22 11:42:45 2026 -0700

    [bedrock] Eliminate chrome::GetTabbedBrowserCount()

    Bug: 494010890
    Change-Id: Ibce74da783e434c19df3906d17be5121d05e89fb
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7683173
    Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com>
    Commit-Queue: Tom Lukaszewicz <tluk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603190}

* [cr148] `ShowSingletonTab` migrated to BWI

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7f61ab9536e34aad9c59e1f79bd0fada6f84a16c

commit 7f61ab9536e34aad9c59e1f79bd0fada6f84a16c
Author: Yu He <yhe@microsoft.com>
Date:   Sun Mar 22 11:57:30 2026 -0700

    [bedrock] Migrate chrome_pages and singleton_tabs from Browser* to BrowserWindowInterface*

    Migrate function signatures in chrome_pages.h/cc and singleton_tabs.h/cc
    to accept BrowserWindowInterface* instead of Browser*.

    This allows callers to pass a BrowserWindowInterface* directly,
    eliminating intermediate GetBrowserForMigrationOnly() calls at:

    extension_install_ui_desktop.cc startup_launch_infobar_manager_impl.cc
    singleton_tabs.cc (internal usage) Also:

    Guard desktop-only includes in notification_common.cc with #if
    !BUILDFLAG(IS_ANDROID) to fix Android build. Add missing browser.h
    include to inspect_ui.cc. Remove forward declaration of Browser from
    chrome_pages.h and singleton_tabs.h.

    Bug: 494010890
    Change-Id: Ica78133224b67d439dc264fa187d261b4ee6f87c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7667947
    Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com>
    Auto-Submit: Yu He <yhe@microsoft.com>
    Commit-Queue: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603192}

* [cr148] Fix `BraveTabHoverBrowserTest.ThumbnailHelperIsAlwaysAttached`

Need to set tab data manually via `SetDataForTesting` now or we'll get a nullptr
error when trying to read it.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6f42aa179cbcfdb3dc07de43809701f59479071c

commit 6f42aa179cbcfdb3dc07de43809701f59479071c
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Mar 17 12:59:15 2026 -0700

    [TabData] Reland Tab sets data from TabDataObserver

    This CL has the tab directly subscribe for tab data updates from the
    TabDataObserver instead of relying on other classes to set its data.

    The original CL was reverted because a crash occurs when the
    ThumbnailImage::Subscribe() is invoked, but the ThumbnailImage's
    delegate is null. The delegate is the TabThumbnailHelper and this
    can be null when the WebContents is destroyed. This implies that the
    hover card is trying to update with stale TabData after the tab's
    web contents is destroyed, but before the tab is destroyed.
    Therefore, this CL attempts to fix this crash by clearing out the
    thumbnail data when the TabInterface is deleted to avoid this case.

    Bug: 447214891
    Change-Id: Ifc9e6146d932e8d04af735a31e876945901c0b8d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7666899
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600750}

* [cr148][Android] Move multi-instance shared prefs to a new file and registry

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/8c70bd005c9192f75046eb8f57a513e9150a5bcc

commit 8c70bd005c9192f75046eb8f57a513e9150a5bcc
Author: Zhe Li <zheliooo@google.com>
Date:   Mon Mar 16 18:27:53 2026 -0700

    [SharedPrefsMigration] Move multi-instance shared prefs to a new file and registry

    Bug: 438834621
    Change-Id: Ic28dea4ba6dac4068bb4fccc06f31daf835575b9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7669836
    Reviewed-by: Aishwarya Rajesh <aishwaryarj@google.com>
    Commit-Queue: Zhe Li <zheliooo@google.com>
    Owners-Override: Andrew Grieve <agrieve@chromium.org>
    Reviewed-by: Andrew Grieve <agrieve@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600256}

https://source.chromium.org/chromium/chromium/src/+/ad0d36681a0f3d4a7359244ec8b21b2b3c4a55a2

commit ad0d36681a0f3d4a7359244ec8b21b2b3c4a55a2
Author: Andrew Grieve <agrieve@chromium.org>
Date:   Mon Jan 26 11:42:34 2026 -0800

    Android: Convert ObservableSupplierImpl usages in misc places (3/3)

    Mostly tests. A few tests tested transitions to null
    on observers that are monotonic, so I removed those cases.

    Bug: 467389696
    Change-Id: Ia60a6c6037abdc2c571d9ffef556b7481e551868
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7513947
    Owners-Override: Andrew Grieve <agrieve@chromium.org>
    Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
    Auto-Submit: Andrew Grieve <agrieve@chromium.org>
    Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1574673}

* Fix TabHoverCardBubbleViewBrowserTest.ChromeSchemeUrl

As tabs::TabHandle::Get() would return nullptr, the tab data would not be
set. So we need to set the tab data manually here for testing.

* [cr148][Android] Fixed gn_check failure at playlist_service_factory.cc

Error message was:
```
ERROR at //brave/browser/playlist/playlist_service_factory.cc:52:11: Can't include this header from here.
          ^-------------------------------------------
The target:
  //chrome/browser:browser
is including a file from the target:
  //chrome/browser/ui/side_panel:side_panel_views_dependent

It's usually best to depend directly on the destination target.
In some cases, the destination target is considered a subcomponent
of an intermediate target. In this case, the intermediate target
should depend publicly on the destination to forward the ability
to include headers.

Dependency chain (there may also be others):
  //chrome/browser:browser -->
  //chrome/browser/ui/side_panel/internal:internal --[private]-->
  //chrome/browser/ui/side_panel/internal/android:android --[private]-->
  //chrome/browser/ui/side_panel:side_panel_views_dependent
```

* [cr148][Android] Fixed gn_check fail at host_content_settings_map_unittest.cc

Error message was:
```
ERROR at //chrome/browser/content_settings/host_content_settings_map_unittest.cc:79:11: Can't include this header from here.
          ^----------------------------------
The target:
  //chrome/browser/content_settings:unit_tests
is including a file from the target:
  //brave/extensions:common

It's usually best to depend directly on the destination target.
In some cases, the destination target is considered a subcomponent
of an intermediate target. In this case, the intermediate target
should depend publicly on the destination to forward the ability
to include headers.

Dependency chain (there may also be others):
  //chrome/browser/content_settings:unit_tests -->
  //chrome/browser:browser --[private]-->
  //brave/extensions:common
```

In upstream Chromium, extensions/common/url_pattern_set.h
belongs to //extensions/common which is a real target.
But on Android where enable_extensions=false, that target
doesn't exist/isn't built. So effectively, on Android, the
header has no upstream owner — and Brave's source_set
//brave/extensions:common "claims" to make it available.

Source
chrome/browser/content_settings/host_content_settings_map_unittest.cc
is at
//chrome/browser/content_settings:unit_tests
but does not depend on //brave/extensions:common .
This is the complain of the gn_check.

The purpose of deprecated_visibility_allowed is only to prevent
new uses of url_pattern_set, current commit doesn't introduce that.

The upside - no need to patch chrome/browser/content_settings:unit_tests,
as depenence is visible through
//chrome/browser/content_settings:unit_tests  -->
//chrome/browser:browser                      -->
//chrome/browser:browser_public_dependencies

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/7307848029fabb938e5cce51d0e3581d1096a58b

commit 7307848029fabb938e5cce51d0e3581d1096a58b
Author: Joel Hockey <joelhockey@chromium.org>
Date:   Mon Mar 16 18:26:20 2026 -0700

    Add new ExtensionInstallTimePermissionProvider

    It provides the status of permissions which are enabled via
    extension manifests.  Current analysis shows that only
    geolocation and notifications are relevant.

    With support for extensions in desktop android, the SiteSettings page should show when extensions have permissions enabled.  Desktop looks
    up these permissions via site_settings_helper GetPermissionResultForOriginWithoutContext(), but it can be done
    via HostContentsSettingsMap by adding this new provider.

    Bug: 40215363
    Bug: 458227842
    Change-Id: I4528923a56d0d20e1ab8a166dd729d4accc50d48
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7627082
    Reviewed-by: Elias Klim <elklm@chromium.org>
    Commit-Queue: Joel Hockey <joelhockey@chromium.org>
    Reviewed-by: Sam McNally <sammc@chromium.org>
    Reviewed-by: Reilly Grant <reillyg@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600254}

* [cr148] `contextual_tasks_panel_host_desktop` renamed

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/98cb12770537b455eb5a257156e12c5b29d8650f

commit 98cb12770537b455eb5a257156e12c5b29d8650f
Author: Sho Biswas <shobiz@google.com>
Date:   Mon Mar 23 11:35:03 2026 -0700

    Contextual Tasks: Rename ContextualTasksPanelHostDesktop{Impl,}

    This matches ContextualTasksPanelHostAndroid. Also updated BUILD.gn and
    all references in the codebase.

    Bug: 493694586
    Change-Id: Ibefe395ce1b69b53e43383caf742ac073f00d5a3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7673845
    Commit-Queue: Sho Biswas <shobiz@google.com>
    Reviewed-by: Yuheng Huang <yuhengh@chromium.org>
    Reviewed-by: Shakti Sahu <shaktisahu@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603608}

* [cr148] `incognito_profile.icon` made ash-only

This change simply pulls the override into our source tree, as we still use this
icon in Brave.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/1aa94c1135693d505c20ace37c4659fb7e52af63

commit 1aa94c1135693d505c20ace37c4659fb7e52af63
Author: Mitsuru Oshima <oshima@chromium.org>
Date:   Mon Mar 23 06:54:13 2026 -0700

    Migrate ChromeOS-exclusive vector icons from chrome/app to ash/resources

    This CL moves vector icons (.icon files) that are used exclusively in
    ChromeOS specific files from chrome/app/vector_icons to
    ash/resources/vector_icons.

    - Moved 29 .icon files to ash/resources/vector_icons.
    - Left notification_google.icon in chrome/app since it's a trademarked
      image and should not be added to the public ash repo.
    - Removed 1 unused .icon file (drag_handle.icon) from chrome/app/vector_icons
      since it already exists in ash/resources/vector_icons.
    - Updated BUILD.gn in both directories.
    - Updated C++ references to use the ash:: namespace.
    - Added #include "ash/resources/vector_icons/vector_icons.h" where
      necessary.
    - Removed #include "chrome/app/vector_icons/vector_icons.h" where no
      longer needed.
    - Added missing dependencies in affected targets (e.g. //chrome/browser/ash/*).
    - Formatted with git cl format.

    NOPRESUBMIT=true

    Bypass-Check-License: Moving existing files from chrome to ash.
    Bug: b:492325954
    Change-Id: Ic51465ed261648db4b5182025767901f65384732
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7663588
    Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
    Commit-Queue: Mitsuru Oshima <oshima@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603430}

* [cr148] Fix for unwated substitution in `LocationIconView`

This change adds a preemtpive inclusion to prevent a an unwated
replacement to take place due to a new header being added to this class.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/8222d0be0a7be63ec535ae620078f555d1d0d2dd

commit 8222d0be0a7be63ec535ae620078f555d1d0d2dd
Author: Qingxin Wu <qingxinwu@google.com>
Date:   Mon Mar 23 10:59:29 2026 -0700

    [WebUI LLBC] Extract LocationIconInterface for WebUI migration

    This CL implements Phase 1 of decoupling the Left-Hand Side (LHS)
    location bar chips from the native Views framework, focusing on
    LocationIconView.

    Introduces a pure virtual LocationIconInterface to define the
    presentation logic required by controllers. LocationIconView is updated
    to inherit from this new interface.

    Additionally, callers have been refactored to hold
    LocationIconInterface* instead of the concrete View. This paves the way
    for the upcoming WebUILocationBarChipsControl implementation which will
    implement this interface to push state to the WebUI frontend.

    Bug: 495419742
    Change-Id: Ie18b401d799b1e74590e2a50e03dc9b704d17fdf
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7689652
    Reviewed-by: Foromo Daniel Soromou <koretadaniel@chromium.org>
    Reviewed-by: Maks Orlovich <morlovich@chromium.org>
    Commit-Queue: Qingxin Wu <qingxinwu@google.com>
    Cr-Commit-Position: refs/heads/main@{#1603588}

* [cr148] `DeviceInfo` now using its own enum types

This class is not using prot-generated types in its interface anymore.
This means our own extended version of this class needs to be corrected,
and that callers of this contructor also need to be adjusted.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/165bf33e52b7a4b1744d405f2e430380f97be855

commit 165bf33e52b7a4b1744d405f2e430380f97be855
Author: Pengyuan Wang <pengyuanwang@microsoft.com>
Date:   Tue Mar 24 02:59:58 2026 -0700

    [Sync] Decouple syncer::DeviceInfo from sync protocol types

    syncer::DeviceInfo currently exposes fields that use proto types
    defined in components/sync/protocol (sync_pb). As a result, clients
    that only need DeviceInfo must depend on the protocol layer.

    Refactor DeviceInfo to use native C++ types instead. Proto conversions
    are handled internally within the sync implementation, which keeps the
    protocol dependency out of the public interface. This improves layering
    and reduces unnecessary dependencies.

    Bug: 364331851
    Change-Id: I1289c5338e3490dc4c7f266e84194ad39db027e8
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7665692
    Reviewed-by: Mikel Astiz <mastiz@chromium.org>
    Commit-Queue: Marc Treib <treib@chromium.org>
    Reviewed-by: Marc Treib <treib@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603992}

* [cr148] Fix `WalletHttpClient` stubs to include consent auditor

This function is merely stubbed to make it nullopt, and this change
corrects this signature to match the override.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/140daa67c68da98cc9c0d0501143fd8ee0b2e3ef

commit 140daa67c68da98cc9c0d0501143fd8ee0b2e3ef
Author: Florian Leimgruber <fleimgruber@google.com>
Date:   Mon Mar 23 02:03:05 2026 -0700

    Private passes: Require a ConsentAuditor::SessionId for saves

    When the user accepts saving a new private pass from Chrome, Chrome
    calls a Wallet API to create the pass. Before doing so, it will call
    the API from crrev.com/c/7653495 to record the consent given. This
    consent will be identified by a SessionId, which needs to be included in
    the Wallet API request.

    For updates, no consent logging is required, since the pass already
    exists in Wallet.

    This CL adapts the client-side API to require a session ID when saving
    a new pass. Specifically:
    - Adds an optional<SessionId> parameter to
      WalletHttpClient::UpsertPrivatePass(pass).
      This is the components/wallet API that distinguishes between saves and
      updates based on the presence of a pass.id. A CHECK enforces that
      either pass.id is set or the session ID is not nullopt.
    - Adds logic to UpsertPrivatePassRequest::GetRequestContent() to
      populate the session ID field of the request proto field, added in
      crrev.com/c/7679158.
      Tested through a new unit test.
    - Adds a SessionId parameter to
      WalletPassAccessManager::SaveWalletEntityInstance() and forwards it
      to the internal WalletHttpClient::UpsertPrivatePass() call.
      WalletPassAccessManager::UpdateWalletEntityInstance() remains
      unchanged.
      This is tested by adapting the expected parameters that the
      MockWalletHttpClient receives in
      wallet_pass_access_manager_impl_unittest.cc.
    - Adapts the callers of
      WalletPassAccessManager::SaveWalletEntityInstance() to pass a dummy
      session ID. Leaves a TODO for a follow-up CL to actually log the
      consent and pass the proper session ID.
    - Adds ConsentAuditor::GenerateSessionId() and uses
      ConsentAuditor::SessionId everywhere, rather than the underlying Uuid
      functions. This communicates the purpose of the Uuid better.
      This requires adding dependencies on consent_auditor in a few places.

    Bug: 478783796, 489354073
    Change-Id: I8c36f00f02e15133ae9ac28b58ca4a78fb0e3370
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7680076
    Commit-Queue: Florian Leimgruber <fleimgruber@google.com>
    Reviewed-by: Marc Treib <treib@chromium.org>
    Reviewed-by: Norge Vizcay <vizcay@google.com>
    Cr-Commit-Position: refs/heads/main@{#1603317}

* [cr148] `contextual_cueing` moved to `chrome/browser/glic`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d6e962003e4d44f1dce57b587e68c8f503400dd1

commit d6e962003e4d44f1dce57b587e68c8f503400dd1
Author: Ian Wells <iwells@chromium.org>
Date:   Mon Mar 23 16:17:33 2026 -0700

    Move contextual_cueing sources to chrome/browser/glic

    This move is in preparation for the fresh implementation of cross-Chrome
    contextual cueing in chrome/browser/contextual_cueing. Eventually glic
    should migrate to using cross-Chrome cues, but for now the code will
    move so that the new cue logic can be built without glic-specific logic
    needing to be untangled at every step.

    In this change:
    * move the sources
    * put everything that was in the `contextual_cueing` namespace into the `glic` namespace
    * update include paths and build target paths

    Bypass-Check-License: moving files
    Bug: 487136801
    Change-Id: Ida37ca18cc733d7713386d436215d4eedd45009e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7685955
    Reviewed-by: Sophie Chang <sophiechang@chromium.org>
    Commit-Queue: Ian Wells <iwells@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603775}

* [cr148] Move profile-dependent early-init calls to `PreProfileInit`

`BraveBrowserProcessImpl` previously initialized services like
`brave_referrals_service` in the constructor, which accessed `ProfileManager`
before `GlobalBrowserCollection` was ready. After cr148, this caused a startup
crash. This change moves all profile-dependent early-init calls to
`PreProfileInit`, ensuring proper initialization order.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7427fd2cb2262609e9112b71e4983ab2b28c7f6c

commit 7427fd2cb2262609e9112b71e4983ab2b28c7f6c
Author: thomas lukaszewicz <tluk@chromium.org>
Date:   Mon Mar 23 10:16:57 2026 -0700

    [bedrock] Migrate profile_manager.cc away from BrowserListObserver.

    This migration is part of project bedrock to reduce the dependencies on
    Browser and BrowserList. See https://crbug.com/431671320 for more info.

    Reland of crrev.com/c/7609603 with an update to handle mac test
    failures.

    Bug: 459777668
    Change-Id: Ic4d35c262409860a2320f9c4466f2a8d11b4d142
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7692272
    Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com>
    Commit-Queue: Tom Lukaszewicz <tluk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1603569}

* [cr148] `PostTaskAndReplyWithResult` unpacking tuples

This is a quality-of-life change but functionally the resulting code is
the same.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/b791274c81bf6b38b10bc61646432226e24dee80

commit b791274c81bf6b38b10bc61646432226e24dee80
Author: Evan Stade <evanstade@microsoft.com>
Date:   Tue Mar 24 14:22:34 2026 -0700

    Add PostTaskAndReplyWithResult support for multiple args

    PostTaskAndReplyWithResult currently only works if the result is a
    single value. The new version additionally works with a reply function
    that takes multiple arguments, where the task function must return a
    std::tuple.

    This also adds support to SequenceBound, and updates a few callers that
    were returning a tuple/taking a tuple response, since now the obligatory
    pattern is to return a tuple/take an unwrapped tuple (fn arguments).

    Before:

    void DoFoo(FooCallback callback) {
         Value value = ...;
         Info info = ...;
         Delegate delegate = ...;
         std::move(callback).Run(value, info, delegate);
       }

    task_runner->PostTask(
           FROM_HERE,
           BindOnce(&DoFoo,
                    BindPostTaskToCurrentDefault(std::move(callback))));

    Or:

    std::tuple<Value, Info, Delegate> DoFoo() {
         Value value = ...;
         Info info = ...;
         Delegate delegate = ...;
         return {value, info, delegate};
       }

    task_runner->PostTaskAndReplyWithResult(
           FROM_HERE,
           BindOnce(&DoFoo),
           /*a lambda that manually unwraps a tuple,
             wrapping a callback*/);

    After:

    std::tuple<Value, Info, Delegate> DoFoo() {
         Value value = ...;
         Info info = ...;
         Delegate delegate = ...;
         return {value, info, delegate};
       }

    task_runner->PostTaskAndReplyWithResult(
           FROM_HERE,
           BindOnce(&DoFoo),
           std::move(callback));

    Change-Id: I85ec5a6879d62266a7cbd6e20d647f8f89ee4b55
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7664766
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Owners-Override: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Evan Stade <evanstade@microsoft.com>
    Cr-Commit-Position: refs/heads/main@{#1604388}

* [cr148] `sendWithPromise` requires a type parameter

This change corrects all uses of `sendWithPromise` to apply the expected
type parameter.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7c7425f8dd87005b3ab4c3963983278c81bd5dc1
https://chromium.googlesource.com/chromium/src/+/2035199d62968c047e1b7d72b86cafe01af7d346

commit 7c7425f8dd87005b3ab4c3963983278c81bd5dc1
Author: dpapad <dpapad@chromium.org>
Date:   Tue Mar 24 16:56:36 2026 -0700

    WebUI: Add type parameter to sendWithPromise(), part 2.

    The parameter indicates the payload type of the returned Promise as
    follows: export function sendWithPromise<T>(...): Promise<T> {...}

    In this part making the type parameter required by removing the "= any"
    fallback.

    Bug: 494464740
    Change-Id: I153bd07ffcc2b16d4c5caa3c9c0730cd2177d87b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7690239
    Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
    Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604484}

commit 2035199d62968c047e1b7d72b86cafe01af7d346
Author: dpapad <dpapad@chromium.org>
Date:   Tue Mar 24 13:41:16 2026 -0700

    WebUI: Add type parameter to sendWithPromise(), part 1.

    The parameter indicates the payload type of the returned Promise as
    follows: export function sendWithPromise<T>(...): Promise<T> {...}

    In this part fixing all newly surfaced type errors. The parameter is
    kept as optional (using 'T = any') to prevent any race conditions with
    other CLs that can possibly introduce violations. It will be made
    required in the follow-up.

    This is part of the effort to reduce and eventually ban the use of
    TypeScript's 'any' across the codebase.

    Bug: 494464740
    Change-Id: I51025cebf857d651fb0fb813d9b63ef85d481433
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7689639
    Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
    Auto-Submit: Demetrios Papadopoulos <dpapad@chromium.org>
    Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604358}

* [cr148] `AddTabData` dropped `TabData`

The uses we make of `AddTabsAt` are all in tests, and these cases
already relied on the use of `SetDataForTesting` for testing as well to
work.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/74da1f8342e2593df0fd30271db17987706a35a1

commit 74da1f8342e2593df0fd30271db17987706a35a1
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Mar 24 14:12:23 2026 -0700

    Reland "[TabData] Remove TabData usage from TabStripController"

    This reverts commit c5d67fe9a40ec6b08a9274c6f594e6531f6d0da4.

    Reason for revert: The original CL was reverted because there was
    a bug in how the TabDataObserver was handling thumbnails for
    discarded tabs. Since the fix for that landed last week and crashes
    have gone down. This CL can be relanded now.

    Original change's description:
    > Revert "[TabData] Remove TabData usage from TabStripController"
    >
    > This reverts commit 231ccad15761c8cba75c882e9ae0d2c7b75f303b.
    >
    > Reason for revert: The tab strip data is needed because
    > https://chromium-review.git.corp.google.com/c/chromium/src/+/7644981
    > is reverted.
    >
    > Original change's description:
    > > [TabData] Remove TabData usage from TabStripController
    > >
    > > The tab can now populate its own tab data so it doesn't need to rely on
    > > the BrowserTabStripController and TabStrip to pass in a TabData. Thus
    > > usage of TabData is deleted in this CL.
    > >
    > > Bug: 447214891
    > > Change-Id: Ia864e73a7b1f058e8a3da9f8911afeaa5dbfba5a
    > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7657233
    > > Reviewed-by: Alison Gale <agale@chromium.org>
    > > Commit-Queue: Steven Luong <stluong@chromium.org>
    > > Cr-Commit-Position: refs/heads/main@{#1598602}
    >
    > Bug: 447214891
    > No-Presubmit: true
    > No-Tree-Checks: true
    > No-Try: true
    > Change-Id: Ia521f463988e532fd18f7f8e122627c85553d389
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7663410
    > Commit-Queue: Darryl James <dljames@chromium.org>
    > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    > Auto-Submit: Steven Luong <stluong@chromium.org>
    > Reviewed-by: Darryl James <dljames@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1598703}

    Bug: 447214891
    Change-Id: Iabf862532b9b3029e28f058b22fd96677240bfa4
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7698715
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Alison Gale <agale@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604379}

* [cr148] Arg dropped from `StartAutocomplete`

This is of no consequence for our use of this funciton.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/b07f2ee9c3d9299ba92b91d4d964d949f78f8f1c

commit b07f2ee9c3d9299ba92b91d4d964d949f78f8f1c
Author: manukh <manukh@chromium.org>
Date:   Wed Mar 25 17:01:14 2026 -0700

    [omnibox][webui] Remove `has_selected_text` param from OmniboxEditModel

    `OmniboxEditModel::UpdateInput()` &
    `OmniboxEditModel::StartAutocomplete()` had 2 params:
    `has_selected_text` & `prevent_inline_autocomplete`. These were used in
    computing `AutocompleteInput::set_prevent_inline_autocomplete()`. The
    1st param was unnecessary.

    There are 3 flows into `StartAutocomplete()`.

    1. When the input selection was at the end of the text,
       `OmniboxViewViews::UpdatePopup()` would set both `has_selected_text`
       and `prevent_inline_autocomplete` to false, and `StartAutocomplete()`
       would then call `set_prevent_inline_autocomplete(false || false)`.

    2. When the input selection was not at the end of the text,
       `OmniboxViewViews::UpdatePopup()` would set
       `prevent_inline_autocomplete` to true, and `StartAutocomplete()`
       would then call `set_prevent_inline_autocomplete(unknown || true)`.

    3. `OmniboxEditModel::AcceptKeyword()` would set the params to false &
       true, and `StartAutocomplete()` would then call
       `set_prevent_inline_autocomplete(false || true)`

    In all 3 cases, the 1st param was unnecessary.
    1. `false   || false == false`
    2. `unknown || true  == true`
    3. `false   || true  == true`

    No behavior change.

    Bug: 449816206
    Change-Id: Id4759a74709a4b12ca501260c035c12dbbcc9c3e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7698694
    Commit-Queue: Orin Jaworski <orinj@chromium.org>
    Reviewed-by: Orin Jaworski <orinj@chromium.org>
    Auto-Submit: manuk hovanesian <manukh@chromium.org>
    Commit-Queue: manuk hovanesian <manukh@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605190}

* [cr148] Hovercard sources moved into their own path

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e3daf97890c890d4843b63b3e4e6b5d738a6ae4b

commit e3daf97890c890d4843b63b3e4e6b5d738a6ae4b
Author: Eshwar Stalin <estalin@chromium.org>
Date:   Thu Mar 26 11:05:06 2026 -0700

    Creating a hovercard folder under c/b/ui/views/tabs

    Bypass-Check-License: Moving existing files
    Change-Id: Ic3aab57ddccef6a7b6aeedb508f733261d36665d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7641849
    Reviewed-by: Steven Luong <stluong@chromium.org>
    Commit-Queue: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605665}

* [cr148] `kDocumentProviderNoSyncRequirement` deleted

This deletion was approved by Brave's security team, as it is gated on Google
Account sign-in at the browser level.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f8a90a556ba3648b75ac49c14715540692a03c49

commit f8a90a556ba3648b75ac49c14715540692a03c49
Author: Jonathan Lee <jonathanjlee@google.com>
Date:   Thu Mar 26 14:49:19 2026 -0700

    [code-health] Clean up `omnibox-drive-suggestions-no-sync-requirement`

    * This flag expired in M132.
    * The `base::Feature` isn't listed in
      go/stale-base-features-exceptions.
    * The Finch configs associated with the `base::Feature` appear fully
      launched.

    Fixed: 335232635
    Change-Id: I86a027a6869a66ec5906e5cfee9c24ea4575d582
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7701378
    Reviewed-by: Justin Donnelly <jdonnelly@chromium.org>
    Reviewed-by: Robbie Gibson <rkgibson@google.com>
    Auto-Submit: Jonathan Lee <jonathanjlee@google.com>
    Commit-Queue: Robbie Gibson <rkgibson@google.com>
    Cr-Commit-Position: refs/heads/main@{#1605795}

* [cr148] `SidePanelAnimationCoordinator` deleted

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ad15e12ef0e444562253fbca3e70bd7002e9053b

commit ad15e12ef0e444562253fbca3e70bd7002e9053b
Author: Dana Fried <dfried@chromium.org>
Date:   Thu Mar 26 06:12:48 2026 -0700

    [Animation] Migrate side panel to new animation controller

    Change-Id: I8d02f28a95256944222391c3d1fa8caa07539a61
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7681391
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Commit-Queue: Dana Fried <dfried@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605438}

* [cr148] `SearchEnginesHandler::OnModelChanged` removed

This function has been removed, however the existing override for it has
been changed to rely on `OnTemplateURLServiceChanged`, which seems to be
the equivalent now.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/654a53b920f88c183c3ad823a68df107bd4e8296

commit 654a53b920f88c183c3ad823a68df107bd4e8296
Author: Amelie Schneider <amelies@google.com>
Date:   Thu Mar 26 07:26:57 2026 -0700

    [Search] Observe TemplateURLService from search engines handler

    Since the plan is to deprecate the use of table model in the interaction
    between the WebUI, the search engines handler and the TemplateURLService
    entirely, stop using the TableModelObserver and use the
    TemplateURLServiceObserver instead.

    Bug: 494529875
    Change-Id: Iac36064cde86f3470530c9fe26f34d94c62e97e3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7696763
    Commit-Queue: Amelie Schneider <amelies@google.com>
    Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605484}

* [cr148] `CertificateManagerElement` migrated to lit

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/058f35e2f254d9c4f2d71976b864652bd8632d24

commit 058f35e2f254d9c4f2d71976b864652bd8632d24
Author: rbpotter <rbpotter@chromium.org>
Date:   Thu Mar 26 15:03:36 2026 -0700

    Certificate Manager: Cleanup Polymer leftovers

    - Remove "_lit" suffix on style files/names
    - Remove Polymer dependencies
    - Remove certificate manager folders from Polymer visibility list

    Bug: 40943652
    Change-Id: If5663b278341cd48a205c07c4d9cbca977b79f5e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7690454
    Reviewed-by: Matt Mueller <mattm@chromium.org>
    Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605807}

* [cr148] `CanonicalCookie::CreateForTesting` overloads deleted

This change corrects all callers to use the only remaining function.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/4cc14f685c6daaea27fbb02c5d3f110c123ad6f6

commit 4cc14f685c6daaea27fbb02c5d3f110c123ad6f6
Author: Johann Hofmann <johannhof@chromium.org>
Date:   Thu Mar 26 07:39:27 2026 -0700

    Remove CookieSourceType::kUnknown and clean up deprecated overloads

    This CL performs the final cleanup for removing CookieSourceType::kUnknown
    from the codebase.

    Specifically, it:
    1. Removes kUnknown from services/network/public/mojom/cookie_manager.mojom
       and net/cookies/cookie_constants.h.
    2. Removes deprecated overloads of CanonicalCookie::CreateUnsafeCookieForTesting
       and CreateForTesting from net/cookies/canonical_cookie.h.
    3. Removes the `CHECK_IS_TEST` assertion in net/cookies/cookie_monster.cc.
    4. Updates mappings in services/network/public/cpp/cookie_manager_mojom_traits.cc
       and sqlite_persistent_cookie_store.cc to remove the kUnknown case.
    5. Maps UNKNOWN to kOther in floating_sso sync conversions and updates testing loop minimum to kHTTP.
    6. Corrects argument positions in multiple test callsites (cookie_monster_unittest, cookie_util_unittest, device_bound_session_manager_unittest, etc.) to match the new signature.

    Bug: 479743220
    Change-Id: Ie3b50d9689af35bab9133173d9a43cd14555bbc0
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7686830
    Reviewed-by: James Cook <jamescook@chromium.org>
    Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
    Reviewed-by: Tsuyoshi Horo <horo@chromium.org>
    Reviewed-by: Chris Fredrickson <cfredric@chromium.org>
    Commit-Queue: Johann Hofmann <johannhof@chromium.org>
    Reviewed-by: Dominic Farolino <dom@chromium.org>
    Reviewed-by: Martin Šrámek <msramek@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605492}

* [cr148] Fix `FakeAccountFetcherFactory` ctor call

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/52b83996a2d6b9075fd6ca57afd7165ec3f55d75

commit 52b83996a2d6b9075fd6ca57afd7165ec3f55d75
Author: Boris Sazonov <bsazonov@chromium.org>
Date:   Thu Mar 26 05:42:13 2026 -0700

    [Signin] Move AccountInfoFetcher creation to AccountFetcherFactory

    Prior to this CL, AccountFetcherService::StartFetchingUserInfo was
    always creating AccountInfoFetcherGaia explicitly on all platforms.
    This CL plumbs AccountInfoFetcher creation through
    AccountFetcherFactory and changes all AccountFetcherFactory
    implementations to instantiate AccountInfoFetcherGaia (to avoid
    inadvertent behavior changes). In subsequent CLs platform-specific
    AccountInfoFetcher implementations will be created and
    FakeAccountFetcherFactory behavior will be revised to see whether
    a test-specific implementation of AccountInfoFetcher is needed.

    Bug: 449708427
    Change-Id: I0e8461658de83d4ed0e1fbbcbdf534670730f65a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7613530
    Auto-Submit: Boris Sazonov <bsazonov@chromium.org>
    Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
    Commit-Queue: Boris Sazonov <bsazonov@chromium.org>
    Reviewed-by: David Roger <droger@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605414}

* [cr148] `base::HexEncode` to use span

The deprecated variant has been deleted/

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/da12fb560afc4519dc2ae1f831714008fda90bac

commit da12fb560afc4519dc2ae1f831714008fda90bac
Author: raorui <ruirao565@gmail.com>
Date:   Fri Mar 27 03:27:18 2026 -0700

    Code Health: Use span in base::HexEncode

    - Migrate HexEncode callers from raw pointer+length to controlled views:
      - strings: std::string_view or base::as_byte_span
      - IOBuffer: io_buffer()->span()
      - struct bytes: reinterpret_cast + base::span<const uint8_t>
    - Clamp adapter MAC length before slicing to avoid OOB when encoding
    - Remove pointer-based HexEncode overload and associated TODO
    - Update tests and fuzzers to new interfaces

    Bug: 40284755
    Change-Id: I3352bb1a795b2f10cf5a8bedb432fe7d4bdf7290
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7607319
    Reviewed-by: Ken Buchanan <kenrb@chromium.org>
    Owners-Override: Colin Blundell <blundell@chromium.org>
    Commit-Queue: Colin Blundell <blundell@chromium.org>
    Reviewed-by: Colin Blundell <blundell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606068}

* [cr148] `WebAppBrowserTestBase::https_server()` deleted

The base calss to this calss also have an embedded https server for test
that can be used in its place.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d2710c87190e5b2e995b8053623cab22caa70af6

commit d2710c87190e5b2e995b8053623cab22caa70af6
Author: dmurph@chromium.org <dmurph@chromium.org>
Date:   Fri Mar 27 09:21:18 2026 -0700

    [PWA] Removed https_server() in favor of base class server.

    The https_server() field was redundant in our browser tests, and often
    caused confusion with usage of embedded_https_test_server(). This
    change removes it in favor of the base class one.

    Change-Id: I658830d55e74538b8445b8ca8faf73ed7373970b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7687741
    Commit-Queue: Daniel Murphy <dmurph@chromium.org>
    Reviewed-by: Erik Chen <erikchen@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606284}

* [cr148] `blink::String::Left()` deleted

This function has been deleted in favour of view ones. However, for the
only use for this function, the replacement with substring is more
appropriate.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f72257b3f0318fef20d1d397ff36c526d411a235

commit f72257b3f0318fef20d1d397ff36c526d411a235
Author: Kent Tamura <tkent@chromium.org>
Date:   Fri Mar 27 03:07:42 2026 -0700

    WTF: Remove Left() and Right() of blink::String

    The Left() and Right() convenience methods are removed from
    blink::String. These methods were primarily maintained for historical
    reasons and offer less compatibility with the standard
    std::string::substr API. All existing call sites have been updated to
    use substr(0, len) instead, promoting consistency and reducing the API
    surface.

    Bug: 473854537
    Change-Id: Ied200d2c5fc0015d29992b78fe065c3559ade848
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7706812
    Auto-Submit: Kent Tamura <tkent@chromium.org>
    Commit-Queue: Fredrik Söderquist <fs@opera.com>
    Reviewed-by: Fredrik Söderquist <fs@opera.com>
    Cr-Commit-Position: refs/heads/main@{#1606063}

* [cr148][ios] Add implementation for `CWVGlobalState::setDumpWithoutCrashingHandler`

Added implementation for new required method.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7c9a01ff3216085d9809562f93e716b624c73627

commit 7c9a01ff3216085d9809562f93e716b624c73627
Author: Anuj Kumar <anujbh@google.com>
Date:   Fri Mar 13 11:28:12 2026 -0700

    [ios_web_view] Expose CWVGlobalState setDumpWithoutCrashingHandler

    Exposes setDumpWithoutCrashingHandler in CWVGlobalState to allow
    the host application to register a custom crash handler function
    for Chromium's base::debug::DumpWithoutCrashing.

    Bug: 491216002
    Change-Id: I864d7869ae5ace1e9ddfe58502380e609c0746a1
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7650095
    Reviewed-by: Mike Dougherty <michaeldo@chromium.org>
    Reviewed-by: Carlos Acosta <cyacosta@google.com>
    Commit-Queue: Anuj Kumar <anujbh@google.com>
    Cr-Commit-Position: refs/heads/main@{#1599198}

* [cr148] `TabStrip::SetTabData` deleted and `TabData` dropped

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/74da1f8342e2593df0fd30271db17987706a35a1
https://chromium.googlesource.com/chromium/src/+/6f42aa179cbcfdb3dc07de43809701f59479071c

commit 74da1f8342e2593df0fd30271db17987706a35a1
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Mar 24 14:12:23 2026 -0700

    Reland "[TabData] Remove TabData usage from TabStripController"

    This reverts commit c5d67fe9a40ec6b08a9274c6f594e6531f6d0da4.

    Reason for revert: The original CL was reverted because there was
    a bug in how the TabDataObserver was handling thumbnails for
    discarded tabs. Since the fix for that landed last week and crashes
    have gone down. This CL can be relanded now.

    Original change's description:
    > Revert "[TabData] Remove TabData usage from TabStripController"
    >
    > This reverts commit 231ccad15761c8cba75c882e9ae0d2c7b75f303b.
    >
    > Reason for revert: The tab strip data is needed because
    > https://chromium-review.git.corp.google.com/c/chromium/src/+/7644981
    > is reverted.
    >
    > Original change's description:
    > > [TabData] Remove TabData usage from TabStripController
    > >
    > > The tab can now populate its own tab data so it doesn't need to rely on
    > > the BrowserTabStripController and TabStrip to pass in a TabData. Thus
    > > usage of TabData is deleted in this CL.
    > >
    > > Bug: 447214891
    > > Change-Id: Ia864e73a7b1f058e8a3da9f8911afeaa5dbfba5a
    > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7657233
    > > Reviewed-by: Alison Gale <agale@chromium.org>
    > > Commit-Queue: Steven Luong <stluong@chromium.org>
    > > Cr-Commit-Position: refs/heads/main@{#1598602}
    >
    > Bug: 447214891
    > No-Presubmit: true
    > No-Tree-Checks: true
    > No-Try: true
    > Change-Id: Ia521f463988e532fd18f7f8e122627c85553d389
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7663410
    > Commit-Queue: Darryl James <dljames@chromium.org>
    > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    > Auto-Submit: Steven Luong <stluong@chromium.org>
    > Reviewed-by: Darryl James <dljames@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1598703}

    Bug: 447214891
    Change-Id: Iabf862532b9b3029e28f058b22fd96677240bfa4
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7698715
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Alison Gale <agale@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604379}

commit 6f42aa179cbcfdb3dc07de43809701f59479071c
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Mar 17 12:59:15 2026 -0700

    [TabData] Reland Tab sets data from TabDataObserver

    This CL has the tab directly subscribe for tab data updates from the
    TabDataObserver instead of relying on other classes to set its data.

    The original CL was reverted because a crash occurs when the
    ThumbnailImage::Subscribe() is invoked, but the ThumbnailImage's
    delegate is null. The delegate is the TabThumbnailHelper and this
    can be null when the WebContents is destroyed. This implies that the
    hover card is trying to update with stale TabData after the tab's
    web contents is destroyed, but before the tab is destroyed.
    Therefore, this CL attempts to fix this crash by clearing out the
    thumbnail data when the TabInterface is deleted to avoid this case.

    Bug: 447214891
    Change-Id: Ifc9e6146d932e8d04af735a31e876945901c0b8d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7666899
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600750}

* [cr148] `ReloadBypassingCache` migrated from `Browser`

This is just a replacement for `BrowserWindowInterface`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6fdf39dcf2a19ea7debd7f96d1668f4631cfabb0

commit 6fdf39dcf2a19ea7debd7f96d1668f4631cfabb0
Author: Kun Wang <kunwang@microsoft.com>
Date:   Sun Mar 29 13:12:54 2026 -0700

    [bedrock] Migrate Browser parameters to BrowserWindowInterface Part 2

    Migrate ~30 functions to take BrowserWindowInterface* instead of
    Browser*. Functions needing Browser*-specific APIs use
    GetBrowserForMigrationOnly() as an incremental workaround.

    Also migrates lens::IsRegionSearchEnabled/IsInProgressiveWebApp and

    ScreenshotCapturedBubbleController::Capture to BrowserWindowInterface*.

    Bug: 494376650
    Change-Id: If121f69b70804171718563074abc5341e0b1a03b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7699547
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com>
    Commit-Queue: Tom Lukaszewicz <tluk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606828}

* [cr148] `NotificationHandler::Type::SEND_TAB_TO_SELF` removed

This upstream change removed `NotificationHandler::Type::SEND_TAB_TO_SELF`,
which wallet code was relying on for notifications and click-handling.

This commit switches it to use the `ANNOUNCEMENT` notification type instead, but
the correct long-term solution is to add our own wallet-specific notification
type and handler. The wallet team has been informed and an issue was opened to
track that work here https://github.com/brave/brave-browser/issues/54389.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/577a926419a0a7350d43af2cbeae968c7b87555e

commit 577a926419a0a7350d43af2cbeae968c7b87555e
Author: Michael Tatarski <mtatarski@google.com>
Date:   Thu Mar 26 03:18:17 2026 -0700

    Remove legacy STTS UI and modularize Android STTS code

    The DesktopNotificationHandler was part of the STTSv1 UI, relying on system notifications to alert users when a tab was received on desktop. This is superseded by the STTSv2 UI (ephemeral bubble). This change removes the dead handler code, the SEND_TAB_TO_SELF notification type, and obsolete UI strings.

    Bug: 40811626
    Change-Id: Id0b98d6465f765650c64151c12efb6e92a3fea30
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7684232
    Reviewed-by: Marc Treib <treib@chromium.org>
    Commit-Queue: Michael Tatarski <mtatarski@google.com>
    Cr-Commit-Position: refs/heads/main@{#1605368}

* [cr148] Ensure `BraveShortcutsProviderTest` initializes the `HistoryService`

This initialization is now required and enforced by upstream.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/aac2a1dad2e0f384b3df12e985e2a21b329cf438

commit aac2a1dad2e0f384b3df12e985e2a21b329cf438
Author: Sylvain Defresne <sdefresne@chromium.org>
Date:   Tue Mar 17 02:29:59 2026 -0700

    Ensure ShortcutsProviderTest initializes the HistoryService

    In production it is not possible to get access to an HistoryService
    that has not been initialized, so change ShortcutsProviderTest to
    call HistoryService::Init(...) on the fake service it creates.

    This will allow changing HistoryService to prevent registering
    observers after the call to the Shutdown() method.

    Bug: 481635191
    Change-Id: Iedd4300792209b0c11bdc052a6c4a30b1759889a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7670577
    Reviewed-by: Nihar Majmudar <niharm@google.com>
    Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600402}

* [cr148][Android] kMagicStackAndroid removed and enabled

Chromium commit:
https://source.chromium.org/chromium/chromium/src/+/637ab3d33243fac8b3ee914db8357adb2fd79464

commit 637ab3d33243fac8b3ee914db8357adb2fd79464
Author: Xi Han <hanxi@google.com>
Date:   Wed Mar 25 09:04:27 2026 -0700

    [MagicStack] Clean up feature MagicStackAndroid.

    In this CL, we clean up all remaining code for the feature flag of
    magic stack. The feature has been launched long time ago.

    Bug: 41485537, 487641528, 493844946
    Change-Id: Ifc8d51793b942974ea0366656c0d4878b9578857
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7697213
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Reviewed-by: Michael Thiessen <mthiesse@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604869}

* [cr148][Android] Replace ConfirmationDialogHelper with ActionConfirmationDialog

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

commit f3ba4ddfcd5f49cded342e0fe965cb2dee67f5bc
Author: Piotr Kotynia <piotrkotynia@google.com>
Date:   Wed Mar 25 06:50:24 2026 -0700

    [Android] Replace ConfirmationDialogHelper with ActionConfirmationDialog

    This CL deprecates the ConfirmationDialogHelper and replaces its usage
    inside the keyboard accessory with the generic ActionConfirmationDialog
    from browser_ui.

    End-to-end integration testing for the deletion dialog flow inside the
    keyboard accessory will be added in a follow-up CL.

    Bug: 440257087
    Change-Id: I3844d662d5295eb670792384f4ea403a675661d3
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7666141
    Reviewed-by: Friedrich Hauser <friedrichh@chromium.org>
    Commit-Queue: Piotr Kotynia <piotrkotynia@google.com>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Auto-Submit: Piotr Kotynia <piotrkotynia@google.com>
    Cr-Commit-Position: refs/heads/main@{#1604763}

* [cr148][Android] Cleanup MultiWindowUtils#getInstanceCountWithFallback()

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

commit a8ce63dc2a3db3dbe93ef44747e21fae654f35ec
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Thu Mar 26 13:51:59 2026 -0700

    [RWM] Cleanup MultiWindowUtils#getInstanceCountWithFallback()

    Rename the method to getInstanceCount() and use this to replace current
    callsites of getIncognitoInstanceCount() so that the latter can be
    removed.

    Bug: 461553972
    Change-Id: I0eb9cc5c48394312310bce90c2a7e1970249d816
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7700123
    Reviewed-by: Sirisha Kavuluru <skavuluru@google.com>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Cr-Commit-Position: refs/heads/main@{#1605765}

* [cr148][Android] Removed tabContentManagerSupplier from NewTabPage.ctor

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/637ab3d33243fac8b3ee914db8357adb2fd79464

commit 637ab3d33243fac8b3ee914db8357adb2fd79464
Author: Xi Han <hanxi@google.com>
Date:   Wed Mar 25 09:04:27 2026 -0700

    [MagicStack] Clean up feature MagicStackAndroid.

    In this CL, we clean up all remaining code for the feature flag of
    magic stack. The feature has been launched long time ago.

    Bug: 41485537, 487641528, 493844946
    Change-Id: Ifc8d51793b942974ea0366656c0d4878b9578857
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7697213
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Reviewed-by: Michael Thiessen <mthiesse@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604869}

* [cr148][Android] Move MultiInstanceManager#openUrlInOtherWindow() to
                 MultiInstanceOrchestrator

Removed multiInstanceManager from:
- NewTabPage.ctor;
- LocationBarCoordinator.ctor;
- LocationBarMediator.ctor;
- ToolbarManager.ctor.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/8d0821cb4bcc840ed271bbc209298da535523a62

commit 8d0821cb4bcc840ed271bbc209298da535523a62
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Wed Mar 25 10:58:50 2026 -0700

    [MIR] Move MultiInstanceManager#openUrlInOtherWindow() to
    MultiInstanceOrchestrator

    This will make the implementation accessible from
    non-ChromeTabbedActivity contexts.

    Also remove now unused MultiInstanceManager dependency from impacted
    classes.

    Bug: 494034921
    Change-Id: I9eb1b871476a82a49a6e7f294e542d58a913c3fe
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7695235
    Reviewed-by: Sirisha Kavuluru <skavuluru@google.com>
    Reviewed-by: Ted Choc <tedchoc@chromium.org>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Cr-Commit-Position: refs/heads/main@{#1604957}

* [cr148][Android] Changes at ShareDelegateImpl.ctor

New args:
signinAndHistorySyncActivityLauncher;
activityResultTracker;
modalDialogManagerSupplier;
snackbarManager.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/0af385e0296806bb278d2c4b73e7e652d310def5

commit 0af385e0296806bb278d2c4b73e7e652d310def5
Author: quacksort <quacksort@google.com>
Date:   Tue Mar 24 06:59:26 2026 -0700

    [Signin][Android] Migrate send tab to self sign-in to activity-less flow

    This is part of the effort to reduce reliance on
    SigninAndHistorySyncActivity by sign-in entry points.
    go/activityless-signin

    The new flow uses BottomSheetSigninAndHistorySyncCoordinator to handle
    the sign-in process, avoiding the need to launch a separate activity.

    Bug: 478814334
    Change-Id: I0448875de416af5e3e48d1ac5f2eeb3d18e6efcc
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7647173
    Reviewed-by: Anton Goncharenko <agonch@google.com>
    Commit-Queue: Lucia Giorgi <quacksort@google.com>
    Cr-Commit-Position: refs/heads/main@{#1604087}

* [cr148][Android] Emulator android_33_google_atd_x64.textpb was removed

We used it to run the tests.
Switched to `android_33_google_apis_x64`

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

commit d791b7eb1211d53a879106167bc2da94f4fc00dc
Author: Haiyang Pan <hypan@google.com>
Date:   Tue Mar 24 09:39:37 2026 -0700

    Remove all the Android atd images and unused Android FYI builders.

    We use the same image for CI builders as well as for developers' local
    debugging to makes it easier to repro issues. But atd images are
    not good options for local debugging as it disables the rendering.
    So remove all atd images for now.

    The following Android fyi builders have been paused or duped with
    non-fyi builders so remove them as well:
    * android-10-x86-fyi-rel
    * android-12-x64-fyi-rel
    * android-12l-x64-fyi-dbg
    * android-13-x64-fyi-rel
    * android-14-arm64-fyi-rel
    * android-14-x64-fyi-rel
    * android-15-x64-fyi-rel

    Bug: 347759127, 40930660, 40263601
    Change-Id: I3a65e885ec8513e8b1747b98570ae57c4348302e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7694232
    Reviewed-by: Ben Pastene <bpastene@chromium.org>
    Commit-Queue: Haiyang Pan <hypan@google.com>
    Cr-Commit-Position: refs/heads/main@{#1604195}

* [cr148] Moved profile_manager.h to the new target

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

commit fa00b2f67d04301745eb9556038bc7290ce50079
Author: Vasilii Sukhanov <vasilii@chromium.org>
Date:   Fri Mar 27 08:21:30 2026 -0700

    Move profile_manager.h to the new target.

    Many targets depend on this include. The CL moves it from chrome/browser/BUILD.gn to a smaller target. As a side effect the following files can also be moved:
    - "profile_metrics.*"
    - "profile_shortcut_manager.*"
    - "profile_destroyer.*"
    - "profile_manager.cc"

    AX-Relnotes: n/a.

    Bug: 353332589
    Change-Id: Iecaeebf68b32d6af39306ff6a755a97881cfe3fa
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7055004
    Commit-Queue: Vasilii Sukhanov <vasilii@chromium.org>
    Reviewed-by: Alex Ilin <alexilin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606230}

* [cr148] Code Health: Use span in base::HexEncode

https://source.chromium.org/chromium/chromium/src/+/da12fb560afc4519dc2ae1f831714008fda90bac

commit da12fb560afc4519dc2ae1f831714008fda90bac
Author: raorui <ruirao565@gmail.com>
Date:   Fri Mar 27 03:27:18 2026 -0700

    Code Health: Use span in base::HexEncode

    - Migrate HexEncode callers from raw pointer+length to controlled views:
      - strings: std::string_view or base::as_byte_span
      - IOBuffer: io_buffer()->span()
      - struct bytes: reinterpret_cast + base::span<const uint8_t>
    - Clamp adapter MAC length before slicing to avoid OOB when encoding
    - Remove pointer-based HexEncode overload and associated TODO
    - Update tests and fuzzers to new interfaces

    Bug: 40284755
    Change-Id: I3352bb1a795b2f10cf5a8bedb432fe7d4bdf7290
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7607319
    Reviewed-by: Ken Buchanan <kenrb@chromium.org>
    Owners-Override: Colin Blundell <blundell@chromium.org>
    Commit-Queue: Colin Blundell <blundell@chromium.org>
    Reviewed-by: Colin Blundell <blundell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606068}

* [cr148] Use `AutocompleteInput::SanitizeString`  to sanitize omnibox match description/contents

Autocomplete match strings are now checked against the more stringent
sanitization that this function provides.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/701d98351457eb9db829972cacfdb8c876f09f3e

commit 701d98351457eb9db829972cacfdb8c876f09f3e
Author: Stepan Khapugin <stkhapugin@chromium.org>
Date:   Thu Mar 26 13:02:39 2026 -0700

    [Omnibox] Sanitize page title for verbatim matches.

    OmniboxClient->GetTitle() may be unsanitized (and it is on iOS).
    Sanitize it before using in the verbatim match.

    Bug: 375522403
    Change-Id: I554f06c39cd36fc3c91f66468842372862bbfe6e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6074727
    Auto-Submit: Stepan Khapugin <stkhapugin@chromium.org>
    Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
    Reviewed-by: Justin Donnelly <jdonnelly@chromium.org>
    Reviewed-by: manuk hovanesian <manukh@chromium.org>
    Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605726}

* [cr148] Fix `PartitionedHostStateMapTest.MultiplePartitions` test by scoping `AutoReset` per partition

This test broke in 148 due to changes in `AutoReset` move-assignment, which made
reusing a single `AutoReset` for multiple partition changes unreliable. This
change gives each partition its own scoped `AutoReset` object, ensuring RAII
restores the previous partition correctly.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/31aff9a0d6ab3e4e2e8bf928d9a9146def053018

commit 31aff9a0d6ab3e4e2e8bf928d9a9146def053018
Author: gate kibr <gkvjwa@gmail.com>
Date:   Fri Mar 27 03:04:37 2026 -0700

    Add move-assignment for AutoReset

    Existing code only cover move construction. Add coverage for move
    assignment to an AutoReset that already manages a variable, which should
    restore the old value before taking ownership of the new one.

    Change-Id: If652a12b967f7f93fb827916fbab0765f58d2dee
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7684905
    Reviewed-by: Jan Wilken Dörrie <jdoerrie@chromium.org>
    Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
    Reviewed-by: Lei Zhang <thestig@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606058}

* [cr148] Reanchor override since `ShouldDisplayVerticalTabs` was deleted

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6943dc09af6f5b5445c30d3088f3477289ef2617

commit 6943dc09af6f5b5445c30d3088f3477289ef2617
Author: Dana Fried <dfried@chromium.org>
Date:   Fri Mar 27 13:12:34 2026 -0700

    [Animation] Move [vertical] tab strip to new animation system

    This should maintain rough feature parity with the previous
    functionality, which is to say there are still serious issues.

    It does add internal curved corners when the tab strip bumps out on
    hover.

    Here are the follow-up items:
     - Curved corners on a custom corners background should receive a stroke
       if either adjacent edge has a stroke, not if both do.
     - Need to handle transition from expanded on hover (or expanding on
       hover) to uncollapse without snapping the VTS back to collapsed at
       the beginning.
     - Whatever other visual adjustments are needed, including a drop shadow.

    Bug: 493594309, 493593592
    Change-Id: I5ab4d9599af991f774001f32cd6a58f030e3895c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7681390
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Commit-Queue: Dana Fried <dfried@chromium.org>
    Auto-Submit: Dana Fried <dfried@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606426}

* [cr148][ios] Use span in `base::HexEncode`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/da12fb560afc4519dc2ae1f831714008fda90bac

commit da12fb560afc4519dc2ae1f831714008fda90bac
Author: raorui <ruirao565@gmail.com>
Date:   Fri Mar 27 03:27:18 2026 -0700

    Code Health: Use span in base::HexEncode

    - Migrate HexEncode callers from raw pointer+length to controlled views:
      - strings: std::string_view or base::as_byte_span
      - IOBuffer: io_buffer()->span()
      - struct bytes: reinterpret_cast + base::span<const uint8_t>
    - Clamp adapter MAC length before slicing to avoid OOB when encoding
    - Remove pointer-based HexEncode overload and associated TODO
    - Update tests and fuzzers to new interfaces

    Bug: 40284755
    Change-Id: I3352bb1a795b2f10cf5a8bedb432fe7d4bdf7290
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7607319
    Reviewed-by: Ken Buchanan <kenrb@chromium.org>
    Owners-Override: Colin Blundell <blundell@chromium.org>
    Commit-Queue: Colin Blundell <blundell@chromium.org>
    Reviewed-by: Colin Blundell <blundell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606068}

* [cr148][ios] `SendTabToSelfModel::AddEntry` takes a `NavigationHistory` param now

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/19645de672e801f850aec8480cc120467e9ab758

commit 19645de672e801f850aec8480cc120467e9ab758
Author: Michael Tatarski <mtatarski@google.com>
Date:   Sat Mar 28 04:03:32 2026 -0700

    [STTS] Add navigation history support to STTS model

    To support sending a tab's full back/forward history (similar to "Tabs
    from other devices"), this CL updates the Send-Tab-To-Self core model,
    entry definition, and sync bridge.

    A dedicated `NavigationHistory` struct has been introduced to cleanly
    encapsulate a vector of `sessions::SerializedNavigationEntry` objects
    along with the current navigation index. The `SendTabToSelfEntry` class
    is updated to hold this struct and serialize/deserialize it to and from
    `sync_pb::SendTabToSelfSpecifics`.

    Bug: 491743359
    Change-Id: Ia87854b09b09bbc2aa01726ca6fba12a169beb06
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7694034
    Reviewed-by: Marc Treib <treib@chromium.org>
    Commit-Queue: Michael Tatarski <mtatarski@google.com>
    Cr-Commit-Position: refs/heads/main@{#1606668}

* [cr148][Android] SnackbarView/SnackbarManager ctor changed

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/36279bf7b4c5515fa7a64d8f462faed9f5da4e7b

commit 36279bf7b4c5515fa7a64d8f462faed9f5da4e7b
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Fri Mar 27 14:07:42 2026 -0700

    [Snackbar] Drive snackbar bottom margin externally

    This should have no behavioral changes!

    Goals
    - Decoupling of E2E from Snackbar.
    - Allow bottom margin to be driven by the owning component to take into
      account other UI elements without coupling to Snackbar code e.g.
      (bottomsheets, etc.)
    - In future allow pushParentViewToOverrideStack to customize the bottom
      margin appropriately for a different container context.

    Bug: 491514883
    Change-Id: I8c71f3122ad809e6459892a4b216ce4f8a0a8a19
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7689191
    Reviewed-by: Charles Hager <clhager@google.com>
    Reviewed-by: Aishwarya Rajesh <aishwaryarj@google.com>
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606473}

* [cr148][Android] ButtonData classes moved to a dedicated button subpackage

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/04f42625a4b2b0ee463088ef65d72022191bc7bb

commit 04f42625a4b2b0ee463088ef65d72022191bc7bb
Author: Dan Polanco <polardz@google.com>
Date:   Fri Mar 27 11:49:00 2026 -0700

    [Actions] Move ButtonData classes to a dedicated button subpackage

    This change moves ActionButtonData, DelegateButtonData,
    DisplayButtonData, DrawableButtonData, TabSwitcherDrawableButtonData,
    FullButtonData and ResourceButtonData into a new ui/actions/button
    subpackage.

    Bypass-Check-License: Moving files.
    Bug: 483096892
    Change-Id: Ibdb1c3898fc022c5eef29177ba71656480e9914d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7706022
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Dan Polanco <polardz@google.com>
    Auto-Submit: Dan Polanco <polardz@google.com>
    Cr-Commit-Position: refs/heads/main@{#1606387}

* [cr148][Android] Conflict on BraveTabCollectionTabModelImplBase.isTabModelRestored()

Upstream moved isTabModelRestored() into the TabGroupModelFilter
interface, which TabModel now extends, making the previously
private method in BraveTabCollectionTabModelImplBase conflict
with the now-public interface method.

Error message:
../../brave/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCollectionTabModelImplBase.java:61: error: isTabModelRestored() in BraveTabCollectionTabModelImplBase cannot implement isTabModelRestored() in TabGroupModelFilter
    private boolean isTabModelRestored() {
                    ^
  attempting to assign weaker access privileges; was public

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/401697a07af594e4420ef1f4998d13f43533874f

commit 401697a07af594e4420ef1f4998d13f43533874f
Author: Jingping Sun <jings@microsoft.com>
Date:   Fri Mar 27 10:23:32 2026 -0700

    [TabModel] Make TabModel extend TabGroupModelFilter

    As part of combining these interfaces this CL is the first step.

    * IncognitoTabGroupModelFilterImpl is inlined onto
      IncognitoTabModelImpl.
    * StubTabGroupModelFilterImpl is no longer required.
    * EmptyTabModel now has stub methods for TabGroupModelFilter.

    BYPASS_LARGE_CHANGE_WARNING: all stub methods

    Bug: 463685717, 476144237, 493519189
    Change-Id: Ia27c3a355f92da60cdb3c1e8ac9fabe892b49bc0
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7684470
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Commit-Queue: Jingping Sun <jings@microsoft.com>
    Cr-Commit-Position: refs/heads/main@{#1606333}

* [cr148][Android] MultiInstanceOrchestratorImpl.moveTabsToWindowByIdChecked signature changed

New arg bringToFront

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/15b60a7f51080d75b18d37f6bbf83a7a39151c15

commit 15b60a7f51080d75b18d37f6bbf83a7a39151c15
Author: Lijin Shen <lazzzis@google.com>
Date:   Fri Mar 27 14:06:30 2026 -0700

    tabs.move on Android: allow moving tabs in the background

    Fixes a behavior discrepancy between Android and Desktop when moving
    tabs between windows via the extension API (e.g., chrome.tabs.move).
    Currently on Android, the destination window is always brought to the
    front

    Added a bringToFront boolean parameter to conditionally controls the
    call to ApiCompatibilityUtils.moveTaskToFront(). This defaults to true
    such that this CL won't bring any behavior change. This sets false in
    TabModelSelectorImpl.java such that tab.move won't activate the
    destination window.

    Bug: 495516043
    Change-Id: I60e7b42794c240023669afcf3cd15f8031c16ded
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7685707
    Reviewed-by: Linyu He <linyuh@google.com>
    Reviewed-by: Aishwarya Rajesh <aishwaryarj@google.com>
    Commit-Queue: Lijin Shen <lazzzis@google.com>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606471}

* [cr148][Android] new_tab_page_layout.xml updated

Chromium changes:
https://source.chromium.org/chromium/chromium/src/+/6edb0dee6f14aeeafbd19b9140c94f6be4a83fd6

commit 6edb0dee6f14aeeafbd19b9140c94f6be4a83fd6
Author: Xi Han <hanxi@google.com>
Date:   Fri Mar 27 11:35:29 2026 -0700

    [Composeplate] Clean up the composeplate v1 layout [1/2]

    In this CL, we remove the V1 layout composeplate_view_layout.xml, and
    clean up ViewBinder and Properties.

    Bug: 421944848, 487641528
    Change-Id: Ia9d21a2069ce5e7ff9d7c3d622d8893973950774
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7708412
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606375}

https://source.chromium.org/chromium/chromium/src/+/8ddf6bb4ecfeed84c878714b5990b8d02ef21193

commit 8ddf6bb4ecfeed84c878714b5990b8d02ef21193
Author: Xi Han <hanxi@google.com>
Date:   Fri Mar 27 11:35:44 2026 -0700

    [Composeplate] Clean up the composeplate v1 layout [2/2]

    Rename composeplate_view_layout_v2.xml to composeplate_view_layout.xml.

    Bug: 421944848, 487641528
    Bypass-Check-License: the layout is renamed from composeplate_view_layout_v2.xml.
    Change-Id: I09c6ebd91a992d2d7c343074ef64e4afe1626ae9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7708273
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1606376}

* [cr148][cherry-pick] `kPasswordDateLastFilled` temp disabling landed

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ac7e26b7bfb7579956b52b25c0af08383559dd35

commit ac7e26b7bfb7579956b52b25c0af08383559dd35
Author: Martin Kreichgauer <martinkr@google.com>
Date:   Tue Mar 17 10:50:02 2026 -0700

    Temporarily disable kPasswordDateLastFilled as mitigation

    Bug: 485895402
    Change-Id: I03aca033dd6978731035e04be54d6d23ab0c98d4
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7674577
    Auto-Submit: Martin Kreichgauer <martinkr@google.com>
    Reviewed-by: Mohamed Amir Yosef <mamir@chromium.org>
    Commit-Queue: Martin Kreichgauer <martinkr@google.com>
    Cr-Commit-Position: refs/heads/main@{#1600656}

* [cherry-pick][cr148] OS simulator wipe and boot reliability cherry picks landed

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/39a1c1938c9f9c3bcf36f015172600018169b6db
https://chromium.googlesource.com/chromium/src/+/b4a2fed9285188d8a5957d87f72db7162ff90026

commit 39a1c1938c9f9c3bcf36f015172600018169b6db
Author: Yue She <yueshe@google.com>
Date:   Wed Mar 18 11:57:28 2026 -0700

    Improve iOS simulator wipe and boot reliability in test runners

    - Reorders simulator teardown steps: `kill_simulators` is now invoked
    after wiping/erasing data instead of before. This ensures that any stray processes or simulators left in a bad state from the wipe/erase
    procedures are properly cleaned up.
    - Adds a retry mechanism for simulator pre-booting.

    Bug: 441038354
    Change-Id: I8f94649d195a3804d9392dafdcde6dbd2c88ec88
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7676077
    Reviewed-by: Will Yeager <wyeager@google.com>
    Commit-Queue: Yue She <yueshe@google.com>
    Cr-Commit-Position: refs/heads/main@{#1601444}

commit b4a2fed9285188d8a5957d87f72db7162ff90026
Author: Yue She <yueshe@google.com>
Date:   Mon Mar 23 10:21:18 2026 -0700

    [iOS] Cache dyld before pre-booting simulators

    This seems to help with simulator booting failures. The workaround is also suggested in https://developer.apple.com/documentation/xcode-release-notes/xcode-26_1-release-notes

    Bug: 441038354
    Change-Id: I5bc754bddbd98a580ed16b1245cf43a267807908
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7691682
    Commit-Queue: Yue She <yueshe@google.com>
    Reviewed-by: Will Yeager <wyeager@google.com>
    Cr-Commit-Position: refs/heads/main@{#1603573}

* [cr148] `kReportPakFileIntegrity` deleted

This feature flag is deleted and with it the code it was guarding.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a7f5d81c8c7ed8f53c46e8394c983c949c2aeaff

commit a7f5d81c8c7ed8f53c46e8394c983c949c2aeaff
Author: Daniel Rubery <drubery@chromium.org>
Date:   Mon Mar 30 12:13:56 2026 -0700

    Deprecate SafeBrowsing.PakIntegrity.*

    Safe Browsing isn't monitoring this anymore, so remove the code.

    OBSOLETE_HISTOGRAMS=Removed 2026-03 due to lack of use
    Fixed: 495423545

    Change-Id: I1c0a2ad7f137545cf4e9b0be48d1e60a9a98aef2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7694830
    Reviewed-by: Varun Khaneja <vakh@chromium.org>
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Commit-Queue: Daniel Rubery <drubery@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607289}

* [cr148] Fixing `ShouldTrackBrowser` call in `TabSearchPageHandler`

There has been a recent refactor that requires passing `profile_` into
this function.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7c978026959ee9a0d177f01adcd306da3687cbf1

commit 7c978026959ee9a0d177f01adcd306da3687cbf1
Author: David Yeung <dayeung@chromium.org>
Date:   Mon Mar 30 14:57:04 2026 -0700

    [TabSearch] Refactor event listening to use TabStrip API

    CL migrates the event observation in TabSearchPageHandler to use the
    TabStripAPI instead of TabStripModel's observer. While this CL has
    changed how we're receiving the events, the handling of those events are
    the same.

    The previous TabSearchPageHandler only cares about 3 events:
    - when a tab is removed
    - when a split tab is removed
    - when the tab data changes

    The main focus of this CL is transitioning those events and making sure
    they're received.

    Key changes:
    - Replace BrowserTabStripTracker with TabStripServiceAggergator
    - Replace OnTabStripModelChanged and OnTabChangedAt with OnTabEvents
    - Created helper methods to split OnTabEvents into: OnNodesRemoved, OnTabsRemoved, OnTabDataChanged, OnSplitTabRemoved

    Bug: 477686464
    Change-Id: Ida32de4e3e25bb7209c823c0904df7b431491a97
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7697541
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Commit-Queue: David Yeung <dayeung@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607402}

* [cr148] `ProfileResetterMockObject` modularised

This function is only used by our browser tests, and this change adds
the new target as one of the deps.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/b319111eaa8bee49a347e981c6a83afe9b663dc7

commit b319111eaa8bee49a347e981c6a83afe9b663dc7
Author: Orko Garai <orko@igalia.com>
Date:   Mon Mar 30 12:36:51 2026 -0700

    Finish modularizing c/b/profile_resetter

    Move the remaining profile_resetter sources from c/b to
    c/b/profile_resetter target.

    Bug: 353332589
    Change-Id: I419b9d63e331df48415e18ee2479563dea09069d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7703695
    Commit-Queue: Orko Garai <orko@igalia.com>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607306}

* [cr148][Android] Fixed NPE at JNI_HomeModulesRankingHelper_*

The commit mentioned below made showMagicStack() unconditional,
exposing the latent null-check bug in home_modules_ranking_helper.cc.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/637ab3d33243fac8b3ee914db8357adb2fd79464

commit 637ab3d33243fac8b3ee914db8357adb2fd79464
Author: Xi Han <hanxi@google.com>
Date:   Wed Mar 25 09:04:27 2026 -0700

    [MagicStack] Clean up feature MagicStackAndroid.

    In this CL, we clean up all remaining code for the feature flag of
    magic stack. The feature has been launched long time ago.

    Bug: 41485537, 487641528, 493844946
    Change-Id: Ifc8d51793b942974ea0366656c0d4878b9578857
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7697213
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Reviewed-by: Michael Thiessen <mthiesse@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604869}

* [cr148] Password store factory headers moved

These are now under chrome/browser/password_manager/factories/.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/36cbca739593ae8b8cb3c01ac064b875f310bc15

commit 36cbca739593ae8b8cb3c01ac064b875f310bc15
Author: Vasilii Sukhanov <vasilii@chromium.org>
Date:   Tue Mar 31 04:21:53 2026 -0700

    Move password store factories from //chrome/browser to the smaller
    target in chrome/browser/password_manager/factories/BUILD.gn.

    Bug: 353332589
    Change-Id: I3b19769f13af5db892c4dda03ab3dca40ef2dbd5
    Bypass-Check-License: Moving files, no license changes.
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7702977
    Reviewed-by: Friedrich Hauser <friedrichh@chromium.org>
    Commit-Queue: Vasilii Sukhanov <vasilii@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607775}

* [cr148] `TabStrip::UpdateHoverCard` override fixed

The signature for this function has changed, but this is for arguments
that just get passed along.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e8ce621318d56bf293ef01a6d045e097d2cc6440

commit e8ce621318d56bf293ef01a6d045e097d2cc6440
Author: Dominic Austria <dominicaustria@google.com>
Date:   Tue Mar 31 00:35:28 2026 -0700

    Add Hover Cards to Tab Group Headers in Horizontal Tab Strip

    We show the hover card for tab group headers for the horizontal tab
    strip, on mouse hover or focus. Like in the vertical tab case, we
    generate the card data right before showing the hover card because the
    tab group does not get updated when one of its tabs are deleted or
    navigated to a new page, see bug 497896801

    Bug: 493242596
    Change-Id: I3244fcb110fdb67f7c027297baff2f94ad5d45be
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7701562
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Commit-Queue: Dominic Austria <dominicaustria@google.com>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607691}

* [cr148] `String::FromUTF8` deleted

This has been replaced with `String::FromUtf8`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/b4e81f96c4c5e4117bfab65a7771d9673a49512b

commit b4e81f96c4c5e4117bfab65a7771d9673a49512b
Author: Kent Tamura <tkent@chromium.org>
Date:   Mon Mar 30 21:49:18 2026 -0700

    WTF: Remove deprecated String::FromUTF8()

    This CL removes the deprecated String::FromUTF8() methods and updates
    all call sites to use String::FromUtf8() instead. The FromUTF8 methods
    were deprecated as they simply forwarded to FromUtf8 and are no longer
    needed.

    Bug: 492927412
    Change-Id: I0055b96becdb1a48b73e982ea959dcab67219384
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7707740
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Kent Tamura <tkent@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607616}

* [cr148] `WebString::FromASCII` renamed

The naming now follows the guidelines as `WebString::FromAscii`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e296ed299c34488ce76fbc1cf9a93d1c7bc3f7e3

commit e296ed299c34488ce76fbc1cf9a93d1c7bc3f7e3
Author: Kent Tamura <tkent@chromium.org>
Date:   Tue Mar 31 01:47:41 2026 -0700

    Rename blink::WebString::FromASCII to FromAscii

    To follow a naming rule of Google C++ style guide.
    This CL has no behavior changes.

    Bug: 492927412
    Change-Id: I572d7e4e3382ec0f96f232f5a0e6b5fcb31cdf51
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7714579
    Reviewed-by: Fredrik Söderquist <fs@opera.com>
    Owners-Override: Kent Tamura <tkent@chromium.org>
    Auto-Submit: Kent Tamura <tkent@chromium.org>
    Commit-Queue: Fredrik Söderquist <fs@opera.com>
    Cr-Commit-Position: refs/heads/main@{#1607722}

* [cr148] tab_group_editor_bubble_view.cc moved into groups subfolder

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/71652909a3655cf176c20bb779af7f16a68c8ff2

commit 71652909a3655cf176c20bb779af7f16a68c8ff2
Author: Eshwar Stalin <estalin@chromium.org>
Date:   Mon Mar 30 16:41:15 2026 -0700

    Moving shared groups views into the common folder

    Moving group views shared between horizontal and vertical tab strip is
    now moved into the common groups folder. The follow-up is to have
    separate BUILD.gn files for each folder after we have things in the
    final structure.

    Bypass-Check-License: Moving existing files
    Change-Id: I830aca510c381b9d615a080c0bdd9a6f7feebf7b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7708747
    Commit-Queue: Eshwar Stalin <estalin@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607444}

* [cr148] `tpcd_heuristics` deleted

Removing our related overrides for `tcpd_heuristics` which was completely
deleted.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/037fbcccbcf615935481c45b6359b79c90543082

commit 037fbcccbcf615935481c45b6359b79c90543082
Author: Fiona Macintosh <fmacintosh@google.com>
Date:   Mon Mar 30 09:43:22 2026 -0700

    Delete content/browser/tpcd_heuristics

    Cleaning out obsolete 3pcd logic

    Change-Id: I151fcf473e15ea65561b9e25289d749e7a145365
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7697345
    Reviewed-by: Joshua Hood <jdh@chromium.org>
    Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
    Commit-Queue: Fiona Macintosh <fmacintosh@google.com>
    Commit-Queue: Alexei Svitkine <asvitkine@chromium.org>
    Reviewed-by: Avi Drissman <avi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607164}

* [cr148] Add new `IDC_SHOW_READING_MODE_KEYBOARD` command to Commander unit test metadata

Updated Commander unit test metadata to support the new command.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bd8ce1fbdc3492bbdce7a9c4d8a4b022fb177a7d

commit bd8ce1fbdc3492bbdce7a9c4d8a4b022fb177a7d
Author: Martín Gómez <martinglopez@google.com>
Date:   Mon Mar 30 12:58:02 2026 -0700

    [Reading Mode] Add keyboard shortcut to open and close Reading Mode

    @robliao and @groby approved the the keyboard shortcut combination.
    The shortcut for each platform is the following:
    - Option-Command-R for Mac OS
    - Alt + Shift + R for ChromeOS, Linux and Windows

    The CL also includes the following adjustments for Reading Mode to
    support the new keyboard shortcut:

    - Add kKeyboardShortcut to the ReadAnythingOpenTrigger enum.
    - Make `ReadAnythingEntryPointController::ToggleUI` public so the
    BrowserCommandController can use the method to open/close reading mode.

    NO_IFTTT=Command is not gated on fenced frame network

    Bug: 40909577
    Change-Id: I3aea6f491b92cc882d81f9edf167ba33d7ae664e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7684297
    Reviewed-by: Lauren Winston <lwinston@google.com>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Commit-Queue: Martín Gómez <martinglopez@google.com>
    Cr-Commit-Position: refs/heads/main@{#1607320}

* [cr148] Patching for `developer_private.idl` moved

This change moves the patching to its new location. It also introduces a
new patching for the webidl representation that has been introduced
upstream, to match the idl version.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/d6fb2ac71ba993553eecb43bb5d1161ff1364fcf

commit d6fb2ac71ba993553eecb43bb5d1161ff1364fcf
Author: Tim Judkins <tjudkins@chromium.org>
Date:   Tue Mar 31 18:19:48 2026 -0700

    [Extensions] Convert developerPrivate to WebIDL

    This conversion was largely done using a detailed description of the
    conversion process passed to Gemini CLI. To double check this work, the
    file has also been copied into the converted schemas test to verify no
    functional difference in output.

    Also updated a few comments to use the new filename.

    Fixed: 493990846
    Change-Id: I50da75a21869d45a988678dd589df7f4a6c3f778
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7694979
    Commit-Queue: Tim <tjudkins@chromium.org>
    Reviewed-by: Emilia Paz <emiliapaz@chromium.org>
    Reviewed-by: Kelvin Jiang <kelvinjiang@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1608234}

* [cr148] `PasswordManagerSettingsServiceFactory` under `factories`

This affects how targets are added now, and a shadow file had to be
corrected.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bd7255bd8bf88581d34c38be1b16b05f7d5703b6

commit bd7255bd8bf88581d34c38be1b16b05f7d5703b6
Author: Vasilii Sukhanov <vasilii@chromium.org>
Date:   Tue Mar 31 05:13:51 2026 -0700

    Refactor: Move PasswordManagerSettingsServiceFactory to factories/

    Moves password_manager_settings_service_factory.{h,cc} from
    //chrome/browser/password_manager/ to
    //chrome/browser/password_manager/factories/.

    Eliminates the `password_factory_headers` source_set in
    factories/BUILD.gn and wires everything cleanly to the unified
    //chrome/browser/password_manager/factories target. All internal include
    directives and BUILD.gn usages across webauthn, webid, autofill,
    ui/passwords, and actor_login were adjusted properly.

    Bug: 353332589
    Change-Id: I318230d1df39b0b849a026977f00f2d3d0047831
    Bypass-Check-License: moving the files
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7710837
    Reviewed-by: Friedrich Hauser <friedrichh@chromium.org>
    Commit-Queue: Vasilii Sukhanov <vasilii@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607791}

* [cr148] `ContentSettingImageModel::ImageType` now mojom generated

This changes how the entries are worded.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7bc22e082c77b7de13cb93cdedf0f770307f4941

commit 7bc22e082c77b7de13cb93cdedf0f770307f4941
Author: Caleb Raitto <caraitto@chromium.org>
Date:   Tue Mar 31 16:07:30 2026 -0700

    Migrate ContentSettingImageModel::ImageType to Mojo

    To migrate ContentSettingImageView to WebUI, the type of the icon needs
    to be passed to the TypeScript code over Mojo.

    Currently, we're using the existing ContentSettingsType enum [0][1][2],
    which is already in Mojo. However, one issue with this is that some
    icons, specifically popups and framebusting, share the same underlying
    ContentSettingsType (specifically POPUPS).

    To address this, this CL moves the ImageType to Mojo so that it can be
    used in a subsequent CL instead of ContentSettingType.

    Put the new enum together with other new WebUI types, in
    toolbar_ui_api_data_model.mojom. Also, adopt style guide naming, kValue
    instead of VALUE, and use the implicitly-generated kMaxValue.

    [0]
    https://source.chromium.org/chromium/chromium/src/+/main:components/content_settings/core/common/content_settings_types.mojom;l=18;drc=9ca1f26b86f52739c8701e867f7f42cd01b59a0b

    [1]
    https://source.chromium.org/chromium/chromium/src/+/main:components/browser_apis/ui_controllers/toolbar/toolbar_ui_api_data_model.mojom;l=78;drc=bc6497c76dbde173025ed3cf3f9215c0949cd045

    [2]
    https://source.chromium.org/chromium/chromium/src/+/main:components/browser_apis/ui_controllers/toolbar/toolbar_ui_api.mojom;l=49;drc=c227e4729788b427eb646d080a55bce66968e5c9

    Bug: 489109708
    Change-Id: I632ae68190af90fb6eb30a73216b9caddaf58ff4
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7713352
    Reviewed-by: Joe Mason <joenotcharles@google.com>
    Commit-Queue: Caleb Raitto <caraitto@chromium.org>
    Reviewed-by: Foromo Daniel Soromou <koretadaniel@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1608161}

* [cr148] Preemtping unwanted replacement for `MultiContentsView`

Due to recent header additions to this class, a build error started
occurring due to an unwanted substitution.

```
../../content/public/browser/web_contents_observer.h:922:16: error: duplicate 'virtual' declaration specifier [-Werror,-Wduplicate-decl-specifier]
  922 |   virtual void OnWebContentsFocused(RenderWidgetHost* render_widget_host) {}
      |                ^
../../brave/chromium_src/chrome/browser/ui/views/frame/multi_contents_view.h:15:30: note: expanded from macro 'OnWebContentsFocused'
   15 | #define OnWebContentsFocused virtual OnWebContentsFocused
      |                              ^
1 error generated.
```

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/9b1a481b8d0dab06a5c20bde25faa00cc6417c8c

commit 9b1a481b8d0dab06a5c20bde25faa00cc6417c8c
Author: Eshwar Stalin <estalin@chromium.org>
Date:   Wed Apr 1 15:50:32 2026 -0700

    [SxS] Minor cleanup of SplitTabHighlightController

    Having the delegate interface directly implemented by the view and
    passing the delegate directly into the controller class. This is more
    modular and more aligned to the design principles.

    Change-Id: I83797b7d82939ac69456852c3ca0e862132257b9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7720599
    Reviewed-by: Steven Luong <stluong@chromium.org>
    Commit-Queue: Eshwar Stalin <estalin@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1608832}

* [cr148] Adjusting `LowPriorityUserTypes()` override to new location

This function's implementation has been moved from the header and into
the translation unit. This change moves the override to match that too.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/8ba91b3cd483e2a39ddc37d754e30877855bfeaf

commit 8ba91b3cd483e2a39ddc37d754e30877855bfeaf
Author: Mikel Astiz <mastiz@chromium.org>
Date:   Tue Mar 31 12:54:12 2026 -0700

    [sync] Centralize more datatype traits in a table

    Refactoring without noticeable behavioral changes: the general idea is
    that datatype-specific traits (most notably including product decisions)
    should be centralized in a configuration-like table, instead of having
    this information distributed throughout the codebase.

    This is achieved by introducing a struct, including members that
    leverage newly-introduced enums to make the information as readable as
    possible.

    Bug: None
    Change-Id: I04a9352e7ab6ddf62ad150fef7cad2a7bd96d156
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7707933
    Reviewed-by: Rohit Rao <rohitrao@chromium.org>
    Commit-Queue: Mikel Astiz <mastiz@chromium.org>
    Reviewed-by: Maksim Moskvitin <mmoskvitin@google.com>
    Cr-Commit-Position: refs/heads/main@{#1608038}

* [cr148] `perfetto` categories larger than `constexpr` depth limits

It has now become an issue for Brave that
`PERFETTO_DEFINE_TEST_CATEGORY_PREFIXES` has grown larger enough to cause the
whole macro machinery around it to fall apart due to `constexpr` depth
evaluation limits. This change bumps constexpr-depth to 1024.

A bug has been logged with Chromium to have this tracked in upstream:
crbug.com/498698527

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7a9d0ab407d1968885a9185589bbd369401476f8

commit 7a9d0ab407d1968885a9185589bbd369401476f8
Author: Aldo Culquicondor <acondor@chromium.org>
Date:   Tue Mar 31 17:54:45 2026 -0700

    Glic: Add metrics and traces for webui initialization

    Track the time time from the web contents creation until the navigation
    commits and from then until the page load completes.

    Also added a dedicated glic category.

    Bug: 495451913
    Change-Id: I3124c26c9c630d19f381826edec192887fea43bb
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7711298
    Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
    Auto-Submit: Aldo Culquicondor <acondor@chromium.org>
    Commit-Queue: Aldo Culquicondor <acondor@chromium.org>
    Reviewed-by: Dan Harrington <harringtond@chromium.org>
    Reviewed-by: Roger McFarlane <rogerm@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1608223}

* [cr148] Remove support for legacy EnumTraits signatures

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a1c3e6338a3e6742b0195c672f61ac8019ab66e4

commit a1c3e6338a3e6742b0195c672f61ac8019ab66e4
Author: Jan Wilken Dörrie <jdoerrie@chromium.org>
Date:   Tue Mar 31 09:48:53 2026 -0700

    [mojo] Remove support for legacy EnumTraits signatures

    This change removes the remaining support for the legacy Mojo EnumTraits
    FromMojom signature. Previously, these traits used a non-idiomatic
    C-style pattern with a boolean return value and an out-parameter for the
    converted value.

    To modernize the Mojo C++ bindings, all EnumTraits specializations have
    been migrated to return the converted type directly for infallible
    conversions, or wrapped in a std::optional for fallible ones. This
    update finalizes the transition by:

    - Enforcing the new return-by-value or return-by-optional signature in
      the Mojo C++ template generator.
    - Removing the legacy template branches that supported out-parameters.
    - Deleting obsolete overloads of internal helpers ConvertEnumValue and
      DeserializeEnum.
    - Migrating the final set of trait specializations across the codebase,
      including those in cc/, skia/, and ui/.

    Fixed: 483092898
    Change-Id: I7a5edc0a22157d7670e8c8f73e7db8c56a6a6964
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7712053
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Owners-Override: Daniel Cheng <dcheng@chromium.org>
    Auto-Submit: Jan Wilken Dörrie <jdoerrie@chromium.org>
    Commit-Queue: Daniel Cheng <dcheng@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607926}

* [cr148] Modify settings search_page to adapt to new searchSettingsUpdate template

The underlying HTML template changed, so this is just adapting to the new
location of `enginesSubpageTrigger`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e2f64330135a11f61fb46f3e7972fc9a8d83f4fe

commit e2f64330135a11f61fb46f3e7972fc9a8d83f4fe
Author: Amelie Schneider <amelies@google.com>
Date:   Thu Mar 26 08:44:17 2026 -0700

    [Search] Hide chrome://settings/searchEngines with flag enabled

    With the flag `SearchSettingsUpdate`, the engines choices are moved
    to chrome://settings/search. Therefore, the search engines page
    should be deprecated.

    Bug: 490316576
    Change-Id: Ibe3ade1a5a25cbb2c24da37117988b290d740896
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7679398
    Commit-Queue: Amelie Schneider <amelies@google.com>
    Reviewed-by: David Roger <droger@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605544}

* [cr148][Android] MultiWindowUtils changes

- isOpenInOtherWindowSupported removed;
- isLinkNavigationToNewWindowSupported added;
- isLinkNavigationToIncognitoWindowSupported added.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/8ebbccb8137c4b44999c92edfb971e821d9365ba

commit 8ebbccb8137c4b44999c92edfb971e821d9365ba
Author: Aishwarya Rajesh <aishwaryarj@google.com>
Date:   Mon Mar 30 11:44:27 2026 -0700

    Update conditions for "Move to other window" / "Move to new window"
    visibility on context menus for link navigation

    The CL creates / updates utility methods in MultiWindowUtils to
    determine when these options are shown on a link context menu per latest
    recommendations:
    - Open in new window
    - Open in Incognito window
    - Open in other window

    The updates in this CL ensure that either "Open in new window" or "Open
    in other window" (not both) are visible on the menu. Both options will
    invoke the same codepath currently, this will be updated in fast-follow
    CLs.

    Bug: 475571336
    Change-Id: I33a597703e634a7d5cd2d6b66c4c2ca9254374ef
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7680970
    Reviewed-by: Jinsuk Kim <jinsukkim@chromium.org>
    Reviewed-by: Sirisha Kavuluru <skavuluru@google.com>
    Commit-Queue: Aishwarya Rajesh <aishwaryarj@google.com>
    Reviewed-by: Shu Yang <shuyng@google.com>
    Cr-Commit-Position: refs/heads/main@{#1607263}

* [cr148][Android] DropdownCommonProperties removed

SuggestionCommonProperties is used instead

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

commit fdf1ac3a145796f9cb1e3c8a72a639506d18a6e0
Author: Charles Cai <charlesyc@google.com>
Date:   Mon Mar 30 17:42:35 2026 -0700

    Refactor Omnibox suggestion properties into a single common class

    This CL merges `DropdownCommonProperties` into
    `SuggestionCommonProperties`. This unifies the property definitions for
    Omnibox suggestions into a single location to simplify property model
    management. This is a pure data-layer refactoring that prepares the
    architecture for migrating UI elements like headers and group separators
    to ItemDecorations.

    Bug: 491220357
    Change-Id: Ie531dc38e9e53b5829060ae1a7f49c014061f409
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7708772
    Commit-Queue: Charles Cai <charlesyc@google.com>
    Reviewed-by: Tomasz Wiszkowski <ender@google.com>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607509}

* [cr148][Android] Fix missing androidx_activity_activity_java dep in androidx_fragment_fragment

Upstream androidx roll removed `androidx_activity_activity_java` from
`androidx_fragment_fragment` deps. This broke compilation because
`Fragment.registerForActivityResult` references
`androidx.activity.result.contract.ActivityResultContract` from that lib:

  obj/.../androidx_fragment_fragment_java.ijar.jar:
  error: Cannot attach type annotations to Fragment.registerForActivityResult:
    class file for androidx.activity.result.contract.ActivityResultContract not found

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

commit ada9ea879eecaba01f2f1ee9c3e463d3ad743ae7
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date:   Tue Mar 31 01:34:26 2026 -0700

    Roll androidx from gC_MaDqHwyg6cLUuq... to WDVd3JIX6yvavWuXd...

    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/androidx-chromium
    Please CC clank-build@google.com,clank-library-failures@google.com,wnwen@google.com on the revert to ensure that a human
    is aware of the problem.

    To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry

    To report a problem with the AutoRoller itself, please file a bug:
    https://issues.skia.org/issues/new?component=1389291&template=1850622

    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

    Cq-Include-Trybots: luci.chrome.try:android-internal-binary-size;luci.chrome.try:android-internal-rel;luci.chrome.try:test-emulator
    Tbr: clank-library-failures@google.com
    Change-Id: I4e9302dd90c5b5eaabf19cb7a31f19120354b74f
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7713047
    Bot-Commit: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
    Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
    Cr-Commit-Position: refs/heads/main@{#1607712}

* [cr148][Android] Chromium refactored NewTabPageCoordinator

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

1. NewTabPage.initializeMainView renamed to
   initializeFeedSurfaceProvider
2. Some code from NewTabPage.initializeMainView
   was moved to c-tor

commit f85df3955cb3bcc7d90cf0af71458e5cad9d45cc
Author: Xi Han <hanxi@google.com>
Date:   Mon Mar 30 09:06:59 2026 -0700

    [NtpRefactor] Polish NewTabPageCoordinator.

    1. Move several parameters passed in NewTabPageCoordinator#initialize()
       to the constructor. This allows to set multiple member variables as
       final variables.
    2. Add missing @Nullable to member variables and add null check in
       code for them. This includes: mSearchBoxCoorinator, mUiConfig etc.
    3. Re-arange the sequencings in #destroy(): the last created object is
       destroyed first.

    Bug: 487641528
    Change-Id: I935e3aee111a6fd816a228f004f7b1d9663d03d6
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7709015
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1607137}

* [cr148][Android] Removed preferences we don't need

BraveMainSettingsFragmentTest#testPreferenceCount caught
2 more prefs we don't want:
- settings_promo_card
- manage_sync

The change below is probably responsible for exposing them

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/1ea4b48ea68982cd81a4a3a6f8bad6e8839789bd

commit 1ea4b48ea68982cd81a4a3a6f8bad6e8839789bd
Author: Josef Raska <josefraska@google.com>
Date:   Wed Mar 18 07:41:06 2026 -0700

    [HoT][Autofill] - Launch HoT screen in Settings

    - Launching an empty screen for now.
    - Video from the test: https://screencast.googleplex.com/cast/NDU3ODE5MTk5MjY4NDU0NHxhNGViM2JiYy1kOQ
    - More tests and user action reporting comes in crrev.com/c/7653458

    Bug: 482994356
    Change-Id: Ib3ae426846faaff85e2fd69da6d04078d7a54b6f
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7653140
    Reviewed-by: Julia Sobiech <jsobiech@google.com>
    Reviewed-by: Jinsuk Kim <jinsukkim@chromium.org>
    Reviewed-by: Abe Boujane <boujane@google.com>
    Reviewed-by: Timofey Chudakov <tchudakov@google.com>
    Commit-Queue: Josef Raska <josefraska@google.com>
    Cr-Commit-Position: refs/heads/main@{#1601279}

* [cr148][Android] Fix divider preference removed by upstream in SiteSettings

Upstream removed the `divider` preference from the screen when
`isSettingsContainmentEnabled()` is true. Our order-adjustment code in
`configureBravePreferences` relied on it being present, causing a null
assert failure.

Drop the divider lookup/ordering entirely and shift
`permission_autorevocation` order directly after the last Brave pref.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/3e7c1090fe6836b828c58f6ce31ef786aebce69a

commit 3e7c1090fe6836b828c58f6ce31ef786aebce69a
Author: Gazal <agazal@google.com>
Date:   Tue Sep 30 14:10:19 2025 -0700

    [Settings containment]  Remove unwanted dividers in Site Settings and All Sites pages

    Before: https://screenshot.googleplex.com/9nQ28EheaL6E5yR.png
    After: https://screenshot.googleplex.com/87LzVJaFcqxX2DU.png

    Bug: 433576895, 439725777
    Change-Id: I55cf2f6a88d108d19c9fcc0be199194ee08bbe91
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6998571
    Commit-Queue: Wenyu Fu <wenyufu@chromium.org>
    Reviewed-by: Wenyu Fu <wenyufu@chromium.org>
    Auto-Submit: Gazal Agarwal <agazal@google.com>
    Cr-Commit-Position: refs/heads/main@{#1523141}

* [cr148][Android] HubManagerImpl.ctor changed

New arg bottomSheetController

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

commit b8c4e05efe17b2949004e620b9b81c7ec0ce4f71
Author: Calder Kitagawa <ckitagawa@chromium.org>
Date:   Wed Apr 1 14:34:42 2026 -0700

    [Hub][Archived] Tweak additional margin offsets

    For Hub
    - If bottom toolbar enabled apply correct bottom sheet offsets.

    For Archived Tabs
    - Offset the snackbar above the close all button.

    Bug: 491514883
    Change-Id: Ib985af97cf6001700012894fdd03ebd0705a606a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7717783
    Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Brandon Wylie <wylieb@google.com>
    Cr-Commit-Position: refs/heads/main@{#1608780}

* [cr148][Android] Adjusted tabSupplier at HubManagerImpl.ctor

Now it is NullableObservableSupplier, missed old change

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/416a61c418c152a7a7ae568d89302e5ecb6e4a3d

commit 416a61c418c152a7a7ae568d89302e5ecb6e4a3d
Author: Andrew Grieve <agrieve@chromium.org>
Date:   Tue Dec 2 14:13:59 2025 -0800

    Android: Split ObservableSupplier into Nullable / Monotonic / NonNull variants

    The goal is to use proper @Nullable annotations with
    ObservableSuppliers.

    To achieve this, we use interfaces that define nullness:
     * (Settable)NullableObservableSupplier
     * (Settable)ObservableSupplier <-- monotonic
     * (Settable)NonNullObservableSupplier

    And we have ObservableSupplierImpl implement all of them.

    In order to make this migration manageable, I've marked the interfaces
    as @NullUnmarked, and will fix annotations in batches until they
    can be marked @NullMarked.

    This CL includes a batch in order to test out the new interfaces (and
    because many were necessary to make the change).

    Monotonic suppliers are by far the most common afaict, so that's why
    the non-prefixed ObservableSupplier is the monotonic one (that, and
    because "Monotonic" is a mouthful).

    One implication of this approach is that we'll never have:
       ObservableSupplier<@Nullable Foo>
    We'd have instead:
       NullableObservableSupplier<Foo>

    Having the nullness in the interface rather than in the generic
    allows for defining toNonNull() only on monotonic suppliers, and
    simplifies the implementation.

    Bug: 455874046
    Change-Id: Id48e235b9ff16a5b21a9c1199863150d17c22736
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7206746
    Commit-Queue: Andrew Grieve <agrieve@chromium.org>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Owners-Override: Andrew Grieve <agrieve@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1553094}

* [cr148] `SetInitialSyncFeatureSetupComplete` dropped unused arg

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/448b9a0247edbe13101ad734f58b0e9792d6064b

commit 448b9a0247edbe13101ad734f58b0e9792d6064b
Author: Tanmoy Mollik <triploblastic@google.com>
Date:   Thu Apr 2 05:25:50 2026 -0700

    Remove unused method param in SyncUserSettings

    Bug: 347710361
    Change-Id: Ie08884a8a8d4d37d1f6e8b91f2200f1d4d6bf948
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7715580
    Commit-Queue: Tanmoy Mollik <triploblastic@google.com>
    Reviewed-by: Marc Treib <treib@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609128}

* [cr148] `chrome::OpenEmptyWindow` returns `BrowserWindowInterface`

The test affected by this change has been fixed, however the use of this
function in live code is set for migration now.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/4357394afdebacdc21992fdd0b3d0827e2bd7d25

commit 4357394afdebacdc21992fdd0b3d0827e2bd7d25
Author: Kun Wang <kunwang@microsoft.com>
Date:   Wed Apr 1 17:32:01 2026 -0700

    [bedrock] Migrate Browser parameters to BrowserWindowInterface Part 3

    Completes the migration of chrome/browser/ui/browser_commands.h away
    from Browser* dependencies, and fixes all downstream callers broken by
    the return type changes to OpenEmptyWindow and OpenInChrome

    Bug: 494376650
    Change-Id: I1130050cbee7ff6840bda56cd85ef7378dd65a7d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7711597
    Commit-Queue: Kun Wang <kunwang@microsoft.com>
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com>
    Cr-Commit-Position: refs/heads/main@{#1608892}

* [cr148] Adding stub for `kWalletPrivatePassHelpCenterURL`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a83c4e81ade18e4632a0b2d950990d637ea72d9d

commit a83c4e81ade18e4632a0b2d950990d637ea72d9d
Author: Florian Leimgruber <fleimgruber@google.com>
Date:   Thu Apr 2 08:52:02 2026 -0700

    Link to private passes help center article on import on desktop

    Currently, the import bubbles link to the passes overview page for
    private and public passes. This CL redirects to the help center article
    for private passes instead.

    Demo: https://screencast.googleplex.com/cast/NTkwOTA4NTU4ODI5MTU4NHxiODc4MDM4Mi1lMQ

    Bug: 477845712
    Change-Id: I40239e956d20fa5845da691f488ac485f029658e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7726781
    Reviewed-by: Bruno Braga <brunobraga@google.com>
    Commit-Queue: Florian Leimgruber <fleimgruber@google.com>
    Cr-Commit-Position: refs/heads/main@{#1609252}

* [cr148] `WebString::FromUTF16` => `WebString::FromUtf16`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/cf3132f122aa53b6a36113feaee0f1c35109c6f4

commit cf3132f122aa53b6a36113feaee0f1c35109c6f4
Author: Kent Tamura <tkent@chromium.org>
Date:   Thu Apr 2 02:00:25 2026 -0700

    Rename blink::WebString::FromUTF16() to FromUtf16()

    To follow a naming rule of Google C++ style guide.
    This CL has no behavior changes.

    Bug: 492927412
    Change-Id: I29597f96183c0dfc26f883ade0e9491153d78e9a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7723958
    Commit-Queue: Fredrik Söderquist <fs@opera.com>
    Reviewed-by: Fredrik Söderquist <fs@opera.com>
    Owners-Override: Kent Tamura <tkent@chromium.org>
    Auto-Submit: Kent Tamura <tkent@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609039}

* [cr148] Delete `IsFencedStorageReadAllowed` stub

This function has been dropped from the parent class.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/45930312b5e9c35bfc5334616153cc7c4a2e10dc

commit 45930312b5e9c35bfc5334616153cc7c4a2e10dc
Author: Shivani Sharma <shivanisha@chromium.org>
Date:   Thu Apr 2 08:23:29 2026 -0700

    [fenced frames] Remove sharedStorage.get() in fenced frames

    This is the 1st CL in a series that removes fenced storage read(FSR)
    code. This CL does the following:
    - removes sharedStorage.get() from a FF
    - removes the related permission policy
    - removes the related attestation category and checks

    Follow up CLs will remove disableUntrustedNetwork and fence.notifyEvent
    APIs introduced for FSR.

    Fenced Storage Read's "do not launch" status announcement:
    https://privacysandbox.google.com/overview/status

    sharedStorage.get() in FFs is gated behind a default disabled feature
    flag and it was never enabled, so this CL does not impact any launched behavior.

    flag: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/common/features.cc;drc=f79a5eea7a342c492253d84aa68d44513fa84ef4;l=750

    gate:
    https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/shared_storage/shared_storage.cc;drc=f79a5eea7a342c492253d84aa68d44513fa84ef4;l=765

    checked the changes in this CL against the following original CLs:
    - https://chromium-review.googlesource.com/c/chromium/src/+/5966637
    - https://chromium-review.googlesource.com/c/chromium/src/+/5279221
    - https://chromium-review.googlesource.com/c/chromium/src/+/5920994

    Change-Id: Iedcd065280b56ed86dbc4317e3221cbc00da1e15
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7709973
    Commit-Queue: Shivani Sharma <shivanisha@chromium.org>
    Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
    Reviewed-by: Mike West <mkwst@chromium.org>
    Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
    Reviewed-by: Fiona Macintosh <fmacintosh@google.com>
    Reviewed-by: Xiaochen Zhou <xiaochenzh@chromium.org>
    Reviewed-by: Mike Taylor <miketaylr@chromium.org>
    Reviewed-by: Maks Orlovich <morlovich@chromium.org>
    Reviewed-by: Yao Xiao <yaoxia@chromium.org>
    Reviewed-by: Ian Clelland <iclelland@chromium.org>
    Reviewed-by: Andrew Verge <averge@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609227}

* [cr148][Android] Moved profile_resetter_test_base under (not is_android)

* [cr148][Tree Tabs] Fix crash in GetUnpinnedTabsTotalHeight when pinning a split

Problem:
- TreeTabsBrowserTest.PinTab_PinnedCollectionAlreadyHasSplit crashed with
  CHECK(first_slot_view && last_slot_view) in GetUnpinnedTabsTotalHeight().

Root cause:
- When pinning a split tab collection, MoveTabsRecursive fires
  TabModel::UpdateProperties() for all tabs in the split at once, eagerly
  setting data().pinned = true for both tabs via the TabDataObserver chain.
- MoveTabsWithNotifications then sends OnTabPinnedStateChanged one tab at a
  time, each updating layout_helper_ via SetTabPinned.
- During the first tab's notification, layout_helper_->GetPinnedTabCount()
  still reflects n-1 pinned tabs (not all), so the early-return guard does not
  fire. But FindVisibleUnpinnedSlotViews() skips both split tabs because both
  already have data().pinned == true, returning (null, null) and triggering
  the CHECK.

Fix:
- Replace the CHECK with a null guard that returns 0, matching the existing
  pattern in GetUnpinnedTabsTotalSize() (the horizontal counterpart). When no
  visible unpinned slot views are found, the total height is 0.

Note: AI tooling was used to generate part or all of this commit; requires
thorough review.

* [cr148] Fix dangling pointer in `CrxUpdateService` callbacks

Recent upstream change to `ScopedObservation` default `RawPtrTraits` exposed a
latent dangling pointer in `CrxUpdateService` where callbacks used
`base::Unretained(this)`. Async install/update callbacks could outlive the
service during shutdown, triggering dangling pointer checks. Replace with
`WeakPtr` bindings to safely drop callbacks after destruction.

Chromium changes:
https://source.chromium.org/chromium/chromium/src/+/95eade2523f5c839c531717a7a0ff5eccbced8d2

commit 95eade2523f5c839c531717a7a0ff5eccbced8d2
Author: Sylvain Defresne <sdefresne@chromium.org>
Date:   Thu Apr 2 09:20:00 2026 -0700

    [base] Change default value of RawPtrTraits of ScopedObservation<...>

    After all dangling ScopedObservation<...> have been identified, it is
    possible to change the default value of RawPtrTraits to kEmpty (i.e.
    not dangling).

    Bug: 493572976
    Change-Id: I18be9cd98e88d82a75c84a87cdd58440c71807b9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7720939
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Daniel Cheng <dcheng@chromium.org>
    Auto-Submit: Sylvain Defresne <sdefresne@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609274}

* [cr148] Fixes a crash in SearchboxOmniboxClientNavigationTest.

The test crashes because in our chromium_src override of
searchbox_omnibox_client.cc we call
TemplateURLService::GetTemplateURLForKeyword with an empty keyword.
Need to guard against that.

* [cr148] Fixes dangling pointer crashes in browser tests.

Memory was released on:
Task trace:
        brave_browser_tests!component_updater::CrxUpdateService::~CrxUpdateService [0x7ff6b1eacd13+23] (src\components\component_updater\component_updater_service.cc:137)
        brave_browser_tests!BrowserProcessImpl::~BrowserProcessImpl [0x7ff6ad3e5c80+380] (src\chrome\browser\browser_process_impl.cc:566)

Dangling reference from:
        brave_browser_tests!brave_wallet::WalletDataFilesInstaller::SetDelegate [0x7ff6ae2790b6+76] (src\brave\components\brave_wallet\browser\wallet_data_files_installer.cc:174)
        brave_browser_tests!BraveBrowserProcessImpl::StartBraveServices [0x7ff6ad3802e9+f9] (src\brave\browser\brave_browser_process_impl.cc:300)

Renames WalletDataFilesInstaller::ResetForTesting to Reset and adds a
call to it in BraveBrowserProcessImpl::StartTearDown.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/95eade2523f5c839c531717a7a0ff5eccbced8d2

commit 95eade2523f5c839c531717a7a0ff5eccbced8d2
Author: Sylvain Defresne <sdefresne@chromium.org>
Date:   Thu Apr 2 09:20:00 2026 -0700

    [base] Change default value of RawPtrTraits of ScopedObservation<...>

    After all dangling ScopedObservation<...> have been identified, it is
    possible to change the default value of RawPtrTraits to kEmpty (i.e.
    not dangling).

    Bug: 493572976
    Change-Id: I18be9cd98e88d82a75c84a87cdd58440c71807b9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7720939
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Daniel Cheng <dcheng@chromium.org>
    Auto-Submit: Sylvain Defresne <sdefresne@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609274}

* [cr148] Fix `TorProfileManager` shutdown ordering to avoid `ScopedObservation` dangling pointer

This change introduces an explicit `Shutdown()` method on `TorProfileManager`
and invokes it during `StartTearDown()` to ensure its
`BrowserCollectionObserver` is destroyed before dependent services are torn
down. Without this, the observer could outlive objects it observes, leading to a
dangling pointer during cleanup. Calling `Shutdown()` at this point guarantees
safe observer teardown and prevents the crash.

This fixed many browser tests that were dying like this:

[49620:48832:0404/110059.954:ERROR:base\allocator\partition_alloc_support.cc:682] A freed allocation is still referenced by a dangling pointer at exit, or at test end. Leaked raw_ptr/raw_ref could cause PartitionAlloc's quarantine memory bloat.

Memory was released on:
Task trace:
No active task.
        brave_browser_tests!base::debug::CollectStackTrace [0x7ff7b1788375+15] (C:\work\cr148\brave-browser\src\base\debug\stack_trace_win.cc:383)
        brave_browser_tests!base::debug::StackTrace::StackTrace [0x7ff7b179f82c+10c] (C:\work\cr148\brave-browser\src\base\debug\stack_trace.cc:281)
        brave_browser_tests!base::allocator::`anonymous namespace'::DanglingRawPtrDetected [0x7ff7b178d35e+3ee] (C:\work\cr148\brave-browser\src\base\allocator\partition_alloc_support.cc:437)
        brave_browser_tests!allocator_shim::internal::PartitionAllocFunctionsInternal<16,2>::FreeWithSize [0x7ff7b1983c4a+445a] (C:\work\cr148\brave-browser\src\base\allocator\partition_allocator\src\partition_alloc\shim\allocator_shim_default_dispatch_to_partition_alloc.cc:540)
        brave_browser_tests!BraveBrowserProcessImpl::PostDestroyThreads [0x7ff7b01c001e+e] (C:\work\cr148\brave-browser\src\brave\browser\brave_browser_process_impl.cc:258)
        brave_browser_tests!ChromeBrowserMainParts_ChromiumImpl::PostDestroyThreads [0x7ff7b01d3dff+6f] (C:\work\cr148\brave-browser\src\chrome\browser\chrome_browser_main.cc:2237)
        brave_browser_tests!content::BrowserMainLoop::ShutdownThreadsAndCleanUp [0x7ff7ab8427d7+7b7] (C:\work\cr148\brave-browser\src\content\browser\browser_main_loop.cc:1284)
        brave_browser_tests!content::BrowserMainRunnerImpl::Shutdown [0x7ff7ab844a96+106] (C:\work\cr148\brave-browser\src\content\browser\browser_main_runner_impl.cc:177)
        brave_browser_tests!content::BrowserMain [0x7ff7ab83d74e+12e] (C:\work\cr148\brave-browser\src\content\browser\browser_main.cc:44)
        brave_browser_tests!content::RunBrowserProcessMain [0x7ff7ae69c245+145] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:696)
        brave_browser_tests!content::ContentMainRunnerImpl::RunBrowser [0x7ff7ae69efe4+674] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:1320)
        brave_browser_tests!content::ContentMainRunnerImpl::Run [0x7ff7ae69e904+804] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:1150)
        brave_browser_tests!content::RunContentProcess [0x7ff7ae698314+544] (C:\work\cr148\brave-browser\src\content\app\content_main.cc:358)
        brave_browser_tests!content::ContentMain [0x7ff7ae6984d3+43] (C:\work\cr148\brave-browser\src\content\app\content_main.cc:371)
        brave_browser_tests!content::BrowserTestBase::SetUp [0x7ff7bb82dd79+1309] (C:\work\cr148\brave-browser\src\content\public\test\browser_test_base.cc:615)
        brave_browser_tests!InProcessBrowserTest::SetUp [0x7ff7b0ab6276+1d6] (C:\work\cr148\brave-browser\src\chrome\test\base\in_process_browser_test.cc:558)
        brave_browser_tests!testing::Test::Run [0x7ff7af921d7e+de] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:2744)
        brave_browser_tests!testing::TestInfo::Run [0x7ff7af92324f+23f] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:2895)
        brave_browser_tests!testing::TestSuite::Run [0x7ff7af9241d7+527] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:3072)
        brave_browser_tests!testing::internal::UnitTestImpl::RunAllTests [0x7ff7af934007+847] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:6063)
        brave_browser_tests!testing::UnitTest::Run [0x7ff7af93373f+15f] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:5602)
        brave_browser_tests!base::TestSuite::Run [0x7ff7bb855f6d+dd] (C:\work\cr148\brave-browser\src\base\test\test_suite.cc:440)
        brave_browser_tests!ChromeTestSuiteRunner::RunTestSuite [0x7ff7bc719bee+ae] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:106)
        brave_browser_tests!ChromeTestLauncherDelegate::RunTestSuite [0x7ff7bc719f4d+cd] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:155)
        brave_browser_tests!content::LaunchTestsInternal [0x7ff7bb82a7d6+4e6] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:423)
        brave_browser_tests!content::LaunchTests [0x7ff7bb82ae73+133] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:518)
        brave_browser_tests!LaunchChromeTests [0x7ff7bc71a5a6+116] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:360)
        brave_browser_tests!main [0x7ff7bc71afca+ea] (C:\work\cr148\brave-browser\src\brave\test\base\browser_tests_main.cc:66)
        brave_browser_tests!__scrt_common_main_seh [0x7ff7bce26da8+10c] (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
        KERNEL32!BaseThreadInitThunk [0x7ffc3347e8d7+17]
        ntdll!RtlUserThreadStart [0x7ffc356ac48c+2c]

[49620:48832:0404/110104.699:ERROR:base\allocator\partition_alloc_support.cc:699] Dangling reference from:

[49620:48832:0404/110104.699:ERROR:base\allocator\partition_alloc_support.cc:700]       brave_browser_tests!partition_alloc::internal::base::debug::CollectStackTrace [0x7ff7b1910942+12] (C:\work\cr148\brave-browser\src\base\allocator\partition_allocator\src\partition_alloc\partition_alloc_base\debug\stack_trace_win.cc:103)
        brave_browser_tests!base::internal::InstanceTracer::TraceImpl [0x7ff7b19100ae+1fe] (C:\work\cr148\brave-browser\src\base\allocator\partition_allocator\src\partition_alloc\pointers\instance_tracer.cc:66)
        brave_browser_tests!base::ScopedObservation<brave_rewards::RewardsService,brave_rewards::RewardsServiceObserver,0>::Observe [0x7ff7a6070a98+128] (C:\work\cr148\brave-browser\src\base\scoped_observation.h:117)
        brave_browser_tests!base::NoDestructor<TorProfileManager>::NoDestructor<> [0x7ff7af7f2e46+66] (C:\work\cr148\brave-browser\src\base\no_destructor.h:99)
        brave_browser_tests!TorProfileManager::GetInstance [0x7ff7af7f2dd2+52] (C:\work\cr148\brave-browser\src\brave\browser\tor\tor_profile_manager.cc:82)
        brave_browser_tests!extensions::BraveExtensionManagement::OnTorDisabledChanged [0x7ff7a6281e06+16] (C:\work\cr148\brave-browser\src\brave\browser\extensions\brave_extension_management.cc:63)
        brave_browser_tests!base::RepeatingCallback<void ()>::Run [0x7ff7a62b063d+8d] (C:\work\cr148\brave-browser\src\base\functional\callback.h:363)
        brave_browser_tests!base::internal::Invoker<base::internal::FunctorTraits<const `lambda at ..\..\base\functional\callback_helpers.h:119:25' &,const base::RepeatingCallback<void ()> &>,base::internal::BindState<0,0,0,`lambda at ..\..\base\functional\callback_helpers.h:119:25' [0x7ff7ac3554d9+39] (C:\work\cr148\brave-browser\src\base\functional\bind_internal.h:989)
        brave_browser_tests!base::RepeatingCallback<void (const std::__Cr::basic_string<char,std::__Cr::char_traits<char>,std::__Cr::allocator<char> > &)>::Run [0x7ff7a659eb32+a2] (C:\work\cr148\brave-browser\src\base\functional\callback.h:347)
        brave_browser_tests!PrefChangeRegistrar::OnPreferenceChanged [0x7ff7b0ca4ac1+81] (C:\work\cr148\brave-browser\src\components\prefs\pref_change_registrar.cc:107)
        brave_browser_tests!PrefNotifierImpl::FireObservers [0x7ff7b0ca0717+6b7] (C:\work\cr148\brave-browser\src\components\prefs\pref_notifier_impl.cc:108)
        brave_browser_tests!PrefNotifierImpl::OnPreferenceChanged [0x7ff7b0c9fea1+91] (C:\work\cr148\brave-browser\src\components\prefs\pref_notifier_impl.cc:77)
        brave_browser_tests!PrefValueStore::NotifyPrefChanged [0x7ff7b0c97228+118] (C:\work\cr148\brave-browser\src\components\prefs\pref_value_store.cc:140)
        brave_browser_tests!PrefValueStore::PrefStoreKeeper::OnPrefValueChanged [0x7ff7b0c95452+d2] (C:\work\cr148\brave-browser\src\components\prefs\pref_value_store.cc:42)
        brave_browser_tests!base::ObserverList<PrefStore::Observer,1,1,base::internal::CheckedObserverAdapter>::NotifyAllowReentrancy<void (PrefStore::Observer::*)(std::__Cr::basic_string_view<char,std::__Cr::char_traits<char> >),std::__Cr::basic_string_view<char,std::__Cr::char_tra [0x7ff7b0c8f35c+26c] (C:\work\cr148\brave-browser\src\base\observer_list.h:449)
        brave_browser_tests!JsonPrefStore::SetValue [0x7ff7b0ca5e39+139] (C:\work\cr148\brave-browser\src\components\prefs\json_pref_store.cc:235)
        brave_browser_tests!PrefService::SetUserPrefValue [0x7ff7b0c9a853+f3] (C:\work\cr148\brave-browser\src\components\prefs\pref_service.cc:525)
        brave_browser_tests!PrefService::SetBoolean [0x7ff7b0c9a9e4+44] (C:\work\cr148\brave-browser\src\components\prefs\pref_service.cc:374)
        brave_browser_tests!TorProfileServiceFactory::SetTorDisabled [0x7ff7af7f3fa4+54] (C:\work\cr148\brave-browser\src\brave\browser\tor\tor_profile_service_factory.cc:53)
        brave_browser_tests!BraveLocalStateBrowserTest_TorEnableDisable_Test::RunTestOnMainThread [0x7ff7a67252dc+2c] (C:\work\cr148\brave-browser\src\brave\browser\tor\test\brave_local_state_browsertest.cc:27)
        brave_browser_tests!content::BrowserTestBase::ProxyRunTestOnMainThreadLoop [0x7ff7bb82efaf+62f] (C:\work\cr148\brave-browser\src\content\public\test\browser_test_base.cc:1019)
        brave_browser_tests!base::OnceCallback<void ()>::Run [0x7ff7a60b677d+8d] (C:\work\cr148\brave-browser\src\base\functional\callback.h:155)
        brave_browser_tests!content::BrowserMainRunnerImpl::Run [0x7ff7ab844950+a0] (C:\work\cr148\brave-browser\src\content\browser\browser_main_runner_impl.cc:152)
        brave_browser_tests!content::BrowserMain [0x7ff7ab83d6dc+bc] (C:\work\cr148\brave-browser\src\content\browser\browser_main.cc:32)
        brave_browser_tests!content::RunBrowserProcessMain [0x7ff7ae69c245+145] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:696)
        brave_browser_tests!content::ContentMainRunnerImpl::RunBrowser [0x7ff7ae69efe4+674] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:1320)
        brave_browser_tests!content::ContentMainRunnerImpl::Run [0x7ff7ae69e904+804] (C:\work\cr148\brave-browser\src\content\app\content_main_runner_impl.cc:1150)
        brave_browser_tests!content::RunContentProcess [0x7ff7ae698314+544] (C:\work\cr148\brave-browser\src\content\app\content_main.cc:358)
        brave_browser_tests!content::ContentMain [0x7ff7ae6984d3+43] (C:\work\cr148\brave-browser\src\content\app\content_main.cc:371)
        brave_browser_tests!content::BrowserTestBase::SetUp [0x7ff7bb82dd79+1309] (C:\work\cr148\brave-browser\src\content\public\test\browser_test_base.cc:615)
        brave_browser_tests!InProcessBrowserTest::SetUp [0x7ff7b0ab6276+1d6] (C:\work\cr148\brave-browser\src\chrome\test\base\in_process_browser_test.cc:558)
        brave_browser_tests!testing::Test::Run [0x7ff7af921d7e+de] (C:\work\cr148\brave-browser\src\third_party\googletest\src\googletest\src\gtest.cc:2744)

[49620:48832:0404/110104.729:FATAL:base\allocator\partition_alloc_support.cc:714] Check failed: !errors.
        brave_browser_tests!base::debug::CollectStackTrace [0x7ff7b1788375+15] (C:\work\cr148\brave-browser\src\base\debug\stack_trace_win.cc:383)
        brave_browser_tests!base::debug::StackTrace::StackTrace [0x7ff7b179f82c+10c] (C:\work\cr148\brave-browser\src\base\debug\stack_trace.cc:281)
        brave_browser_tests!logging::LogMessage::Flush [0x7ff7b18e09e7+e7] (C:\work\cr148\brave-browser\src\base\logging.cc:709)
        brave_browser_tests!logging::LogMessage::~LogMessage [0x7ff7b18e0889+19] (C:\work\cr148\brave-browser\src\base\logging.cc:698)
        brave_browser_tests!logging::`anonymous namespace'::CheckLogMessage::~CheckLogMessage [0x7ff7b1906b4e+5e] (C:\work\cr148\brave-browser\src\base\check.cc:195)
        brave_browser_tests!logging::NotReachedNoreturnError::~NotReachedNoreturnError [0x7ff7b190688b+b] (C:\work\cr148\brave-browser\src\base\check.cc:363)
        brave_browser_tests!base::allocator::`anonymous namespace'::CheckDanglingRawPtrBufferEmpty [0x7ff7b178cf5d+7bd] (C:\work\cr148\brave-browser\src\base\allocator\partition_alloc_support.cc:714)
        brave_browser_tests!base::OnceCallback<void ()>::Run [0x7ff7a60b677d+8d] (C:\work\cr148\brave-browser\src\base\functional\callback.h:155)
        brave_browser_tests!base::AtExitManager::ProcessCallbacksNow [0x7ff7b190ab51+1a1] (C:\work\cr148\brave-browser\src\base\at_exit.cc:93)
        brave_browser_tests!base::AtExitManager::~AtExitManager [0x7ff7b190a866+46] (C:\work\cr148\brave-browser\src\base\at_exit.cc:47)
        brave_browser_tests!base::TestSuite::~TestSuite [0x7ff7bb8561b2+212] (C:\work\cr148\brave-browser\src\base\test\test_suite.cc:392)
        brave_browser_tests!ChromeTestSuiteRunner::RunTestSuite [0x7ff7bc719c00+c0] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:107)
        brave_browser_tests!ChromeTestLauncherDelegate::RunTestSuite [0x7ff7bc719f4d+cd] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:155)
        brave_browser_tests!content::LaunchTestsInternal [0x7ff7bb82a7d6+4e6] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:423)
        brave_browser_tests!content::LaunchTests [0x7ff7bb82ae73+133] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:518)
        brave_browser_tests!LaunchChromeTests [0x7ff7bc71a5a6+116] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:360)
        brave_browser_tests!main [0x7ff7bc71afca+ea] (C:\work\cr148\brave-browser\src\brave\test\base\browser_tests_main.cc:66)
        brave_browser_tests!__scrt_common_main_seh [0x7ff7bce26da8+10c] (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
        KERNEL32!BaseThreadInitThunk [0x7ffc3347e8d7+17]
        ntdll!RtlUserThreadStart [0x7ffc356ac48c+2c]
Crash keys:
  "shutdown-type" = "close"
  "gpu-generation-intel" = "0"
  "gpu-vsver" = "3.00"
  "gpu-psver" = "3.00"
  "gpu-driver" = "5.0.0"
  "gpu-rev" = "0"
  "gpu-subid" = "0x00000000"
  "gpu_count" = "0"
  "gpu-devid" = "0xffff"
  "gpu-venid" = "0xffff"
  "num-extensions" = "0"
  "switch-39" = "about:blank"
  "chrome-trace-id" = "2983336048609793865"
  "reentry_guard_tls_slot" = "unused"
  "variations" = "b357b792-3f4a17df,4b935545-3d47f4f4,9a38bae3-3d47f4f4,41ad04e1-e4065f40,2d1e43a3-3f4a17df,370ace14-3f4a17df,386dc267-3d47f4f4,d69d967d-3695c92e,3c8f75a1-8ff88d47,a4406b35-1657e2d6,408da146-1657e2d6,"
  "num-experiments" = "11"
  "LocaleDataPakExists-found_attrs" = "32"
  "LocaleDataPakExists-found_path" = "C:\work\cr148\brave-browser\src\out\Static\locales\en-US.pak"
  "switch-38" = "--component-updater=url-source=https://go-updater.brave.com/exte"
  "switch-37" = "--variations-insecure-server-url=https://variations.brave.com/se"
  "switch-36" = "--variations-server-url=https://variations.brave.com/seed"
  "switch-35" = "--lso-url=https://no-thanks.invalid"
  "switch-34" = "--origin-trial-public-key=bYUKPJoPnCxeNvu72j4EmPuK7tr1PAC7SHh8ld"
  "switch-33" = "--enable-distillability-service"
  "switch-32" = "--enable-dom-distiller"
  "switch-31" = "--disable-domain-reliability"
  "switch-30" = "--disable-platform-accessibility-integration"
  "switch-29" = "--disable-gpu-process-for-dx12-info-collection"
  "switch-28" = "--force-color-profile=srgb"
  "switch-27" = "--override-use-software-gl-for-tests"
  "switch-26" = "--disable-gl-drawing-for-tests"
  "switch-25" = "--disable-ignore-duplicate-navs-for-testing"
  "switch-24" = "--disable-backgrounding-occluded-windows"
  "switch-23" = "--disable-d3d11-warp"
  "switch-22" = "--log-gpu-control-list-decisions"
  "switch-21" = "--dom-automation"
  "switch-20" = "--log-missing-unload-ack"
  "switch-19" = "--ipc-connection-timeout=30"
  "switch-18" = "--browser-test"
  "switch-17" = "--use-fake-device-for-media-stream"
  "switch-16" = "--ip-address-space-overrides=127.0.0.1:0=public,[::1]:0=public"
  "switch-15" = "--disable-updater-scheduler"
  "switch-14" = "--disable-zero-browsers-open-for-tests"
  "switch-13" = "--test-type=browser"
  "switch-12" = "--disable-component-update"
  "switch-11" = "--wm-window-animations-disabled"
  "switch-10" = "--disable-default-apps"
  "switch-9" = "--no-first-run"
  "switch-8" = "--disable-auto-reload"
  "switch-7" = "--user-data-dir=C:\Users\emerick\AppData\Local\Temp\scoped_dir58"
  "switch-6" = "--test-launcher-retries-left=0"
  "switch-5" = "--test-launcher-output=C:\Users\emerick\AppData\Local\Temp\scope"
  "switch-4" = "--single-process-tests"
  "switch-3" = "--gtest_filter=BraveLocalStateBrowserTest.TorEnableDisable"
  "switch-2" = "--gtest_also_run_disabled_tests"
  "switch-1" = "--disable-gpu-process-for-dx12-info-collection"
  "num-switches" = "44"
  "commandline-disabled-feature-5" = "TestFeatureForBrowserTest2"
  "commandline-disabled-feature-4" = "SessionRestoreInfobar"
  "commandline-disabled-feature-3" = "RestartNetworkServiceUnsandboxedForFailedLaunch"
  "commandline-disabled-feature-2" = "PreconnectToSearch"
  "commandline-disabled-feature-1" = "ExtensionDisableUnsupportedDeveloper"
  "commandline-enabled-feature-2" = "TestFeatureForBrowserTest1"
  "commandline-enabled-feature-1" = "*TestBlinkFeatureDefault"

Received fatal exception EXCEPTION_BREAKPOINT
        brave_browser_tests!logging::LogMessage::HandleFatal [0x7ff7b18e13ea+2ca] (C:\work\cr148\brave-browser\src\base\logging.cc:1047)
        brave_browser_tests!logging::LogMessage::Flush [0x7ff7b18e0f17+617] (C:\work\cr148\brave-browser\src\base\logging.cc:926)
        brave_browser_tests!logging::LogMessage::~LogMessage [0x7ff7b18e0889+19] (C:\work\cr148\brave-browser\src\base\logging.cc:698)
        brave_browser_tests!logging::`anonymous namespace'::CheckLogMessage::~CheckLogMessage [0x7ff7b1906b4e+5e] (C:\work\cr148\brave-browser\src\base\check.cc:195)
        brave_browser_tests!logging::NotReachedNoreturnError::~NotReachedNoreturnError [0x7ff7b190688b+b] (C:\work\cr148\brave-browser\src\base\check.cc:363)
        brave_browser_tests!base::allocator::`anonymous namespace'::CheckDanglingRawPtrBufferEmpty [0x7ff7b178cf5d+7bd] (C:\work\cr148\brave-browser\src\base\allocator\partition_alloc_support.cc:714)
        brave_browser_tests!base::OnceCallback<void ()>::Run [0x7ff7a60b677d+8d] (C:\work\cr148\brave-browser\src\base\functional\callback.h:155)
        brave_browser_tests!base::AtExitManager::ProcessCallbacksNow [0x7ff7b190ab51+1a1] (C:\work\cr148\brave-browser\src\base\at_exit.cc:93)
        brave_browser_tests!base::AtExitManager::~AtExitManager [0x7ff7b190a866+46] (C:\work\cr148\brave-browser\src\base\at_exit.cc:47)
        brave_browser_tests!base::TestSuite::~TestSuite [0x7ff7bb8561b2+212] (C:\work\cr148\brave-browser\src\base\test\test_suite.cc:392)
        brave_browser_tests!ChromeTestSuiteRunner::RunTestSuite [0x7ff7bc719c00+c0] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:107)
        brave_browser_tests!ChromeTestLauncherDelegate::RunTestSuite [0x7ff7bc719f4d+cd] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:155)
        brave_browser_tests!content::LaunchTestsInternal [0x7ff7bb82a7d6+4e6] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:423)
        brave_browser_tests!content::LaunchTests [0x7ff7bb82ae73+133] (C:\work\cr148\brave-browser\src\content\public\test\test_launcher.cc:518)
        brave_browser_tests!LaunchChromeTests [0x7ff7bc71a5a6+116] (C:\work\cr148\brave-browser\src\chrome\test\base\chrome_test_launcher.cc:360)
        brave_browser_tests!main [0x7ff7bc71afca+ea] (C:\work\cr148\brave-browser\src\brave\test\base\browser_tests_main.cc:66)
        brave_browser_tests!__scrt_common_main_seh [0x7ff7bce26da8+10c] (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
        KERNEL32!BaseThreadInitThunk [0x7ffc3347e8d7+17]
        ntdll!RtlUserThreadStart [0x7ffc356ac48c+2c]
[1/1] BraveLocalStateBrowserTest.TorEnableDisable (25089 ms)
1 test failed on exit:
    BraveLocalStateBrowserTest.TorEnableDisable (..\..\brave\browser\tor\test\brave_local_state_browsertest.cc:25)
Tests took 25 seconds.

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/95eade2523f5c839c531717a7a0ff5eccbced8d2

commit 95eade2523f5c839c531717a7a0ff5eccbced8d2
Author: Sylvain Defresne <sdefresne@chromium.org>
Date:   Thu Apr 2 09:20:00 2026 -0700

    [base] Change default value of RawPtrTraits of ScopedObservation<...>

    After all dangling ScopedObservation<...> have been identified, it is
    possible to change the default value of RawPtrTraits to kEmpty (i.e.
    not dangling).

    Bug: 493572976
    Change-Id: I18be9cd98e88d82a75c84a87cdd58440c71807b9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7720939
    Reviewed-by: Daniel Cheng <dcheng@chromium.org>
    Commit-Queue: Daniel Cheng <dcheng@chromium.org>
    Auto-Submit: Sylvain Defresne <sdefresne@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609274}

* [cr148] Fixing eslint missing reactive property failures

```
dev/brave-dev/src/out/Component/gen/chrome/browser/resources/tab_search/preprocessed/tab_focus/tab_focus_page.ts
  20:8  error  Missing class member declaration for Lit reactive property 'topic'       @webui-eslint/lit-property-accessor
  20:8  error  Missing class member declaration for Lit reactive property 'topics_'     @webui-eslint/lit-property-accessor
  20:8  error  Missing class member declaration for Lit reactive property 'undoTopic_'  @webui-eslint/lit-property-accessor
  20:8  error  Missing class member declaration for Lit reactive property 'showFRE_'    @webui-eslint/lit-property-accessor
```

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/f7063d58fe367f3abda5c3d8260f651d5c1e17a4

commit f7063d58fe367f3abda5c3d8260f651d5c1e17a4
Author: rbpotter <rbpotter@chromium.org>
Date:   Thu Apr 2 15:41:36 2026 -0700

    WebUI: Make property type mismatch checks more thorough

    (1) Check all declared properties for type mismatches with the TS
        type by moving the check into lit_property_accessor, which
        validates all Lit reactive properties and not only those used in
        bindings.
    (2) Make the check more detailed by categorizing all TS types into
        the 5 options for Lit (Array/Object/Number/String/Boolean) and
        ensure that the TS and Lit types are compatible for all cases,
        not just booleans or array/objects.

    Bug: 490022552
    Change-Id: Ibda1011a3c891efeea3699b9c79a343351dd85e9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7719027
    Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
    Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609534}

* [cr148] `BookmarksSidePanelCoordinator` now `UnownedUserData`

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/448274dc8e5e5ceb9adee29ec1aad3de96e30eb2

commit 448274dc8e5e5ceb9adee29ec1aad3de96e30eb2
Author: Jeff Yoon <jeffyoon@google.com>
Date:   Thu Apr 2 14:36:31 2026 -0700

    Migrate BookmarksSidePanelCoordinator to UnownedUserData

    This CL migrates BookmarksSidePanelCoordinator from being an owned
    subsystem accessible via public getters in BrowserWindowFeatures to
    the UnownedUserData pattern.

    This decouples its usage from the monolith, allowing call sites to
    access it via BookmarksSidePanelCoordinator::From(browser) instead of
    going through BrowserWindowFeatures.

    To ensure its lifetime is tied to the window, it is retained as a
    private member variable in BrowserWindowFeatures.

    Bug: 491863835
    Change-Id: If051d82e3652de9d6dede2038bf3c25edc7d64b0
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722695
    Commit-Queue: Jeff Yoon <jeffyoon@google.com>
    Reviewed-by: Sophie Chang <sophiechang@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609501}

* [cr148] `TabDetails` in `TabSearchPageHandler` deleted

This change just migrates all references to `TabDetails` to use
`TabInterface`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/fa6190d90e0f4b431b1f092a59154dd45a2aeec8

commit fa6190d90e0f4b431b1f092a59154dd45a2aeec8
Author: David Yeung <dayeung@chromium.org>
Date:   Fri Apr 3 10:27:57 2026 -0700

    [TabSearch] Remove unnecessary tab details

    After switching to the TabStrip API, the TabDetails struct is no longer
    necessary as there are no indexes.

    This CL modifies the call sites to just use GetTabInterface instead of
    GetTabDetails. There are no major behavioral changes.

    Fixed: 477686464
    Change-Id: I0a15a6a0dfd16e83e164403f3b113f7831ec4229
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7709162
    Reviewed-by: Robert Liao <robliao@chromium.org>
    Commit-Queue: David Yeung <dayeung@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609843}

* [cr148] Mirroring `kInstallDialogFlowLearnMoreURL` url

This is a new URL, that seems to be appropriate to leave in place.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/7dcc54292e0bf5d28f89339453101f2b6224084e

commit 7dcc54292e0bf5d28f89339453101f2b6224084e
Author: Kunjan Vinay Patel <ksukh@google.com>
Date:   Fri Apr 3 13:09:22 2026 -0700

    [PWA_Install_Dialog] Add "Learn More" button to the install flow dialog

    This CL adds a "Learn More" button to the new multi-step web app
    installation flow. The button is visible in install dialog view and
    install options view for all installation types (simple, diy, detailed).
    To reduce the visual noise, the button is hidden once the user advances
    to the installation progress step.

    Functionally, clicking the button triggers a navigation to the web app
    help page in a new tab.

    Screencast: http://screencast/cast/NDk1Njc0MDkxNDI0OTcyOHxjMDBmMTU2Ny0xYQ
    Bug: 473080700
    Change-Id: I28e3f76a19bcc52bd1cf0ed13279065f85fce64d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722158
    Reviewed-by: Adriana Ixba <aixba@chromium.org>
    Reviewed-by: Dibyajyoti Pal <dibyapal@chromium.org>
    Commit-Queue: Kunjan Vinay Patel <ksukh@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609929}

* [cr148] Fix for `SyncSessionDurationsMetricsRecorder` stubs

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a2ebdc2ea47eb842b1c0ddbb8a1d223e9ffd4d9b

commit a2ebdc2ea47eb842b1c0ddbb8a1d223e9ffd4d9b
Author: Ryan Sultanem <rsult@google.com>
Date:   Fri Apr 3 03:23:54 2026 -0700

    Migrating Session.TotalDurationMax1Day to per-profile tracking.

    Update SyncSessionDurationsMetricsRecorder and
    HistorySyncSessionDurationsMetricsRecorder to use ProfileMetricsService
    for recording Session.TotalDurationMax1Day histograms with the
    .Profile variant. This ensures metrics are correctly attribute to the
    profile context.
    Inject ProfileMetricsService through factories to recorders.

    Extend MetricsService to support custom time histograms per profile.

    Update histograms.xml to support {ProfileIndex} variants.
    Update unit tests to verify both base and per-profile metrics.

    Bug: 417921579
    Change-Id: I300fb9671a557294339fd413ab7cd71425781860
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7705052
    Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
    Commit-Queue: Ryan Sultanem <rsult@google.com>
    Reviewed-by: Marc Treib <treib@chromium.org>
    Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609736}

* [cr148] Fix `ParseJSON` to support `PinEntries` arg

Adapt our `ParseJSON` override to upstream's API change that split PKP and HSTS
data into separate structures. Confirmed fix with security folks and verified
that tests on https://github.com/brave/brave-browser/wiki/TLS-Policy continue to
pass.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/8119b584658ad61e21550dcf2762e22be182a4b2

commit 8119b584658ad61e21550dcf2762e22be182a4b2
Author: Matt Mueller <mattm@chromium.org>
Date:   Thu Apr 2 13:09:05 2026 -0700

    Split static compiled-in PKP and HSTS data into separate data structures

    This is the first step towards moving PKP out of TransportSecurityState
    and into the cert verifier. It also removes some confusing edge cases
    due to interactions between the PKP and HSTS lists in the old
    implementation.

    Bug: 497882860, 498560798
    Change-Id: I2ebc99faea99248d24d2189879c33eb49fb25e3a
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7714518
    Reviewed-by: Carlos IL <carlosil@chromium.org>
    Commit-Queue: Matt Mueller <mattm@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609455}

* [cr148] Deps fixes

* [cr148] Fix `BraveTabsSearchButtonTest.HideTabSearchButtonInHorizontalTabStripRegionView`

Problem:
- Test crashes with DCHECK in ElementTrackerViews::GetFirstMatchingViewAs
  when casting to TabSearchButton

Root cause:
- Upstream commit d3beb65c47dd319439111d3e239686a6ca2e6e7b ("Prepare for
  WebUI pinned toolbar actions") added kTabSearchButtonElementId to the
  toolbar's PinnedActionToolbarButton. The tab strip's TabSearchButton
  also registers the same ID in its own constructor.
- BrowserView::Init() creates ToolbarView (line 952) before
  HorizontalTabStripRegionView (line 987), so the toolbar's
  PinnedActionToolbarButton is registered first in ElementTrackerViews.
- GetFirstMatchingViewAs<TabSearchButton> finds the toolbar's
  PinnedActionToolbarButton first, fails the AsViewClass<TabSearchButton>
  cast, and fires DCHECK(result).

Fix:
- Replace GetViewAs<TabSearchButton>(kTabSearchButtonElementId) with a
  direct call to HorizontalTabStripRegionView::GetTabSearchButton(), which
  returns only the tab strip's button without going through the element
  tracker.

Note: AI tooling was used to generate part or all of this commit; requires
thorough review.

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

commit d3beb65c47dd319439111d3e239686a6ca2e6e7b
Author: Paul Jensen <pauljensen@chromium.org>
Date:   Tue Mar 17 19:25:11 2026 -0700

    Prepare for WebUI pinned toolbar actions

    This change does not introduce any functional differences.

    This change adds a new abstract virtual interface for UI components
    supporting pinned toolbar actions, called PinnedToolbarActions. It also
    adds a new WebUIPinnedToolbarActions class that is mostly
    NOTIMPLEMENTED() calls. It tests that the browser can start up and
    shutdown cleanly using this new class.

    The major remaining steps to implementing a WebUI pinned toolbar
    actions, which are left for future changes are:
    - implement the WebUI component including BrowserControlsService and
      ToolbarUIService support
    - switch the following views dependencies to work with the new WebUI:
      - ToolbarController::PinnedActionsDelegate::GetContainerView()
        - This has quite a few downstream users, esp download button.
      - ToolbarView::GetCastButton()
      - PinnedToolbarActionsController::GetButtonFor()
      - ToolbarButtonProvider::GetPinnedToolbarActionsContainer()
      - some direct references to
        ToolbarView::pinned_toolbar_actions_container_

    Note that, at present, WebUIPinnedToolbarActions does not support
    ChromeLabs or when HorizontalTabStripComboButton is disabled.

    Bug: 474061420
    Change-Id: I647396ad43ec96995f62978e0a16c0712470dc89
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7639706
    Auto-Submit: Paul Jensen <pauljensen@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Reviewed-by: Mickey Burks <mickeyburks@chromium.org>
    Reviewed-by: Caroline Rising <corising@chromium.org>
    Commit-Queue: Paul Jensen <pauljensen@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1600968}

* [cr148][Android] Removed supportsFindInPage from BaseCustomTabRootUiCoordinator

Chromium change
https://source.chromium.org/chromium/chromium/src/+/2ee27ab283f1578d5f35ac79ee7fcf62d2a951fe

commit 2ee27ab283f1578d5f35ac79ee7fcf62d2a951fe
Author: Henrique Nakashima <hnakashima@chromium.org>
Date:   Thu Apr 2 13:17:48 2026 -0700

    [Android] Null-annotate RootUiCoordinator (part 11)

    Fix 1 NullAway error due to:
    - mFindToolbarManager

    Clean up the always true supportFindInPage() to simplify nullability.

    Down to 48 errors.

    Change-Id: Iee0789070cd9904b08f827e481ce9ec3886bdb40
    Bug: 485252552
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722900
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609461}

* [cr148][Android] Changes at FeedActionDelegate.openSuggestionUrl

removed: onVisitComplete
added: surfaceId

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/69824f1f754963700f7b97e6be05a8a9f58a4eb0

commit 69824f1f754963700f7b97e6be05a8a9f58a4eb0
Author: Xi Han <hanxi@google.com>
Date:   Fri Apr 3 05:15:55 2026 -0700

    [Memory] Refactor NavigationRecorder.

    In this CL, we fix the issue that FeedStream can't be released from
    memory after NTP navigates. This is due to a NavigationRecorder being
    created when a NTP navigates, and it has a callback which keeps a
    reference FeedSurfaceRendererBridge to log the duration of users
    reading a card. The callback won't be called until a new Tab is
    created, i.e. leaving the current Tab, and #onHidden() is called.
    This leads to the FeedStream remain in memory after feeds is closed.

    In this CL, we add NavigationRecorder in C++ which calls the FeedApi
    directly to log the metrics. It no longer has a reference to the
    FeedSurfaceRendererBridge, and FeedStream can be released after the
    NTP navigates. FeedStream's memory foot print is cleaned up after
    leaving NTPs: http://shortn/_3DjIXJjzfY.

    This CL also fixes a visiting time logging issue. If the Tab never
    becomes foreground (mStartTimeMs == 0), we will log 0 for visit
    duration.

    Bug: 487641528, 493844946
    Change-Id: I34af7d2308d6ed070dff8ac52d11f17ae0977449
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7728181
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
    Reviewed-by: Dan Harrington <harringtond@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1609755}

* Revert "[Android] Temporarily disable kPartitionAllocFreeWithSize feature (#35329)"

This reverts commit 8333633c07.

Because it is DISABLED at cr148 since

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/23394958348e169660fe01722f985b2f8cdb81c6

commit 23394958348e169660fe01722f985b2f8cdb81c6
Author: Selma Bensaid <bselma@google.com>
Date:   Sun Mar 29 18:33:14 2026 -0700

    Revert "[PA] Roll out FreeWithSize to default-enabled"

    This reverts commit f32e2dd081a35717d7d6b9566df96a63d071c939.

    Reason for revert: b/495493036

    Original change's description:
    > [PA] Roll out FreeWithSize to default-enabled
    >
    > 1. Enable FreeWithSize by default with strict checks enabled, given
    >    100% stable launch for that configuration is approved.
    > 2. In fieldtrial, disable the strict checks for the next phase of
    >    experiment.
    >
    > Bug: 410190984
    > Change-Id: I1717e3d37f52387441cf4dadaa6d6267bd503b56
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7613331
    > Commit-Queue: Mikihito Matsuura <mikt@google.com>
    > Reviewed-by: Takashi Sakamoto <tasak@google.com>
    > Cr-Commit-Position: refs/heads/main@{#1592223}

    Bug: 410190984
    Change-Id: I5ba5e22d14685dc86dde302a2206107e65ed1ca5
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7707531
    Commit-Queue: Takashi Sakamoto <tasak@google.com>
    Reviewed-by: Nathan Hebert <nhebert@chromium.org>
    Reviewed-by: Takashi Sakamoto <tasak@google.com>
    Cr-Commit-Position: refs/heads/main@{#1606858}

* [Android] Suppressed false-positive *ForTesting() warning

The warning text:

You might be calling functions intended only for testing from
production code.  If you are doing this from inside another method
named as *ForTesting(), then consider exposing things to have tests
make that same call directly.
If that is not possible, you may put a comment on the same line with
  // IN-TEST
to tell the PRESUBMIT script that the code is inside a *ForTesting()
method and can be ignored. Do not do this inside production code.
The android-binary-size trybot will block if the method exists in the
release apk.
Note: this warning might be a false positive (crbug.com/1196548).
  browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java:110
    public void turnOnSyncForTesting(

* [cr148] Reanchor chromium_src override for removing jumplist on Windows

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ef1b8e326ef6da0bee8235085733ec42f5a9339e

commit ef1b8e326ef6da0bee8235085733ec42f5a9339e
Author: Steven Luong <stluong@chromium.org>
Date:   Tue Apr 14 12:43:55 2026 -0700

    [M148][CUJService] Add journey tracking clear browser history

    Adds the user journey to track when the browser history is cleared via
    the app menu button or through the keyboard accelerator.

    (cherry picked from commit 2dd959bfa7b3d307941fb29e3a479f067262762d)

    Fixed: 495493456, 501149844
    Change-Id: Id3aa9f0f89c73189de06ca083687003204f47637
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7735237
    Commit-Queue: Steven Luong <stluong@chromium.org>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Original-Commit-Position: refs/heads/main@{#1612531}
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7759797
    Commit-Queue: Darryl James <dljames@chromium.org>
    Reviewed-by: Steven Luong <stluong@chromium.org>
    Reviewed-by: Kunal Daftari <kunaldaftari@google.com>
    Cr-Commit-Position: refs/branch-heads/7778@{#600}
    Cr-Branched-From: 77f495ee216d4c3cc784d33658bad4778c0680ee-refs/heads/main@{#1610480}

* [iOS][cr148] Add new IOSAccountSettingServiceFactory registration

Chromium change:
https://chromium-review.googlesource.com/c/chromium/src/+/7684174

commit f6920787716026fa2da62cf1532492628c9743b6
Author: Alexis Hétu <sugoi@chromium.org>
Date:   Tue Mar 24 09:01:29 2026 -0700

    [iOS] Enable sync of Wallet related data on iOS

    This CL enables the components code on iOS for wallet related
    data, settings and valuables.

    In ios/, it sets the required AccountSettingService in
    CommonControllerBuilder to make wallet sync work.

    Bug: 493865594
    Change-Id: Iffec63ac25583e243b6c3b922e9a8b03ee5bc272
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7684174
    Reviewed-by: Norge Vizcay <vizcay@google.com>
    Reviewed-by: Will Harris <wfh@chromium.org>
    Commit-Queue: Alexis Hétu <sugoi@chromium.org>
    Reviewed-by: Rushan Suleymanov <rushans@google.com>
    Cr-Commit-Position: refs/heads/main@{#1604167}

* [cr148][Android] New arg signinButtonCoordinator at ToolbarLayout.initialize

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/45b9c87963d6a0800767ad546268d98415cb84c6

commit 45b9c87963d6a0800767ad546268d98415cb84c6
Author: Sophie Crowley <crowleso@google.com>
Date:   Fri Apr 10 09:59:05 2026 -0700

    [M148] [Signin][Android] Add SigninButton phone transitions

    Original change's description:
    > [Signin][Android] Add SigninButton phone transitions
    >
    > Adds a sliding transition for the NTP SigninButton, e.g. when switching
    > from non-NTP optional button to NTP Signin button, when switching from
    > incognito to button appearing in new non-incognito tab.
    >
    > Emulator screen-recording of transition example found in
    > https://crbug.com/478828569#comment28 and https://crbug.com/478828569#comment29
    >
    > Bug: 478828569
    > Change-Id: I19130b3a239fa51b7d476b818f4fb993bb0c420c
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7686413
    > Reviewed-by: Samar Chehade <samarchehade@google.com>
    > Commit-Queue: Sophie Crowley <crowleso@google.com>
    > Reviewed-by: Matthew Jones <mdjones@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1611555}

    (cherry picked from commit a777d6df94430540ae583f34a478187ee0eb9c88)

    Bug: 500967903,478828569
    Change-Id: I19130b3a239fa51b7d476b818f4fb993bb0c420c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7748521
    Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
    Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Cr-Commit-Position: refs/branch-heads/7778@{#231}
    Cr-Branched-From: 77f495ee216d4c3cc784d33658bad4778c0680ee-refs/heads/main@{#1610480}

* [Android][cr148] New arg omniboxStubSupplier at TopToolbarCoordinator.ctor

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

commit e28da731a062718cc8230cbd5b39acd963eb68a0
Author: Sophie Crowley <crowleso@google.com>
Date:   Fri Apr 10 10:08:35 2026 -0700

    [M148] [Signin][Android] Promptly hide SigninButton on url focus

    Original change's description:
    > [Signin][Android] Promptly hide SigninButton on url focus
    >
    > On phone-like UIs, when the url bar is focused-on all toolbar buttons
    > disappear. SigninButton was also disappearing but took visibly
    > longer to do this than other toolbar buttons - this fixes this.
    >
    > Bug: 478828569
    > Change-Id: I0a9ffd4ff4974a64b675655b0c820759db4a5ff0
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722703
    > Commit-Queue: Sophie Crowley <crowleso@google.com>
    > Reviewed-by: Boris Sazonov <bsazonov@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1611560}

    (cherry picked from commit 338b69f471fbeeabaa6adf679b7f14a33ffeb648)

    Bug: 500967903,478828569
    Change-Id: I0a9ffd4ff4974a64b675655b0c820759db4a5ff0
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7749067
    Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Cr-Commit-Position: refs/branch-heads/7778@{#232}
    Cr-Branched-From: 77f495ee216d4c3cc784d33658bad4778c0680ee-refs/heads/main@{#1610480}

* Revert "[Android] Suppressed false-positive *ForTesting() warning"

This reverts commit 32d066b5936217c6f3a9cf92fc7166cfe35a6fb8.

* [cr148] Disable features flagged by security/privacy team

* [cr148] Update Lit mangler snapshot

* [cr148][Android] Fixed null pointer access while view/edit passwords

* [cr149] `searchbox::mojom::PageHandler` using factory pattern.

This change corrects several places where it is necessary to instantiate
the searchbox page handler to use the now changed factory pattern. This
change fixes both C++ and TS sources for it.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a43ea83a0fe57e9c5ef6edc5b9cdcf3091aa5a12

commit a43ea83a0fe57e9c5ef6edc5b9cdcf3091aa5a12
Author: Caitlin Chen <caitc@google.com>
Date:   Fri Apr 10 15:09:30 2026 -0700

    [searchbox] Refactor searchbox.mojom to a factory pattern.

    This CL refactors the searchbox.mojom to be created in a factory
    pattern. So other handlers/controllers/etc no longer need to call
    setPage() in the constructors.

    All instances that use searchbox::mojom or inherit the SearchboxHandler
    are also refactored.

    b: 435288212
    Change-Id: I014fd14cfdd27811e63317e7d004824239ab4ac1
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7731788
    Reviewed-by: Nihar Majmudar <niharm@google.com>
    Commit-Queue: Caitlin Chen <caitc@google.com>
    Reviewed-by: Tom Sepez <tsepez@chromium.org>
    Reviewed-by: Tibor Goldschwendt <tiborg@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1613128}

* [cr149] Prempting unwanted `SystemMenuModelDelegate` substituions

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/a4ed8801d3c2d2a841ffbe95469e9d85406d7f44

commit a4ed8801d3c2d2a841ffbe95469e9d85406d7f44
Author: Kunal Daftari <kunaldaftari@google.com>
Date:   Tue Apr 14 11:33:28 2026 -0700

    [Vertical Tabs] Keeping Collapsed State for EOH when Bubble/Menu is Open

    This change expands the capabilities of the ExpandOnHoverLock. We want
    to ensure that when a user is in a bubble / menu, we do not expand the
    vertical tab strip.

    On MacOS, it is the case that interacting with either Views or WebUI
    components do not intercept the mouse hover event. So, we need to
    manually add the locks for all applicable situations.

    This includes: Top Container Buttons:
    - Collapse Button Menu
    - Tab Search Button (already handled)
    - Tab Groups Button

    Tab Strip Menus:
    - Tab Context Menu
    - Tab Group Editor Bubble (already handled)
    - System Context Menu

    Bottom Container Button:
    - New Tab Button Context Menu

    Bug: 502197025
    Change-Id: Ic8384b404dac3142045172e5e154104ca2ba842d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7757841
    Reviewed-by: Alison Gale <agale@chromium.org>
    Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    Commit-Queue: Kunal Daftari <kunaldaftari@google.com>
    Cr-Commit-Position: refs/heads/main@{#1614622}

* [cr148] Update Lit mangler snapshot

* [cr148][Android] Changed LocationBarCoordinator.ctor

Removed merchantTrustSignalsCoordinatorSupplier

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/967efc5b3d272b2de4f7ca840b39dca128232e09

commit 967efc5b3d272b2de4f7ca840b39dca128232e09
Author: Eric Lok <lokeric@google.com>
Date:   Wed Apr 15 17:07:53 2026 -0700

    [M148] Site search: small code cleanups

    Small fixes to clean things up.
    1. Move single use setters to constructor
    2. Alphabetize prop entries
    3. Cleanup lint warnings (e.g. no need for @VisibleForTesting if method
       is already named *ForTesting)

    Bug: 499100415
    Change-Id: Ic2180666ece39f2e7271d65908ed86e7b9d1fb4c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7725186
    Auto-Submit: Eric Lok <lokeric@google.com>
    Commit-Queue: Eric Lok <lokeric@google.com>
    Reviewed-by: Sky Malice <skym@chromium.org>
    Cr-Original-Commit-Position: refs/heads/main@{#1610624}
    Bug: 502272278
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7759088
    Cr-Commit-Position: refs/branch-heads/7778@{#759}
    Cr-Branched-From: 77f495ee216d4c3cc784d33658bad4778c0680ee-refs/heads/main@{#1610480}

* [cr148][Android] Fixed build of test targets

Error message:

ERROR at //brave/test/BUILD.gn:518:7: Undefined identifier
  if (enable_commander) {
      ^---------------
See //brave/BUILD.gn:79:34: which caused the file to be included.
  brave_all_unit_tests_deps += [ "//brave/test:brave_unit_tests" ]
                                 ^------------------------------

* [cr148][Android] Fixed `ReviewException is defined multiple times` error

com_google_android_play_review_java was defined in both
brave/third_party/android_deps/
and
third_party/android_deps/,
causing a duplicate class at dex merge time

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/5f97c52a15f3c05ef9d846335da086134547d81f

commit 5f97c52a15f3c05ef9d846335da086134547d81f
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date:   Tue Mar 24 18:00:31 2026 -0700

    Roll android_deps from NDkHoZFBi462KHX9M... to ioujkn6x8xwFvfYki...

    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/android-deps-chromium
    Please CC clank-build@google.com,clank-library-failures@google.com,wnwen@google.com on the revert to ensure that a human
    is aware of the problem.

    To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry

    To report a problem with the AutoRoller itself, please file a bug:
    https://issues.skia.org/issues/new?component=1389291&template=1850622

    Documentation for the AutoRoller is here:
    https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

    Cq-Include-Trybots: luci.chrome.try:android-internal-binary-size;luci.chrome.try:android-internal-rel
    Tbr: clank-library-failures@google.com
    Change-Id: Iba1d8fa566fedc95430bd59e6ddf5ca933425c37
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7698803
    Bot-Commit: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
    Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
    Cr-Commit-Position: refs/heads/main@{#1604515}

* Update patches from Chromium 147.0.7727.117 to Chromium 148.0.7778.60.

* Updated strings for Chromium 148.0.7778.60.

* Fix segmentation fault on launch on macOS

This commit initializes UpgradeWhenIdle in PreMainMessageLoopRun instead
of PreCreateMainMessageLoop. (Sparkle is still initialized in
PreCreateMainMessageLoop.) The reason for this is that UpgradeWhenIdle
references ProfileManager, which as of Chromium 148 isn't available yet
in PreCreateMainMessageLoop.

* [cr148] `AllowWebBluetooth` moved into a delegate

This function is not in `ChromeContentBrowserClient` anymore, but rather it has
been moved into `BluetoothDelegate`. We subclass `ChromeBluetoothDelegate` and
return it in `BraveContentBrowserClient::GetBluetoothDelegate` to handle our
additional behavior.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/3cb4ab67d10e551c2fd9b30c1bdb8cad6bd2d749

commit 3cb4ab67d10e551c2fd9b30c1bdb8cad6bd2d749
Author: wuguobin <wuguobin.1229@bytedance.com>
Date:   Thu Mar 26 09:09:25 2026 -0700

    Move Bluetooth related methods from ContentBrowserClient to BluetoothDelegate

    This CL moves ContentBrowserClient Bluetooth interfaces to
    BluetoothDelegate:
    - AllowWebBluetooth
    - GetWebBluetoothBlocklist
    - IsBluetoothScanningBlocked
    - BlockBluetoothScanning

    Bug: 40117221
    Change-Id: I5f6430ac25f712cbcfa848fe6b8ed48c0aa7f7f8
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7683694
    Auto-Submit: Guobin Wu <wuguobin.1229@bytedance.com>
    Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
    Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
    Reviewed-by: Reilly Grant <reillyg@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1605572}

---------

Co-authored-by: Emerick Rogul <erogul@brave.com>
Co-authored-by: AlexeyBarabash <alexey@brave.com>
Co-authored-by: Jocelyn Liu <yrliou@gmail.com>
Co-authored-by: Sangwoo Ko <sangwoo108@gmail.com>
Co-authored-by: Max Karolinskiy <max@brave.com>
Co-authored-by: Kyle Hickinson <git@kylehickinson.com>
Co-authored-by: Michael Herrmann <michael@herrmann.io>
2026-04-27 19:42:27 +01:00
..