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

Commit 2fd1a104 authored by Beverly's avatar Beverly Committed by android-build-merger
Browse files

Merge "Log Preference changes when value is a String" into qt-r1-dev

am: c7f3fec1

Change-Id: Ic5efd2f583e7de0959109b5f41368fba3bc75f6e
parents 18d2e90b c7f3fec1
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -102,7 +102,8 @@ public class SharedPreferencesLogger implements SharedPreferences {
            OnSharedPreferenceChangeListener listener) {
    }

    private void logValue(String key, Object value) {
    @VisibleForTesting
    protected void logValue(String key, Object value) {
        logValue(key, value, false /* forceLog */);
    }

@@ -138,11 +139,18 @@ public class SharedPreferencesLogger implements SharedPreferences {
            } else {
                intVal = (int) floatValue;
            }
        } else if (value instanceof String) {
            try {
                intVal = Integer.parseInt((String) value);
            } catch (NumberFormatException e) {
                Log.w(LOG_TAG, "Tried to log unloggable object=" + value);
                return;
            }
        } else {
            Log.w(LOG_TAG, "Tried to log unloggable object" + value);
            Log.w(LOG_TAG, "Tried to log unloggable object=" + value);
            return;
        }
        // Pref key exists in set, log it's change in metrics.
        // Pref key exists in set, log its change in metrics.
        mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN,
                SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
                SettingsEnums.PAGE_UNKNOWN,
+29 −0
Original line number Diff line number Diff line
@@ -162,4 +162,33 @@ public class SharedPreferenceLoggerTest {
                "tag/key:com.android.settings",
                0);
    }

    @Test
    public void putString_shouldNotLogInitialPut() {
        mSharedPrefLogger.logValue(TEST_KEY, "1");
        mSharedPrefLogger.logValue(TEST_KEY, "2");
        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),
                anyInt());
    }

    @Test
    public void putString_shouldNotLogAnyNonIntegers() {
        mSharedPrefLogger.logValue(TEST_KEY, "string");
        mSharedPrefLogger.logValue(TEST_KEY, "not an int");
        mSharedPrefLogger.logValue(TEST_KEY, "1.234f");
        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),
                anyInt());
    }
}