[go: up one dir, main page]

[PriceTracking] Add PriceDropNotification feature parameter

This change adds a parameter enable_price_notification under the flag
enable-tab-grid-layout.
Enabling the existing parameter enable_price_tracking will enable the
basic price-tracking features such as tracking prices on tabs. Enabling
this new parameter enable_price_notification will enable both basic
price-tracking features and the price drop notification feature.

(cherry picked from commit 24d81141c038893a3fa36673363a43c37124072b)

Bug: 1169845
Change-Id: I92dee3e00e474bf7fa21b195f3582c0b00d898ac
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2799995
Reviewed-by: Yue Zhang <yuezhanggg@chromium.org>
Reviewed-by: Yusuf Ozuysal <yusufo@chromium.org>
Commit-Queue: Zhiyuan Cai <zhiyuancai@google.com>
Cr-Original-Commit-Position: refs/heads/master@{#869253}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2828748
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/branch-heads/4430@{#1301}
Cr-Branched-From: e5ce7dc4f7518237b3d9bb93cccca35d25216cbe-refs/heads/master@{#857950}
diff --git a/chrome/android/features/tab_ui/java/res/layout/price_tracking_dialog_layout.xml b/chrome/android/features/tab_ui/java/res/layout/price_tracking_dialog_layout.xml
index 9319c74..b8fb722a 100644
--- a/chrome/android/features/tab_ui/java/res/layout/price_tracking_dialog_layout.xml
+++ b/chrome/android/features/tab_ui/java/res/layout/price_tracking_dialog_layout.xml
@@ -68,12 +68,14 @@
             android:layout_gravity="center" />
     </LinearLayout>
     <LinearLayout
+        android:id="@+id/price_alerts_row_menu_id"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="@dimen/price_tracking_dialog_items_bottom_margin"
         android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
         android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:visibility="gone">
         <ImageView
             android:id="@+id/price_alerts_icon"
             android:layout_width="0dp"
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogCoordinator.java
index 67ea30e..ac62c0a 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogCoordinator.java
@@ -32,6 +32,7 @@
         mDialogView.setupTrackPricesSwitchOnCheckedChangeListener(this);
         mDialogView.setupPriceAlertsArrowOnClickListener(
                 v -> { notificationManager.launchNotificationSettings(); });
+        mDialogView.setupPriceAlertsRowMenuVisibility();
         mModalDialogManager = modalDialogManager;
 
         ModalDialogProperties.Controller dialogController = new ModalDialogProperties.Controller() {
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogView.java
index 9ec729d..f1167f6 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogView.java
@@ -6,6 +6,8 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
 import android.widget.CompoundButton.OnCheckedChangeListener;
 import android.widget.LinearLayout;
 
@@ -20,6 +22,7 @@
 public class PriceTrackingDialogView extends LinearLayout {
     private SwitchCompat mTrackPricesSwitch;
     private ChromeImageButton mPriceAlertsArrow;
+    private ViewGroup mPriceAlertsRowMenu;
 
     public PriceTrackingDialogView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -30,6 +33,7 @@
         super.onFinishInflate();
         mTrackPricesSwitch = (SwitchCompat) findViewById(R.id.track_prices_switch);
         mPriceAlertsArrow = (ChromeImageButton) findViewById(R.id.price_alerts_arrow);
+        mPriceAlertsRowMenu = (ViewGroup) findViewById(R.id.price_alerts_row_menu_id);
     }
 
     /**
@@ -54,4 +58,13 @@
     void setupPriceAlertsArrowOnClickListener(OnClickListener onClickListener) {
         mPriceAlertsArrow.setOnClickListener(onClickListener);
     }
+
+    /**
+     * Set visibility of the price alerts row menu.
+     */
+    void setupPriceAlertsRowMenuVisibility() {
+        mPriceAlertsRowMenu.setVisibility(PriceTrackingUtilities.isPriceDropNotificationEligible()
+                        ? View.VISIBLE
+                        : View.GONE);
+    }
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java
index e88c4c7..c7a1ba7 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java
@@ -108,6 +108,14 @@
     }
 
     /**
+     * @return Whether the price drop notification is eligible to work.
+     */
+    public static boolean isPriceDropNotificationEligible() {
+        return isPriceTrackingEligible()
+                && TabUiFeatureUtilities.ENABLE_PRICE_NOTIFICATION.getValue();
+    }
+
+    /**
      * Forbid showing the PriceAlertsMessageCard any more.
      */
     public static void disablePriceAlertsMessageCard() {
@@ -120,7 +128,7 @@
      *         PriceDropNotificationManager#canPostNotification()}.
      */
     public static boolean isPriceAlertsMessageCardEnabled() {
-        return isPriceTrackingEligible()
+        return isPriceDropNotificationEligible()
                 && SHARED_PREFERENCES_MANAGER.readBoolean(
                         PRICE_ALERTS_MESSAGE_CARD, TabUiFeatureUtilities.isPriceTrackingEnabled())
                 && (!(new PriceDropNotificationManager()).canPostNotification());
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
index b438954..b2e2535 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
@@ -56,6 +56,11 @@
             new BooleanCachedFieldTrialParameter(
                     ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, PRICE_TRACKING_PARAM, false);
 
+    private static final String PRICE_NOTIFICATION_PARAM = "enable_price_notification";
+    public static final BooleanCachedFieldTrialParameter ENABLE_PRICE_NOTIFICATION =
+            new BooleanCachedFieldTrialParameter(
+                    ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, PRICE_NOTIFICATION_PARAM, false);
+
     private static final String SEARCH_CHIP_ADAPTIVE_PARAM =
             "enable_search_term_chip_adaptive_icon";
     public static final BooleanCachedFieldTrialParameter ENABLE_SEARCH_CHIP_ADAPTIVE =
@@ -205,7 +210,7 @@
         // TODO(crbug.com/1152925): Now PriceTracking feature is broken if StartSurface is enabled,
         // we need to remove !StartSurfaceConfiguration.isStartSurfaceEnabled() when the bug is
         // fixed.
-        return ENABLE_PRICE_TRACKING.getValue()
+        return (ENABLE_PRICE_TRACKING.getValue() || ENABLE_PRICE_NOTIFICATION.getValue())
                 && !StartSurfaceConfiguration.isStartSurfaceEnabled();
     }
 }
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceAlertsMessageCardTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceAlertsMessageCardTest.java
index 4eb49b0..242319d 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceAlertsMessageCardTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceAlertsMessageCardTest.java
@@ -72,12 +72,13 @@
 // clang-format off
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
         "enable-features=" + ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + "<Study",
-        "force-fieldtrials=Study/Group",
-        "force-fieldtrial-params=Study.Group:enable_price_tracking/true"})
+        "force-fieldtrials=Study/Group"})
 @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
 @Features.DisableFeatures({ChromeFeatureList.START_SURFACE_ANDROID})
 public class PriceAlertsMessageCardTest {
     // clang-format on
+    private static final String BASE_PARAMS =
+            "force-fieldtrial-params=Study.Group:enable_price_notification/true";
     private static final String ACTION_APP_NOTIFICATION_SETTINGS =
             "android.settings.APP_NOTIFICATION_SETTINGS";
     private MockNotificationManagerProxy mMockNotificationManager;
@@ -118,8 +119,10 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testMessageCardShowing() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        assertTrue(PriceTrackingUtilities.isPriceDropNotificationEligible());
         mMockNotificationManager.setNotificationsEnabled(false);
         assertFalse(mPriceDropNotificationManager.canPostNotification());
         assertTrue(PriceTrackingUtilities.isPriceAlertsMessageCardEnabled());
@@ -131,8 +134,10 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testMessageCardNotShowing_AlreadyCanPostNotification() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        assertTrue(PriceTrackingUtilities.isPriceDropNotificationEligible());
         mMockNotificationManager.setNotificationsEnabled(true);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             mPriceDropNotificationManager.createNotificationChannel();
@@ -147,8 +152,10 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testMessageCardNotShowing_MessageDisabled() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        assertTrue(PriceTrackingUtilities.isPriceDropNotificationEligible());
         mMockNotificationManager.setNotificationsEnabled(false);
         assertFalse(mPriceDropNotificationManager.canPostNotification());
         PriceTrackingUtilities.disablePriceAlertsMessageCard();
@@ -160,6 +167,21 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({"force-fieldtrial-params=Study.Group:enable_price_notification/false"})
+    public void testMessageCardNotShowing_ParameterDisabled() {
+        final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+        assertFalse(PriceTrackingUtilities.isPriceDropNotificationEligible());
+        mMockNotificationManager.setNotificationsEnabled(false);
+        assertFalse(mPriceDropNotificationManager.canPostNotification());
+        assertFalse(PriceTrackingUtilities.isPriceAlertsMessageCardEnabled());
+
+        enterTabSwitcher(cta);
+        onView(withId(R.id.large_message_card_item)).check(doesNotExist());
+    }
+
+    @Test
+    @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
     public void testReviewMessage_AppNotificationsEnabled() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -182,6 +204,7 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testReviewMessage_AppNotificationsDisabled() {
         Intents.init();
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -205,6 +228,7 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testDismissMessage() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
@@ -221,6 +245,7 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testSwipeMessage() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
@@ -242,6 +267,7 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testRemoveMessageWhenClosingLastTab() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
@@ -265,6 +291,7 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testDisableMessageAfterShowingTenTimes() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
@@ -285,6 +312,7 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS})
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
     public void testRenderMessageCard_Portrait_AppNotificationsEnabled() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -301,6 +329,7 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testRenderMessageCard_Portrait_AppNotificationsDisabled() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
@@ -316,6 +345,7 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS})
     @MinAndroidSdkLevel(Build.VERSION_CODES.O)
     public void testRenderMessageCard_Landscape_AppNotificationsEnabled() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
@@ -333,6 +363,7 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testRenderMessageCard_Landscape_AppNotificationsDisabled() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
         mMockNotificationManager.setNotificationsEnabled(false);
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
index d4cfd5e..de6a04a 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java
@@ -29,6 +29,7 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.uiautomator.UiDevice;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.TextView;
 
 import androidx.test.espresso.NoMatchingRootException;
@@ -69,12 +70,13 @@
 // clang-format off
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
         "enable-features=" + ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + "<Study",
-        "force-fieldtrials=Study/Group",
-        "force-fieldtrial-params=Study.Group:enable_price_tracking/true"})
+        "force-fieldtrials=Study/Group"})
 @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
 @Features.DisableFeatures({ChromeFeatureList.START_SURFACE_ANDROID})
 public class PriceTrackingDialogTest {
     // clang-format on
+    private static final String BASE_PARAMS =
+            "force-fieldtrial-params=Study.Group:enable_price_tracking/true";
     private static final String ACTION_APP_NOTIFICATION_SETTINGS =
             "android.settings.APP_NOTIFICATION_SETTINGS";
 
@@ -109,12 +111,13 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testShowAndHidePriceTrackingDialog() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, false);
 
         // Press back should dismiss the dialog.
         pressBack();
@@ -123,7 +126,7 @@
         // Open the price tracking dialog.
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, false);
 
         // Click outside of the dialog area to close the Price tracking dialog.
         View dialogView = mModalDialogManager.getCurrentDialogForTest().get(
@@ -139,12 +142,13 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS})
     public void testTrackPricesSwitch() {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, false);
 
         onView(withId(R.id.track_prices_switch)).check(matches(isChecked()));
         assertTrue(PriceTrackingUtilities.isTrackPricesOnTabsEnabled());
@@ -158,13 +162,15 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS + "/enable_price_notification/true"})
     public void testPriceAlertsButton() {
         Intents.init();
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, true);
+        onView(withId(R.id.price_alerts_row_menu_id)).check(matches(isDisplayed()));
         onView(withId(R.id.price_alerts_arrow)).perform(click());
 
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
@@ -178,12 +184,13 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS + "/enable_price_notification/true"})
     public void testRenderPriceTrackingDialog_Portrait() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, true);
 
         View priceTrackingDialogView = mModalDialogManager.getCurrentDialogForTest().get(
                 ModalDialogProperties.CUSTOM_VIEW);
@@ -193,20 +200,22 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
+    @CommandLineFlags.Add({BASE_PARAMS + "/enable_price_notification/true"})
     public void testRenderPriceTrackingDialog_Landscape() throws IOException {
         final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
 
         ActivityUtils.rotateActivityToOrientation(cta, Configuration.ORIENTATION_LANDSCAPE);
         MenuUtils.invokeCustomMenuActionSync(
                 InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
-        verifyDialogShowing(cta);
+        verifyDialogShowing(cta, true);
 
         View priceTrackingDialogView = mModalDialogManager.getCurrentDialogForTest().get(
                 ModalDialogProperties.CUSTOM_VIEW);
         mRenderTestRule.render(priceTrackingDialogView, "price_tracking_dialog_landscape");
     }
 
-    private void verifyDialogShowing(ChromeTabbedActivity cta) {
+    private void verifyDialogShowing(
+            ChromeTabbedActivity cta, boolean isPriceAlertsRowMenuVisible) {
         // Verify price tracking dialog view.
         onView(withId(R.id.price_tracking_dialog))
                 .inRoot(withDecorView(not(cta.getWindow().getDecorView())))
@@ -231,6 +240,16 @@
                             cta.getString(R.string.price_drop_alerts_description);
                     assertEquals(priceAlertsDescription,
                             ((TextView) v.findViewById(R.id.price_alerts_description)).getText());
+
+                    if (isPriceAlertsRowMenuVisible) {
+                        assertEquals(View.VISIBLE,
+                                ((ViewGroup) v.findViewById(R.id.price_alerts_row_menu_id))
+                                        .getVisibility());
+                    } else {
+                        assertEquals(View.GONE,
+                                ((ViewGroup) v.findViewById(R.id.price_alerts_row_menu_id))
+                                        .getVisibility());
+                    }
                 });
     }
 
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/PriceMessageServiceUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/PriceMessageServiceUnitTest.java
index ecba1e5..5de2d49 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/PriceMessageServiceUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/PriceMessageServiceUnitTest.java
@@ -74,7 +74,7 @@
         doNothing().when(mMessageObserver).messageReady(anyInt(), any());
         doNothing().when(mMessageObserver).messageInvalidate(anyInt());
 
-        TabUiFeatureUtilities.ENABLE_PRICE_TRACKING.setForTesting(true);
+        TabUiFeatureUtilities.ENABLE_PRICE_NOTIFICATION.setForTesting(true);
         PriceTrackingUtilities.setIsSignedInAndSyncEnabledForTesting(true);
         PriceTrackingUtilities.SHARED_PREFERENCES_MANAGER.writeBoolean(
                 PriceTrackingUtilities.PRICE_WELCOME_MESSAGE_CARD, true);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
index f6fa66d..bf8a8e5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -139,6 +139,7 @@
                 TabUiFeatureUtilities.ENABLE_LAUNCH_BUG_FIX,
                 TabUiFeatureUtilities.ENABLE_LAUNCH_POLISH,
                 TabUiFeatureUtilities.ENABLE_SEARCH_CHIP,
+                TabUiFeatureUtilities.ENABLE_PRICE_NOTIFICATION,
                 TabUiFeatureUtilities.ENABLE_PRICE_TRACKING,
                 TabUiFeatureUtilities.ENABLE_SEARCH_CHIP_ADAPTIVE,
                 TabUiFeatureUtilities.ZOOMING_MIN_MEMORY,
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 01dea31..66a4b69 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1759,6 +1759,9 @@
 const FeatureEntry::FeatureParam kTabGridLayoutAndroid_PriceAlerts[] = {
     {"enable_price_tracking", "true"}};
 
+const FeatureEntry::FeatureParam kTabGridLayoutAndroid_PriceNotifications[] = {
+    {"enable_price_notification", "true"}};
+
 const FeatureEntry::FeatureVariation kTabGridLayoutAndroidVariations[] = {
     {"New Tab Variation", kTabGridLayoutAndroid_NewTabVariation,
      base::size(kTabGridLayoutAndroid_NewTabVariation), nullptr},
@@ -1770,6 +1773,8 @@
      base::size(kTabGridLayoutAndroid_SearchChip), nullptr},
     {"Price alerts", kTabGridLayoutAndroid_PriceAlerts,
      base::size(kTabGridLayoutAndroid_PriceAlerts), nullptr},
+    {"Price notifications", kTabGridLayoutAndroid_PriceNotifications,
+     base::size(kTabGridLayoutAndroid_PriceNotifications), nullptr},
 };
 
 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface[] = {
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManager.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManager.java
index 87c0e9c..9d62fc0 100644
--- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManager.java
+++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManager.java
@@ -47,7 +47,8 @@
      * @return Whether price drop notifications can be posted.
      */
     public boolean canPostNotification() {
-        if (!areAppNotificationsEnabled() || !PriceTrackingUtilities.isPriceTrackingEligible()) {
+        if (!areAppNotificationsEnabled()
+                || !PriceTrackingUtilities.isPriceDropNotificationEligible()) {
             return false;
         }
 
diff --git a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManagerTest.java b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManagerTest.java
index 9d8abae..82dab80 100644
--- a/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManagerTest.java
+++ b/chrome/browser/commerce/price_tracking/android/javatests/src/org/chromium/chrome/browser/price_tracking/PriceDropNotificationManagerTest.java
@@ -40,7 +40,7 @@
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
         "enable-features=" + ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + "<Study",
         "force-fieldtrials=Study/Group",
-        "force-fieldtrial-params=Study.Group:enable_price_tracking/true"})
+        "force-fieldtrial-params=Study.Group:enable_price_notification/true"})
 @Features.DisableFeatures({ChromeFeatureList.START_SURFACE_ANDROID})
 public class PriceDropNotificationManagerTest {
     // clang-format on