From c1c9d6f4f14ba4d9c24ed769063185e8b610dfe2 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Thu, 25 Aug 2022 03:30:45 +0800 Subject: [PATCH] Add clicked event for metric log writer - Add adb metric log flag - Add clicked method in LogWriter Bug: 243820251 Test: robotest & manual Change-Id: I58f5a18a04e1ea65131579ecd89f062fb2f190de --- core/java/android/util/FeatureFlagUtils.java | 6 ++ .../core/instrumentation/EventLogWriter.java | 4 ++ .../core/instrumentation/LogWriter.java | 5 ++ .../MetricsFeatureProvider.java | 20 +++++-- .../MetricsFeatureProviderTest.java | 56 +++---------------- 5 files changed, 37 insertions(+), 54 deletions(-) diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index 20f01ae3ae0d3..17e292e91da8e 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -122,6 +122,11 @@ public class FeatureFlagUtils { */ public static final String SETTINGS_ENABLE_SPA = "settings_enable_spa"; + /** Flag to enable/disable adb log metrics + * @hide + */ + public static final String SETTINGS_ADB_METRICS_WRITER = "settings_adb_metrics_writer"; + private static final Map DEFAULT_FLAGS; static { @@ -155,6 +160,7 @@ public class FeatureFlagUtils { DEFAULT_FLAGS.put(SETTINGS_ACCESSIBILITY_SIMPLE_CURSOR, "false"); DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_UI, "false"); DEFAULT_FLAGS.put(SETTINGS_ENABLE_SPA, "false"); + DEFAULT_FLAGS.put(SETTINGS_ADB_METRICS_WRITER, "false"); } private static final Set PERSISTENT_FLAGS; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java index d84e57a38ee40..3e33da5a2ba79 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java @@ -48,6 +48,10 @@ public class EventLogWriter implements LogWriter { MetricsLogger.action(logMaker); } + @Override + public void clicked(int sourceCategory, String key) { + } + @Override public void action(Context context, int category, Pair... taggedData) { final LogMaker logMaker = new LogMaker(category) diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java index d4ef3d7b24a2a..cceca13ec3e59 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/LogWriter.java @@ -33,6 +33,11 @@ public interface LogWriter { */ void hidden(Context context, int category, int visibleTime); + /** + * Logs a click event when user click item. + */ + void clicked(int category, String key); + /** * Logs an user action. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java index 7390b6aaaaed0..915421a8f7a09 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/MetricsFeatureProvider.java @@ -95,6 +95,18 @@ public class MetricsFeatureProvider { } } + /** + * Logs an event when user click item. + * + * @param category the target page id + * @param key the key id that user clicked + */ + public void clicked(int category, String key) { + for (LogWriter writer : mLoggerWriters) { + writer.clicked(category, key); + } + } + /** * Logs a simple action without page id or attribution * @@ -138,7 +150,7 @@ public class MetricsFeatureProvider { } public int getMetricsCategory(Object object) { - if (object == null || !(object instanceof Instrumentable)) { + if (!(object instanceof Instrumentable)) { return MetricsEvent.VIEW_UNKNOWN; } return ((Instrumentable) object).getMetricsCategory(); @@ -198,11 +210,7 @@ public class MetricsFeatureProvider { // Not loggable return false; } - action(sourceMetricsCategory, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - logKey, - 0); + clicked(sourceMetricsCategory, logKey); return true; } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java index 0e2a3cbbbd755..3352d86b2dcca 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java @@ -80,12 +80,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - key, - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, key); } @Test @@ -98,12 +93,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - Intent.ACTION_ASSIST, - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, Intent.ACTION_ASSIST); } @Test @@ -116,12 +106,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - fragment, - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, fragment); } @Test @@ -140,12 +125,7 @@ public class MetricsFeatureProviderTest { final boolean loggable = mProvider.logStartedIntent(intent, MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - Intent.ACTION_ASSIST, - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, Intent.ACTION_ASSIST); } @Test @@ -155,12 +135,7 @@ public class MetricsFeatureProviderTest { final boolean loggable = mProvider.logStartedIntent(intent, MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - "pkg/cls", - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, "pkg/cls"); } @Test @@ -171,12 +146,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES, false); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - "pkg/cls/personal", - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, "pkg/cls/personal"); } @Test @@ -187,12 +157,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES, true); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - "pkg/cls/work", - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, "pkg/cls/work"); } @Test @@ -226,12 +191,7 @@ public class MetricsFeatureProviderTest { MetricsEvent.SETTINGS_GESTURES); assertThat(loggable).isTrue(); - verify(mLogWriter).action( - MetricsEvent.SETTINGS_GESTURES, - MetricsEvent.ACTION_SETTINGS_TILE_CLICK, - SettingsEnums.PAGE_UNKNOWN, - key, - 0); + verify(mLogWriter).clicked(MetricsEvent.SETTINGS_GESTURES, key); } @Test