Chromium test with 1.1% upstream flake rate (83k+ verdicts, LUCI
Analysis 30-day lookback). The PartitionedCookiePresentV3 UKM is
recorded per cookie access event without per-page deduplication, so
the test's delta occasionally gets 2 instead of 1 when a prior
navigation's UKM recording arrives after the baseline snapshot.
Fixed upstream (crrev.com/c/7746704) by adding a per-page tracking
flag to PageImpl, but that fix has not landed in Chromium 148.
No Brave chromium_src overrides for content/browser/renderer_host/
cookie_utils.cc. Chromium also disabled this test temporarily
upstream before the fix landed.
Resolves https://github.com/brave/brave-browser/issues/55020
* Fix FilTxManagerUnitTest singleton state leak vulnerability
BlockchainRegistry is a process-level NoDestructor singleton. When
other tests in the binary (e.g. AddHDAccountForKeyring_RestrictedAddress)
restrict addresses derived from kMnemonicDivideCruise and crash before
cleanup, the restricted list persists. This causes CreateDefaultAccounts
to fail when the ETH default account address is restricted, triggering
Reset(true) which clears all keyrings, making EnsureFilTestAccount
return null and FilTestAcc dereference it.
Clear restricted addresses at the start of SetUp to protect against
singleton state leaks from prior tests. Add ASSERT_TRUE on wallet
account creation so SetUp aborts early with a clear error. Add CHECK
in FilTestAcc to prevent null dereference crashes.
* Address review: use absl::Cleanup in restricted address tests
Replace manual UpdateRestrictedAddressesList({}) cleanup calls with
absl::Cleanup to ensure restricted addresses are cleared even when
tests fail early. Remove defensive ClearRestrictedAddresses from
FilTxManagerUnitTest::SetUp since the root cause is now fixed at
the source.
* Address review: add ScopedRestrictedAddressesForTesting
Replace absl::Cleanup pattern with a RAII scoped class on
BlockchainRegistry that saves/restores restricted addresses,
preventing singleton state leaks between test fixtures.
* Address review: move comment to before AddNewHDAccount(1) call
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Adds --skip-origin-startup-dialog so users on Linux (where Brave Origin
is free) can bypass the startup dialog from the command line. Useful for
automation and scripted launches where the donation prompt would block.
Resolves https://github.com/brave/brave-browser/issues/55151
Disable `IsCardBenefitsFeatureEnabled` as we don't want this feature
We were disabling card benefits by disabling the individual card features, but
new ones are added periodically. I also just noticed that the feature flags and
function are going away in cr149. Given that, let's just hide the toggle in
settings.
Defaults `enable_brave_education` to off when `is_brave_origin_branded`
is true, matching siblings like `enable_playlist`, `enable_brave_news`,
and `enable_brave_wayback_machine`. Most features promoted on
brave://getting-started don't apply to Brave Origin, so neither the
WebUI page nor the post-onboarding redirect to it should be available
in Origin branded builds.
Resolvesbrave/brave-browser#55035
Resolves https://github.com/brave/brave-browser/issues/53632
Resolves https://github.com/brave/brave-browser/issues/54066
On Linux with Brave vertical tabs enabled and no title bar, BrowserFrameViewLayoutLinux::NonClientExtraTopThickness() returned kExtraTopBorder (3 dips) whenever IsTabStripVisible() was false — producing a spurious 3px strip at the top of the window.
Fixed by returning 0 when the toolbar is visible instead.
Removing that strip exposed two side effects:
**1. Square frame corners**
The 3px strip was the only area where the frame background's rounded arc was visible above the toolbar. With the strip gone, BrowserView starts flush with the frame clip's top, and TopContainerView immediately covers it with opaque square corners — hiding the rounded arc entirely.
Fixed by overriding ConfigureTopContainerBackground and DoPostLayoutVisualAdjustments in BraveBrowserViewTabbedLayoutImpl to apply window-corner-radius (transparent) corners to both the top container and toolbar on Linux when vertical tabs are active with no title bar, letting the frame arc show through.
**2. GTK crash when painting the frame border**
The 3px strip also kept GetTopAreaHeight() above zero when passed to WindowFrameProviderGtk::PaintWindowFrame. Without it, GetTopAreaHeight() returns only the shadow thickness, which after GTK's scaling and shadow subtraction becomes zero — crashing inside CairoSurface::CairoSurface().
Fixed by overriding PaintRestoredFrameBorder in BraveBrowserFrameViewLinuxNative to add the toolbar height to top_area_height when vertical tabs are active with no title bar, ensuring GTK always receives a positive value.
**Tests**
- BraveBrowserFrameViewTest.VerticalTabsGtkTopAreaHeightIsPositive — verifies top_area_height passed to the frame provider includes the toolbar height in the vertical tabs / no title bar state
- BraveBrowserFrameViewTest.VerticalTabsTopAreaCornerRadiusReflectsWindowAndTitleBarState — verifies toolbar and top container corner radii across all three states: horizontal tabs, vertical tabs without title bar, vertical tabs with title bar
- BrowserFrameViewLayoutLinuxTest — unit tests for NonClientExtraTopThickness covering vertical tab and toolbar visibility combinations
**Steps to manual test**
1. On Linux, open Brave and enable vertical tabs (right-click tab strip → "Use vertical tabs")
2. Confirm the spurious top border is gone
3. Confirm the window has rounded top corners (not square)
4. Enable the title bar (vertical tabs settings → "Show title bar") — confirm corners revert to standard
5. Disable vertical tabs — confirm no regression in horizontal tab layout
`UpdateMatchDestinationURLWithInvocationSource` now appends source=chrome.ob to
all omnibox search URLs via `AppendOrReplaceQueryParameter`. This is
Chrome-specific attribution telemetry intended for Google's servers, but it also
overwrites any existing source parameter - including the `source=desktop` /
`source=android` value we bake into the Brave Search URL template in
brave_prepopulated_engines.cc.
This fix suppresses the injection by overriding the upstream injection function
to do nothing.
Chromium changes:
https://source.chromium.org/chromium/chromium/src/+/170478de25798c69727e9e3fa31be2dc8ac8ca1d
commit 170478de25798c69727e9e3fa31be2dc8ac8ca1d
Author: Nihar Majmudar <niharm@google.com>
Date: Thu Apr 9 09:45:19 2026 -0700
[omnibox] Add source param for omnibox and realbox navigations.
Adds chrome.ob and chrome.rb source params to search queries from the
realbox and omnibox.
Change-Id: I3c833294ef6f0be891265d615815f46e1bd530fc
Bug: 497828304
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7710442
Reviewed-by: Emilia Paz <emiliapaz@chromium.org>
Commit-Queue: Nihar Majmudar <niharm@google.com>
Reviewed-by: Moe Ahmadi <mahmadi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612307}
Resolves - simple cleanup issue.
We can set disable kIPHSideBySidePinnableFeature/kIPHSideBySideTabSwitchFeature as default state.
Don't need to suppress them in rumtime. All deleted and add state overriding to
chromium_src/components/feature_engagement/public/feature_constants.cc
It was added by #32937
The way `brockit` was handling `--3way` apply failures was always
assuming that the first line would have error. This has proven wrong,
and caused a crash when whitespace warnings were print first. This
change corrects the logic to look for the error line.
Resolves https://github.com/brave/brave-browser/issues/55170
This PR migrates `CookieMonster` from macro replacements to be handled
by `plaster`. This is going to be specially useful in `cr149` where a
recent landed changed (https://crrev.com/c/7727488) would force the
introduction of patch files, and become very disruptive for how these
replacement macros work right now in general.
This PR attemps a novel approach to replicate the common pattern where
in Brave we want to replace a Chromium class with a derived Brave class:
the Chromium class is moved into a nested namespace called
`chromium_impl`, and the brave implementation is declared in its place
in a shadow file.
This has required additional plaster for types that absolutely have to
refer to the chromium implementation, but the outcome is much simpler
than the previous invisible replacements.
This change leaves no `#define` uses for replacement in the shadow
files.
Resolve https://github.com/brave/brave-browser/issues/54496
Move non-full-conversation-UI stories out of the panel story. Lazy-load separate conversation data. Still more to clean up "components_panel.tsx" but this reduces by more than half.
This was needed for me to develop the new progress states.
A follow-up will include a tool to extract conversation TS from a live conversation.
- Fix https://github.com/brave/brave-browser/issues/47810
* Introduce compact horizontal tabs layout constants
Add brave_compact_horizontal_tabs_layout.h containing compact and default metrics for horizontal tabs (tab heights, spacing, padding, toolbar/omnibox metrics). Wire these constants into layout_constants.{h,cc}: add GetHorizontalTabVerticalSpacing(), conditional layout values when #brave-compact-horizontal-tabs is enabled and touch UI is off, and a static_assert to keep defaults in sync. Update tab style and view code to use the new spacing and drag-handle constants, and tweak vertical tab style to call the getter. Update about_flags string copy to mention the URL bar, and add a unit test ensuring compact mode keeps tab strip + toolbar within the ~60 DIP budget.
* presubmit fix
* Increase kTabstripToolbarOverlap to 6
Adjust kTabstripToolbarOverlap in compact_horizontal_tabs_layout.h from 2 to 6 to increase the overlap between the tab strip and toolbar for compact (non-touch) horizontal tabs. This tweaks visual spacing to better align the tab strip with the toolbar and keep layout consistency.
* Update check_chromium_src_config.json5
* Adjust compact horizontal tab height and overlap
Reduce the compact (non-touch) tab visual height from 28 to 26 and increase the tabstrip-toolbar overlap from 6 to 8. These tweaks adjust spacing in the compact horizontal tabs layout; kTabVerticalSpacing remains 2. Ensure LayoutConstant::kTabStripHeight is kept in sync if these values are edited.
* Remove compact horizontal tabs unit test
Delete the CompactHorizontalTabsCombinedChromeHeight test and related unused includes. The removed test validated the combined tab strip + toolbar height (ensuring it stayed within the ~60 DIP budget) when compact horizontal tabs features were enabled; it also referenced feature flags and layout constants that are no longer needed in this unit test file.
* Add interactive test for compact horizontal tabs
Add BraveCompactHorizontalTabsInteractiveTest to verify that compact layout constants are selected when kBraveCompactHorizontalTabs and kBraveHorizontalTabsUpdate are enabled and Touch UI is disabled. Register the new test in browser/ui/views/tabs/BUILD.gn (interactive_ui_tests source_set) and add the test dependency to test/BUILD.gn. Also clean up the comment wording in brave_compact_horizontal_tabs_layout.h to clarify which constants must stay in sync.
* Fix clang-format in compact horizontal tabs interactive test
Break class line before the base class to satisfy presubmit.
Made-with: Cursor
* Update brave_compact_horizontal_tabs_layout.h
* Address review: rename helper, replace interactive test with unittest
- Rename BraveCompactHorizontalTabsMetricsActive ->
ShouldUseCompactHorizontalTabsForNonTouchUI and group the helper with
UseCompactHorizontalTabs for readability.
- Route GetHorizontalTab* getters through
ShouldUseCompactHorizontalTabsForNonTouchUI() so compact metrics only
apply when the flag is on and touch UI is off, removing the now-unused
kTabVisualHeightTouchCompact/kTabVerticalSpacingTouch constants.
- Replace brave_compact_horizontal_tabs_interactive_ui_test.cc with a
unittest (brave_compact_horizontal_tabs_layout_unittest.cc) that uses
TouchUiScoperForTesting to verify the compact layout constants, and
wire it into views/tabs:unit_tests.
- Refresh the header comment to reference the renamed helper.
Made-with: Cursor
* Add tests and document horizontal tab spacing
Split and expand the Brave compact horizontal tabs unit test to cover compact-flag-on/touch-off, flag-off, and touch-on cases; move feature/scoper setup into each test to exercise both sides of the guard. Reordered the GetHorizontalTabVerticalSpacing definition in layout_constants.cc (no behavior change) and expanded the layout_constants.h comment to clearly document when compact vs default tab vertical spacing is returned.
* Separate tabstrip from UI controls like traffic lights and new tab button
Introduce GetHorizontalTabControlOverlap() and new compact layout constant to separate control-only vertical overlap from tab shape overlap. Apply the overlap to caption/button positioning and tabstrip control layout across mac, Windows and Linux frame views (brave_browser_frame_view_{mac,win}.cc/.mm, browser_frame_view_layout_linux.cc), adjust BraveOpaqueBrowserFrameView top area height calculation, and update horizontal tab strip layout and unit tests to assert the new behavior. This keeps tab rendering overlap tunable independently of navigation/caption control placement.
* Address feedback
Address PR review: tie compact tab spacing to upstream, replace tab-strip GetLayoutConstant shim with plaster patch + GetHorizontalTabControlOverlap, clarify ints in frame view, dedupe layout unittest expectations.
* Rename horizontal tab control delta API
Split and rename the horizontal-tab control overlap API to better separate control placement from tab/toolbar geometry. Introduces GetHorizontalTabControlsDelta() (and kTabStripControlsHeightDelta / kTabStripControlsHeightDeltaDefault) in place of the previous GetHorizontalTabControlOverlap, centralises the compact gating via ShouldUseCompactHorizontalTabsForNonTouchUI(), and updates all callsites, tests, headers, and rewrite/patch metadata. The change preserves the behaviour (compact flag + non-touch selects the compact delta) while allowing LayoutConstant::kTabstripToolbarOverlap to remain dedicated to tab/toolbar geometry.
* format fix
* Adjust traffic lights layout for compact horizontal tabs
Make several macOS layout tweaks to better align the compact horizontal tab strip with the caption (traffic light) buttons. Zero the vertical margins carried by caption button bounds so the leading exclusion collapses to the buttons themselves (allowing the compact tab pill to sit centered). Reduce the AppKit-visible titlebar height by 8 DIP in compact mode so the traffic lights shift upward toward the shorter tab/toolbar row. Add a Brave override for horizontal tab-strip leading margin (and make the upstream getter virtual via a small header macro) to tuck the first tab pill closer to the caption cluster. Also add necessary includes (compact tab layout, tab style, outsets) and preserve upstream behaviors for non-compact or alternate layouts. Changes mirror related Helium patches referenced in comments.
* override split tab view group border radius
* Update brave_compact_horizontal_tabs_layout.h
* Update brave_browser_frame_view_win.cc
Cause: tabs::GetHorizontalTabControlsDelta() is declared in Brave’s chrome/browser/ui/layout_constants.h (under namespace tabs). The Mac frame view already includes that header; brave_browser_frame_view_win.cc used the function without including it, so the Windows compile failed (implicit declaration / unknown member).
Change: Add:
#include "chrome/browser/ui/layout_constants.h"
right after the other chrome/browser/ui/ includes in brave_browser_frame_view_win.cc, matching brave_browser_frame_view_mac.mm.
* Use chromium_src wrapper for tab control overlap
Replace the rewrite/patch substitution that retargeted
`GetLayoutConstant(LayoutConstant::kTabstripToolbarOverlap)` calls inside
`UpdateButtonBorders()` with a per-translation-unit `GetLayoutConstant`
wrapper in `chromium_src/.../horizontal_tab_strip_region_view.cc`, mirroring
the existing pattern in `browser_frame_view_win.cc`. This keeps the upstream
file untouched, drops the patch, and centralises the role-split rationale in
the chromium_src override comments.
Also documents the same pattern on the Windows wrapper (CSRC-017) and adds
a note explaining why
`BraveBrowserViewTabbedLayoutImpl::GetHorizontalTabStripLeadingMargin` does
not need an `IS_MAC` guard (upstream's `GetBoundsWithExclusion` only
consumes `leading_margin` when `params.leading_exclusion` is non-empty,
i.e. on platforms with leading caption buttons).
Made-with: Cursor
* presubmit fix
* Adjust button borders for compact horizontal tabs
Make control buttons (new tab, combo, tab search, unfocus) vertically centered when Brave's compact horizontal tabs layout is active. Add UpdateBorderInsetsIfNeeded helper and override UpdateButtonBorders() in BraveHorizontalTabStripRegionView to compute border insets using tabs::GetHorizontalTabControlsDelta() and apply them only when needed. Update the Brave header to declare the override and adjust the compact layout comment to document the new approach. Remove the per-translation-unit GetLayoutConstant wrapper from the upstream horizontal tab strip implementation and instead use a macro trick in the upstream header to safely inject a virtual UpdateButtonBorders declaration without breaking pointer-to-member syntax.
* remove unnecessary commit
* fix test
* Remove horizontal tab Y-offset adjustment
Stop applying tabs::GetHorizontalTabControlsDelta() to the caption button Y position in the Linux browser frame layout and remove the now-unused layout_constants.h include. This prevents an extra vertical offset for caption buttons when horizontal tab controls are used and cleans up an unused header include.
* Add ScopedWinCaptionLayout for Win caption layout
Introduce ScopedWinCaptionLayoutUsesGeometryTabstripOverlap to control which overlap constant is used for Windows caption layout. Adds a new header and BUILD entry, uses the scope in brave_browser_frame_view_win.cc to treat web-app titlebars as using the geometry tabstrip overlap (avoiding an extra vertical nudge for standalone PWAs), and implements the scope in chromium_src browser_frame_view_win.cc via a thread-local depth counter and adjusted GetLayoutConstantForBraveWindowControls. Also adds necessary includes and DCHECKs to ensure correct lifetime handling.
* Update browser/ui/BUILD.gn
Co-authored-by: semgrep-code-brave[bot] <278224977+semgrep-code-brave[bot]@users.noreply.github.com>
* Update BUILD.gn
* Move compact tabs layout header
Relocate brave_compact_horizontal_tabs_layout.h from chromium_src/chrome/... to browser/ui/tabs and add it to BUILD.gn. Update include-guard names and tidy some comments in the header. Adjust all affected includes across multiple Mac, view, layout and tab source files to the new path, and update presubmit/check config entries to reflect the move. This centralizes the Brave-specific compact tab layout header and fixes build/include references.
* Update browser/ui/BUILD.gn
Co-authored-by: semgrep-code-brave[bot] <278224977+semgrep-code-brave[bot]@users.noreply.github.com>
* Update BUILD.gn
* Remove presubmit ignores for compact tabs header
Remove three permanent ignore entries in chromium_presubmit_config.json5 that targeted chrome/browser/ui/tabs/brave_compact_horizontal_tabs_layout.h. This change re-enables CheckBuildConfigMacrosWithoutInclude, CheckForTooLargeFiles, and CheckUselessForwardDeclarations for that header so the presubmit checks will run against it.
* Extract win caption layout scope to new file
Introduce brave_win_caption_layout.cc containing the thread_local depth and the ScopedWinCaptionLayoutUsesGeometryTabstripOverlap ctor/dtor implementation, and add a static getter to the header. Update BUILD.gn to include the new .cc alongside the header. Remove the duplicate implementation and base/check include from browser_frame_view_win.cc and have it call the new GetCurrentWinCaptionGeometryTabstripOverlapDepth() instead. This centralizes the depth state (thread_local) and avoids multiple-definition/circular-dependency issues while keeping layout selection logic intact.
* Update browser/ui/BUILD.gn
Co-authored-by: semgrep-code-brave[bot] <278224977+semgrep-code-brave[bot]@users.noreply.github.com>
* fix linux error
* Update BUILD.gn
* Add base/check_op.h include
Include base/check_op.h in brave_win_caption_layout.cc to provide CHECK_* operator macros (e.g. CHECK_EQ) used by the implementation and prevent build/compile errors.
---------
Co-authored-by: semgrep-code-brave[bot] <278224977+semgrep-code-brave[bot]@users.noreply.github.com>
A non parseable date in the `brave.stats.last_check_ymd` preference causes a crash
on iOS. To fix this, the date parser now returns a failure indicator so and last daily usage ping is set to current date to avoid double reporting of previous pings data.
After a successful DAU ping, `processingPing`, `lastPingDate` flags and `lastPingDate` were written on different threads, creating a race condition where a new ping could start before the previous one's state was fully saved.
To fix this writes now happen together on the main thread.
After switching the menu button visibility from INVISIBLE to GONE in
https://github.com/brave/brave-core/pull/35051, the shred button became
the rightmost child of menu_button_container and lost the spacing the
menu button used to contribute via its paddingEnd. Apply an end margin
equal to the toolbar's start inset when the menu button is hidden so
the icon stays clear of the screen edge and the toolbar reads
symmetrically.
Resolves: https://github.com/brave/brave-browser/issues/55012
Moves MaybeInitNotificationHelper and all service observations into
InitializeBatAdsCallback so they are only active once the service is
fully initialized, and moves the device ID fetch into
MaybeStartBatAdsService with lazy caching so subsequent restarts skip
the fetch. Removes the redundant CanStartBatAdsService call from the
constructor, removes IsBatAdsServiceBound in favour of checking
is_bound directly, fixes the IsObserving and GetSource patterns that
caused InitializeRewardsWallet to always fall through to the
null-wallet path, renames the resource component registration methods
for clarity, and corrects observation setup and teardown ordering.
No behavioral changes.
`SearchEnginesHandler` now identifies search engines by `TemplateURLID` rather
than table model index, updating `CreateDictionaryForEngine` to accept a
TemplateURL* directly instead of an index and an `is_default` bool. When
`BraveSearchEnginesHandler` was adapted to this new signature, the is_default
flag that marks the currently-selected private engine was silently dropped from
the list, and `HandleSetDefaultPrivateSearchEngine` was left using an
index-based lookup incompatible with the IDs now sent from JavaScript. This
restores the "default" field to each engine entry by comparing `sync_guid`
against the stored pref
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/c7ddf19f71a752bd6f0a01380026f2cb25326afa
commit c7ddf19f71a752bd6f0a01380026f2cb25326afa
Author: Amelie Schneider <amelies@google.com>
Date: Fri Mar 20 07:30:00 2026 -0700
[Search] Use ID instead of table model index for accessing TemplateURLs
In order to deprecate the use of the table model in the search engines
handler, remove the `modelIndex` parameter and migrate functions to
access TemplateURLs through their ID rather than index in the table.
Bug: 491802735
Change-Id: I81a3468e55ea38782b078ddc023621d2f832a727
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7679351
Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: Nicolas Dossou-Gbété <dgn@chromium.org>
Commit-Queue: Amelie Schneider <amelies@google.com>
Cr-Commit-Position: refs/heads/main@{#1602583}
This updates hides both the options that are disabled in the shortcut button picker as well as the shortcut button itself if the option was selected prior to disabling the feature with Origin
Integration tests that query catalog-saved data directly after setup
were racing against the two-step async DB save chain on slow machines.
Poll with RunUntil until rows appear instead of querying once.
This adds support for `getCanSetDefaultSearchProvider` and `setIsDefaultSearchProvider` JS functions available to Brave Search to enable quick-Brave Search-default setting when the `UseProfileWebViewConfiguration` feature flag is enabled.
This change updates the query filter component installer to skip updating version if the json file parsing failed.
This change also adds logic to supply test only callback which gets fired after the component installer attempted to parse the json. This facilitates testing the ComponentReady functionality e2e.
Resolvesbrave/brave-browser#55124
This adds a `JavaScriptFeature` based on the `BraveGetUA.js` to support `navigator.brave.isBrave` when the `UseProfileWebViewConfiguration` feature flag is enabled
Teach review-prs subagents about non-master base branches
PRs targeting feature branches (not master, not version uplift branches)
were causing false positives: subagents couldn't find symbols/files in the
source tree and incorrectly flagged them as missing, not realising the code
was introduced by the base branch rather than master.
- Add is_feature_branch() using _fp_mod.is_version_branch() for detection
- Pass baseRefName through pr_entry() -> process_pr() -> build_subagent_prompt()
- Inject a NOTE at the top of each subagent prompt when base is a feature
branch, naming the branch and providing the exact gh api lookup command
- Add base branch awareness rule to _REVIEW_RULES
- Add {base_branch_validation_note} placeholder to _VALIDATION_INSTRUCTIONS,
populated with the concrete repo/branch lookup command when applicable
On is_brave_origin_branded=true builds the post-purchase flow is
driven by the startup dialog, so the service should not navigate
to brave://settings/origin after a first purchase. Gate the
OpenOriginSettings() call behind !IS_BRAVE_ORIGIN_BRANDED so the
behavior only fires for the upgrade case launched from
chrome://settings/system.
This updates the chromium_src overrides that enable the usage of `CWVAutofillController`, namely removing logic in the `WebView*` types that use `WebViewBrowserState` rather than a dependency injected into the client. This means creating a few new overrides for `IOSWebViewPaymentsAutofillClient` and supplying a different autofill client bridge/driver for the `CWVAutofillController` (via subclass)
This tab helper was converted to `WebStateUserData` in cr147 so it was no longer being created correctly. This change refactors the override to expose the tab helper properly so that it can be created it in `AttachTabHelpers`
Chromium change:
commit b689e19d72624727f68767ca806a1de7044f97a7
Author: Sylvain Defresne <sdefresne@chromium.org>
Date: Mon Feb 23 05:15:34 2026 -0800
[ios] Convert CaptivePortalTabHelper into a WebStateUserData<T>
With the optimisation to create TabHelper only for realized WebStates,
it is no longer necessary to use LazyWebStateUserData<T>. Convert the
class CaptivePortalTabHelper to use WebStateUserData<T> instead.
Bug: 409299519
Change-Id: Ib14babdf5bd6f1ea43b494f4ccce62e43084e3d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7594552
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Auto-Submit: Sylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Federica Germinario <fedegermi@google.com>
Reviewed-by: Federica Germinario <fedegermi@google.com>
Cr-Commit-Position: refs/heads/main@{#1588636}
The purpose of this script was to enable fullscreen support on iPads for devices that didn't yet have support, however as of iOS 16.4 this API is fully featured on iPads already so there is no reason to inject it anymore since our minimum deployment target is iOS 17