diff --git a/src/com/android/settings/localepicker/AppLocalePickerActivity.java b/src/com/android/settings/localepicker/AppLocalePickerActivity.java index 6706c6d0c10..c0f3adcc7ed 100644 --- a/src/com/android/settings/localepicker/AppLocalePickerActivity.java +++ b/src/com/android/settings/localepicker/AppLocalePickerActivity.java @@ -176,6 +176,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity localeInfo.getFullNameNative()), getString(R.string.desc_system_locale_addition), localeTag); + mMetricsFeatureProvider.action(this, + SettingsEnums.ACTION_NOTIFICATION_FOR_SYSTEM_LOCALE); } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Unable to find info for package: " + mPackageName); diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java index 1c22fd9a0f4..b09e22cc698 100644 --- a/src/com/android/settings/localepicker/LocaleListEditor.java +++ b/src/com/android/settings/localepicker/LocaleListEditor.java @@ -245,6 +245,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View } mAdapter.setCacheItemList(); } else if (requestCode == DIALOG_ADD_SYSTEM_LOCALE) { + int action = SettingsEnums.ACTION_CANCEL_SYSTEM_LOCALE_FROM_RECOMMENDATION; if (resultCode == Activity.RESULT_OK) { localeInfo = (LocaleStore.LocaleInfo) data.getExtras().getSerializable( LocaleDialogFragment.ARG_TARGET_LOCALE); @@ -252,7 +253,9 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View getContext().getContentResolver(), Settings.System.LOCALE_PREFERENCES); mAdapter.addLocale(mayAppendUnicodeTags(localeInfo, preferencesTags)); + action = SettingsEnums.ACTION_ADD_SYSTEM_LOCALE_FROM_RECOMMENDATION; } + mMetricsFeatureProvider.action(getContext(), action); } super.onActivityResult(requestCode, resultCode, data); } diff --git a/src/com/android/settings/localepicker/NotificationActionActivity.java b/src/com/android/settings/localepicker/NotificationActionActivity.java index 2f95f9329c2..c15de13532d 100644 --- a/src/com/android/settings/localepicker/NotificationActionActivity.java +++ b/src/com/android/settings/localepicker/NotificationActionActivity.java @@ -21,6 +21,7 @@ import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NO import static com.android.settings.localepicker.LocaleListEditor.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE; import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -32,6 +33,8 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AppCompatActivity; +import com.android.settings.overlay.FeatureFactory; + /** * An Activity that launches the system locale settings page. */ @@ -60,6 +63,8 @@ public class NotificationActionActivity extends AppCompatActivity { actionIntent.putExtra(EXTRA_APP_LOCALE, appLocale); actionIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); getLauncher().launch(actionIntent); + FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().action(this, + SettingsEnums.ACTION_NOTIFICATION_CLICK_FOR_SYSTEM_LOCALE); finish(); return; } diff --git a/src/com/android/settings/localepicker/NotificationCancelReceiver.java b/src/com/android/settings/localepicker/NotificationCancelReceiver.java index f51dfb3621f..f89376b9222 100644 --- a/src/com/android/settings/localepicker/NotificationCancelReceiver.java +++ b/src/com/android/settings/localepicker/NotificationCancelReceiver.java @@ -19,6 +19,7 @@ package com.android.settings.localepicker; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_APP_LOCALE; import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID; +import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -26,6 +27,8 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; +import com.android.settings.overlay.FeatureFactory; + /** * A Broadcast receiver that handles the locale notification which is swiped away. */ @@ -41,6 +44,8 @@ public class NotificationCancelReceiver extends BroadcastReceiver { Log.i(TAG, "Locale notification is swiped away."); if (savedNotificationID == notificationId) { getNotificationController(context).incrementDismissCount(appLocale); + FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().action(context, + SettingsEnums.ACTION_NOTIFICATION_SWIPE_FOR_SYSTEM_LOCALE); } } diff --git a/tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java b/tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java index 2ad24f24ee6..e91c3886cc9 100644 --- a/tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/AppLocalePickerActivityTest.java @@ -314,6 +314,8 @@ public class AppLocalePickerActivityTest { assertThat(info.getNotificationCount()).isEqualTo(1); assertThat(info.getDismissCount()).isEqualTo(0); assertThat(info.getLastNotificationTimeMs()).isNotEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), eq(SettingsEnums.ACTION_NOTIFICATION_FOR_SYSTEM_LOCALE)); mDataManager.clearLocaleNotificationMap(); } diff --git a/tests/robotests/src/com/android/settings/localepicker/NotificationActionActivityTest.java b/tests/robotests/src/com/android/settings/localepicker/NotificationActionActivityTest.java index ea4fee8d0d8..7364bb4f6a3 100644 --- a/tests/robotests/src/com/android/settings/localepicker/NotificationActionActivityTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/NotificationActionActivityTest.java @@ -25,10 +25,13 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import android.app.settings.SettingsEnums; import android.content.Intent; import androidx.activity.result.ActivityResultLauncher; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -42,6 +45,7 @@ import org.robolectric.android.controller.ActivityController; public class NotificationActionActivityTest { private NotificationActionActivity mNotificationActivity; private ActivityController mActivityController; + private FakeFeatureFactory mFeatureFactory; @Mock private NotificationController mNotificationController; @Mock @@ -50,6 +54,7 @@ public class NotificationActionActivityTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); + mFeatureFactory = FakeFeatureFactory.setupForTest(); } @Test @@ -70,6 +75,8 @@ public class NotificationActionActivityTest { mNotificationActivity.onCreate(null); verify(mLauncher).launch(any(Intent.class)); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), eq(SettingsEnums.ACTION_NOTIFICATION_CLICK_FOR_SYSTEM_LOCALE)); verify(mNotificationActivity).finish(); } } diff --git a/tests/robotests/src/com/android/settings/localepicker/NotificationCancelReceiverTest.java b/tests/robotests/src/com/android/settings/localepicker/NotificationCancelReceiverTest.java index 1d348604b3b..44906a96080 100644 --- a/tests/robotests/src/com/android/settings/localepicker/NotificationCancelReceiverTest.java +++ b/tests/robotests/src/com/android/settings/localepicker/NotificationCancelReceiverTest.java @@ -26,9 +26,12 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -43,12 +46,14 @@ public class NotificationCancelReceiverTest { private NotificationCancelReceiver mReceiver; @Mock private NotificationController mNotificationController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mReceiver = spy(new NotificationCancelReceiver()); + mFeatureFactory = FakeFeatureFactory.setupForTest(); doReturn(mNotificationController).when(mReceiver).getNotificationController(any()); } @@ -64,5 +69,7 @@ public class NotificationCancelReceiverTest { mReceiver.onReceive(mContext, intent); verify(mNotificationController).incrementDismissCount(eq(locale)); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), eq(SettingsEnums.ACTION_NOTIFICATION_SWIPE_FOR_SYSTEM_LOCALE)); } }