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

Commit 843d74ce authored by Edgar Wang's avatar Edgar Wang
Browse files

Change preference value changed metrics log format

- Make value changed log more clear
- Logged preference keys should follow the same format with preference click

Bug: 246483846
Test: Robotest
Change-Id: I44c416de0e62450f84a774e756d76b59babb4853
parent a33e5347
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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.
     */
+13 −0
Original line number Diff line number Diff line
@@ -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
     *
+10 −8
Original line number Diff line number Diff line
@@ -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);
    }

+19 −38
Original line number Diff line number Diff line
@@ -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());
    }
}