Upstream Chromium cr147 (https://chromium-review.googlesource.com/c/chromium/src/+/7559078)
made FOREGROUND_SERVICE_CAMERA unconditional for all Android builds by
removing the is_desktop_android guard. However, the feature that
actually uses it (kAndroidEnableBackgroundMediaCapturing) is disabled
by default and not enabled by Brave, so the permission is declared but
never used.
This blocks Play Store publishing because Google requires a declaration
with a demo video for any app using FOREGROUND_SERVICE_CAMERA.
This PR:
- Re-gates FOREGROUND_SERVICE_CAMERA behind is_desktop_android so it's
excluded from Brave builds
- Removes AndroidManifest_user_permissions.xml since upstream now
declares FOREGROUND_SERVICE_MICROPHONE unconditionally, making
Brave's duplicate unnecessary
Resolves: https://github.com/brave/brave-browser/issues/54143
We provide a way to adjust the minimum width of the tab.
There're 5 options:
- default: currently the minimal
- minimum: current behavior,
- medium: 76px
- large: half of the standard width
- full: the standard width
This adds a new flow for using Chromium's Translate component through `CWVTranslationController` when the `UseProfileWebViewConfiguration` feature flag is enabled.
Note: This new tab helper does not support the Apple on-device translation feature flag yet.
* andd provider message handler in CardanoProviderHandler
1. handle enable() to create `CardanoApi` and store in Swift side
2. handle isEnable() to calling provider.enable()
* set up cardano api object in cardano provider script js
* handle cardana api methods
* fix up
1. fix getCollateral post amount object
2. start handling pagination error
3. add useful comments
* drop paginate parameter for getUsedAddresses in provider script since mojom version does not take any parameter
* address review comments
1. handles enable() returns (nil, nil) case
2. Use withTaskCancellationHandler When Bridging Callbacks to Async
3. remove unnecessary white space
* integrate sign cardano tx request from dapp
* address review comments
* fix closure captures self
* address more review comments
1. freeze js return value to prevent return value tampering
2. remove wallet provider and api ref from TabBrowserData and store directly in TabState via TabDataValues
3. some refactoring in cardano provider handler.
* fix dynamic accessors
* address nits change requests
* Fix test: AIChatConversationTaskBrowserTest.TaskUI
The Leo Button component (SvelteToReact wrapper) attaches its click event
listener asynchronously via useEffect, after browser paint. On macOS, the
paint can be delayed enough that the click listener is not yet attached when
ClickElement fires, causing pauseTask() to never be called and the RunUntil
for kPaused to time out.
Fix by calling conversation_handler_->PauseTask() directly instead of going
through the UI click path. The direct C++ call is reliable and synchronous,
eliminating the timing window. The UI click path is already tested by
TaskPauseResumeActions.
Resolves https://github.com/brave/brave-browser/issues/53695
* Address review: add TODO for SvelteToReact async listener issue
Updated workaround comment to accurately describe the root cause:
the SvelteToReact wrapper in @brave/leo attaches click listeners
asynchronously via useEffect. Filed brave/leo#1343 to fix it at
the source, and added a TODO referencing that issue.
Brave's tab_data.cc override was incorrectly marking all UNLOADED
tabs as having discard status, including tabs that had never loaded
(e.g. during browser initialization). This triggered TabIcon to
attempt showing the IPH_DiscardRing promo before the browser's
user education interface was initialized, causing a LOG(ERROR)
and test failure on Windows ASAN builds.
The fix adds a WasDiscarded() check so only tabs that were actually
discarded get the discard status indicator, not tabs that simply
haven't loaded yet.
Resolves https://github.com/brave/brave-browser/issues/54037
Move all mock, test utility, and test helper files from their
co-located positions alongside production code into test/
subdirectories within each feature directory, following the
convention already established by core/internal/common/test/.
Update #ifndef guards, #include paths, and BUILD.gn source
lists accordingly.
* ci: add Socket Fix workflow
Adds a workflow_dispatch CI workflow to apply socket fix for a given
set of GHSA IDs and open a pull request with the changes.
* ci: pin node to v24 major and add CI/skip label to generated PRs
* ci: use brave-builds user for consistency with other workflows
* ci: add security label and issue_link input to socket-fix workflow
Verifiable conversions used a NaCl Curve25519 envelope to let
advertisers cryptographically verify a conversion ID extracted
from page HTML or URL redirects and the feature is no longer
needed. This removes verifiable conversion and resource support,
drops the verifiable_advertiser_public_key column via a v55
database migration, removes the conversion envelope from the
confirmation payload, removes ConversionTypeToString now that only
one conversion type remains, switches conversion detection from
OnHtmlContentDidChange to OnTabDidChange, and removes the entire
NotifyTabHtmlContentDidChange IPC pipeline including the mojom
method, AdsClientNotifier, TabManager, and AdsServiceImpl plumbing
that existed solely to deliver page HTML to the conversion engine.
brave_exe.rc hardcoded theme\brave\win\ icon paths for all builds.
Use a BRAVE_ICON macro that switches between theme\brave\win and
theme\brave_origin\win based on IS_BRAVE_ORIGIN_BRANDED define.
Resolvesbrave/brave-browser#54025
ResetLocationBarBounds() was calling InvalidateLayout() on the location
bar unconditionally. That invalidation propagated up through the parent
chain, re-marking the toolbar as needing layout while still inside its
own Layout() call. The widget then scheduled another layout pass, which
did the same — a continuous loop that re-laid out location bar children
on every hover/paint event, causing Shields, Rewards, and other anchored
bubbles to flicker on mouse movement.
Fix: only call InvalidateLayout() when margin is zero — the one case
where SetBoundsRect() exits early without triggering LayoutImmediately(),
leaving children at stale positions. Also pass
avoid_propagate_during_layout=true so the invalidation stays local to
the location bar and does not re-trigger toolbar layout.
This removes the ReadyStateScript JS and its handlers and migrates the logic executed based on those scripts to the `tabDidCommitSameDocumentNavigation` observer method
Limit the length of the container name input
We should limit the length of the container name input to 20 characters.
Also updates style of the input to match the design guidelines and
the limit is displayed in the input.
Upstream Chromium test, stable upstream (0.9% flake rate over 30
days per LUCI Analysis). The test runs 10 eval retries with
exponentially increasing timeouts (~10s total wall-clock time).
Under MSAN instrumentation combined with Brave's additional DevTools
startup overhead (chromium_src overrides, NTP/stats services), this
exceeds the test's hardcoded 20-second timeout. The sibling test
CantInspectBlockedSubdomainHost is already disabled in the upstream
source for the same reason.
Resolvesbrave/brave-browser#54053
* Fix flaky BlobUrlPartitionEnabledBrowserTest blob cleanup
After closing a tab, the Mojo associated pipe disconnect for
BlobURLStoreImpl goes through BrowserThread::IO (pipe closure
detection) before the disconnect handler is posted to the UI thread.
RunAllTasksUntilIdle() only flushes the UI thread and thread pool
but not the IO thread, so the blob URL mapping removal may not
complete before the test checks accessibility.
Add an IO thread flush via PostTaskAndReply before
RunAllTasksUntilIdle() to ensure disconnect notifications are
delivered and processed deterministically.
Resolvesbrave/brave-browser#53892
* Address review: use RunAllPendingInMessageLoop(IO) instead of manual flush
Replace the ad-hoc PostTaskAndReply IO thread roundtrip with Chromium's
established content::RunAllPendingInMessageLoop(BrowserThread::IO)
utility. This is more robust (multiple flush iterations via
kNumQuitDeferrals) and is the standard pattern used in Chromium's own
test infrastructure for the same IO→UI disconnect synchronization.
Resolvesbrave/brave-browser#53892
This Chromium test fails consistently on Windows ASAN nightly builds.
The test verifies that chrome://image subresource loads work by creating
an HTTPS embedded test server and loading an image through
SanitizedImageSource. The browser-process URL loader fails to download
from the test server under ASAN, likely due to cert trust issues.
The test is stable upstream (0.3% flake rate per LUCI Analysis).
Brave does not modify SanitizedImageSource, ImageNavigationThrottle,
or the chrome://image data source. The production feature works correctly
(wallet and other WebUIs load images via chrome://image without issues).
Resolves https://github.com/brave/brave-browser/issues/54041
This implements the required method in `BraveWebView` to access the embedded `CWVTranslationController`. The controller will only function correctly when `UseProfileWebViewConfiguration` is enabled since it requires the Chromium JavaScript features to be injected.
This is an upstream Chromium test that fails intermittently on
Windows x64 ASAN builds. The test creates a standalone TestingProfile
in a browser test context, which triggers Brave's additional keyed
services and causes intermittent ASAN-detected issues during profile
lifecycle. The test is stable upstream (0.3% flake rate per LUCI
Analysis). Not disabled by Chromium.
Resolves https://github.com/brave/brave-browser/issues/54043
This is an upstream Chromium test that consistently times out in Brave.
The test's busy-wait loop (RunUntilIdle + FetchHistogramsFromChildProcesses)
hangs because Brave's background tasks from extensions and shields keep the
UI thread non-idle, preventing RunUntilIdle from completing.
The underlying DataUse histogram recording works correctly - verified by
calling FetchHistogramsAsynchronously directly, which returns total=1569
bytes of data use. The issue is purely in the test's retry mechanism.
Upstream flake rate: 0.3% (stable). No Brave chromium_src overrides
affect the data use measurement code path.
Resolves https://github.com/brave/brave-browser/issues/54039
Removes the SplitTestExclusionRule and all related code including the
split_test_group field from CreativeAdInfo and CatalogCreativeSetInfo,
catalog JSON parsing, the database column, and the glossary entry. Adds
a V54 database migration that drops the column from the creative_ads
table using ALTER TABLE ... DROP COLUMN.
Disable Chromium test NotificationContentDetectionAllowlistedChecksEnabledBrowserTest.NotificationDisplayedWhenModelNotAvailable
This is an upstream Chromium test (stable upstream at 0.2% flake rate).
Brave's stubbed PredictionManager and disabled optimization guide
features cause incompatibility with this test. All other tests in the
NotificationContentDetection family are already disabled for the same
reason. Not disabled by Chromium upstream.
Resolves https://github.com/brave/brave-browser/issues/54042
This adds patches that bring in the changes from a cr148 CL to hopefully improve the issue in CI where simulators hang when tearing down.
Chromium change:
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>
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}
This is an upstream Chromium test (chrome/browser/extensions/worker_apitest.cc)
that intermittently times out when the last crossOriginRedirectTest
(SharedWorker with module type) fails to fire its onerror handler.
Chromium upstream flake rate: 2.4% over 30 days (LUCI Analysis).
Already disabled on Windows ASAN (crbug.com/431290255).
Brave has chromium_src overrides for worker content settings and fetch
context, but they don't touch the worker script redirect/loading path
that's failing. The root cause is upstream timing sensitivity in
SharedWorker module cross-origin redirect error propagation.
Resolves https://github.com/brave/brave-browser/issues/54061
Add used containers tracking and make them available via `GetRuntimeContainerById`.
The PR does not include storage cleanup and pref cleanup. This is intentional - the cleanup logic will be landed separately.