[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