185 Commits
Author SHA1 Message Date
Darnell Andries 075088f2a4 Add Email Aliases metrics (#36469)
* Add metrics for Email Aliases

* Add notes and copy metrics for email aliases

* Presubmit fix

* fix ups

* Add tests

* Address PR feedback

* Pass metrics remote as a prop
2026-05-28 11:37:29 -07:00
Brian CliftonandBrian Johnson b349cfc012 Workspaces - phase 1 (#36059)
* Introduce a workspace service for serializing open windows/tabs.

---------

Co-authored-by: Brian Johnson <34129+bridiver@users.noreply.github.com>
2026-05-20 09:14:00 -07:00
Szilard Szaloki 393ce6ed87 Email Aliases: fix Guest profile crash (#36559) 2026-05-20 13:42:43 +07:00
Alex 1587d2171a [VPN 2.0] Split BraveVPNService into interface and implementation (#36462)
[VPN 2.0] Split BraveVpnService into interface and implementation

To add a new BraveVpnService implementation based on Architecture 2.0,
which must co-exist with Architecture 1.0 for quite a while, we need
to split service's interface and implementation. All the external
components will keep accessing VPN service via the BraveVpnService
interface, but the implementation mostly goes into BraveVpnServiceImpl.

BraveVpnService is a concrete base that implements bookkeeping shared
by both architectures: mojo remote creation and observer management.
The lion's share of functionality is kept in the implementation; if
it becomes duplicated eventually, we can move it to the base later.

This change is a preparatory step to introduce the second (Arch 2.0)
implementation of BraveVPNServiceImpl, which could be selected at
compile time, or (later) at runtime too.

Other notable changes:
- Revised and moved the public VPN service API to BraveVpnService.
- BraveVpnService base is comprehensively covered by unit tests.
- Removed a BraveVpnMetrics::Delegate method dependency in external
  components.
- BraveVPNServiceTest test fixture renamed to
  BraveVpnServiceImplV1Test.

Implements part of brave/brave-browser#54597
2026-05-19 13:53:54 -04:00
Alex 15224491ad [VPN 2.0] Rename BraveVpnService to BraveVpnServiceImpl (#36465)
To add a new BraveVPNService implementation based on Architecture 2.0,
which must co-exist with Architecture 1.0 for quite a while, we need
to split service's interface and implementation. All the external
components will keep accessing VPN service via the BraveVPNService
interface, but the implementation mostly goes into BraveVPNServiceImpl.

This is the first step: renaming the existing service, to minimize
diffs in the next PR, where the concrete base class appears.

No changes in the business logic, pure renaming.

Implements part of https://github.com/brave/brave-browser/issues/54597
2026-05-15 09:00:45 -04:00
Aleksei Khoroshilov b225040fe1 Add temporary containers. (#36060)
* Add temporary containers.

* Add few more sync-related tests.
2026-05-08 13:33:35 +07:00
Szilard Szaloki f39dc03561 Account/Email Aliases: add profile-scoped enabled predicates (#36262) 2026-05-07 23:02:37 -07:00
Kevin Smith 6fc74a3dc3 [FocusMode] Add feature flag, command, and stub controller (#35904) 2026-04-29 10:59:45 -04:00
Brian R. Bondy 39fc9c7d94 Gate Playlist UI on BravePlaylistEnabled policy (#35823)
* Gate Playlist UI on BravePlaylistEnabled policy

Complements #35732, which hides Playlist via the enable_playlist buildflag
in is_brave_origin_branded=true builds, by also hiding the Playlist UI in
is_brave_origin_branded=false builds when an administrator disables it
via the BravePlaylistEnabled policy (kPlaylistEnabledPref managed=false).

Adds playlist::IsPlaylistEnabled(prefs) / IsDisabledByPolicy(prefs)
helpers alongside existing features.h / pref_names.h, mirroring the iOS
PrefService.isPlaylistAvailable check and the ai_chat::IsAIChatEnabled
pattern. The helper is used to gate the sidebar item, side panel
coordinator and entry, browser action, playlist command, tab helper,
page action icon, and the chrome-untrusted://playlist WebUI.

The SidebarService now observes kPlaylistEnabledPref so the item appears
and disappears when policy changes at runtime.

User-driven pref toggles from settings keep their existing behaviour
(UI stays reachable so the user can flip the pref back); only a managed
pref forced off hides the UI.

Fixes brave/brave-browser#50156

* Address review: move IsPlaylistAllowed out of common, simplify settings bools

- Relocate playlist::IsPlaylistEnabled from components/playlist/core/common
  (which is reachable from any process) to a new components/playlist/core/browser
  target, since the helper depends on PrefService (browser-only). Rename the
  function to IsPlaylistAllowed to match its semantics (feature flag is enabled
  and the pref is not policy-disabled), matching bridiver's suggestion that
  "allowed" = managed+feature, "enabled" = user toggle.
- Update all callers and BUILD/DEPS wiring for the new location.
- In brave_settings_ui.cc, stop combining the feature flag and the user pref
  into a single isPlaylistAllowed loadTimeData bool. Instead expose
  isPlaylistFeatureEnabled and isPlaylistDisabledByPolicy (the Tor pattern),
  and let settings page code consult the pref directly via the prefs mixin
  when it needs the managed state. page_visibility.ts now computes playlist
  visibility from the two building blocks.
2026-04-28 12:27:56 -04:00
Claudio DeSouza f3ed73cef1 [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}
2026-04-27 12:00:45 +01:00
Brian R. Bondy fe1a9add88 Add enable_playlist buildflag gated on is_brave_origin_branded (#35732)
Introduces enable_playlist (defaults to !is_brave_origin_branded),
following the same pattern as enable_brave_wallet and enable_ai_chat,
to gate all Playlist code from compilation on origin-branded desktop
builds. enable_playlist_webui now chains through enable_playlist.

Changes are scoped to desktop: iOS and Android don't support
is_brave_origin_branded=true (enforced by asserts in
//brave/components/brave_origin/buildflags/buildflags.gni), so they
have no guards.
2026-04-23 08:23:26 -04:00
Pavel Beloborodov ebbb41978f Added ENABLE_EMAIL_ALIASES buildflag. (#35528)
* Added ENABLE_EMAIL_ALIASES buildflag.
2026-04-20 20:33:07 +07:00
Max Karolinskiy 6d0cdbbb35 [cr147] Fixes missing call to base class in method override.
This was discovered due to the following upstream tests failing:
* BrowserCommandControllerBrowserTest.DisableFind
* PrintPreviewBrowserTest.PrintCommands

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/73da2407154e4fbb573ae8909dfb639daef2691b

commit 73da2407154e4fbb573ae8909dfb639daef2691b
Author: Steven Luong <stluong@chromium.org>
Date:   Thu Feb 12 09:50:10 2026 -0800

    [TabRendererData] Remove TabStripModel::OnTabBlockedStateChange()

    Consolidate the tab blocked state to be another tab change type. This
    is needed to eventually move all tab change related code out of the
    TabStripModel.

    Fixed: 483478261
2026-03-26 19:25:11 -04:00
Simon HongandSangwoo Ko 5a93904f1c Enabled immersive fullscreen mode on macOS (#34663)
Resolves brave/brave-browser#53601

Enables macOS immersive fullscreen (auto-hiding toolbar on hover) for the browser
when horizontal tabs are in use. When vertical tabs are active, immersive fullscreen
is disabled and the browser falls back to standard fullscreen behavior. Additionally,
switching to vertical tab mode is blocked while the browser is in fullscreen.

Immersive fullscreen and vertical tab mode both use their own separate widgets for
hosting the tab strip, which means both refer to the same tab strip simultaneously.
This conflict requires more work to resolve properly, so immersive fullscreen is
disabled when vertical tabs are active for now.

IDC_TOGGLE_VERTICAL_TABS command enabled state is used as the single source of truth
for whether the vertical tabs toggle is available. BraveBrowserCommandController
overrides UpdateCommandsForFullscreenMode() to disable this command on macOS when
entering fullscreen. All surfaces — ToggleVerticalTabStrip(), the tab strip context
menu, the system menu, IsVerticalTabToggleEnabled(), and the settings page — derive
their state from this command rather than querying fullscreen state independently.
BraveAppearanceHandler implements CommandObserver to watch IDC_TOGGLE_VERTICAL_TABS
and push state changes to the settings UI via a WebUI event.

TEST=BraveBrowserCommandControllerTest.VerticalTabToggleEnabledState

Co-authored-by: Sangwoo Ko <sangwoo108@gmail.com>
2026-03-17 15:08:48 +09:00
Claudio DeSouza 821d15251d [cr145] Several TabStripModel methods using TabInterface
This change in upstream has affected several places where these methods
were being extended. Most changes involve now using `TabInterface`,
rather than `WebContents`.

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

commit fdb26aae9fcf18a4065d95f88da9677b71ed6512
Author: Eshwar Stalin <estalin@chromium.org>
Date:   Tue Dec 30 15:57:18 2025 -0800

    Updating TabStripModel observer methods for consistency

    Renaming some of the functions for consistency. Also switching some of
    the functions from using content::WebContents to tabs::TabInterface to better align with the long term direction.

    Change-Id: I3b3cf44f02ed6036282adb132fcfe204853d8a13
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7350719
    Commit-Queue: Eshwar Stalin <estalin@chromium.org>
    Reviewed-by: David Pennington <dpenning@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1563530}
2026-01-29 13:40:54 -05:00
Jay Harris def9385918 [commands]: Expose force paste for shortcuts (#33403) 2026-01-28 01:09:08 +00:00
Arthur Edelsteinandboocmp 31f460e297 Email Aliases: Add application menu item (#31701)
Implement the Email Aliases menu item in the application menu at
    Hamburger menu > Passwords and Autofill > Email Aliases.
    This menu item is only visible when the EmailAliases flag is enabled.

    When the user clicks on this item, the Email Aliases settings page
    opens at brave://settings/email-aliases

    Similar to other menu items in the application menu, this menu item
    includes an icon for Email Aliases service.

    Two browser tests:
    - EmailAliasesMenuInsertion
    - EmailAliasesOpensSettings

Co-authored-by: boocmp <boocmp@yandex.ru>
2026-01-19 13:20:51 +07:00
Brian R. Bondy 4049b8799f Add enable_brave_news buildflag (#32852) 2026-01-12 13:22:17 -05:00
Brian R. Bondy facb8df1e1 Add Brave talk build flag (#32917)
* Add Brave talk buildflag

* Review comments
2025-12-23 09:16:42 -05:00
Brian R. Bondy f0656b06f9 Consolidate pref_names.h files (common -> browser) (#32603)
Consolidate pref_names duplicates (common -> browser)
2025-11-29 22:15:10 -05:00
Brian R. Bondy a4d9248fcb Add enable_brave_wallet gn var and build flag (#32484)
* 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
2025-11-28 15:54:27 -05:00
Brian Johnson 4c93eabc99 [CodeHealth] Remove circular includes from layout_constants (#32245)
Move constants into upstream overrides to simplify dependencies
2025-11-12 01:52:38 +01:00
Brian R. Bondy 72cadbd0c6 AIChat build flag and gn var (#31988)
* 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
2025-11-11 11:20:34 -05:00
Simon Hong 345f3788c6 Removed brave split view (#31871)
Resolves brave/brave-browser#50260

Deleted whole BraveSplitView feature implementation
as our split view feature is based on SideBySide.
No behavioral changes as it's already disabled by default.
2025-10-22 12:31:56 +09:00
Brian R. Bondy 2b6290a1bf Fix enable_tor=false build (#31809) 2025-10-15 17:58:38 -04:00
Kyle Hickinson b049fa48f7 [Playlist] Convert to a layered component (#31639)
- 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`
2025-10-06 19:14:46 +01:00
Brian Johnson 7989acf16f [Speedreader] Cleanup pref/feature/method naming (#31415)
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.
2025-09-30 08:07:18 -07:00
Claudio DeSouza 7de80209f2 [cr141] IDC_TOGGLE_VERTICAL_TABS added upstream
This change removes our own verticle toggle constant, as this was
conflicting with the upstream one.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/4851fb185d0d297ed313bd379fb42d5ef0c3cbca

commit 4851fb185d0d297ed313bd379fb42d5ef0c3cbca
Author: Kunal Daftari <kunaldaftari@google.com>
Date:   Wed Aug 27 14:02:37 2025 -0700

    Vertical Tabs: Entry Point (Switch Tabs to Side Button + Interactive UI Test)

    The following CL includes the addition of a "switch tabs to the side"
    button in the tab strip context menu. Currently, the button is able to
    switch from the horizontal interface to the vertical one. The goal of
    the interactive UI Test is to click the "switch tabs button" and to
    check that the UI properly updated.

    NO_IFTTT=linter is not applicable

    Bug: 439587928
    Change-Id: Idee393d910bca74c905a3c31c86b4b3b768d2507
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6871202
    Reviewed-by: David Pennington <dpenning@chromium.org>
    Commit-Queue: Kunal Daftari <kunaldaftari@google.com>
    Reviewed-by: Darryl James <dljames@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1507360}
2025-09-22 14:59:57 -04:00
Claudio DeSouza 21090e4476 [cr140] BrowserCommandController owned by BrowserWindowFeatures
This class is overriden in Brave, and therefore requires a substitution
during instantiation. This substitution has moved from `Browser` and
into `BrowserWindowFeatures`.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/58bd9542429a22cf1ce4b8913933a22e69de7284

commit 58bd9542429a22cf1ce4b8913933a22e69de7284
Author: Alex Carutasu <alcaruta@microsoft.com>
Date:   Tue Jul 29 16:56:25 2025 -0700

    [bedrock] Migrate BrowserCommandController to BrowserWindowFeatures

    This CL moves BrowserCommandController ownership from Browser to
    BrowserWindowFeatures.

    Notes:
    - BrowserCommandController is now destroyed during the destruction of
    BrowserWindowFeatures, so resetting the BrowserCommandController field
    manually in its owner's destructor is no longer necessary since
    ~Browser()'s body already explicitly resets BrowserWindowFeatures.

    - I also removed a couple stale friended test classes from browser.h
    that were related to BrowserCommandController.

    Bug: 431668289
    Change-Id: I08df68363b64e03331708341081cace90aa2a60b
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6785957
    Reviewed-by: Tom Lukaszewicz <tluk@chromium.org>
    Reviewed-by: Keren Zhu <kerenzhu@chromium.org>
    Commit-Queue: Alex Carutasu <alcaruta@microsoft.com>
    Cr-Commit-Position: refs/heads/main@{#1493873}
2025-08-19 19:54:33 +01:00
Claudio DeSouza 53e9088f13 [cr140] Passing metric arg to chrome::NewSplitTab
This metric argument is being collected by chromium however it seems to
be irrelevant for brave.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/358549c15a65c5900132b4867897d1360cc5acac

commit 358549c15a65c5900132b4867897d1360cc5acac
Author: Alison Gale <agale@chromium.org>
Date:   Wed Jun 25 10:27:16 2025 -0700

    Reland "[SxS] Flush out metrics for split tab creation"

    This reverts commit 98904ac05447db9b5ab010454b20672de4bacb94.

    Correct rollback for the original breakage was:
    https://chromium-review.googlesource.com/c/chromium/src/+/6662662

    Reason for revert: Incorrect culprit was reverted
    Bug: 406792705

    Original change's description:
    > Revert "[SxS] Flush out metrics for split tab creation"
    >
    > This reverts commit e4eb581c5cd610ad820587942bc2563211e82874.
    >
    > Reason for revert: Step "browser_tests (retry shards) on Ubuntu-22.04" failing on builder "chromium/ci/Linux ChromiumOS MSan Tests"
    > https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20ChromiumOS%20MSan%20Tests/53079/test-results
    >
    > Bug: 406792705
    > Original change's description:
    > > [SxS] Flush out metrics for split tab creation
    > >
    > > With an exhaustive UMA located in the same spot of the TabStripModel,
    > > the previous user action is redundant.
    > >
    > > Bug: 406792705
    > > Change-Id: I148255d63f5f5c3739031a380519fc90fb87c896
    > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6651221
    > > Reviewed-by: Finnur Thorarinsson <finnur@chromium.org>
    > > Reviewed-by: David Roger <droger@chromium.org>
    > > Commit-Queue: Alison Gale <agale@chromium.org>
    > > Reviewed-by: Eshwar Stalin <estalin@chromium.org>
    > > Cr-Commit-Position: refs/heads/main@{#1477378}
    >
    > Bug: 406792705
    > No-Presubmit: true
    > No-Tree-Checks: true
    > No-Try: true
    > Change-Id: Idec6302c68cc9ec171e21ea1140e86b88a770d26
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6665201
    > Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    > Owners-Override: S Ganesh <ganesh@chromium.org>
    > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    > Auto-Submit: S Ganesh <ganesh@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1477607}

    Bug: 406792705
    Change-Id: If68eed79f25cb80f14b8aa31c9cbbc3c1cb68a0d
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6667549
    Commit-Queue: Alison Gale <agale@chromium.org>
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Reviewed-by: David Roger <droger@chromium.org>
    Reviewed-by: S Ganesh <ganesh@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1478639}
2025-08-19 19:54:15 +01:00
Simon Hong 557809bb54 Fixed asan failure during the SplitView dtor (#30119)
fix brave/internal#1337

SplitView observes FullscreenController but it's destroyed before than SplitView destruction.
It's lifecycle is changed in upstream(cr139). BrowserWindowFeatures tears down exclusive acceess manager that owns fullscreen controller at the start of BrowserView dtor.
As SplitView is FullscreenControllerObser, it should be cleaned up before fullscreen controller is gone.

As this PR destroys SplitViewBrowserData at the start of BrowserView dtor, added its null check at all places.
2025-07-18 15:58:48 +02:00
Brian R. Bondy 7896045f5e Add Brave Talk admin policy on Desktop (#29990)
Add Brave Talk admin policy
2025-07-11 13:34:20 -04:00
Brian R. Bondy b44782779d Add admin policy for Brave News on Desktop (#29989)
Add admin policy for Brave News
2025-07-11 10:56:17 -04:00
cdesouza-chromium 4e16ef96e8 [IWYU] Fixing logging inclusions //browser/ui (#29529)
This change is one of many fixing inclusion for the following files:

    - `base/notimplemented.h`
    - `base/notreached.h`
    - `base/check.h`
    - `base/dcheck_is_on.h`
    - `base/check_deref.h`
    - `base/check_op.h`
    - `base/logging/log_severity.h`
    - `base/logging.h`

This change is a mechanical change done with the following script:
https://github.com/brave/brave-browser/issues/46707#issuecomment-2960116515

Resolves https://github.com/brave/brave-browser/issues/46707
2025-06-12 15:57:38 +01:00
Simon Hong d741525257 Handle split view commands enabled state with SideBySide (#29384)
fix brave/brave-browser#46492

Added SideBySide version of browser commands apis for split tabs.
Also handle our split view related command ids with SideBySide.

TEST=BraveBrowserCommandControllerWithSideBySideTest.SplitViewCommandsTest
2025-06-12 13:40:49 +09:00
Simon Hong abb1483151 Disable SplitView feature when upstream's SideBySide is enabled (#29071)
* Disable SplitView feature when SideBySide is enabled

fix https://github.com/brave/brave-browser/issues/46089

This PR introduced tab::features::IsBraveSplitViewEnabled() and simply replace base::FeatureList::IsEnabled(tabs::features::kBraveSplitView) with it.
tab::features::IsBraveSplitViewEnabled() always gives false if SideBySide is enabled.

Some upstream tests were failed because both features are enabled.
In that situation, Brave can't run. All filtered upstream tests are added again.
We'll migrate our SplitView UX onto upstream's SideBySide feature.
2025-05-16 10:53:56 +09:00
Simon Hong 27a1f7a3e9 Moved SplitViewBrowserData into BrowserWindowFeatures (#28184)
* Make BrowserWindowFeatures own SplitViewBrowserData

fix https://github.com/brave/brave-browser/issues/44846

To initialize SplitViewBrowserData before starting UI initializaion,
it should be inititialized with Browser object.
Also SplitView is per-window features, BrowserWindowFeatures is
good owner for SplitViewBrowserData.
2025-03-26 21:45:53 +09:00
cdesouza-chromium 9f33c9569e [RELAND][CodeHealth] Use cxx20's T::contains pt.2 (#27786)
In `cxx20`, there is a new function in associative containers called
`contains`, which should be used as a replacement to `base::Contains`.

This reland makes use of a `base::flat_set<ContentGroup>` in one test,
as this was causing build failures on x86 builds, as the compiler would
not abide to evaluate `MakeFixedFlatSet` as `constexpr`.

Resolves https://github.com/brave/brave-browser/issues/44063
2025-02-26 12:20:07 +00:00
cdesouza-chromium 7959b910ce Revert "[CodeHealth] Use cxx20's T::contains pt.2 (#27709)" (#27744)
This reverts commit b54f97e3f1.
2025-02-20 20:04:59 +01:00
cdesouza-chromium b54f97e3f1 [CodeHealth] Use cxx20's T::contains pt.2 (#27709)
In `cxx20`, there is a new function in associative containers called
`contains`, which should be used as a replacement to `base::Contains`.

Resolves https://github.com/brave/brave-browser/issues/44063
2025-02-19 13:28:35 +00:00
Kevin Smith 4cc241a866 Reconfigure Rewards component folder structure (#27270)
Fix directory structure per https://www.chromium.org/developers/design-documents/cookbook/
2025-01-31 13:47:34 -07:00
Simon Hong 24529eea06 Merge pull request #26430 from brave/shong_not_reached_migration
[NOTREACHED]: Migrate `NOTREACHED_IN_MIGRATIONS`
2024-11-11 13:56:36 +09:00
Brian Clifton 79ab3df3f1 Merge pull request #25827 from hamirmahal/feat/keyboard-shortcut-to-export-all-bookmarks
feat: keyboard shortcut to export all bookmarks
2024-11-10 21:52:58 -07:00
Simon Hong ef43fc4b98 [NOTREACHED] browser/ui/bb_command_ctrl.cc 2024-11-11 10:33:34 +09:00
Jay Harris 375e365d9a [PWA]: Add 'Show apps' menu entry (#26348) 2024-11-05 13:08:34 +13:00
Jocelyn Liu efcb1df7c6 Remove enable_ai_chat buildflag 2024-10-31 20:15:18 -07:00
10f25a53f7 AIChat full-page UI (#25800)
Introduces full-page UI. Requires the AIChatHistory feature flag to be enabled.
Receives title events for conversations from the conversation API.

---------

Co-authored-by: Taher <8665427+nullhook@users.noreply.github.com>
Co-authored-by: Jay Harris <jay.harris@outlook.co.nz>
2024-10-30 09:19:26 -07:00
Hamir Mahal 7af446e463 feat: allow export all bookmarks keyboard shortcut 2024-10-25 16:07:25 -07:00
cdesouza-chromium ebdbc25d6b [ubsan] Fix SplitViewBrowserData null deref (#26109)
All browser tests for this type are incurring in a null deref, as
`browser` was not being passed into the type. This fix corrects these
cases.

Additionally, this change removes the unnecessary checks in
`SplitViewBrowserData` for things like `tab_strip_model`, and
`tab_strip_model_adapter_`, as these should never be nullable in this
class' logic.

https://github.com/brave/brave-browser/issues/41740
2024-10-22 12:21:34 +01:00
Brian Johnson 3b60bf0154 remove check_includes = false for brave/browser/profiles (#24737)
Remove check_includes = false from brave/browser/profiles
2024-09-24 08:23:18 -07:00