Pass StreamKind to feedManagementActivity for UMA recording

Bug: b/208662371
Change-Id: I4d0c3ea65bc737fa1100d334b09066007b3c0508
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3453427
Reviewed-by: Peter Williamson <petewil@chromium.org>
Commit-Queue: Cathy Li <chili@chromium.org>
Cr-Commit-Position: refs/heads/main@{#971873}
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
index 0e65c80..53bb196 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -971,6 +971,7 @@
                                .getStreamKind();
         if (itemId == R.id.ntp_feed_header_menu_item_manage) {
             Intent intent = new Intent(mContext, FeedManagementActivity.class);
+            intent.putExtra(FeedManagementActivity.INITIATING_STREAM_TYPE_EXTRA, feedType);
             FeedServiceBridge.reportOtherUserAction(feedType, FeedUserActionType.TAPPED_MANAGE);
             FeedUma.recordFeedControlsAction(FeedUma.CONTROLS_ACTION_CLICKED_MANAGE);
             mContext.startActivity(intent);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/feed/feedmanagement/FeedManagementActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/feed/feedmanagement/FeedManagementActivity.java
index 9cf385d..e454a50 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/feed/feedmanagement/FeedManagementActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/feed/feedmanagement/FeedManagementActivity.java
@@ -12,6 +12,7 @@
 import org.chromium.chrome.browser.SnackbarActivity;
 import org.chromium.chrome.browser.app.feed.followmanagement.FollowManagementActivity;
 import org.chromium.chrome.browser.feed.FeedUma;
+import org.chromium.chrome.browser.feed.StreamKind;
 import org.chromium.chrome.browser.feed.feedmanagement.FeedManagementCoordinator;
 import org.chromium.chrome.browser.feed.feedmanagement.FeedManagementMediator;
 import org.chromium.chrome.browser.feed.settings.FeedAutoplaySettingsFragment;
@@ -25,12 +26,18 @@
         extends SnackbarActivity implements FeedManagementMediator.FollowManagementLauncher,
                                             FeedManagementMediator.AutoplayManagementLauncher {
     private static final String TAG = "FeedMActivity";
+    public static final String INITIATING_STREAM_TYPE_EXTRA =
+            "feed_management_initiating_stream_type_extra";
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        FeedManagementCoordinator coordinator = new FeedManagementCoordinator(this, this, this);
+        @StreamKind
+        int streamKind = getIntent().getIntExtra(INITIATING_STREAM_TYPE_EXTRA, StreamKind.UNKNOWN);
+
+        FeedManagementCoordinator coordinator =
+                new FeedManagementCoordinator(this, this, this, streamKind);
         setContentView(coordinator.getView());
     }
 
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java
index 8dc9d71..326d141b 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinator.java
@@ -13,6 +13,7 @@
 import androidx.appcompat.widget.Toolbar;
 
 import org.chromium.chrome.browser.feed.R;
+import org.chromium.chrome.browser.feed.StreamKind;
 import org.chromium.chrome.browser.feed.feedmanagement.FeedManagementMediator.AutoplayManagementLauncher;
 import org.chromium.chrome.browser.feed.feedmanagement.FeedManagementMediator.FollowManagementLauncher;
 import org.chromium.ui.modelutil.LayoutViewBuilder;
@@ -29,7 +30,7 @@
 
     public FeedManagementCoordinator(Activity activity,
             FollowManagementLauncher followManagementLauncher,
-            AutoplayManagementLauncher autoplayManagementLauncher) {
+            AutoplayManagementLauncher autoplayManagementLauncher, @StreamKind int feedType) {
         mActivity = (AppCompatActivity) activity;
         ModelList listItems = new ModelList();
 
@@ -50,8 +51,8 @@
         mActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         toolbar.setNavigationOnClickListener(this::handleBackArrowClick);
 
-        mMediator = new FeedManagementMediator(
-                mActivity, listItems, followManagementLauncher, autoplayManagementLauncher);
+        mMediator = new FeedManagementMediator(mActivity, listItems, followManagementLauncher,
+                autoplayManagementLauncher, feedType);
     }
 
     public View getView() {
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinatorTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinatorTest.java
index 15953dc..756f018 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinatorTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementCoordinatorTest.java
@@ -26,6 +26,7 @@
 import org.chromium.chrome.browser.feed.FeedServiceBridge;
 import org.chromium.chrome.browser.feed.FeedServiceBridgeJni;
 import org.chromium.chrome.browser.feed.R;
+import org.chromium.chrome.browser.feed.StreamKind;
 import org.chromium.testing.local.LocalRobolectricTestRunner;
 
 /**
@@ -58,7 +59,8 @@
         MockitoAnnotations.initMocks(this);
         mocker.mock(FeedServiceBridgeJni.TEST_HOOKS, mFeedServiceBridgeJniMock);
 
-        mFeedManagementCoordinator = new FeedManagementCoordinator(mActivity, null, null);
+        mFeedManagementCoordinator =
+                new FeedManagementCoordinator(mActivity, null, null, StreamKind.UNKNOWN);
 
         verify(mFeedServiceBridgeJniMock).isAutoplayEnabled();
     }
@@ -75,7 +77,7 @@
         // Note that finding the back arrow view is ugly because it doesn't
         // have an ID.
         boolean clicked = false;
-        ViewGroup actionBar = (ViewGroup) outerView.findViewById(R.id.action_bar);
+        ViewGroup actionBar = outerView.findViewById(R.id.action_bar);
         for (int i = 0; i < actionBar.getChildCount(); i++) {
             try {
                 AppCompatImageButton button = (AppCompatImageButton) actionBar.getChildAt(i);
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java
index 07a2d427..956703c 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediator.java
@@ -41,27 +41,30 @@
     private final Context mContext;
     private final FollowManagementLauncher mFollowManagementLauncher;
     private final AutoplayManagementLauncher mAutoplayManagementLauncher;
+    private final @StreamKind int mInitiatingStreamKind;
 
     /**
      * Interface to supply a method which can launch the FollowManagementActivity.
      */
     public interface FollowManagementLauncher {
-        public void launchFollowManagement(Context mContext);
+        void launchFollowManagement(Context mContext);
     }
 
     /**
      * Interface to supply a method which can launch the AutoplayManagementActivity.
      */
     public interface AutoplayManagementLauncher {
-        public void launchAutoplayManagement(Context mContext);
+        void launchAutoplayManagement(Context mContext);
     }
 
     FeedManagementMediator(Context context, ModelList modelList,
-            FollowManagementLauncher followLauncher, AutoplayManagementLauncher autoplayLauncher) {
+            FollowManagementLauncher followLauncher, AutoplayManagementLauncher autoplayLauncher,
+            @StreamKind int initiatingStreamKind) {
         mModelList = modelList;
         mContext = context;
         mFollowManagementLauncher = followLauncher;
         mAutoplayManagementLauncher = autoplayLauncher;
+        mInitiatingStreamKind = initiatingStreamKind;
 
         // Add the menu items into the menu.
         PropertyModel activityModel = generateListItem(R.string.feed_manage_activity,
@@ -100,7 +103,6 @@
     }
 
     // TODO(petewil): Borrowed these from code we can't link to.  How do I keep them in sync?
-    static final String EXTRA_UI_TYPE = "org.chromium.chrome.browser.customtabs.EXTRA_UI_TYPE";
     static final String TRUSTED_APPLICATION_CODE_EXTRA = "trusted_application_code_extra";
 
     // Launch a new activity in the same task with the given uri as a CCT.
@@ -139,25 +141,33 @@
 
     @VisibleForTesting
     void handleActivityClick(View view) {
-        Log.d(TAG, "Activity click caught.");
+        Log.d(TAG, "Activity click caught." + mInitiatingStreamKind);
+        FeedServiceBridge.reportOtherUserAction(
+                mInitiatingStreamKind, FeedUserActionType.TAPPED_MANAGE_ACTIVITY);
         launchUriActivity("https://myactivity.google.com/myactivity?product=50");
     }
 
     @VisibleForTesting
     void handleInterestsClick(View view) {
         Log.d(TAG, "Interests click caught.");
+        FeedServiceBridge.reportOtherUserAction(
+                mInitiatingStreamKind, FeedUserActionType.TAPPED_MANAGE_INTERESTS);
         launchUriActivity("https://www.google.com/preferences/interests/yourinterests?sh=n");
     }
 
     @VisibleForTesting
     void handleHiddenClick(View view) {
         Log.d(TAG, "Hidden click caught.");
+        FeedServiceBridge.reportOtherUserAction(
+                mInitiatingStreamKind, FeedUserActionType.TAPPED_MANAGE_INTERESTS);
         launchUriActivity("https://www.google.com/preferences/interests/hidden?sh=n");
     }
 
     @VisibleForTesting
     void handleAutoplayClick(View view) {
         Log.d(TAG, "Autoplay click caught.");
+        FeedServiceBridge.reportOtherUserAction(
+                mInitiatingStreamKind, FeedUserActionType.OPENED_AUTOPLAY_SETTINGS);
         mAutoplayManagementLauncher.launchAutoplayManagement(mContext);
     }
 
@@ -165,7 +175,7 @@
     void handleFollowingClick(View view) {
         Log.d(TAG, "Following click caught.");
         FeedServiceBridge.reportOtherUserAction(
-                StreamKind.UNKNOWN, FeedUserActionType.TAPPED_MANAGE_FOLLOWING);
+                mInitiatingStreamKind, FeedUserActionType.TAPPED_MANAGE_FOLLOWING);
         mFollowManagementLauncher.launchFollowManagement(mContext);
     }
 }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediatorTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediatorTest.java
index 2d0838b8..08090b15 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediatorTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/feedmanagement/FeedManagementMediatorTest.java
@@ -24,6 +24,8 @@
 import org.chromium.base.test.util.JniMocker;
 import org.chromium.chrome.browser.feed.FeedServiceBridge;
 import org.chromium.chrome.browser.feed.FeedServiceBridgeJni;
+import org.chromium.chrome.browser.feed.StreamKind;
+import org.chromium.chrome.browser.feed.v2.FeedUserActionType;
 import org.chromium.testing.local.LocalRobolectricTestRunner;
 import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
 
@@ -32,6 +34,7 @@
  */
 @RunWith(LocalRobolectricTestRunner.class)
 public class FeedManagementMediatorTest {
+    private static final @StreamKind int TEST_STREAM_KIND = StreamKind.FOR_YOU;
     private Activity mActivity;
     private ShadowActivity mShadowActivity;
     private ModelList mModelList;
@@ -57,8 +60,8 @@
         MockitoAnnotations.initMocks(this);
         mocker.mock(FeedServiceBridgeJni.TEST_HOOKS, mFeedServiceBridgeJniMock);
 
-        mFeedManagementMediator = new FeedManagementMediator(
-                mActivity, mModelList, mFollowManagementLauncher, mAutoplayManagementLauncher);
+        mFeedManagementMediator = new FeedManagementMediator(mActivity, mModelList,
+                mFollowManagementLauncher, mAutoplayManagementLauncher, TEST_STREAM_KIND);
 
         verify(mFeedServiceBridgeJniMock).isAutoplayEnabled();
     }
@@ -72,6 +75,8 @@
         Intent intent = mShadowActivity.peekNextStartedActivityForResult().intent;
         assertEquals(
                 intent.getData(), Uri.parse("https://myactivity.google.com/myactivity?product=50"));
+        verify(mFeedServiceBridgeJniMock)
+                .reportOtherUserAction(TEST_STREAM_KIND, FeedUserActionType.TAPPED_MANAGE_ACTIVITY);
     }
 
     @Test
@@ -83,6 +88,9 @@
         Intent intent = mShadowActivity.peekNextStartedActivityForResult().intent;
         assertEquals(intent.getData(),
                 Uri.parse("https://www.google.com/preferences/interests/yourinterests?sh=n"));
+        verify(mFeedServiceBridgeJniMock)
+                .reportOtherUserAction(
+                        TEST_STREAM_KIND, FeedUserActionType.TAPPED_MANAGE_INTERESTS);
     }
 
     @Test
@@ -94,6 +102,9 @@
         Intent intent = mShadowActivity.peekNextStartedActivityForResult().intent;
         assertEquals(intent.getData(),
                 Uri.parse("https://www.google.com/preferences/interests/hidden?sh=n"));
+        verify(mFeedServiceBridgeJniMock)
+                .reportOtherUserAction(
+                        TEST_STREAM_KIND, FeedUserActionType.TAPPED_MANAGE_INTERESTS);
     }
 
     @Test
@@ -103,6 +114,9 @@
 
         // Assert
         verify(mFollowManagementLauncher).launchFollowManagement(mActivity);
+        verify(mFeedServiceBridgeJniMock)
+                .reportOtherUserAction(
+                        TEST_STREAM_KIND, FeedUserActionType.TAPPED_MANAGE_FOLLOWING);
     }
 
     @Test
@@ -112,5 +126,8 @@
 
         // Assert
         verify(mAutoplayManagementLauncher).launchAutoplayManagement(mActivity);
+        verify(mFeedServiceBridgeJniMock)
+                .reportOtherUserAction(
+                        TEST_STREAM_KIND, FeedUserActionType.OPENED_AUTOPLAY_SETTINGS);
     }
 }