When browser widget is inactive while application is active,
browser widget's WindowEventMonitor couldn't get event.
This can happen when overlay widget is focused in fullscreen mode on macOS.
Fixed by using application monitor.
Resolvesbrave/brave-browser#54300
Not added test code as it's difficult to simulate this scenario.
[cr150][plaster][android] Migrate `AUTOPLAY` patches
This PR migrates several java patches for `AUTOPLAY` to plaster. It uses
the same previous techniques, where we match the enum block and add at
the end.
The only innovation in this PR as an approach for plaster is the
replacement of the value `NUM_ENTRIES` with `+1` for whatever keys we
are inserting, while at the same time using the previous value of
`NUM_ENTRIES` as the starting value for the first key.
Resolved https://github.com/brave/brave-browser/issues/55385
Constrain the dialog's minimum size to its initial dimensions
(540x500, 540x600 on Linux) so users cannot resize the window below
the designed layout.
Fixes https://github.com/brave/brave-browser/issues/55554
This PR introduces the basic tooling to have `include-what-you-use` run
against the brave codebase in maintainance mode. This manual regular
runs that cover more and more of the codebase.
Bug: https://github.com/brave/brave-browser/issues/42212
[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
* Uplift skill: add Resolves links for tracked issues to PR body
The uplift skill already discovers or creates a tracking issue for every
included PR in Step 7, but never surfaces those issue references on the
uplift PR itself. Collect each issue reference into a RESOLVED_ISSUES
list as it is encountered and, after Step 7's per-PR work, edit the
uplift PR body to prepend a Resolves directive per entry so the linked
issues are discoverable from the PR.
* Uplift skill: place Resolves lines under the Uplift list
Per review on the dogfood run, the `Resolves <ref>` directives belong
underneath the `Uplift of #XXXX` list rather than prepended above it.
Update Step 7's instructions and example so the new lines are spliced in
immediately after the last `Uplift of` line, and reflect the same in
Step 5's heads-up note.
This is a new `brockit` subcommand that takes care in creating the
commit updating the Xcode toolchain in brave-core.
```sh
brockit.py update-xcode-toolchain --culprit=[optional] <url>
```
The URL in question is printed by CI when generating a new toolchain,
with the label `Download URL: <url>`
Bug: https://github.com/brave/brave-browser/issues/55528
This adds a new JavaScriptFeature that enables background audio for videos when the `UseProfileWebViewConfiguration` feature flag is enabled.
This script diverges slightly from its original in that it exposes an API to call instead of being dynamically injected based on the preference. By doing this we also change it to be injected into the main frame only and use the document end injection timing.
* Added Gap between action buttons.
* Multi card subpage.
* Removed top delemiter in aliases list.
* Aliases presented within a boxed area.
* Fixed paddings.
Sidebar v2 attaches a Brave-styled panel header at the SidePanel level
instead of embedding it inside the content view.
## Changes
- New BraveSidePanelHeader (view) + BraveSidePanelHeaderController (delegate) under
brave/browser/ui/views/side_panel/. Visual spec (title, optional launch button + separator,
close button, 60px height, Nala colors, Leo icons) mirrors V1's inline headers in
BraveReadLaterSidePanelView/BraveBookmarksSidePanelView.
- BraveSidePanelCoordinator::PopulateSidePanel attaches the header via upstream
SidePanel::AddHeaderView only for entries ShouldShowBraveHeader allows (today: kReadingList, kBookmarks).
- SidePanel chromium_src override now wraps upstream AddHeaderView / RemoveHeaderView so each call also
re-runs Brave's UpdateBorder(). UpdateBorder() reserves a top inset equal to the header's preferred height
when a header is attached, in both the rounded-border and no-border states.
- brave_side_panel_header_controller is split into its own :side_panel_impl source_set
(depending on :side_panel) to keep dep chains clean.
## Test plan
- New SidebarBrowserTest.SidebarV2BraveHeaderTest test case
- Manual: run with enable_sidebar_v2=true, open reading list and bookmarks — header should be visible
This PR moves to `chromium_src` code that can live in there, and does
with no need for `#define` macro uses. This keeps plaster files shorter,
which reduces the noise in them, and it also permits C++ code to live
in C++ sources, that can benefit from code formatting, and DEPS
validation.
Replaces site-favicon component - which only retrieves favicons from the
history service, which means the user would first have to visit the site
for the favicon to be available - with settings-search-engine-icon which
retrieves the favicon right away.
In order to make it easier to register draggable areas, we move the non-client
hit test helper to the browser window features. The new BraveNonClientHitTestHelper
will manage the registration of draggable areas and provide a non-client hit test
helper for the frame views.
* [AI Chat] Disable chromium Actor UI Task Button
When an actor framework task is invoked, the button shows due to kGlicActorUiTaskIcon being true. Interacting with this button causes a crash.
First we will disable the button entirely, via this PR.
Then we will bring the functionality either in a custom Brave button and menu, or fix the upstream one.
Tests
Guards the kGlicActorUiTaskIcon=false override in chromium_src/chrome/
common/chrome_features.cc against regressions: while the agent profile
window is executing a task, neither the toolbar nor the tab strip
action container should construct the upstream
GlicAndActorButtonsContainer (which has been the source of crashes).