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
Fix flaky RewriteInPlace_ContentEditable test
Two issues were causing flakiness:
1. Focus issue: For contenteditable elements, the test was selecting
text without focusing the element first. This caused params_.is_editable
to sometimes be false, preventing GenerateRewriteSuggestion from being
called. Fixed by adding element.focus() before selection in rewrite.html.
2. DOM timing issue: The Replace() IPC updates the DOM asynchronously,
but the test was checking immediately after the completion callback.
Fixed by using a MutationObserver to wait for the DOM to update to
the expected value before verifying.
The MutationObserver pattern follows the approach used in Chromium's
service_worker_internals_ui_browsertest.cc.
Resolvesbrave/brave-browser#52417
This change wires SERP detection into browser navigation events on
Desktop and Android, identifying user-initiated navigations to search
engine results pages and incrementing the appropriate aggregated
counters. Navigations that are not user-driven or do not represent
meaningful page visits are excluded, ensuring metrics reflect
intentional SERP access without collecting sensitive browsing data.
This is part of https://github.com/brave/brave-browser/issues/52104.
Co-authored-by: Aleksei Seren <aseren@brave.com>
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
The adds ability to send ABOM status with WebCompat
report. If ABOM feature is disabled or current locale is
not supported then ABOM status is not sent.
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
Replace unreliable TemplateURL existence check with proper async waiting.
Previous failed attempts:
1. JavaScript async polling with setTimeout - failed intermittently
2. JavaScript setTimeout(1200) hardcoded delay - failed intermittently
3. C++ RunUntil waiting for TemplateURL to exist, then calling API once -
failed because TemplateURL existing doesn't guarantee all conditions in
CanSetDefaultSearchProvider are met (e.g., CanMakeDefault may still be false)
Root cause: The API checks multiple async conditions beyond just TemplateURL
existence. Waiting for an intermediate condition (TemplateURL exists) doesn't
guarantee the API will return true.
Solution: Poll the actual JavaScript API from C++ using manual polling loop
with NonBlockingDelay until it returns true. This ensures all preconditions
including async initialization are complete. Avoids nested run loops by not
using EvalJs inside RunUntil.
Verified with 15 consecutive successful test runs.
The test fails intermittently due to a race condition between setting
cookies via JavaScript (document.cookie) and querying them via backend
SiteDataCountingHelper. Chromium has already disabled this test on
Windows (crbug.com/413259587). Brave has no modifications to this code.
Resolves https://github.com/brave/brave-browser/issues/52489
The test was failing intermittently on macOS arm64 CI because the
page handler took longer than the default 1-second RunUntil timeout
to be created. The page handler is created when the frontend binds
to the mojo interface, which can take longer on slower machines.
Extend the timeout to 30 seconds using ScopedRunLoopTimeout.
Resolvesbrave/brave-browser#51486
We skip the call to payment_queryInfo directly because it returns the fee amount as a JSON string. Instead, the polkadot-js implementation seems to call directly into the runtime's wasm modules so we opt for the same path, using the state_call RPC method and then directly accessing the TransactionPaymentApi via the request's params field.
Example RPC calls:
curl.exe ^
-H "Content-Type: application/json" ^
-d "{\"id\":18,\"jsonrpc\":\"2.0\",\"method\":\"state_call\",\"params\":[\"TransactionPaymentApi_query_info\",\"3d02840052707850d9298f5dfb0a3e5b23fcca39ea286c6def2db5716c996fb39db6477c010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010155034c00000400008eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a486641f10291000000\"]}" ^
https://westend-rpc.polkadot.io
{"jsonrpc":"2.0","id":18,"result":"0x82ab80766da800dc8df1b5030000000000000000000000"}
vs the stringified version:
curl.exe ^
-H "Content-Type: application/json"^
-d "{\"id\":10,\"jsonrpc\":\"2.0\",\"method\":\"payment_queryInfo\",\"params\":[\"3d02840052707850d9298f5dfb0a3e5b23fcca39ea286c6def2db5716c996fb39db6477c010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010155034c00000400008eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a486641f102\"]}" ^
https://westend-rpc.polkadot.io
{"jsonrpc":"2.0","id":10,"result":{"weight":{"ref_time":497036000,"proof_size":10779},"class":"normal","partialFee":"15937408476"}}
This lets us avoid having to parse a decimal string into a uint128_t.
Note that extrinsic we pass for fee estimates requires a trailing length in little endian bytes.
The PRs fixes compilation and leak issues for ASAN builds:
* Includes added to fix issue with WrapUnique redefinition.
* an unused var warning is fixed.
* (LSAN) a false-positive shutdown memory leak in adblock is annotated.
Disable flaky MSAN test PluginResponseInterceptorURLLoaderThrottleBrowserTest.DownloadPdf
The test fails intermittently in Memory Sanitizer (MSAN) builds due to
use-of-uninitialized-value in system library libblkid when the GTK file
chooser dialog initializes. The stack trace shows the error originates
in blkid_parse_tag_string called during g_volume_monitor_get when
gtk_file_chooser_dialog_new is invoked for the PDF download.
This is an issue with the MSAN instrumented glib/gtk libraries, not a
bug in browser code. Brave doesn't modify the plugin response
interceptor code.
Resolvesbrave/brave-browser#52434
Resolvesbrave/brave-browser#51481
This PR relocates some important constants so that they can be visible to the
KeyringService (for the sake of signing binary blogs using the appropriate
keyring for the account).
We also update the PolkadotKerying class to support deterministic RNG so
signatures are consistent.
We finally add an extrinsic signature task which asynchronously fetches all the
required data from the RPC nodes and then assembles the final blob of bytes.
Tests should cover the error paths for each potentially-failed RPC call.
These methods are implemented by a Chrome tab helper that isn't bridged to CWVWebView, so for now we can remove it. This fixes a crash if a user happened to enable the `kIOSCustomFileUploadMenu` feature flag from `brave://flags` which is disabled by default.
Fix intermittent test failure caused by race condition between
tool execution completion and pause button click timing.
The original test used the real navigation tool which executes
asynchronously. If navigation completed before the pause button
was clicked, GenerateAssistantResponse would be called, violating
the Times(0) expectation.
Fix by using a MockTool that captures its callback, allowing the
test to control exactly when the tool execution completes. The
tool now completes after pause is clicked, verifying that
generation is correctly skipped while paused.
Key changes:
- Replace navigation tool with MockTool for controlled timing
- Capture tool callback and complete it after pause
- Verify generation is skipped while in paused state
- Remove tab-related checks that don't apply with mock tool
Resolvesbrave/brave-browser#51130
The ZeroFill tests with pkey pool parameters (/2 and /3) exhaust the
256MB ThreadIsolatedPool. The test allocates up to 250 random-sized
blocks simultaneously (up to 2MB each), which can exceed the pool
capacity. This is an upstream Chromium test limitation - the test works
with the regular GiB-sized pool but not the smaller pkey pool.
Resolvesbrave/brave-browser#52385