Add locale recommendation metrics
Bug: 275306065 Test: atest SettingsRoboTests:com.android.settings.localepicker Change-Id: I7263c292eee51475274585fe4c0864f82fabf7d2
This commit is contained in:
@@ -176,6 +176,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
|||||||
localeInfo.getFullNameNative()),
|
localeInfo.getFullNameNative()),
|
||||||
getString(R.string.desc_system_locale_addition),
|
getString(R.string.desc_system_locale_addition),
|
||||||
localeTag);
|
localeTag);
|
||||||
|
mMetricsFeatureProvider.action(this,
|
||||||
|
SettingsEnums.ACTION_NOTIFICATION_FOR_SYSTEM_LOCALE);
|
||||||
}
|
}
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
Log.e(TAG, "Unable to find info for package: " + mPackageName);
|
Log.e(TAG, "Unable to find info for package: " + mPackageName);
|
||||||
|
@@ -245,6 +245,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
}
|
}
|
||||||
mAdapter.setCacheItemList();
|
mAdapter.setCacheItemList();
|
||||||
} else if (requestCode == DIALOG_ADD_SYSTEM_LOCALE) {
|
} else if (requestCode == DIALOG_ADD_SYSTEM_LOCALE) {
|
||||||
|
int action = SettingsEnums.ACTION_CANCEL_SYSTEM_LOCALE_FROM_RECOMMENDATION;
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
localeInfo = (LocaleStore.LocaleInfo) data.getExtras().getSerializable(
|
localeInfo = (LocaleStore.LocaleInfo) data.getExtras().getSerializable(
|
||||||
LocaleDialogFragment.ARG_TARGET_LOCALE);
|
LocaleDialogFragment.ARG_TARGET_LOCALE);
|
||||||
@@ -252,7 +253,9 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
getContext().getContentResolver(),
|
getContext().getContentResolver(),
|
||||||
Settings.System.LOCALE_PREFERENCES);
|
Settings.System.LOCALE_PREFERENCES);
|
||||||
mAdapter.addLocale(mayAppendUnicodeTags(localeInfo, preferencesTags));
|
mAdapter.addLocale(mayAppendUnicodeTags(localeInfo, preferencesTags));
|
||||||
|
action = SettingsEnums.ACTION_ADD_SYSTEM_LOCALE_FROM_RECOMMENDATION;
|
||||||
}
|
}
|
||||||
|
mMetricsFeatureProvider.action(getContext(), action);
|
||||||
}
|
}
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
|
@@ -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.EXTRA_SYSTEM_LOCALE_DIALOG_TYPE;
|
||||||
import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION;
|
import static com.android.settings.localepicker.LocaleListEditor.LOCALE_SUGGESTION;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -32,6 +33,8 @@ import androidx.activity.result.contract.ActivityResultContracts;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An Activity that launches the system locale settings page.
|
* 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.putExtra(EXTRA_APP_LOCALE, appLocale);
|
||||||
actionIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
actionIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
getLauncher().launch(actionIntent);
|
getLauncher().launch(actionIntent);
|
||||||
|
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().action(this,
|
||||||
|
SettingsEnums.ACTION_NOTIFICATION_CLICK_FOR_SYSTEM_LOCALE);
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -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_APP_LOCALE;
|
||||||
import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID;
|
import static com.android.settings.localepicker.AppLocalePickerActivity.EXTRA_NOTIFICATION_ID;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -26,6 +27,8 @@ import android.util.Log;
|
|||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Broadcast receiver that handles the locale notification which is swiped away.
|
* 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.");
|
Log.i(TAG, "Locale notification is swiped away.");
|
||||||
if (savedNotificationID == notificationId) {
|
if (savedNotificationID == notificationId) {
|
||||||
getNotificationController(context).incrementDismissCount(appLocale);
|
getNotificationController(context).incrementDismissCount(appLocale);
|
||||||
|
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().action(context,
|
||||||
|
SettingsEnums.ACTION_NOTIFICATION_SWIPE_FOR_SYSTEM_LOCALE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -314,6 +314,8 @@ public class AppLocalePickerActivityTest {
|
|||||||
assertThat(info.getNotificationCount()).isEqualTo(1);
|
assertThat(info.getNotificationCount()).isEqualTo(1);
|
||||||
assertThat(info.getDismissCount()).isEqualTo(0);
|
assertThat(info.getDismissCount()).isEqualTo(0);
|
||||||
assertThat(info.getLastNotificationTimeMs()).isNotEqualTo(0);
|
assertThat(info.getLastNotificationTimeMs()).isNotEqualTo(0);
|
||||||
|
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||||
|
any(), eq(SettingsEnums.ACTION_NOTIFICATION_FOR_SYSTEM_LOCALE));
|
||||||
|
|
||||||
mDataManager.clearLocaleNotificationMap();
|
mDataManager.clearLocaleNotificationMap();
|
||||||
}
|
}
|
||||||
|
@@ -25,10 +25,13 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -42,6 +45,7 @@ import org.robolectric.android.controller.ActivityController;
|
|||||||
public class NotificationActionActivityTest {
|
public class NotificationActionActivityTest {
|
||||||
private NotificationActionActivity mNotificationActivity;
|
private NotificationActionActivity mNotificationActivity;
|
||||||
private ActivityController<NotificationActionActivity> mActivityController;
|
private ActivityController<NotificationActionActivity> mActivityController;
|
||||||
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
@Mock
|
@Mock
|
||||||
private NotificationController mNotificationController;
|
private NotificationController mNotificationController;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -50,6 +54,7 @@ public class NotificationActionActivityTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -70,6 +75,8 @@ public class NotificationActionActivityTest {
|
|||||||
mNotificationActivity.onCreate(null);
|
mNotificationActivity.onCreate(null);
|
||||||
|
|
||||||
verify(mLauncher).launch(any(Intent.class));
|
verify(mLauncher).launch(any(Intent.class));
|
||||||
|
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||||
|
any(), eq(SettingsEnums.ACTION_NOTIFICATION_CLICK_FOR_SYSTEM_LOCALE));
|
||||||
verify(mNotificationActivity).finish();
|
verify(mNotificationActivity).finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,9 +26,12 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -43,12 +46,14 @@ public class NotificationCancelReceiverTest {
|
|||||||
private NotificationCancelReceiver mReceiver;
|
private NotificationCancelReceiver mReceiver;
|
||||||
@Mock
|
@Mock
|
||||||
private NotificationController mNotificationController;
|
private NotificationController mNotificationController;
|
||||||
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mReceiver = spy(new NotificationCancelReceiver());
|
mReceiver = spy(new NotificationCancelReceiver());
|
||||||
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
doReturn(mNotificationController).when(mReceiver).getNotificationController(any());
|
doReturn(mNotificationController).when(mReceiver).getNotificationController(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,5 +69,7 @@ public class NotificationCancelReceiverTest {
|
|||||||
mReceiver.onReceive(mContext, intent);
|
mReceiver.onReceive(mContext, intent);
|
||||||
|
|
||||||
verify(mNotificationController).incrementDismissCount(eq(locale));
|
verify(mNotificationController).incrementDismissCount(eq(locale));
|
||||||
|
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||||
|
any(), eq(SettingsEnums.ACTION_NOTIFICATION_SWIPE_FOR_SYSTEM_LOCALE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user