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));
}
}