[go: up one dir, main page]

[PriceTracking] Set visibility of menu dialog item before it shows

This change sets the visibility of the price tracking menu dialog item
"Price drop alerts" every time before the dialog shows, given that user
may sign in/out without restarting Chrome which will change the menu
item's visibility.

(cherry picked from commit d2c44159e0a3b71197dd026f571f5b0c7a0d1ba5)

Bug: 1169845
Change-Id: If2959946c63cc54cc3861e64e92ef6f924405f98
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2809233
Commit-Queue: Zhiyuan Cai <zhiyuancai@google.com>
Reviewed-by: Yue Zhang <yuezhanggg@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#869829}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2830124
Commit-Queue: Zhiyuan Cai <zhiyuancai@chromium.org>
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/branch-heads/4430@{#1302}
Cr-Branched-From: e5ce7dc4f7518237b3d9bb93cccca35d25216cbe-refs/heads/master@{#857950}
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 ac62c0a..b8d51a3e 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,7 +32,6 @@
         mDialogView.setupTrackPricesSwitchOnCheckedChangeListener(this);
         mDialogView.setupPriceAlertsArrowOnClickListener(
                 v -> { notificationManager.launchNotificationSettings(); });
-        mDialogView.setupPriceAlertsRowMenuVisibility();
         mModalDialogManager = modalDialogManager;
 
         ModalDialogProperties.Controller dialogController = new ModalDialogProperties.Controller() {
@@ -55,6 +54,7 @@
     }
 
     void show() {
+        mDialogView.setupPriceAlertsRowMenuVisibility();
         mDialogView.updateSwitch();
         mModalDialogManager.showDialog(mModel, ModalDialogManager.ModalDialogType.APP);
     }
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 de6a04a..f344e29 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
@@ -106,6 +106,7 @@
 
     @After
     public void tearDown() {
+        PriceTrackingUtilities.setIsSignedInAndSyncEnabledForTesting(null);
         ActivityUtils.clearActivityOrientation(mActivityTestRule.getActivity());
     }
 
@@ -183,6 +184,28 @@
 
     @Test
     @MediumTest
+    @CommandLineFlags.Add({BASE_PARAMS + "/enable_price_notification/true"})
+    public void testPriceAlertsRowMenuVisibility() {
+        final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
+
+        // The price alerts row menu should be invisible if user doesn't sign in.
+        PriceTrackingUtilities.setIsSignedInAndSyncEnabledForTesting(false);
+        MenuUtils.invokeCustomMenuActionSync(
+                InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
+        verifyDialogShowing(cta, false);
+
+        pressBack();
+        verifyDialogHiding(cta);
+
+        // When user signs in, the price alerts row menu should be visible.
+        PriceTrackingUtilities.setIsSignedInAndSyncEnabledForTesting(true);
+        MenuUtils.invokeCustomMenuActionSync(
+                InstrumentationRegistry.getInstrumentation(), cta, R.id.track_prices_row_menu_id);
+        verifyDialogShowing(cta, true);
+    }
+
+    @Test
+    @MediumTest
     @Feature({"RenderTest"})
     @CommandLineFlags.Add({BASE_PARAMS + "/enable_price_notification/true"})
     public void testRenderPriceTrackingDialog_Portrait() throws IOException {