Merge "Change preference value changed metrics log format"

This commit is contained in:
Edgar Wang
2022-11-15 03:05:12 +00:00
committed by Android (Google) Code Review
5 changed files with 75 additions and 46 deletions

View File

@@ -50,6 +50,34 @@ public class EventLogWriter implements LogWriter {
@Override
public void clicked(int sourceCategory, String key) {
final LogMaker logMaker = new LogMaker(MetricsProto.MetricsEvent.ACTION_SETTINGS_TILE_CLICK)
.setType(MetricsProto.MetricsEvent.TYPE_ACTION);
if (sourceCategory != MetricsProto.MetricsEvent.VIEW_UNKNOWN) {
logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, sourceCategory);
}
if (!TextUtils.isEmpty(key)) {
logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME,
key);
}
MetricsLogger.action(logMaker);
}
@Override
public void changed(int category, String key, int value) {
final LogMaker logMaker = new LogMaker(
MetricsProto.MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE)
.setType(MetricsProto.MetricsEvent.TYPE_ACTION);
if (category != MetricsProto.MetricsEvent.VIEW_UNKNOWN) {
logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, category);
}
if (!TextUtils.isEmpty(key)) {
logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME,
key);
logMaker.addTaggedData(
MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
value);
}
MetricsLogger.action(logMaker);
}
@Override

View File

@@ -38,6 +38,11 @@ public interface LogWriter {
*/
void clicked(int category, String key);
/**
* Logs a value changed event when user changed item value.
*/
void changed(int category, String key, int value);
/**
* Logs an user action.
*/

View File

@@ -107,6 +107,19 @@ public class MetricsFeatureProvider {
}
}
/**
* Logs a value changed event when user changed item value.
*
* @param category the target page id
* @param key the key id that user clicked
* @param value the value that user changed which converted to integer
*/
public void changed(int category, String key, int value) {
for (LogWriter writer : mLoggerWriters) {
writer.changed(category, key, value);
}
}
/**
* Logs a simple action without page id or attribution
*

View File

@@ -35,15 +35,22 @@ public class SharedPreferencesLogger implements SharedPreferences {
private static final String LOG_TAG = "SharedPreferencesLogger";
private final String mTag;
private final int mMetricCategory;
private final Context mContext;
private final MetricsFeatureProvider mMetricsFeature;
private final Set<String> mPreferenceKeySet;
public SharedPreferencesLogger(Context context, String tag,
MetricsFeatureProvider metricsFeature) {
this(context, tag, metricsFeature, SettingsEnums.PAGE_UNKNOWN);
}
public SharedPreferencesLogger(Context context, String tag,
MetricsFeatureProvider metricsFeature, int metricCategory) {
mContext = context;
mTag = tag;
mMetricsFeature = metricsFeature;
mMetricCategory = metricCategory;
mPreferenceKeySet = new ConcurrentSkipListSet<>();
}
@@ -151,20 +158,15 @@ public class SharedPreferencesLogger implements SharedPreferences {
return;
}
// Pref key exists in set, log its change in metrics.
mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
prefKey,
intVal);
mMetricsFeature.changed(mMetricCategory, key, intVal);
}
@VisibleForTesting
void logPackageName(String key, String value) {
final String prefKey = mTag + "/" + key;
mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN,
mMetricsFeature.action(mMetricCategory,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
prefKey + ":" + value,
key + ":" + value,
0);
}

View File

@@ -39,7 +39,6 @@ public class SharedPreferenceLoggerTest {
private static final String TEST_TAG = "tag";
private static final String TEST_KEY = "key";
private static final String TEST_TAGGED_KEY = TEST_TAG + "/" + TEST_KEY;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
@@ -65,10 +64,8 @@ public class SharedPreferenceLoggerTest {
editor.putInt(TEST_KEY, 2);
editor.putInt(TEST_KEY, 2);
verify(mMetricsFeature, times(6)).action(eq(SettingsEnums.PAGE_UNKNOWN),
eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_TAGGED_KEY),
verify(mMetricsFeature, times(6)).changed(eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_KEY),
anyInt());
}
@@ -82,15 +79,11 @@ public class SharedPreferenceLoggerTest {
editor.putBoolean(TEST_KEY, false);
verify(mMetricsFeature).action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
TEST_TAGGED_KEY,
verify(mMetricsFeature).changed(SettingsEnums.PAGE_UNKNOWN,
TEST_KEY,
1);
verify(mMetricsFeature, times(3)).action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
TEST_TAGGED_KEY,
verify(mMetricsFeature, times(3)).changed(SettingsEnums.PAGE_UNKNOWN,
TEST_KEY,
0);
}
@@ -103,10 +96,8 @@ public class SharedPreferenceLoggerTest {
editor.putLong(TEST_KEY, 1);
editor.putLong(TEST_KEY, 2);
verify(mMetricsFeature, times(4)).action(eq(SettingsEnums.PAGE_UNKNOWN),
eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_TAGGED_KEY),
verify(mMetricsFeature, times(4)).changed(eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_KEY),
anyInt());
}
@@ -117,10 +108,8 @@ public class SharedPreferenceLoggerTest {
editor.putLong(TEST_KEY, 1);
editor.putLong(TEST_KEY, veryBigNumber);
verify(mMetricsFeature).action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
TEST_TAGGED_KEY,
verify(mMetricsFeature).changed(SettingsEnums.PAGE_UNKNOWN,
TEST_KEY,
Integer.MAX_VALUE);
}
@@ -131,10 +120,8 @@ public class SharedPreferenceLoggerTest {
editor.putLong(TEST_KEY, 1);
editor.putLong(TEST_KEY, veryNegativeNumber);
verify(mMetricsFeature).action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
TEST_TAGGED_KEY, Integer.MIN_VALUE);
verify(mMetricsFeature).changed(SettingsEnums.PAGE_UNKNOWN,
TEST_KEY, Integer.MIN_VALUE);
}
@Test
@@ -146,10 +133,8 @@ public class SharedPreferenceLoggerTest {
editor.putFloat(TEST_KEY, 1);
editor.putFloat(TEST_KEY, 2);
verify(mMetricsFeature, times(4)).action(eq(SettingsEnums.PAGE_UNKNOWN),
eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_TAGGED_KEY),
verify(mMetricsFeature, times(4)).changed(eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_KEY),
anyInt());
}
@@ -159,7 +144,7 @@ public class SharedPreferenceLoggerTest {
verify(mMetricsFeature).action(SettingsEnums.PAGE_UNKNOWN,
ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
"tag/key:com.android.settings",
"key:com.android.settings",
0);
}
@@ -170,10 +155,8 @@ public class SharedPreferenceLoggerTest {
mSharedPrefLogger.logValue(TEST_KEY, "62");
mSharedPrefLogger.logValue(TEST_KEY, "0");
verify(mMetricsFeature, times(3)).action(eq(SettingsEnums.PAGE_UNKNOWN),
eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_TAGGED_KEY),
verify(mMetricsFeature, times(3)).changed(eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_KEY),
anyInt());
}
@@ -185,10 +168,8 @@ public class SharedPreferenceLoggerTest {
mSharedPrefLogger.logValue(TEST_KEY, "4.2");
mSharedPrefLogger.logValue(TEST_KEY, "3.0");
verify(mMetricsFeature, times(0)).action(eq(SettingsEnums.PAGE_UNKNOWN),
eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_TAGGED_KEY),
verify(mMetricsFeature, times(0)).changed(eq(SettingsEnums.PAGE_UNKNOWN),
eq(TEST_KEY),
anyInt());
}
}