* Add pref and backend support for tab organization model key
Introduce kBraveAIChatTabOrganizationModelKey pref (default:
"chat-automatic") to allow users to choose which model is used
for tab organization. Update CreateTabOrganizationEngineIfNeeded
to read from this pref with fallback to "chat-automatic". Add
unit test for the invalid key fallback path.
* Add tab organization model selector in settings UI
Extract shared LeoModelSelector Lit component from personalization
page. Add tab organization model dropdown that appears when the tab
organization feature flag and pref are both enabled. Gate the tab
organization toggle behind the feature flag. Add localized string
for the model selector label.
* Improve tab focus prompts
When testing local model, found gemma tends to reply topics like
"['📰 News', '💻 Web Development', ... ]" which is failed to be parsed
because of the usage of single quotes on strings.
Improve tab focus prompts to mention valid JSON array and examples for
model to follow.
These classes were hoisted and renamed. This has been replaced in
Chromium as well. This is a mechanical change for Brave, done with the
following script.
```
git grep -lw 'Value::List' | xargs sed -i 's/\bValue::List\b/ListValue/g'
git grep -lw 'Value::Dict' | xargs sed -i 's/\bValue::Dict\b/DictValue/g'
git cl format
```
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6bc468d481835992696083e99e556516fb7f5f80
```
commit 6bc468d481835992696083e99e556516fb7f5f80
Author: Avi Drissman <avi@chromium.org>
Date: Thu Jan 29 22:14:50 2026 -0800
Remove aliases for base::DictValue and base::ListValue
This removes a few last stragglers as well.
Fixed: 478100525
Cq-Include-Trybots: luci.chromium.try:win-official,mac-official,linux-official,android-official,android-desktop-x64-official
Change-Id: If92142b8ab0562a82c609b71c6b2a7665cea6ec6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7513889
Auto-Submit: Avi Drissman <avi@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Owners-Override: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1577038}
```
Issue: https://github.com/brave/brave-browser/issues/52435
Moves initialization of GetComponentExtensionResourceManager data from
BraveExtensionsBrowserClientImpl::Init into BraveBrowserProcessImpl::Init.
BraveExtensionsBrowserClientImpl::Init is called early in the
BrowserProcessImple::Init code and at that point ApplicationLocaleStorage
(which is needed by GetComponentExtensionResourceManager) has not been
created yet. That now happens at the very end of BrowserProcessImple::Init.
So moving the data initialization code to BraveBrowserProcessImple::Init
after it calls BrowserProcessImple::Init.
Chromium change:
https://source.chromium.org/chromium/chromium/src/+/24ba37124af3a5f7b541389fa53c7876290d553f
commit 24ba37124af3a5f7b541389fa53c7876290d553f
Author: Glenn Hartmann <hartmanng@chromium.org>
Date: Thu Dec 11 12:45:21 2025 -0800
Start GlobalFeatures earlier and add more lifecycle hooks.
Notable code changes:
* `GlobalFeatures` initialization is split into 2 phases, with the first
one happening very early in `BrowserProcessImpl::Init()` - before
`ProfileManager` is created. The `CreateGlobalFeaturesForTesting()`
method is correspondingly split in two. For now, the first phase only
initializes `GlobalBrowserCollection`.
* `GlobalFeatures` "core features" initialization is also split into 2,
since `GlobalBrowserCollection` is a core feature needed in tests, and
some tests need to be able to initialize `TestingProfileManager` after
`GlobalBrowserCollection` and before the rest of `GlobalFeatures`.
* `GlobalFeatures` shutdown is split into 2 phases to mirror the
initialization order. The latter shutdown phase only cleans up
`GlobalBrowserCollection` for now, and happens very late - in
particular, after `ProfileManager` and `ResourceCoordinatorParts` are
shut down.
* A few unit tests are updated to sandwich the `TestingProfileManager`
initialization and shutdown between `GlobalFeatures` init and shutdown
phases. This needs to happen in this CL (not a follow-up) because
these tests instantiate their own `TestingProfileManager` and also
rely on Glic `GlobalFeatures` which interact with `ProfileManager` and
`GlobalBrowserCollection`.
* New methods `TestingBrowserProcess::SetUpGlobalFeaturesForTesting()`
and `TestingBrowserProcess::TearDownGlobalFeaturesForTesting()` are
added so test authors (usually) don't need to worry about the specific
init and shutdown order of profile manager, global features, and
resource coordinator parts.
Bug: 467395900
This change does IWYU additions for all cases where `base::DoNothing` is
used. Furthermore, this change removes some of the uses of
`base::DoNothing` as an argument default value in a header, removing the
need to add `callback_helpers.h` to those headers.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/e8436cccafc34d6e4d9c060f682345060579d208https://chromium.googlesource.com/chromium/src/+/227f058d9b9e27370a64b34046d71b9f23106409
commit e8436cccafc34d6e4d9c060f682345060579d208
Author: Lei Zhang <thestig@chromium.org>
Date: Fri Dec 12 15:16:22 2025 -0800
Forward declare base::ScopedClosureRunner in some Blink headers
Avoid including base/functional/callback_helpers.h when not needed. Also
use base/functional/callback_forward.h since callback_helpers.h was
providing callback.h. For scrollable_area.h, make this possible by
getting rid the default arguments to PerformSnapping(),
SnapAtCurrentPosition(), and SnapForEndPosition(). These methods have
very few callers, so just pass in all the arguments. Then do IWYU to fix
the build.
Change-Id: I5cfd017bd6f392b0d97e99c41d4885fac7140a4c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7254408
Commit-Queue: Philip Rogers <pdr@chromium.org>
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Christoph Schwering <schwering@google.com>
Reviewed-by: Robert Flack <flackr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1558318}
commit 227f058d9b9e27370a64b34046d71b9f23106409
Author: Lei Zhang <thestig@chromium.org>
Date: Thu Dec 11 21:30:12 2025 -0800
Do IWYU for callback_helpers.h in async_dom_storage_database.cc
Add callback_helpers.h for base::DoNothing() usage. The transitive
include that makes this work as-is will be deleted in the near future.
Change-Id: Id5ba6db705434734a854874923b7bb196392ca6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7253640
Commit-Queue: Mingyu Lei <leimy@chromium.org>
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Mingyu Lei <leimy@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1557849}
This commit adds a new user preference that allows users to disable the
middle-click-to-close tab functionality, addressing user feedback that
accidental middle-clicks can cause unwanted tab closures.
Changes include:
**Browser Preferences:**
- Add kTabsCloseOnMiddleClick pref (default: true) in brave_tab_prefs.h
- Register preference in brave_prefs_util.cc for settings UI exposure
**UI Implementation:**
- Extend TabSlotController interface with CanCloseTabViaMiddleButtonClick()
- Implement pref checking in BraveTabStrip via base class override
- Override TabSlotController methods in tab_strip.h/cc to respect preference
- Add chromium_src overrides for FakeTabSlotController and FakeBaseTabStripController
to support testing infrastructure
**Tab Click Handling:**
- Patch tab.cc to check controller preference before handling middle clicks
- Use plaster.toml rewrite for cleaner code transformation
- Maintain existing behavior when preference is enabled (default)
**Settings UI:**
- Add "Close tabs on middle click" toggle to Appearance > Tabs settings
- Include localized strings in brave_settings_strings.grdp
* Add enable_brave_wallet GN variable and build flag
This adds a new GN build flag 'enable_brave_wallet' that can be set to
false to exclude Brave Wallet from the build. The flag is true by default
to maintain current behavior.
Changes include:
- Add enable_brave_wallet declare_args in build/config/BUILDCONFIG.gn
- Create brave_wallet/common/buildflags with ENABLE_BRAVE_WALLET flag
- Update all BUILD.gn and sources.gni files to use the new flag
- Add wallet buildflags dependencies via minimal one-line imports
* Add patches for wallet buildflags in Chromium BUILD files
Adds minimal one-line patches to import wallet buildflags dependencies
in Chromium source files. This allows Chromium code to conditionally
depend on wallet headers.
Patches:
- chrome/browser/ui/hid/BUILD.gn
- net/BUILD.gn
- third_party/blink/common/BUILD.gn
- third_party/blink/public/common/BUILD.gn
- third_party/blink/renderer/modules/permissions/BUILD.gn
* Guard wallet code in Chromium source overrides
Updates chromium_src overrides to conditionally compile wallet-related
code based on enable_brave_wallet flag. This includes:
- Adding DEPS files to allow buildflags dependencies
- Guarding wallet permission handling with #if BUILDFLAG(ENABLE_BRAVE_WALLET)
- Keeping wallet permission enum values unconditionally to maintain profile
interchangeability between wallet-enabled and wallet-disabled builds
- Updating component registration and preference handling
Key changes:
- Permission enums remain stable across build configs for UMA and persistence
- Wallet permission handling code only compiled when wallet enabled
- DEPS files updated to allow buildflags includes
* Guard wallet UI code in front-end TypeScript and Mojom
Conditionally compiles wallet-related UI code in TypeScript and Mojom
interfaces based on enable_brave_wallet preprocessor flag.
Changes:
- Settings menu: Use lastInserted pattern for menu item ordering
- Page visibility: Guard wallet page visibility checks
- Browser commands: Guard wallet command handling
- Routes: Conditionally include wallet routes
- Add non-null assertions for DOM insertions in TypeScript
- Update Mojom interfaces to conditionally include wallet enums
Front-end code uses <if expr="enable_brave_wallet"> preprocessor
directives to exclude wallet UI when the feature is disabled.
* Guard wallet usage in non-wallet Brave code
Conditionally compiles wallet-related code in non-wallet Brave files
based on enable_brave_wallet build flag.
Changes include:
- browser/: Guard wallet service factories, preferences, and helpers
- components/: Guard wallet dependencies in rewards, sidebar, and DNS
- renderer/: Conditionally register wallet content settings
- utility/: Guard wallet component registration
- ios/: Add optional chaining for wallet feature flags
- test/: Guard wallet-related test code
Key files:
- brave_stats_updater.cc: Guard wallet pref registration with #if
- brave_profile_prefs.cc: Conditionally register wallet preferences
- sidebar_service.cc: Guard wallet panel items
- iOS WalletConstants.swift: Use optional chaining for feature checks
This allows building Brave without wallet while maintaining profile
compatibility between wallet-enabled and wallet-disabled builds.
* Add static_assert for ENABLE_BRAVE_WALLET in wallet headers
Adds compile-time assertions to wallet headers to ensure they are only
included when wallet is enabled. This prevents accidental usage of wallet
APIs when enable_brave_wallet=false.
Added static_assert(BUILDFLAG(ENABLE_BRAVE_WALLET)) to:
browser/brave_wallet/ (11 files):
- asset_ratio_service_factory.h
- brave_wallet_context_utils.h
- brave_wallet_ipfs_service_factory.h
- brave_wallet_provider_delegate_impl.h
- brave_wallet_service_factory.h
- brave_wallet_tab_helper.h
- meld_integration_service_factory.h
- wallet_notification_service_factory.h
- simulation_service_factory.h
- swap_service_factory.h
- wallet_data_files_installer_delegate_impl.h
components/brave_wallet/browser/ (15 files):
- brave_wallet_p3a_private.h
- brave_wallet_prefs.h
- brave_wallet_service.h
- brave_wallet_utils.h
- ens_resolver_task.h
- json_rpc_service_test_utils.h
- json_rpc_service.h
- keyring_service_observer_base.h
- keyring_service.h
- network_manager.h
- permission_utils.h
- pref_names.h
- test_utils.h
- tx_service.h
- wallet_data_files_installer.h
components/brave_wallet/common/ (6 files):
- brave_wallet_types.h
- common_utils.h
- eth_abi_utils.h
- features.h
- hex_utils.h
- pref_names.h
Also includes minor wallet code updates to use buildflags and
guard zcash-specific test code.
* Follow up fixes after Parts 1-7
This affects a few file inclusion and the introduction of a factory for
the instantiation of one fo the classes, but all this is very minimal,
and straight up mechanical changes. The exception is that
install_verifier.cc override is including code from
brave/browser/extensions which would now be a layering violation. To
avoid adding new patches for dependencies, moved the content of
brave/browser/extensions/manifest_v2/brave_hosted_extensions.h/cc into
chromium_src overrides of extensions/browser/extension_util.h/cc.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/ad059894f54753f71cf686fa67677339254921b4
commit ad059894f54753f71cf686fa67677339254921b4
Author: Miyoung shin <myid.shin@igalia.com>
Date: Fri Oct 17 06:55:39 2025 -0700
Move InstallVerifier and related install* files to //extensions
as they no longer depend on //chrome.
This CL does not introduce any behavior changes, but it adds interfaces
for plumbing to ExtensionManagement in ExtensionsBrowserClient.
Bug: 358567092
Change-Id: I38faba23335364c47a4f93c3d886d03dd44586a7
Bypass-Check-License: Moving files
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7005871
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1531391}
This used to be a `std::string`.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/79167e224d3cd322af1031bb0124212580e7cde8
commit 79167e224d3cd322af1031bb0124212580e7cde8
Author: Jaewon Jung <jw.jung@navercorp.com>
Date: Thu Oct 2 19:04:02 2025 -0700
Use std::u16string for Extension::Create() error parameter
The `Extension::Create()` method and its callers used `std::string` for
the error output parameter, leading to unnecessary conversions between
UTF-8 and UTF-16.
This change migrates the error parameter to `std::u16string` across
the call stack. This eliminates string conversions, simplifying the
code and improving consistency. In a few places where a `std::string`
is still required, a temporary conversion is performed.
Signed-off-by: Jaewon Jung <jw.jung@navercorp.com>
Bug: 41317803
Change-Id: Ia660ca60834f233eca82e8f2b65961cce48230d6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6975452
Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1524554}
This PR does some IWYU for `base/memory/scoped_refptr.h` under
`//brave/browser`. This uses the standard script with the following
dataset:
```
HEADER_FUNCTION_SETS = [
(
'"base/memory/scoped_refptr.h"',
(
"scoped_refptr",
),
),
]
```
Bug: https://github.com/brave/brave-browser/issues/42212
* Add pref to always hide tab close button
Some users prefer a cleaner tab appearance without close buttons, as
they close tabs using other methods (e.g., middle-click, shortcuts).
So close button could be no more than a visual distraction or accidental
click.
This commit introduces a new preference that allows users to always hide
the tab close button.
* Introduce ControllableCloseButtonState
This is a sort of decorator class that wraps bool showing_close_button_
so that we can consider additional factors when determining whether to show
the close button, such as whether the mouse is hovering over the tab,
or whether the controller wants to always hide the close button.
Resolvesbrave/brave-browser#40863
With this PR, we use chromium's browser theme instead of ours.
Removed all our dark mode handling code.
Only left dark mode value in local state for migration.
BraveCustomzieColorSchemeModeHandler was introduced to set user's theme choice
to our local state prefs instead of chromium's profile color scheme. Removed.
All our changes to NativeTheme are removed.
Migrated current dark theme mode to per-profile browser color scheme.
ThemeService migrates only once.
After it's migrated, browser will have per-profile theme mode like chromium does.
TEST=BraveThemeServiceTest.BraveDarkModeMigrationTest
* Add AI Chat build flag to components/ai_chat
* Add AI Chat build flag to browser/ui
* Add AI Chat build flag to browser/resources
* Add AI Chat build flag to chromium overrides
* Add AI Chat build flag to other components
* Add AI Chat build flag to core browser files
* Add AI Chat build flag to app and renderer
* Add AI Chat build flag to remaining files
* Set enable_ai_chat to !is_brave_origin_branded
* Review comments
Including gn_check errors in chromium_src
* Exclude ai_chat Jest tests when not enabled
Remove Super Referrals web UI. The feature is no longer supported or
used, and this cleanup helps reduce unused code and simplify the overall
system as part of https://github.com/brave/brave-browser/issues/44403.
Add OllamaService connection check with factory and preferences
This change introduces a dedicated OllamaService for managing
communication with local Ollama instances:
- Add OllamaService with IsConnected() method to check Ollama
availability at localhost:11434
- Add OllamaServiceFactory as ProfileKeyedServiceFactory for
proper lifecycle management
- Add ollama.mojom interface defining kOllamaBaseUrl constant
and OllamaService mojo interface
- Add comprehensive unit tests for connection scenarios
- Add kBraveAIChatOllamaFetchEnabled preference for user control
- Register OllamaServiceFactory in browser context initialization
- Add preference to settings_private allowlist for WebUI access
- Add browser/ai_chat/ollama directory with factory implementation
- Wire up OllamaService dependency in content/browser layer
The service performs lightweight connection checks (1KB max) to
verify Ollama availability before enabling fetch functionality.
Issue: brave/brave-browser#40863
This is the effort to reduce the size of #31939
and only removes already deprecated codes that refers brave dark theme api.
This PR corrects several places where `BASE_FEATURE` is being used to
rely on the two-arg variant of this macro. This particular PR has no
functional changes, and the only feature declarations affected are the
ones for which the feature-name constant, and the actual value are
identical.
The particular issue for this will be left open so subsequent work for
the other features can be followed up on.
Bug: https://github.com/brave/brave-browser/issues/50492
Callsites to this function are now expected to provide the options
value. This change corrects all callsite to the previous default value,
`JSON_PARSE_CHROMIUM_EXTENSIONS`.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/cdb7175c83d9cc319e437da48836ae961cac4adc
commit cdb7175c83d9cc319e437da48836ae961cac4adc
Author: Daniel Cheng <dcheng@chromium.org>
Date: Thu Sep 25 08:39:08 2025 -0700
Remove base::JSONReader::ReadDict's default argument for parsing options
Callers should be explicit if they need to opt into non-compliant JSON
parsing that allows Chromium-specific extensions, e.g. comments.
Bug: 446188265
Change-Id: If70a198e7c1266ec22e8ef6dc6c38b01504bb530
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6976572
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1520631}
- Everything in `browser` moves to `content/browser`
- Everything in `renderer` moves to `content/renderer`
- Everything in `common` moves to `core/common`
- `pref_names.h` moved into `core/common`
- Fixed copyright notice in `playlistSelect.tsx`
Rename pref/features to try to make them more clear. `Enable` means that the site will open in Speedreader automatically. `Allow` means it may open in Speedreader depending on whether it's a site specific override or allow for all readable urls is true and the url looks readable.
* Ad block only mode settings UI
The PR adds “Adblock only mode” alert box and a
“Adblock only mode” toggle to Brave Shields
Settings page.
---------
Co-authored-by: Terry Mancey <terry.mancey@icloud.com>
Co-authored-by: Jay Harris <jay.harris@outlook.co.nz>
This change adds `[[clang::no_destroy]]` to all places where
`-Wexit-time-destructors` has caused an error. This is a mechanical
change, and the individual cases must be fixed separately.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/62849b7b1a562b823e34e64ec54b9724dc88cbfd
commit 62849b7b1a562b823e34e64ec54b9724dc88cbfd
Author: Claudio DeSouza <cdesouza@chromium.org>
Date: Mon Aug 25 07:58:19 2025 -0700
Reland "[exit-time-destructors] Enable by default"
This reverts commit cfbf29170f0b3e73e580d291085c188f8aa8cfa0.
The cause for the revert was breakage elsewhere that needed exclusions,
which are being handdled in https://crrev.com/c/6863758
Bug: 40031409, 430332953
Original change's description:
> Revert "[exit-time-destructors] Enable by default"
>
> This reverts commit 180c32cb5158bb4039235288b38813697b757e1a.
>
> Reason for revert: Broke the build on some bots:
> https://ci.chromium.org/ui/p/chromium/builders/ci/chromeos-arm-generic-rel/148963/overview
>
> Bug: 40031409, 430332953
> Original change's description:
> > [exit-time-destructors] Enable by default
> >
> > This CL enables `-Wexit-time-destructors` as a default warning in
> > Chromium. As the value of `is_wexit_time_destructors_default` is being
> > flipped, it is expected that the old config, `wexit_time_destructors`,
> > which was a opt-in, will become no-op, while the newly introduced
> > opt-out config will have its effect in places with pending issues.
> >
> > There are exclusions being added to `warning_suppression.txt` for
> > certain paths under `//third_party/`. These entries attempt to be the
> > narrowest possible. Work is under way to eliminate completely the need
> > for these, but this is in general slow (although fixes have been merged
> > into dawn, v8, and pdfium).
> >
> > Bug: 40031409, 430332953
> > Change-Id: I0c01c1e4ef8dfdcc319538cbda7991f364a6f22c
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6826535
> > Reviewed-by: Devon Loehr <dloehr@google.com>
> > Commit-Queue: Claudio DeSouza <cdesouza@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#1502919}
>
> Bug: 40031409, 430332953
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Change-Id: Icefe8b2206147767f0c074362e995af2030a1fd6
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6860282
> Auto-Submit: Thomas Guilbert <tguilbert@chromium.org>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Devon Loehr <dloehr@google.com>
> Cr-Commit-Position: refs/heads/main@{#1502936}
Bug: 40031409, 430332953
Change-Id: Ib556482a0b31814107eafe3620af13e0d272cd76
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6859042
Reviewed-by: William Liu <liuwilliam@chromium.org>
Reviewed-by: Devon Loehr <dloehr@google.com>
Commit-Queue: Claudio DeSouza <cdesouza@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1505863}
This commit migrates the SplitView implementation from using individual
views for secondary content management to utilizing the centralized
BraveContentsContainerView. This change eliminates code duplication and
improves maintainability by leveraging existing infrastructure.
**Key Changes:**
** SplitView Architecture Refactoring:**
- Replace direct management of secondary_contents_web_view_,
secondary_devtools_web_view_, secondary_reader_mode_toolbar_,
secondary_lens_overlay_view_, and secondary_contents_scrim_view_
- Migrate to using a single BraveContentsContainerView instance that
encapsulates all secondary content management
** View Hierarchy Simplification:**
- secondary_contents_container_ (raw View) → secondary_contents_container_view_
(BraveContentsContainerView)
- All secondary view access now goes through the container view's accessors
- Unified layout management through BraveContentsContainerView
**Benefits:**
- Reduces code duplication between primary and secondary content management
- Leverages existing ContentsContainerView infrastructure for DevTools,
scrim views, lens overlay, and reader mode toolbar
- Simplifies view hierarchy and improves maintainability
- Better separation of concerns with centralized content management
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/882390718fb07923d842e4d50886bbac7b0b57ac
commit 882390718fb07923d842e4d50886bbac7b0b57ac
Author: Devlin Cronin <rdevlin.cronin@chromium.org>
Date: Tue Aug 5 11:04:21 2025 -0700
[Extensions] Remove kExtensionManifestV2DeprecationWarning
Remove the kExtensionManifestV2DeprecationWarning base::Feature. This
was launched by default last July in M128, so can be safely removed.
This CL simply removes the feature and any effectively-dead code (any
code conditional on the feature being false). It also removes the
MV2ExperimentStage::kNone entry, since this is now effectively
unreachable (every user is in at least the kWarn stage).
We can *also* remove a lot of the functionality here, because we only
warn users once, and only if they aren't in a higher experiment stage.
However, that clean up will come later.
This ensures this CL remains an effective no-op for any Chromium users.
Bug: 431097630
Change-Id: I591331297598e2340721f01b769e2dd7859443fa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6771668
Reviewed-by: Emilia Paz <emiliapaz@chromium.org>
Commit-Queue: Devlin Cronin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1497036}
* Add pref to control "Hide vertical tabs completely when collapsed" feature
This PR adds a new preference to control the "Hide vertical tabs
completely when minimized" feature.
The list was not updated nor maintained, and even had invalid entries.
On device which uses a local ML model was tied to this preference for some reason too, so that keeps the preference around and has a checkbox for just that now.
For Android, it doesn't support on device suggestions because the ML
models aren't available there, so no checkbox was added there.
* Added extensions mv2 settings backup.
Added ExtensionsManifectV2Migrator which observes webstore extensions. When it detects certain extension is disabled by unsupported manifest version reason, it stores the Local Extension Settings and IndexedDB settings to ExtensionsMV2Backup directory in the browser profile.
Boolean feature param import_settings [requires backup_settings to be enabled]:
If enabled, ExtensionsManifectV2Migrator observes the brave-hosted extensions installation events. When brave-hosted extension in installed and there is the settings backup then ExtensionsManifectV2Migrator imports settings to the newly installed extension.
* Add top level toggle to enable/disable Speedreader
This migrates away an old bad named feature for automatically using
speedreader for all sites. The pref was wrongly named `enabled`.
This also adds a new preference for actually enabling/disabling the
feature.
* Fixes Android presubmit
---------
Co-authored-by: Serg <serg.zhukovsky@gmail.com>