Tab group dialog only dismisses tracker iph when triggered.

Bug: 399161194
Change-Id: I60dd0cfac0f662ae35a13ced614932116403ee8c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6300136
Reviewed-by: Brandon Fong <bjfong@google.com>
Commit-Queue: Sky Malice <skym@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1424769}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManager.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManager.java
index cf6c80b..1463325 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManager.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManager.java
@@ -10,12 +10,10 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
 import org.chromium.chrome.browser.tabmodel.TabGroupModelFilter;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiMetricsHelper.TabGroupCreationDialogResultAction;
 import org.chromium.chrome.browser.tasks.tab_management.TabUiMetricsHelper.TabGroupCreationFinalSelections;
 import org.chromium.chrome.tab_ui.R;
-import org.chromium.components.feature_engagement.FeatureConstants;
 import org.chromium.components.tab_groups.TabGroupColorId;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
 import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -81,9 +79,6 @@
                         TabGroupCreationDialogResultAction.DISMISSED_OTHER);
             }
 
-            TrackerFactory.getTrackerForProfile(mTabGroupModelFilter.getTabModel().getProfile())
-                    .dismissed(FeatureConstants.TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE);
-
             mTabGroupVisualDataDialogManager.hideDialog();
             if (mOnTabGroupCreation != null) {
                 mOnTabGroupCreation.run();
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManager.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManager.java
index 71fcb25..2d36760 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManager.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManager.java
@@ -18,6 +18,7 @@
 import androidx.appcompat.widget.AppCompatEditText;
 import androidx.appcompat.widget.DialogTitle;
 
+import org.chromium.build.annotations.Nullable;
 import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.profiles.Profile;
@@ -73,6 +74,10 @@
     private ColorPickerCoordinator mColorPickerCoordinator;
     private @TabGroupColorId int mDefaultColorId;
 
+    // If non-null, it means TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE was triggered and needs to
+    // be marked as dismissed when the dialog is hidden.
+    private @Nullable Tracker mTracker;
+
     /**
      * The manager responsible for handling trigger logic for tab group visual data modal dialogs.
      *
@@ -175,6 +180,11 @@
         if (mModalDialogManagerObserver != null) {
             mModalDialogManager.removeObserver(mModalDialogManagerObserver);
         }
+
+        if (mTracker != null) {
+            mTracker.dismissed(FeatureConstants.TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE);
+            mTracker = null;
+        }
     }
 
     /** Get the current group title that is displayed in the modal dialog. */
@@ -238,6 +248,7 @@
                     && ChromeFeatureList.sTabGroupPaneAndroid.isEnabled()
                     && tracker.shouldTriggerHelpUi(
                             FeatureConstants.TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE)) {
+                mTracker = tracker;
                 descriptionView.setVisibility(View.VISIBLE);
                 SyncService syncService = SyncServiceFactory.getForProfile(profile);
                 boolean syncingTabGroups =
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManagerUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManagerUnitTest.java
index fb6d251..20c3de7 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManagerUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupCreationDialogManagerUnitTest.java
@@ -4,12 +4,9 @@
 
 package org.chromium.chrome.browser.tasks.tab_management;
 
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 
-import static org.chromium.components.feature_engagement.FeatureConstants.TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE;
-
 import android.app.Activity;
 
 import org.junit.Before;
@@ -23,11 +20,9 @@
 import org.robolectric.annotation.Config;
 
 import org.chromium.base.test.BaseRobolectricTestRunner;
-import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tabmodel.TabGroupModelFilter;
 import org.chromium.chrome.browser.tabmodel.TabModel;
-import org.chromium.components.feature_engagement.Tracker;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
 import org.chromium.ui.modaldialog.ModalDialogManager;
 import org.chromium.ui.modaldialog.ModalDialogProperties;
@@ -40,7 +35,6 @@
 
     @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
 
-    @Mock private Tracker mTracker;
     @Mock private ModalDialogManager mModalDialogManager;
     @Mock private Profile mProfile;
     @Mock private TabModel mTabModel;
@@ -52,8 +46,6 @@
 
     @Before
     public void setUp() {
-        TrackerFactory.setTrackerForTests(mTracker);
-
         Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
         mTabGroupCreationDialogManager =
                 new TabGroupCreationDialogManager(
@@ -82,7 +74,6 @@
         ModalDialogProperties.Controller controller =
                 mTabGroupCreationDialogManager.getDialogControllerForTesting();
         controller.onDismiss(null, DialogDismissalCause.UNKNOWN);
-        verify(mTracker).dismissed(eq(TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE));
         verify(mOnTabGroupCreation).run();
     }
 }
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManagerUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManagerUnitTest.java
index 46127179..965b8f8 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManagerUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupVisualDataDialogManagerUnitTest.java
@@ -159,6 +159,9 @@
                         .findViewById(R.id.visual_data_dialog_description);
         Assert.assertEquals(View.GONE, description.getVisibility());
         verify(mTracker, never()).notifyEvent(eq(TAB_GROUP_CREATION_DIALOG_SHOWN));
+
+        mTabGroupVisualDataDialogManager.hideDialog();
+        verify(mTracker, never()).dismissed(eq(TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE));
     }
 
     @Test
@@ -188,6 +191,9 @@
                         .getString(R.string.tab_group_creation_dialog_description_text_sync_off),
                 description.getText());
         verify(mTracker).notifyEvent(eq(TAB_GROUP_CREATION_DIALOG_SHOWN));
+
+        mTabGroupVisualDataDialogManager.hideDialog();
+        verify(mTracker).dismissed(eq(TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE));
     }
 
     @Test
@@ -218,5 +224,8 @@
                         .getString(R.string.tab_group_creation_dialog_description_text_sync_on),
                 description.getText());
         verify(mTracker).notifyEvent(eq(TAB_GROUP_CREATION_DIALOG_SHOWN));
+
+        mTabGroupVisualDataDialogManager.hideDialog();
+        verify(mTracker).dismissed(eq(TAB_GROUP_CREATION_DIALOG_SYNC_TEXT_FEATURE));
     }
 }