Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java +28 −0 Original line number Diff line number Diff line Loading @@ -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 Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java +5 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 * Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java +10 −8 Original line number Diff line number Diff line Loading @@ -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<>(); } Loading Loading @@ -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); } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java +19 −38 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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()); } Loading @@ -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); } Loading @@ -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()); } Loading @@ -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); } Loading @@ -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 Loading @@ -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()); } Loading @@ -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); } Loading @@ -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()); } Loading @@ -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()); } } Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java +28 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java +5 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 * Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java +10 −8 Original line number Diff line number Diff line Loading @@ -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<>(); } Loading Loading @@ -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); } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java +19 −38 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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()); } Loading @@ -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); } Loading @@ -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()); } Loading @@ -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); } Loading @@ -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 Loading @@ -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()); } Loading @@ -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); } Loading @@ -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()); } Loading @@ -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()); } }