* [Rewards] [BitFlyer] Migrate OAuth endpoints to gate3 proxy
* review(zenparsing): add public accessors for each provider
* review(zenparsing): move GetBraveServicesKeyHeader to EnvironmentConfig
* review(goodov): use base::StrCat
* review(goodov): use UpperCase for brave_services_key_header
* review(goodov): move kGate3URL to brave_wallet/common
* review(goodov): consolidate kGate3URL in brave_rewards/core/common as single source of truth
* Consolidate gate3 url in brave_domains as single source of truth
* review(goodov): use public_deps in brave_wallet/browser
* Add buildflag guards in rewards around kGate3URL usage
* Move brave_domains:constants dep out of enable_brave_rewards guard
brave_rewards/core is already unconditional in brave_browser_net_deps,
so brave_domains:constants should be too.
* [Rewards] [Gemini] Migrate OAuth endpoints to gate3 proxy
* Revert bitFlyer migration in favour of Gemini
* review(goodov): add comment explaining ENABLE_BRAVE_REWARDS guard in network delegate
* Remove guards around kGate3URL definition
* Remove unused import in sources.gni
This occurred because TimePeriodStorage keeps internal state in memory
that can be rewritten to disk; as a result, SERP metrics reappear if the
user visits SERP again, but they do not reappear if the browser is
restarted, since the in-memory state is cleared.
* createInterfaceApi - a browser proxy store
A way to generate a state store browser proxy from any remote API, designed for mojom (or extension) APIs
The intention is to create something requiring minimal configuration and remove often repeated patterns to do with WebUI <-> Browser communication and
- storing and caching fetch results across UI components
- event listening to data updates and upadting local cache
- passing through actions to UI components
- mocking data for unit tests and storybook
This is not intended to replace all local state management. The intention is to manage only the data that is owned by a remote (e.g. the browser) and present it to the UI. Any local-only state should still be managed by the relevant framework (i.e. React, Lit, or Svelte) or a separate state manager.
However, this does add another relevant utility:
Used to send an instance of an api to a tree of React components. However, since it accepts any function it can also conveniently be used to store global state for that tree, using React hooks (`useState`, `useMemo`) or derived state from values retrieved from the API.
React Context is not that performant, as the whole tree will re-render when any pieces of state change, so this should be used sparingly. Instead, hooks for each individual endpoint should be used via the API instance which is passed down via Context. The API instance itself won't change and cause re-renders, but the individual hooks will cause subscriptions to be made to each piece of data.
A helper to generate endpoints from an interface. Prevents having to re-declare the mojom function signature as Typescript can deduce it from the generated mojom JS.
A helper to mark an interface function as an 'event'. Prevents having to re-declare the mojom function signature as Typescript can deduce it from the generated mojom JS.
See `components/common/api/readme.md` for examples.
This is an upstream Chromium test that tests WebRTC event log upload
behavior based on network connectivity. Brave disables WebRTC event log
uploading via patches to webrtc_event_log_uploader.cc (StartUpload
returns early). The related test suites WebRtcEventLogManagerTestPolicy
and WebRtcEventLogUploaderImplTest are already disabled in the filter
file for the same reason.
The test is stable upstream (0% flake rate across 190k+ runs in 30 days)
confirming this is a Brave-specific failure caused by the upload
disabling patches.
Resolves https://github.com/brave/brave-browser/issues/52667
The WebUIURLLoaderFactoryTest.RangeRequest parameterized tests fail
intermittently on Windows CI due to a Mojo data pipe race condition
where response_body().ReadData() returns 0 bytes after
RunUntilComplete() completes. The data hasn't been flushed through
the pipe yet when the query is made.
Resolves https://github.com/brave/brave-browser/issues/52657
Move ServiceWorker/ExtensionBackForwardCacheBrowserTest.MessageSentToCachedIdFails/0
from the Linux-specific browser_tests-linux.filter to the platform-agnostic
browser_tests.filter. The EventPage parameterization was already disabled
globally.
This is an upstream Chromium test (located in
chrome/browser/extensions/back_forward_cache_browsertest.cc). Chromium has not
disabled this test. Brave has modifications to RenderFrameHostImpl via
chromium_src (ephemeral storage tokens, nonce computation) that may affect
BFCache lifecycle management.
The test intermittently fails because the RenderFrameHost is destroyed instead
of being cached in BFCache after navigation, causing an assertion failure at
line 849 (IsDestroyed() returns true) followed by a null pointer dereference.
Previously only disabled on Linux; now also observed on Windows x64 ASAN
nightly.
Resolvesbrave/brave-browser#52660.
Add InstallableManagerBrowserTest.CheckFavicon to browser_tests.filter
to disable this flaky upstream test. The test intermittently fails due
to favicon fetch timing issues. Already disabled on Mac upstream
(crbug.com/333331507).
Also add ASAN filter support to getApplicableFilters() in testUtils.js,
which was missing (only UBSAN and MSAN were supported).
Resolves https://github.com/brave/brave-browser/issues/52659
Move Linux-only kPromptForDownload test filters to browser_tests-linux.filter
These tests only fail on Linux where the GTK file chooser dialog triggered
by kPromptForDownload=true causes g_malloc leaks (detected by LSan on
ASAN builds) and timeouts. They don't fail on macOS or Windows.
Move ChromeMojoProxyResolverFactoryBrowserTest, PDFPluginDisabledTest,
and PluginResponseInterceptorURLLoaderThrottleBrowserTest.DownloadPdf
from the global browser_tests.filter to browser_tests-linux.filter.
Also remove the now-redundant entries from browser_tests-linux-msan.filter
since browser_tests-linux.filter is applied to all Linux builds including
MSAN.
Resolves https://github.com/brave/brave-browser/issues/52649
Disable ChromeMojoProxyResolverFactoryBrowserTest due to kPromptForDownload
Same root cause as PDFPluginDisabledTest and DownloadPdf filters: Brave
defaults kPromptForDownload to true, which triggers the GTK file chooser
dialog during browser startup. Under ASAN this causes enough overhead to
timeout the test.
Co-authored-by: Brian R. Bondy <netzen@gmail.com>
Guard all chat_ui_ method calls with is_bound() checks to prevent
null dereference crashes when navigation events trigger
OnRequestArchive before the WebUI frontend has called SetChatUI().
Resolvesbrave/brave-browser#51824
Brave defaults kPromptForDownload to true, which causes the GTK file
chooser dialog to appear during PDF download tests. The dialog tries
to navigate to a scoped temp directory that may no longer exist,
causing test failures (and g_malloc leaks detected by LSan on ASAN
builds).
Add PluginResponseInterceptorURLLoaderThrottleBrowserTest.DownloadPdf
and All/PDFPluginDisabledTest.DirectNavigationToPDF/* to the existing
kPromptForDownload filter section in browser_tests.filter.
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}
```
Resolves https://github.com/brave/brave-browser/issues/52435
* remove enable_orchard and ENABLE_ORCHARD flags that block zcash library from compiling for iOS target
* fix unit test compiling error
* include ZCashWalletServiceUnitTest.ShieldFunds_FailsOnNetworkError for iOS target
This is an upstream Chromium test
(chrome/browser/performance_manager/frame_node_impl_browsertest.cc) that
checks viewport intersection state immediately after navigation without
waiting for the async viewport intersection update from the renderer. The
/1 parameter variant was already disabled; this extends the filter to
cover /0 as well, matching Chromium's own filter in
ozone-linux.browser_tests_mutter.filter which disables all variants
with a wildcard.
Resolvesbrave/brave-browser#52605
This is an upstream Chromium test that intermittently fails when
the RenderFrameHost is destroyed instead of entering BFCache.
The test was already disabled on Linux; this extends the disable
to all platforms after the test also failed on Windows x64 ASAN
nightly (issue brave/brave-browser#52578).
Also removes now-redundant Linux-specific filter entries that are
covered by the platform-agnostic browser_tests.filter.
* [AI Chat] [Conversation API V2] Add WebSourcesContentBlock and parsing
Add infrastructure for parsing server-side search tool results:
- Add kBraveNewsSearchToolName and kBraveWebSearchToolName mojom
constants for server-side tools
- Add WebSourcesContentBlock to ContentBlock union for parsed web
sources from search tool results
- Add IsBraveSearchTool() utility in utils.h/cc using mojom constants
- Add parsing functions in oai_parsing:
- ParseToolCallRequest() for tool requests with function
- ParseToolCallResult() for tool results with output_content
- ParseContentBlockFromDict() for text and webSources blocks
- Refactor ToolUseEventFromToolCallsResponse to use ParseToolCallRequest
- Add WebSourcesContentBlock serialization in conversation_api_v2_client
* [AI Chat] [Conversation API V2] Add unit tests for parsing functions
Add ParseToolCallRequest, ParseToolCallResult, and ParseContentBlockFromDict
tests to oai_parsing_unittest.cc. Add WebSourcesContentBlock serialization
test to conversation_api_v2_client_unittest.cc.
* Add serialization/deserialization to persist WebSourcesContentBlock in ToolUseEvent
Upstream Chromium renamed the test class from
BrowserFeaturePromoController2xViewsTest to
BrowserFeaturePromoController2xStringSubstitutionTest, causing the
existing filter entries to stop matching. These tests fail on Windows
due to dead-code elimination stripping IDS_CONCAT_THREE_STRINGS_WITH_COMMA
from the resource bundle in branded builds (crbug.com/434261108).
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
Wait for kPaused state after clicking pause button before sending
tool use event. The race condition occurred because the tool use
event could be processed before the pause click took effect.
Resolvesbrave/brave-browser#51759.
Disable Chromium test: ChromeServiceWorkerTest.StaticRoutingAPISubresourceHistogramTest
This upstream Chromium test is already disabled on Mac and Linux
(crbug.com/355104619) due to flakiness. It also fails intermittently
on Windows when the histogram
ServiceWorker.RouterEvaluator.SubresourceTotalEvaluationTime is not
recorded because subresource loading timing is non-deterministic.
Brave has no modifications to service worker router evaluator code.
Resolves https://github.com/brave/brave-browser/issues/52472
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
This is an upstream Chromium test that verifies no window resize events
fire during print preview. Chromium has also disabled this test on
Linux/Ozone (ozone-linux.browser_tests_mutter.filter). The test is
already disabled on Linux in Brave via PrintBrowserTest.* wildcard.
The test fails intermittently because Brave's additional UI elements
(sidebar, vertical tabs, side panel) can trigger resize events during
print preview initialization. Brave has no modifications to the
printing code itself.
Resolves https://github.com/brave/brave-browser/issues/52475
This test expects CHANNEL_UNKNOWN in test environments but Brave's
channel detection returns CHANNEL_STABLE due to the channel_info_win.cc
override that enables GOOGLE_CHROME_BRANDING behavior for OFFICIAL_BUILD.
The test at puma_browsertest.cc:228-230 asserts:
EXPECT_EQ(rc_profile.channel(), RcCoarseSystemProfile::CHANNEL_UNKNOWN);
But Brave's channel detection returns 4 (CHANNEL_STABLE) instead of
0 (CHANNEL_UNKNOWN) because the override in chromium_src/chrome/common/
channel_info_win.cc sets GOOGLE_CHROME_BRANDING to 1 for official builds,
which causes install_static::GetChromeChannel() to return a valid channel
rather than UNKNOWN.
This is the same root cause as other channel-detection test failures where
Brave's channel determination differs from Chrome's test environment.
Resolvesbrave/brave-browser#52477