Merge "guard against nulls in LogMaker" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-04-18 23:32:02 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 3 deletions

View File

@@ -54,7 +54,11 @@ public class LogMaker {
/* Deserialize from the eventlog */
public LogMaker(Object[] items) {
deserialize(items);
if (items != null) {
deserialize(items);
} else {
setCategory(MetricsEvent.VIEW_UNKNOWN);
}
}
/** @param category to replace the existing setting. */
@@ -373,13 +377,13 @@ public class LogMaker {
*/
public void deserialize(Object[] items) {
int i = 0;
while (i < items.length) {
while (items != null && i < items.length) {
Object key = items[i++];
Object value = i < items.length ? items[i++] : null;
if (key instanceof Integer) {
entries.put((Integer) key, value);
} else {
Log.i(TAG, "Invalid key " + key.toString());
Log.i(TAG, "Invalid key " + (key == null ? "null" : key.toString()));
}
}
}

View File

@@ -263,4 +263,32 @@ public class LogMakerTest extends TestCase {
assertFalse(a.isSubsetOf(b));
assertFalse(b.isSubsetOf(a));
}
public void testConstructFromNull() {
new LogMaker(null);
// no promises, just don't throw
}
public void testConstructFromNullKey() {
Object[] items = new Object[2];
items[0] = null;
items[1] = "foo";
new LogMaker(items);
// no promises, just don't throw
}
public void testConstructFromNullField() {
Object[] items = new Object[2];
items[0] = 10;
items[1] = null;
new LogMaker(items);
// no promises, just don't throw
}
public void testConstructFromTruncatedArray() {
Object[] items = new Object[1];
items[0] = 10;
new LogMaker(items);
// no promises, just don't throw
}
}