[Discount][Clank] Check price tracking content eligible with product info and remove ineligible button state

Non-pdp: https://screenshot.googleplex.com/4sAq7kKhyYwtfKV

Bug: 409443205
Change-Id: Ib6a039d30ea5806e1af4c584fd0f378ac3d91ec1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6442878
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Qi Bao <qib@google.com>
Reviewed-by: Mei Liang <meiliang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1444963}
diff --git a/chrome/browser/commerce/price_insights/android/java/src/org/chromium/chrome/browser/price_insights/PriceInsightsBottomSheetProperties.java b/chrome/browser/commerce/price_insights/android/java/src/org/chromium/chrome/browser/price_insights/PriceInsightsBottomSheetProperties.java
index 5a42f05..2b58df2d 100644
--- a/chrome/browser/commerce/price_insights/android/java/src/org/chromium/chrome/browser/price_insights/PriceInsightsBottomSheetProperties.java
+++ b/chrome/browser/commerce/price_insights/android/java/src/org/chromium/chrome/browser/price_insights/PriceInsightsBottomSheetProperties.java
@@ -65,15 +65,4 @@
                 OPEN_URL_BUTTON_VISIBLE,
                 OPEN_URL_BUTTON_ON_CLICK_LISTENER
             };
-
-    public static final PropertyKey[] PRICE_TRACKING_KEYS =
-            new PropertyKey[] {
-                PRICE_TRACKING_TITLE,
-                PRICE_TRACKING_BUTTON_TEXT,
-                PRICE_TRACKING_BUTTON_ICON,
-                PRICE_TRACKING_BUTTON_FOREGROUND_COLOR,
-                PRICE_TRACKING_BUTTON_BACKGROUND_COLOR,
-                PRICE_TRACKING_BUTTON_ENABLED,
-                PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER
-            };
 }
diff --git a/chrome/browser/commerce/price_tracking/android/BUILD.gn b/chrome/browser/commerce/price_tracking/android/BUILD.gn
index 2fe169a..403b344 100644
--- a/chrome/browser/commerce/price_tracking/android/BUILD.gn
+++ b/chrome/browser/commerce/price_tracking/android/BUILD.gn
@@ -49,6 +49,7 @@
   sources = [
     "java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentCoordinator.java",
     "java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediator.java",
+    "java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentProperties.java",
     "java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentViewBinder.java",
   ]
 
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentCoordinator.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentCoordinator.java
index e034ae0..9f363e2 100644
--- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentCoordinator.java
+++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentCoordinator.java
@@ -18,7 +18,6 @@
 import org.chromium.chrome.browser.commerce.CommerceBottomSheetContentProperties;
 import org.chromium.chrome.browser.commerce.CommerceBottomSheetContentProvider;
 import org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetCoordinator.PriceInsightsDelegate;
-import org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
@@ -40,7 +39,7 @@
                         .inflate(R.layout.price_tracking_layout_v2, /* root= */ null);
         updateTouchDelegate();
         PropertyModel propertyModel =
-                new PropertyModel(PriceInsightsBottomSheetProperties.PRICE_TRACKING_KEYS);
+                new PropertyModel(PriceTrackingBottomSheetContentProperties.ALL_KEYS);
         PropertyModelChangeProcessor.create(
                 propertyModel,
                 mPriceTrackingContentContainer,
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediator.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediator.java
index 06f6ddfd..d2c56cf 100644
--- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediator.java
+++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediator.java
@@ -4,13 +4,12 @@
 
 package org.chromium.chrome.browser.price_tracking;
 
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ENABLED;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ICON;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_TEXT;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_TITLE;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ICON;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_TEXT;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_TITLE;
 
 import android.content.Context;
 import android.view.View.OnClickListener;
@@ -29,6 +28,7 @@
 import org.chromium.components.browser_ui.styles.SemanticColorUtils;
 import org.chromium.components.commerce.core.CommerceFeatureUtils;
 import org.chromium.components.commerce.core.PriceBucket;
+import org.chromium.components.commerce.core.ShoppingService;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.widget.Toast;
 
@@ -56,27 +56,32 @@
     }
 
     public void requestShowContent(Callback<Boolean> contentReadyCallback) {
+        ShoppingService shoppingService =
+                ShoppingServiceFactory.getForProfile(mTabSupplier.get().getProfile());
+        if (shoppingService == null
+                || !CommerceFeatureUtils.isShoppingListEligible(shoppingService)) {
+            contentReadyCallback.onResult(false);
+        }
+
         mPriceTrackingStateSupplier =
                 mPriceInsightsDelegate.getPriceTrackingStateSupplier(mTabSupplier.get());
         mPriceTrackingStateSupplier.addObserver(mUpdatePriceTrackingButtonModelCallback);
 
+        shoppingService.getProductInfoForUrl(
+                mTabSupplier.get().getUrl(),
+                (url, info) -> {
+                    boolean hasProductInfo = info != null && info.productClusterId.isPresent();
+                    if (hasProductInfo) {
+                        updatePriceTrackingButtonModel(mPriceTrackingStateSupplier.get());
+                    }
+                    contentReadyCallback.onResult(hasProductInfo);
+                });
         fetchPriceBucket();
-        updatePriceTrackingButtonModel(mPriceTrackingStateSupplier.get());
-        contentReadyCallback.onResult(true);
     }
 
     private void updatePriceTrackingButtonModel(boolean isPriceTracked) {
-        boolean priceTrackingEligible =
-                CommerceFeatureUtils.isShoppingListEligible(
-                        ShoppingServiceFactory.getForProfile(mTabSupplier.get().getProfile()));
-
         mPropertyModel.set(PRICE_TRACKING_TITLE, mTabSupplier.get().getTitle());
-        mPropertyModel.set(PRICE_TRACKING_BUTTON_ENABLED, priceTrackingEligible);
 
-        if (!priceTrackingEligible) {
-            updatePriceTrackingButtonIneligible();
-            return;
-        }
         updatePriceTrackingButtonState(isPriceTracked);
         mPropertyModel.set(
                 PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER,
@@ -101,22 +106,6 @@
         mPriceTrackingStateSupplier = null;
     }
 
-    private void updatePriceTrackingButtonIneligible() {
-        mPropertyModel.set(
-                PRICE_TRACKING_BUTTON_TEXT,
-                mContext.getString(
-                        R.string.price_insights_content_price_tracking_disabled_button_text));
-        mPropertyModel.set(
-                PRICE_TRACKING_BUTTON_ICON,
-                R.drawable.price_insights_sheet_price_tracking_button_disabled);
-        mPropertyModel.set(
-                PRICE_TRACKING_BUTTON_FOREGROUND_COLOR,
-                mContext.getColor(R.color.price_tracking_ineligible_button_foreground_color));
-        mPropertyModel.set(
-                PRICE_TRACKING_BUTTON_BACKGROUND_COLOR,
-                mContext.getColor(R.color.price_tracking_ineligible_button_background_color));
-    }
-
     private void updatePriceTrackingButtonState(boolean enabled) {
         int buttonTextResId =
                 enabled
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentProperties.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentProperties.java
new file mode 100644
index 0000000..2e17f44a
--- /dev/null
+++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentProperties.java
@@ -0,0 +1,43 @@
+// Copyright 2025 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.price_tracking;
+
+import android.view.View.OnClickListener;
+
+import org.chromium.ui.modelutil.PropertyKey;
+import org.chromium.ui.modelutil.PropertyModel.WritableIntPropertyKey;
+import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey;
+
+/** Properties for price tracking bottom sheet content. */
+public class PriceTrackingBottomSheetContentProperties {
+
+    public static final WritableObjectPropertyKey<String> PRICE_TRACKING_TITLE =
+            new WritableObjectPropertyKey<>();
+
+    public static final WritableObjectPropertyKey<String> PRICE_TRACKING_BUTTON_TEXT =
+            new WritableObjectPropertyKey<>();
+
+    public static final WritableIntPropertyKey PRICE_TRACKING_BUTTON_ICON =
+            new WritableIntPropertyKey();
+
+    public static final WritableIntPropertyKey PRICE_TRACKING_BUTTON_FOREGROUND_COLOR =
+            new WritableIntPropertyKey();
+
+    public static final WritableIntPropertyKey PRICE_TRACKING_BUTTON_BACKGROUND_COLOR =
+            new WritableIntPropertyKey();
+
+    public static final WritableObjectPropertyKey<OnClickListener>
+            PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER = new WritableObjectPropertyKey<>();
+
+    public static final PropertyKey[] ALL_KEYS =
+            new PropertyKey[] {
+                PRICE_TRACKING_TITLE,
+                PRICE_TRACKING_BUTTON_TEXT,
+                PRICE_TRACKING_BUTTON_ICON,
+                PRICE_TRACKING_BUTTON_FOREGROUND_COLOR,
+                PRICE_TRACKING_BUTTON_BACKGROUND_COLOR,
+                PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER
+            };
+}
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentViewBinder.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentViewBinder.java
index 2803620..cba5ceec 100644
--- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentViewBinder.java
+++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentViewBinder.java
@@ -4,13 +4,12 @@
 
 package org.chromium.chrome.browser.price_tracking;
 
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ENABLED;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ICON;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_TEXT;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_TITLE;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ICON;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_TEXT;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_TITLE;
 
 import android.content.res.ColorStateList;
 import android.view.View;
@@ -48,8 +47,6 @@
             ViewCompat.setBackgroundTintList(
                     priceTrackingButton,
                     ColorStateList.valueOf(model.get(PRICE_TRACKING_BUTTON_BACKGROUND_COLOR)));
-        } else if (PRICE_TRACKING_BUTTON_ENABLED == propertyKey) {
-            priceTrackingButton.setEnabled(model.get(PRICE_TRACKING_BUTTON_ENABLED));
         } else if (PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER == propertyKey) {
             ViewCompat.replaceAccessibilityAction(
                     priceTrackingButton,
diff --git a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediatorTest.java b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediatorTest.java
index b38b87a2..8296038d 100644
--- a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediatorTest.java
+++ b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentMediatorTest.java
@@ -5,10 +5,7 @@
 package org.chromium.chrome.browser.price_tracking;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyLong;
@@ -17,14 +14,13 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ENABLED;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ICON;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_BUTTON_TEXT;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_KEYS;
-import static org.chromium.chrome.browser.price_insights.PriceInsightsBottomSheetProperties.PRICE_TRACKING_TITLE;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.ALL_KEYS;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_BACKGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_FOREGROUND_COLOR;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ICON;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_BUTTON_TEXT;
+import static org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentProperties.PRICE_TRACKING_TITLE;
 
 import android.app.Activity;
 import android.view.View.OnClickListener;
@@ -60,6 +56,8 @@
 import org.chromium.components.commerce.core.ShoppingService.PriceInsightsInfo;
 import org.chromium.components.commerce.core.ShoppingService.PriceInsightsInfoCallback;
 import org.chromium.components.commerce.core.ShoppingService.PricePoint;
+import org.chromium.components.commerce.core.ShoppingService.ProductInfo;
+import org.chromium.components.commerce.core.ShoppingService.ProductInfoCallback;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.widget.ToastManager;
 import org.chromium.url.GURL;
@@ -102,9 +100,19 @@
                     Optional.of(TEST_URL),
                     PRICE_BUCKET,
                     false);
+    private static final ProductInfo PRODUCT_INFO =
+            new ProductInfo(
+                    null,
+                    null,
+                    Optional.of(12345L),
+                    Optional.empty(),
+                    null,
+                    0,
+                    null,
+                    Optional.empty());
 
     private PriceTrackingBottomSheetContentMediator mMediator;
-    private PropertyModel mPropertyModel = new PropertyModel(PRICE_TRACKING_KEYS);
+    private PropertyModel mPropertyModel = new PropertyModel(ALL_KEYS);
     private Activity mActivity;
     private HistogramWatcher mHistogramWatcher;
 
@@ -142,33 +150,26 @@
     public void testRequestShowContent_PriceTrackingNotEligible() {
         doReturn(false).when(mCommerceFeatureUtilsJniMock).isShoppingListEligible(anyLong());
         mMediator.requestShowContent(mMockCallback);
+        verify(mMockCallback).onResult(false);
+    }
 
-        assertEquals(PRODUCT_TITLE, mPropertyModel.get(PRICE_TRACKING_TITLE));
-        assertFalse(mPropertyModel.get(PRICE_TRACKING_BUTTON_ENABLED));
-        assertEquals(
-                R.drawable.price_insights_sheet_price_tracking_button_disabled,
-                mPropertyModel.get(PRICE_TRACKING_BUTTON_ICON));
-        assertEquals(
-                PRICE_TRACKING_DISABLED_BUTTON_TEXT,
-                mPropertyModel.get(PRICE_TRACKING_BUTTON_TEXT));
-        assertEquals(
-                mActivity.getColor(R.color.price_tracking_ineligible_button_foreground_color),
-                mPropertyModel.get(PRICE_TRACKING_BUTTON_FOREGROUND_COLOR));
-        assertEquals(
-                mActivity.getColor(R.color.price_tracking_ineligible_button_background_color),
-                mPropertyModel.get(PRICE_TRACKING_BUTTON_BACKGROUND_COLOR));
-        assertNull(mPropertyModel.get(PRICE_TRACKING_BUTTON_ON_CLICK_LISTENER));
+    @Test
+    public void testRequestShowContent_ProductInfoNotAvailable() {
+        setUpGetPriceProductInfoForUrl(null);
+        mMediator.requestShowContent(mMockCallback);
+        verify(mMockCallback).onResult(false);
     }
 
     @Test
     public void testRequestShowContent_PriceTrackingEligibleAndDisabled() {
-        doReturn(false).when(mMockPriceTrackingStateSupplier).get();
+        setUpGetPriceProductInfoForUrl(PRODUCT_INFO);
         mMediator.requestShowContent(mMockCallback);
         mHistogramWatcher =
                 HistogramWatcher.newBuilder()
                         .expectIntRecord("Commerce.PriceInsights.PriceTracking.Track", PRICE_BUCKET)
                         .build();
 
+        verify(mMockCallback).onResult(true);
         assertEquals(PRODUCT_TITLE, mPropertyModel.get(PRICE_TRACKING_TITLE));
         assertPriceTrackingButtonHasTrackingState(/* isTracking= */ false);
 
@@ -185,6 +186,7 @@
 
     @Test
     public void testRequestShowContent_PriceTrackingEligibleAndEnabled() {
+        setUpGetPriceProductInfoForUrl(PRODUCT_INFO);
         doReturn(true).when(mMockPriceTrackingStateSupplier).get();
         mMediator.requestShowContent(mMockCallback);
         mHistogramWatcher =
@@ -193,6 +195,7 @@
                                 "Commerce.PriceInsights.PriceTracking.Untrack", PRICE_BUCKET)
                         .build();
 
+        verify(mMockCallback).onResult(true);
         assertEquals(PRODUCT_TITLE, mPropertyModel.get(PRICE_TRACKING_TITLE));
         assertPriceTrackingButtonHasTrackingState(/* isTracking= */ true);
 
@@ -209,6 +212,7 @@
 
     @Test
     public void testRequestShowContent_PriceTrackingButtonOnClick_Failed() {
+        setUpGetPriceProductInfoForUrl(PRODUCT_INFO);
         doReturn(false).when(mMockPriceTrackingStateSupplier).get();
         mMediator.requestShowContent(mMockCallback);
         mHistogramWatcher =
@@ -216,6 +220,7 @@
                         .expectIntRecord("Commerce.PriceInsights.PriceTracking.Track", PRICE_BUCKET)
                         .build();
 
+        verify(mMockCallback).onResult(true);
         assertPriceTrackingButtonHasTrackingState(/* isTracking= */ false);
 
         // Test click price tracking button and set from state disabled to enabled failed.
@@ -251,6 +256,17 @@
                 .setPriceTrackingStateForTab(any(Tab.class), anyBoolean(), any());
     }
 
+    private void setUpGetPriceProductInfoForUrl(ProductInfo info) {
+        doAnswer(
+                        (InvocationOnMock invocation) -> {
+                            ((ProductInfoCallback) invocation.getArgument(1))
+                                    .onResult(TEST_URL, info);
+                            return null;
+                        })
+                .when(mMockShoppingService)
+                .getProductInfoForUrl(any(), any());
+    }
+
     private void setShoppingServiceGetPriceInsightsInfoForUrl(PriceInsightsInfo info) {
         doAnswer(
                         (InvocationOnMock invocation) -> {
@@ -280,7 +296,6 @@
                         ? SemanticColorUtils.getDefaultBgColor(mActivity)
                         : SemanticColorUtils.getColorPrimaryContainer(mActivity);
 
-        assertTrue(mPropertyModel.get(PRICE_TRACKING_BUTTON_ENABLED));
         assertEquals(buttonText, mPropertyModel.get(PRICE_TRACKING_BUTTON_TEXT));
         assertEquals(buttonIconResId, mPropertyModel.get(PRICE_TRACKING_BUTTON_ICON));
         assertEquals(
diff --git a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentRenderTest.java b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentRenderTest.java
index 9aa7f96..4fac838 100644
--- a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentRenderTest.java
+++ b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceTrackingBottomSheetContentRenderTest.java
@@ -4,7 +4,9 @@
 
 package org.chromium.chrome.browser.price_tracking;
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doReturn;
 
 import static org.chromium.ui.test.util.RenderTestRule.Component.UI_BROWSER_SHOPPING;
@@ -22,6 +24,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
@@ -41,11 +44,14 @@
 import org.chromium.components.commerce.core.CommerceFeatureUtils;
 import org.chromium.components.commerce.core.CommerceFeatureUtilsJni;
 import org.chromium.components.commerce.core.ShoppingService;
+import org.chromium.components.commerce.core.ShoppingService.ProductInfo;
+import org.chromium.components.commerce.core.ShoppingService.ProductInfoCallback;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.test.util.BlankUiTestActivity;
 import org.chromium.ui.test.util.RenderTestRule;
 
 import java.io.IOException;
+import java.util.Optional;
 
 /** Render Tests for the price tracking bottom sheet content. */
 @RunWith(ChromeJUnit4ClassRunner.class)
@@ -76,6 +82,16 @@
     @Mock private ShoppingService mMockShoppingService;
 
     private static final String PRODUCT_TITLE = "Testing Sneaker";
+    private static final ProductInfo PRODUCT_INFO =
+            new ProductInfo(
+                    null,
+                    null,
+                    Optional.of(12345L),
+                    Optional.empty(),
+                    null,
+                    0,
+                    null,
+                    Optional.empty());
 
     private View mContentView;
     private PriceTrackingBottomSheetContentCoordinator mCoordinator;
@@ -91,11 +107,13 @@
         doReturn(PRODUCT_TITLE).when(mMockTab).getTitle();
         ShoppingServiceFactory.setShoppingServiceForTesting(mMockShoppingService);
         CommerceFeatureUtilsJni.setInstanceForTesting(mCommerceFeatureUtilsJniMock);
+        doReturn(true).when(mCommerceFeatureUtilsJniMock).isShoppingListEligible(anyLong());
 
         doReturn(false).when(mMockPriceTrackingStateSupplier).get();
         doReturn(mMockPriceTrackingStateSupplier)
                 .when(mMockPriceInsightsDelegate)
                 .getPriceTrackingStateSupplier(mMockTab);
+        setUpGetPriceProductInfoForUrl();
 
         ThreadUtils.runOnUiThreadBlocking(
                 () -> {
@@ -118,20 +136,7 @@
     @Test
     @SmallTest
     @Feature({"RenderTest"})
-    public void testPriceTrackingIneligible() throws IOException {
-        doReturn(false).when(mCommerceFeatureUtilsJniMock).isShoppingListEligible(anyLong());
-        ThreadUtils.runOnUiThreadBlocking(
-                () -> {
-                    mCoordinator.requestContent(mMockCallback);
-                });
-        mRenderTestRule.render(mContentView, "price_tracking_ineligible");
-    }
-
-    @Test
-    @SmallTest
-    @Feature({"RenderTest"})
     public void testPriceTrackingEnabled() throws IOException {
-        doReturn(true).when(mCommerceFeatureUtilsJniMock).isShoppingListEligible(anyLong());
         doReturn(true).when(mMockPriceTrackingStateSupplier).get();
         ThreadUtils.runOnUiThreadBlocking(
                 () -> {
@@ -144,7 +149,6 @@
     @SmallTest
     @Feature({"RenderTest"})
     public void testPriceTrackingDisabled() throws IOException {
-        doReturn(true).when(mCommerceFeatureUtilsJniMock).isShoppingListEligible(anyLong());
         doReturn(false).when(mMockPriceTrackingStateSupplier).get();
         ThreadUtils.runOnUiThreadBlocking(
                 () -> {
@@ -152,4 +156,15 @@
                 });
         mRenderTestRule.render(mContentView, "price_tracking_disabled");
     }
+
+    private void setUpGetPriceProductInfoForUrl() {
+        doAnswer(
+                        (InvocationOnMock invocation) -> {
+                            ((ProductInfoCallback) invocation.getArgument(1))
+                                    .onResult(invocation.getArgument(0), PRODUCT_INFO);
+                            return null;
+                        })
+                .when(mMockShoppingService)
+                .getProductInfoForUrl(any(), any());
+    }
 }