Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1c9d6f4 authored by Edgar Wang's avatar Edgar Wang
Browse files

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
parent ac5cbb5e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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<String, String> 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<String> PERSISTENT_FLAGS;
+4 −0
Original line number Diff line number Diff line
@@ -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<Integer, Object>... taggedData) {
        final LogMaker logMaker = new LogMaker(category)
+5 −0
Original line number Diff line number Diff line
@@ -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.
     */
+14 −6
Original line number Diff line number Diff line
@@ -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;
    }
}
+8 −48
Original line number Diff line number Diff line
@@ -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