From 8104ebdf2bdd033d4ce81a73f370cf20bf41d9ce Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Thu, 18 Sep 2025 15:12:52 +0300 Subject: [PATCH] [cr142][Android] New arg navigationFulfillmentTypeSupplier at LocationBarMediator.ctor Chromium change: https://source.chromium.org/chromium/chromium/src/+/2747c27c571886bc1a646c4ab9eb1fa46c4b29fd Use event-driven supplier for fulfillment type Replace the polling-based `isUsingAiMode()` method with an event-driven `ObservableSupplier` that reports the `NavigationFulfillmentType`. This refactoring allows consumers like the LocationBar and Autocomplete systems to react dynamically to changes in the fulfillment mode (e.g., switching between DEFAULT and AI_MODE) without needing to continuously poll for the current state. As a direct benefit, the LocationBar now observes this supplier to hide the Lens button when the fulfillment type is AI_MODE, ensuring the UI accurately reflects the available actions. Bug: 436888404 Change-Id: Iae4df3f4fc6f5d2e298765a823b3ad61aa9f1512 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6943716 --- .../chrome/browser/omnibox/BraveLocationBarMediator.java | 8 ++++++-- .../org/chromium/chrome/browser/BytecodeTest.java | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java index f0a49b971d1..a95e3d41a6a 100644 --- a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java +++ b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java @@ -20,6 +20,7 @@ import org.chromium.build.annotations.NullUnmarked; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.lens.LensController; import org.chromium.chrome.browser.locale.LocaleManager; +import org.chromium.chrome.browser.omnibox.navattach.NavigationFulfillmentType; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.theme.ThemeUtils; @@ -64,7 +65,9 @@ public class BraveLocationBarMediator extends LocationBarMediator { OmniboxSuggestionsDropdownEmbedderImpl dropdownEmbedder, @Nullable ObservableSupplier tabModelSelectorSupplier, @Nullable BrowserControlsStateProvider browserControlsStateProvider, - Supplier modalDialogManagerSupplier) { + Supplier modalDialogManagerSupplier, + ObservableSupplier<@NavigationFulfillmentType Integer> + navigationFulfillmentTypeSupplier) { super( context, locationBarLayout, @@ -83,7 +86,8 @@ public class BraveLocationBarMediator extends LocationBarMediator { dropdownEmbedder, tabModelSelectorSupplier, browserControlsStateProvider, - modalDialogManagerSupplier); + modalDialogManagerSupplier, + navigationFulfillmentTypeSupplier); } public static Class getOmniboxUmaClass() { diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java index d83c666886a..b6449b9de2e 100644 --- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java +++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java @@ -1625,7 +1625,8 @@ public class BytecodeTest { BraveLocationBarMediator.getOmniboxSuggestionsDropdownEmbedderImplClass(), ObservableSupplier.class, BrowserControlsStateProvider.class, - Supplier.class)); + Supplier.class, + ObservableSupplier.class)); Assert.assertTrue( constructorsMatch( "org/chromium/chrome/browser/AppHooks",