Commit Graph
5248 Commits
Author SHA1 Message Date
AlexeyBarabash 5794409827 [cr148][Android] FragmentDependencyProvider.ctor windowAndroidSupplierarg changed
From `MonotonicObservableSupplier` to `OneshotSupplier`

Chromim change:
https://source.chromium.org/chromium/chromium/src/+/1886db4b40ccf9dfad5270be7861fefbb44c5ed3

commit 1886db4b40ccf9dfad5270be7861fefbb44c5ed3
Author: Anton Goncharenko <agonch@google.com>
Date:   Tue Mar 10 17:49:16 2026 -0700

    [Signin][Android] SafetyHub: Wait for UI dependencies before initializing sign-in coordinator.

    For consistency with other fragments' provided dependencies, pass
    Suppliers to SafetyHubModuleDelegateImpl rather than assuming the
    Suppliers have already been initialized. Able to repro a
    NullPointerException (WindowAndroid not being initialized) during
    Activity recreation when killing Chrome during the "add new account"
    sign-in flow (see repro steps in crbug.com/479179162).

    Bug: 479179162
    Change-Id: I8a37a6a532cf5d4650849ec86151e1ee9c9ee0f2
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7642808
    Reviewed-by: Menghan Yang <myuu@google.com>
    Commit-Queue: Anton Goncharenko <agonch@google.com>
    Reviewed-by: Zaina Al-Mashni <zalmashni@google.com>
    Reviewed-by: Jinsuk Kim <jinsukkim@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597438}
2026-04-27 12:00:45 +01:00
AlexeyBarabash 2a0d8de9ef Android settings containment (#35636)
* [Android] Fixed containment at settings

Resolves https://github.com/brave/brave-browser/issues/54164

* Fixed containment for the Homepage settings screen
* Fixed containment for WebRTC policy screen
* Fixed containment at Languages settings; modified SettingsUtils.getVisiblePreferences
* Fixed  privacy item
* Fixed containment for NFT discovery learn more preference
Replaced TextMessagePreference (BackgroundStyle.NONE, transparent) with
ChromeBasePreference so the NFT description groups with the Enable NFT
discovery toggle in one card. Follows the same camera OS-warning pattern:
ForegroundColorSpan for the link color, setOnPreferenceClickListener for
the tap action, matching Chromium upstream conventions.
* Moved NFT discovery block before Reset wallet preference
Enable NFT discovery toggle and its description now appear above
"Reset and clear wallet data", matching the intended UX order.
* Fixed containment for Brave Firewall + VPN settings
Set initial visibility of server_change_location in onCreatePreferences
to avoid animated removal artifact. Call notifyPreferencesUpdated() after
dynamic visibility changes in updateSummaries so containment styles stay
in sync with adapter positions.
* Fixed containment for New Tab Page settings learn more
Replaced ClickableSpansTextMessagePreference with ChromeBasePreference
for the sponsored images learn more link so it groups into the
Background Images card with the toggles above it.
* Removed On/Off captions from New Tab Page switch prefs
2026-04-25 18:49:09 +03:00
AlexeyBarabash 603447ffe7 Android navbar dynamic color when addressbar bottom (#35877)
* Fixed navigation bar color when address bar is at the bottom

Resolves https://github.com/brave/brave-browser/issues/54934
2026-04-24 22:32:50 +03:00
Serg bd61cf9c46 [Android] Hide Survey Panelist setting for Brave Origin users (#35800)
The Survey Panelist toggle and its "Learn more" row remained visible
under Settings -> Brave Shields & privacy for users with an active
Brave Origin subscription.

Extend the existing BRAVE_NTP_BRANDED_WALLPAPER_SURVEY_PANELIST
feature-flag gate in BravePrivacySettings to also require
!BraveOriginSubscriptionPrefs.getIsCredentialSummaryActiveCached() for
both the preference visibility and the settings-search index entry.

Resolves: https://github.com/brave/brave-browser/issues/54853
2026-04-22 22:12:47 +01:00
samartnik 380731a553 [Android] Fix Clear data on exit not clearing omnibox suggestions (#35790)
ShortcutsBackend initializes asynchronously. When clearBrowsingData() was
called during startup, the backend was still in the INITIALIZING state and
its OnHistoryDeletions handler silently returned early, leaving shortcut
suggestions (clock-icon entries) intact after exit.

Fix by adding a JNI bridge (BraveShortcutsUtils.initThenRun) that waits for
ShortcutsBackend to finish its async DB init via OnShortcutsLoaded() before
invoking clearBrowsingData(). Also move the clear-on-exit call from
initializeState() to finishNativeInitialization() where the profile is
available, and add FORM_DATA (autofill) to the cleared data types.
2026-04-22 14:36:13 -04:00
Serg 82eaeebda3 [Android] Suppress engagement notifications and promos for Origin users (#35737)
Brave Origin subscribers on Android currently receive general-engagement
notifications and unbidden promo dialogs that are not tied to any
Origin-disabled feature. Suppress them under the product stance that
Origin users get a cleaner, promo-free experience.

Surfaces gated:
- RetentionNotificationPublisher: HOUR_3, HOUR_24, DAY_6, EVERY_SUNDAY,
  and DORMANT_USERS_DAY_14/25/40 notification fire-time.
- BraveActivity: showDormantUsersEngagementDialog (cold-start and
  in-foreground tap paths), India ad-free callout, YouTube-in-Brave
  dialog.

The existing getIsSubscriptionActive() pref only reflects Play Store
purchases, so it misses desktop-linked subscribers. Introduce a new
Java-side cached boolean BRAVE_ORIGIN_CREDENTIAL_SUMMARY_CACHED, written
from two authoritative any-source signals:

- fetchOrderCredentials success (primes the cache immediately on a
  successful Play Store purchase).
- requestCredentialSummary callback (covers Play Store and
  desktop-linked paths; the Skus service resolves both internally).

BraveActivity.finishNativeInitialization now calls
requestCredentialSummary on every app start to keep the cache fresh.

Resolves: https://github.com/brave/brave-browser/issues/54791
2026-04-21 22:58:42 +01:00
Serg be90a732da [Android] Suppress VPN link-subscription dialog when disabled by policy (#35719)
BraveActivity shows LinkVpnSubscriptionDialogFragment when a VPN
subscription is detected on the device and the link dialog has not yet
been shown. The guard did not consult the VPN policy pref, so the dialog
was presented even to users whose VPN has been disabled by policy (e.g.
Brave Origin users with VPN turned off at the policy layer).

Add !BraveVpnPolicy.isDisabledByPolicy(mTabModelProfileSupplier.get()) to
the guard.

Resolves: https://github.com/brave/brave-browser/issues/54786
2026-04-21 18:46:54 +01:00
Serg a59d89fa21 [Android] Update Brave Origin paywall and settings copy per design feedback (#35700)
String changes in android_brave_strings.grd:
- IDS_MENU_ORIGIN: "Origin" -> "Brave Origin" (Settings menu row).
- IDS_BRAVE_ORIGIN_PREMIUM: "Origin" -> "Brave Origin" (paywall title).
- IDS_ORIGIN_LEO_AI_TOGGLE: "AI" -> "Leo AI" (toggle label
  consistency with other Leo surfaces).
- IDS_ORIGIN_DESCRIPTION_BODY: drop the trailing sentence
  "Origin will remove most other features from the browser."
- IDS_ORIGIN_CHANGING_BRAVE_FEATURES_MESSAGE_POST_PURCHASE:
  "once Origin has finished updating." ->
  "once Brave Origin has finished updating."
- IDS_ORIGIN_PAYWALL_TEXT_4: rewritten to
  "One-time purchase can be activated multiple times across all
  your devices".
- IDS_ORIGIN_DESCRIPTION_NOTE: removed entirely (Search Premium
  note no longer shown).

Layout changes:
- brave_origin_description_preference.xml: remove the
  origin_description_note TextView from the preference-screen
  description block.
- activity_brave_origin_plans.xml (portrait paywall) and
  layout-land/activity_brave_origin_plans.xml (landscape
  paywall): remove the note TextView; body description's bottom
  margin bumped from 16dp to 24dp to preserve spacing with the
  next section.

Resolves: https://github.com/brave/brave-browser/issues/54761
2026-04-21 01:14:29 +01:00
Serg 37e0eeb8f1 [Android] Hide send_web_discovery toggle when managed by policy (#35680)
BraveSearchEnginesPreferences.removePreferenceIfPresent was calling
getPreferenceScreen().removePreference(pref) unconditionally. That
only removes direct children of PreferenceScreen — when the target
preference is nested inside a PreferenceCategory (as send_web_discovery
is, inside currently_used_search_engines_category), the remove call
silently returns false and the toggle stays visible.

Users whose WebDiscoveryEnabled pref is managed by policy (e.g. Brave
Origin subscribers, enterprise admins) saw the toggle rendered and
greyed-out instead of being hidden entirely.

Fix: remove from the preference's actual parent group.
preference.getParent() returns the containing PreferenceGroup — the
PreferenceCategory for nested prefs, the PreferenceScreen itself for
top-level prefs. Works for both cases.

Other PREF_CUSTOM_SEARCH_ENGINES_CATEGORY caller is a top-level
PreferenceCategory; new behavior is equivalent for that case.

Resolves: https://github.com/brave/brave-browser/issues/54751
2026-04-20 18:28:02 +00:00
Serg 34f390c990 [Android] Honor Brave Rewards disabled-by-policy pref (#35651)
brave_rewards::IsDisabledByPolicy() was hardcoded to return false on
Android regardless of the managed kDisabledByPolicy pref, so every
native call site that gates on brave_rewards::IsSupported() failed to
suppress for Brave Origin subscribers (and enterprise admins setting
the BraveRewardsDisabled policy).

Symptoms fixed:
- Ads service kept initializing on Android for Origin profiles
  (AdsServiceFactory::GetForProfile gates on IsSupported).
- NTP sponsored background images and sponsored rich-media takeover
  rendered (downstream of the ads service via ViewCounterService).
- DAY_10 / DAY_30 / DAY_35 Rewards retention notifications fired
  (RetentionNotificationPublisher gates on rewardsNativeWorker
  .isSupported).

Java-side Rewards UI surfaces were already correctly gated via
BraveRewardsPolicy.isDisabledByPolicy(profile) and are unaffected.

Also decouples BraveVpnUtils.isRegionSupported() from
BraveRewardsNativeWorker.isSupported() — otherwise the guard flip would
cause VPN UI to hide for any profile where Rewards is policy-disabled
as a side effect. Added BraveVpnNativeWorker.isSupportedRegion that
does the OFAC region check directly via brave_l10n.

Resolves: https://github.com/brave/brave-browser/issues/54703
2026-04-20 17:08:14 +01:00
samartnik f717b29ba2 [Android] Fix for custom search engine footer with settings containment (#35673) 2026-04-20 11:51:28 -04:00
Pavel Beloborodov ebbb41978f Added ENABLE_EMAIL_ALIASES buildflag. (#35528)
* Added ENABLE_EMAIL_ALIASES buildflag.
2026-04-20 20:33:07 +07:00
Serg 8b37ade21d [Android] Fix Origin paywall stuck during Play Store purchase restore (#35606)
When a user who previously purchased Brave Origin switches devices,
verifyPurchase() at startup finds the Play Store purchase and kicks off
the SKUs createOrderFromReceipt / fetchOrderCredentials chain to obtain
an order ID. Until that chain completes, requestCredentialSummary
returns inactive, so Settings -> Brave Origin launches the paywall even
though a purchase exists and is mid-restore.

Gate handleOriginPreferenceClick on isFetchingCredentials() and route
directly to BraveOriginPreferences (which renders the fetching spinner
via its existing setCredentialsFetchedCallback path) when a restore is
in flight.

Also harden setCredentialsFetchedCallback against a lost-notification
race: after registering the callback, re-check isFetchingCredentials()
and synthesize a success notification if the fetch already completed.
Order-ID-set is the only path that flips the state to false, so
synthesizing success is safe.

Resolves: https://github.com/brave/brave-browser/issues/54637
2026-04-16 23:48:12 +00:00
Serg 90fadf6259 [Android] Register Brave as Android AutofillService for address autofill (#35567)
* [Android] Register Brave as Android AutofillService for address autofill

Re-enables the Android AutofillService that was removed in
https://github.com/brave/brave-core/pull/25759 due to crashes on
split-APK installs. Uses the SplitCompat pattern
(SplitCompatAutofillService base class) so the service works correctly
when installed from the Play Store.

When the user selects Brave as their autofill provider in Android Settings,
Brave can fill saved address profiles into third-party apps and save new
addresses from manually filled forms.

Resolves: https://github.com/brave/brave-browser/issues/41334
2026-04-16 14:23:41 -04:00
AlexeyBarabash 5e58cbf234 Fixed search settings for Brave's languages page (#35544)
Resolves https://github.com/brave/brave-browser/issues/54524
2026-04-16 11:08:29 +03:00
Szilard Szaloki d615f4b477 Account: moves to OTP-based email verification (#35502) 2026-04-16 05:42:25 +01:00
Anton Paymyshev eebe1d9885 Remove KeyedService from some wallet services (#35527) 2026-04-15 18:09:18 +01:00
Kevin Smith beee7d891d [Rewards] Remove Gemini wallet provider (#35380) 2026-04-14 22:11:29 -04:00
Serg 40e05127bf Revert "[Android] Initialize bottom controls synchronously to fix progress bar" (#35510)
Revert "[Android] Initialize bottom controls synchronously to fix progress ba…"

This reverts commit 5ba39ce79e.
2026-04-14 22:14:36 +00:00
AlexeyBarabash d1ad84c72c [Android] Implemented SEARCH_INDEX_DATA_PROVIDER for AppearancePreferences (#35437)
Resolves https://github.com/brave/brave-browser/issues/54408
2026-04-14 19:55:52 +03:00
Simone Arpe 1117f0bac2 Re-check PiP icon visibility when document load is complete (#35478) 2026-04-14 16:11:06 +02:00
Serg 5ba39ce79e [Android] Initialize bottom controls synchronously to fix progress bar (#35464)
The deferred PostTask introduced to avoid ANR was causing the bottom
controls to be initialized after the progress bar, breaking it.
Revert to synchronous initialization.

Resolves: https://github.com/brave/brave-browser/issues/54458
2026-04-13 15:49:47 -04:00
Simone Arpe e21d548ec2 Adjust widget text gravity (#35430) 2026-04-10 18:24:08 +02:00
Serg 28138db70b [Android] Check AI Chat feature flag for Leo quick search icon (#35429)
Resolves: https://github.com/brave/brave-browser/issues/48311
2026-04-10 18:01:05 +02:00
Serg 9afe305769 [Android] Hide BAT icon on tablet when rewards disabled by policy (#35400)
The maybeHideRewardsLayout() method controls rewards icon visibility on
tablets based on width but didn't check BraveRewardsPolicy, causing it
to override the main visibility logic that correctly hides the icon when
rewards are disabled.

Resolves: https://github.com/brave/brave-browser/issues/54358
2026-04-09 19:50:14 +02:00
Szilard Szaloki db1c2eeb43 Account: migrate to Mojom observer for state synchronization (#35282) 2026-04-09 01:31:20 +02:00
samartnik 890fcfb8b8 [Android] Fix for details action on advanced protection message (#35386)
* [Android] Fix for details action on advanced protection message

* [Tests] Fix for bytecode test
2026-04-09 00:24:17 +02:00
Oliver 3660b3622a Android: Implement favicons for Password Manager entries (#33868)
* Android: Implement favicons for Password Manager entries

We now display favicons for Password Manager as happens for our desktop
edition.

In order to do this, the C++ side now passes in the full origin so that
we have the clean, proper URI in order to fetch the favicon.

Resolves brave/brave-browser#52775
2026-04-08 18:56:21 +02:00
AlexeyBarabash b62ded55b4 [Android][DynamicColors] Fixed the navigation bar color (#35251)
* [Android][DynamicColors] Fixed the navigation bar color

Resolves https://github.com/brave/brave-browser/issues/53758
2026-04-08 19:24:02 +03:00
Serg ed743cf544 [Android] Fix Origin showing paywall and "Link Purchase" for linked desktop purchases (#35376)
Always check credentials via SKUs SDK (requestCredentialSummary) in
handleOriginPreferenceClick() instead of gating on the Play Store
purchase pref. This mirrors how Leo uses getPremiumStatus() to handle
both Play Store and desktop purchases.

Only show "Link Purchase" when there is an actual Play Store purchase
that hasn't been linked yet. Desktop purchases have no Play Store
receipt to link.

Resolves: https://github.com/brave/brave-browser/issues/54312
2026-04-08 17:14:18 +02:00
Anton Paymyshev ae9c1a1949 Completely remove kNativeBraveWalletFeature (#35261) 2026-04-08 22:09:45 +07:00
Darnell Andries 1abf429b8d Record Android widget search metric on resume (#35300) 2026-04-07 19:00:23 -07:00
Darnell Andries 3bdbe730da Call top site metric methods on Android (#35096)
* Call top site metric methods on Android

* Fix PWA/external navigation recording on Android

* Address PR feedback
2026-04-03 20:18:38 -07:00
Terry ManceyandAleksei Seren 4cce300eba [ads] Remove custom push notification ads (#35137)
Custom push notifications rendered notification ads as popup windows as a
fallback when native OS notifications were unavailable. Native notifications
are now the only delivery path so the entire custom rendering path, its
feature flags, platform bridge, Views UI, Android dialog UI, P3A position
metric, and three migrated prefs are removed.

Co-authored-by: Aleksei Seren <aseren@brave.com>
2026-04-03 09:09:44 -05:00
samartnik 70cd06d5a3 [Android] Enable CCTToolbarRefactor feature (#35218)
* [Android] Enable CCTToolbarRefactor feature

* [Review] Remove dependency on TINT propertry key
2026-04-02 17:14:55 -04:00
samartnik 187abd2b8a [Android] Add support for custom search engines (#35171)
* [Android] Add support for custom search engines

* [Review] Optimise check for delete eligibility
2026-04-02 10:03:42 -04:00
Szilard Szaloki 6cfa552a25 Account: distinguish network errors from HTTP errors (#35189) 2026-04-02 02:07:10 -04:00
Serg e0365ec5d6 [Android] Remove unused FOREGROUND_SERVICE_CAMERA permission from Android manifest (#35178)
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
2026-04-02 00:06:11 +02:00
Serg 841cad239e [Android] Defer bottom toolbar ViewStub inflation to fix startup ANR (#35083)
Move the bottom controls setup (ViewStub inflation, coordinator
creation, native initialization) from synchronous execution during
finishNativeInitialization to a deferred UI task via PostTask. The
synchronous inflation was triggering HardwareRenderer.nNotifyExpensiveFrame
which blocked the main thread waiting for the GPU, causing ANR on
devices under GPU pressure during startup.

This is safe because all consumers of mBottomControlsCoordinatorSupplier
and mTabGroupUiOneshotSupplier already null-check before use, and the
bottom toolbar starts with visibility="gone" making the one-frame delay
imperceptible. The task is wrapped with mCallbackController.makeCancelable()
to auto-cancel during Activity teardown.

Resolves: https://github.com/brave/brave-browser/issues/54077
2026-03-30 17:55:32 -04:00
Terry ManceyandAleksei Seren 40526ffca3 [ads] Serve new-tab takeover ads on demand instead of prefetching (#34771)
[Ads] Serve new-tab takeover ads on demand instead of prefetching

Removing prefetching reduces unnecessary complexity.
Ads will instead be served on demand, ensuring they are
only delivered within the campaign’s configured start and
end dates.

Co-authored-by: Aleksei Seren <aseren@brave.com>
2026-03-27 17:59:52 -05:00
Darnell Andries d42415c8c2 Call omnibox metric methods on Android (#35009)
Ensure these methods are called for both normal/private contexts, so we get more comprehensive data results.
2026-03-27 22:17:00 +00:00
vadims 9f228f29fa [SHRED] Remove empty space between title and radio buttons on Preference selection dialog (#35031)
Added a change to hide the option dialog description when it contains
no text.

Resolved: https://github.com/brave/brave-browser/issues/53989

--------

Signed-off-by: Vadym Struts <vstruts@brave.com>
2026-03-27 21:58:29 +01:00
Serg 47521cfbf5 Android new tab at the bottom (#35051)
* [Android] Move tab switcher controls to bottom when address bar is at bottom

When the address bar is configured to show at the bottom, reposition the
entire hub toolbar (new tab, menu, pane switcher, search, shred) from
the top to the bottom of the tab switcher for one-handed accessibility.

- BraveHubManagerImpl: Add maybeRepositionToolbarToBottom() that changes
  the toolbar wrapper's FrameLayout gravity to BOTTOM and swaps the pane
  host container's top margin to bottom margin. Uses EdgeToEdge pad
  adjuster (same pattern as upstream HubBottomToolbarCoordinator) to
  handle navigation bar insets. Properly cleans up the adjuster on hub
  hide since the coordinator and views are destroyed between show/hide
  cycles.

- BraveHubManagerImplClassAdapter: Expose parent's mEdgeToEdgeSupplier
  field via deleteField/makeProtectedField bytecode pattern.

- BraveToolbarManager: Remove setLayoutStateProvider() and its
  LayoutStateObserver that toggled menu popup direction on tab switcher
  transitions. No longer needed since the hub toolbar is now at the
  bottom when address bar is at bottom.

- BraveHubToolbarView: Change INVISIBLE to GONE for hidden action/menu
  buttons when bottom navigation controls are enabled (address bar on
  top). INVISIBLE left the buttons clickable despite being hidden.

Resolves: https://github.com/brave/brave-browser/issues/53326
2026-03-27 21:57:06 +01:00
Artem Samoilenko cb49c717c1 [cr147][Android] Disable CCTToolbarRefactor feature
Disable feature for now, it will be properly enabled in the context of the follow up issue https://github.com/brave/brave-browser/issues/53917
2026-03-26 19:55:49 -04:00
Artem Samoilenko d362170f05 [cr147][Android] Changes for MVT refactor
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/47857f79d20046a5fc9e3f470e3350c881d65874

commit 47857f79d20046a5fc9e3f470e3350c881d65874
Author: Yanling <yanlinghu@google.com>
Date:   Fri Mar 13 08:36:20 2026 -0700

    [M147] [NtpRefactor] Fix the MVT being truncated issue

    Original change's description:
    > [NtpRefactor] Fix the MVT being truncated issue
    >
    > This CL fixes a bug introduced in crrev.com/c/7644608 where the Most
    > Visited Tiles container is truncated when the NTP is viewed on a narrow
    > window on a tablet.
    > https://drive.google.com/file/d/14-JrnjARKH_7Wy5Wh3iJxQch6KgtuDbu/view?usp=sharing&resourcekey=0-wSzY2uu69f1o_9rRyNHMBw
    >
    > Prior to the refactor, the lateral margins and width for tablets were
    > applied to the outer container (a HorizontalScrollView with ID
    > R.id.mv_tiles_container), overriding the static XML margins. However,
    > the refactor moved this logic to MostVisitedTilesMediator but applied
    > the dynamic margins to the inner layout (MostVisitedTilesLayout with ID
    > R.id.mv_tiles_layout), which is a child of the outer container.
    >
    > This CL fixes the issue by passing the outer container view
    > (mvTilesContainerLayout) down to the MostVisitedTilesMediator, so that
    > the dynamic MarginLayoutParams are once again correctly applied to the
    > outer container. We also updated MostVisitedTilesCoordinator and the
    > related unit tests to reflect and verify this change.
    >
    > This video demonstrate the UI after this CL:
    > https://drive.google.com/file/d/1vrznQ5QZ5BlHUyVRC3508g-N8EFFrKaG/view?usp=sharing&resourcekey=0-ZztGk_lxOAjzprNzQvZ-5w
    >
    > Bug: 491890688
    > Change-Id: I8ce30c55e317f7ec44a1b259ffbfa6acee28355c
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7658684
    > Commit-Queue: Yanling Hu <yanlinghu@google.com>
    > Reviewed-by: Xi Han <hanxi@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1598066}

    (cherry picked from commit bb19dc897a3206b86e9b6334c9220d92653696e0)

    Bug: 492318483,491890688
    Change-Id: I8ce30c55e317f7ec44a1b259ffbfa6acee28355c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7662270
    Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Cr-Commit-Position: refs/branch-heads/7727@{#252}
    Cr-Branched-From: ce01102937348db7b88c8a4257ee4b3ac702eb1a-refs/heads/main@{#1596535}
2026-03-26 19:55:47 -04:00
Artem Samoilenko 1d0e12a715 [cr147][Android] Apply changes for kAndroidSettingsContainment feature
Feature itself is still disabled, but they already rolling it out in cr147 via A/B testing.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/0fb4e5a6d931253ae1dd7147b46afa2a866d8db1

commit 0fb4e5a6d931253ae1dd7147b46afa2a866d8db1
Author: Gazal Agarwal <agazal@google.com>
Date:   Tue Jul 29 10:19:07 2025 -0700

    [AndroidSettingsContainment] Add feature flag

    Bug: 433576895
    Test: Open chrome://flags and search for the flag.
    Change-Id: I7a30e24372349adb978032bdea1d754956cec571
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6795526
    Reviewed-by: Wenyu Fu <wenyufu@chromium.org>
    Commit-Queue: Gazal Agarwal <agazal@google.com>
    Cr-Commit-Position: refs/heads/main@{#1493629}
2026-03-26 19:55:47 -04:00
Artem Samoilenko dbbf9cce02 [cr147][Android] Changes for selection context menu on extension popup
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/6e3f8761496b427d889d754437e284205818be46

commit 6e3f8761496b427d889d754437e284205818be46
Author: Masa Fujita <massan@google.com>
Date:   Sun Mar 8 18:50:52 2026 -0700

    extensions: Support selection context menu on extension popup

    This CL enables users to display selected text context menu on top of
    extension action popups. The call to display selection context menu used
    to get squashed because `SelectionDropdownMenuDelegate` wasn't set in
    ThinWebView.

    Bug: 429279387
    Change-Id: Ic561792fc21a608b72ce3f235201c5aebc640783
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7632516
    Reviewed-by: David Trainor <dtrainor@chromium.org>
    Commit-Queue: Masa Fujita <massan@google.com>
    Reviewed-by: Patrick Noland <pnoland@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596124}
2026-03-26 19:55:43 -04:00
Artem Samoilenko c872d04ae4 [cr147][Android][NtpRefactor] Move usages of MVTilesLayout to MostVisitedTilesCoordinator
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/67b2379a1abe78abaaa3e1bc6f25402c3a1de569

commit 67b2379a1abe78abaaa3e1bc6f25402c3a1de569
Author: Xi Han <hanxi@google.com>
Date:   Fri Mar 6 15:01:24 2026 -0800

    [NtpRefactor] Move usages of MVTilesLayout to MostVisitedTilesCoordinator.

    This is a refactor CL without any behaviour changes. We move all usage
    of MVTilesLayout from NewTabPageLayout to MostVisitedTilesCoordinator.

    Bug: 487641528
    Change-Id: Icb3f65b42a3cb02f214d9f0fa09ab7b71a3e0285
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7644608
    Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
    Commit-Queue: Xi Han <hanxi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1595724}
2026-03-26 19:55:42 -04:00
Artem Samoilenko e406a57f2f [cr147][Android] Fixes for JdkObsolete java warning
Warning: [JdkObsolete] Use new InputStreamReader(InputStream, Charset) instead.
2026-03-26 19:55:41 -04:00
Artem Samoilenko 862b803638 [cr147][Android] Null-annotate RootUiCoordinator (part 6)
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/550eb1819e9f42173df13a06432b1bc895d0931a

commit 550eb1819e9f42173df13a06432b1bc895d0931a
Author: Henrique Nakashima <hnakashima@chromium.org>
Date:   Wed Mar 4 12:04:14 2026 -0800

    [Android] Null-annotate RootUiCoordinator (part 6)

    Fix 7 NullAway errors due to:
    - mBottomSheetSnackbarManagerSupplier / mBottomSheetSnackbarManager
    - mScrimManagerSupplier / mScrimManager
    - mPageZoomBarCoordinator

    Change-Id: I44f09d2594776e2b7b2ebfd8611b523f0dbd7a2b
    Bug: 485252552
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7624622
    Reviewed-by: Andrew Grieve <agrieve@chromium.org>
    Owners-Override: Henrique Nakashima <hnakashima@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1594141}
2026-03-26 19:55:40 -04:00