Merge "Log preference change as Integer instead of Long." into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7074e25a0e
@@ -120,19 +120,29 @@ public class SharedPreferencesLogger implements SharedPreferences {
|
|||||||
|
|
||||||
final Pair<Integer, Object> valueData;
|
final Pair<Integer, Object> valueData;
|
||||||
if (value instanceof Long) {
|
if (value instanceof Long) {
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE,
|
final Long longVal = (Long) value;
|
||||||
value);
|
final int intVal;
|
||||||
|
if (longVal > Integer.MAX_VALUE) {
|
||||||
|
intVal = Integer.MAX_VALUE;
|
||||||
|
} else if (longVal < Integer.MIN_VALUE) {
|
||||||
|
intVal = Integer.MIN_VALUE;
|
||||||
|
} else {
|
||||||
|
intVal = longVal.intValue();
|
||||||
|
}
|
||||||
|
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
||||||
|
intVal);
|
||||||
} else if (value instanceof Integer) {
|
} else if (value instanceof Integer) {
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE,
|
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
||||||
((Integer) value).longValue());
|
value);
|
||||||
} else if (value instanceof Boolean) {
|
} else if (value instanceof Boolean) {
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE,
|
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
||||||
(Boolean) value ? 1L : 0L);
|
(Boolean) value ? 1 : 0);
|
||||||
} else if (value instanceof Float) {
|
} else if (value instanceof Float) {
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE,
|
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE,
|
||||||
value);
|
value);
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_VALUE, value);
|
Log.d(LOG_TAG, "Tried to log string preference " + prefKey + " = " + value);
|
||||||
|
valueData = null;
|
||||||
} else {
|
} else {
|
||||||
Log.w(LOG_TAG, "Tried to log unloggable object" + value);
|
Log.w(LOG_TAG, "Tried to log unloggable object" + value);
|
||||||
valueData = null;
|
valueData = null;
|
||||||
|
@@ -39,7 +39,7 @@ import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
|||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
||||||
.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE;
|
.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE;
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
||||||
.FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE;
|
.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE;
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
|
||||||
.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME;
|
.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
@@ -88,7 +88,7 @@ public class SharedPreferenceLoggerTest {
|
|||||||
|
|
||||||
verify(mMetricsFeature, times(6)).action(any(Context.class), anyInt(),
|
verify(mMetricsFeature, times(6)).action(any(Context.class), anyInt(),
|
||||||
argThat(mNamePairMatcher),
|
argThat(mNamePairMatcher),
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE, Long.class)));
|
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -103,10 +103,10 @@ public class SharedPreferenceLoggerTest {
|
|||||||
|
|
||||||
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
||||||
argThat(mNamePairMatcher),
|
argThat(mNamePairMatcher),
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE, true)));
|
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, true)));
|
||||||
verify(mMetricsFeature, times(3)).action(any(Context.class), anyInt(),
|
verify(mMetricsFeature, times(3)).action(any(Context.class), anyInt(),
|
||||||
argThat(mNamePairMatcher),
|
argThat(mNamePairMatcher),
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE, false)));
|
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -120,7 +120,33 @@ public class SharedPreferenceLoggerTest {
|
|||||||
|
|
||||||
verify(mMetricsFeature, times(4)).action(any(Context.class), anyInt(),
|
verify(mMetricsFeature, times(4)).action(any(Context.class), anyInt(),
|
||||||
argThat(mNamePairMatcher),
|
argThat(mNamePairMatcher),
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE, Long.class)));
|
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.class)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void putLong_biggerThanIntMax_shouldLogIntMax() {
|
||||||
|
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
||||||
|
final long veryBigNumber = 500L + Integer.MAX_VALUE;
|
||||||
|
editor.putLong(TEST_KEY, 1);
|
||||||
|
editor.putLong(TEST_KEY, veryBigNumber);
|
||||||
|
|
||||||
|
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
||||||
|
argThat(mNamePairMatcher),
|
||||||
|
argThat(pairMatches(
|
||||||
|
FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.MAX_VALUE)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void putLong_smallerThanIntMin_shouldLogIntMin() {
|
||||||
|
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
||||||
|
final long veryNegativeNumber = -500L + Integer.MIN_VALUE;
|
||||||
|
editor.putLong(TEST_KEY, 1);
|
||||||
|
editor.putLong(TEST_KEY, veryNegativeNumber);
|
||||||
|
|
||||||
|
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
||||||
|
argThat(mNamePairMatcher),
|
||||||
|
argThat(pairMatches(
|
||||||
|
FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.MIN_VALUE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -152,7 +178,13 @@ public class SharedPreferenceLoggerTest {
|
|||||||
|
|
||||||
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, boolean bool) {
|
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, boolean bool) {
|
||||||
return pair -> pair.first == tag
|
return pair -> pair.first == tag
|
||||||
&& Platform.isInstanceOfType(pair.second, Long.class)
|
&& Platform.isInstanceOfType(pair.second, Integer.class)
|
||||||
&& pair.second.equals((bool ? 1L : 0L));
|
&& pair.second.equals((bool ? 1 : 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, int val) {
|
||||||
|
return pair -> pair.first == tag
|
||||||
|
&& Platform.isInstanceOfType(pair.second, Integer.class)
|
||||||
|
&& pair.second.equals(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user