Loading packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java +11 −3 Original line number Diff line number Diff line Loading @@ -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 */); } Loading Loading @@ -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, Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -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()); } } Loading
packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java +11 −3 Original line number Diff line number Diff line Loading @@ -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 */); } Loading Loading @@ -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, Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -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()); } }