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

This commit is contained in:
TreeHugger Robot
2019-06-24 21:46:37 +00:00
committed by Android (Google) Code Review
2 changed files with 40 additions and 3 deletions

View File

@@ -102,7 +102,8 @@ public class SharedPreferencesLogger implements SharedPreferences {
OnSharedPreferenceChangeListener listener) { OnSharedPreferenceChangeListener listener) {
} }
private void logValue(String key, Object value) { @VisibleForTesting
protected void logValue(String key, Object value) {
logValue(key, value, false /* forceLog */); logValue(key, value, false /* forceLog */);
} }
@@ -138,11 +139,18 @@ public class SharedPreferencesLogger implements SharedPreferences {
} else { } else {
intVal = (int) floatValue; 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 { } else {
Log.w(LOG_TAG, "Tried to log unloggable object" + value); Log.w(LOG_TAG, "Tried to log unloggable object=" + value);
return; 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, mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE, SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN, SettingsEnums.PAGE_UNKNOWN,

View File

@@ -162,4 +162,33 @@ public class SharedPreferenceLoggerTest {
"tag/key:com.android.settings", "tag/key:com.android.settings",
0); 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());
}
} }