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