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

Commit dc868088 authored by Edgar Wang's avatar Edgar Wang Committed by Android (Google) Code Review
Browse files

Merge "Change preference value changed metrics log format"

parents b0468d7b 843d74ce
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());
    }
}