Loading core/java/android/metrics/LogMaker.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -54,7 +54,11 @@ public class LogMaker { /* Deserialize from the eventlog */ /* Deserialize from the eventlog */ public LogMaker(Object[] items) { public LogMaker(Object[] items) { if (items != null) { deserialize(items); deserialize(items); } else { setCategory(MetricsEvent.VIEW_UNKNOWN); } } } /** @param category to replace the existing setting. */ /** @param category to replace the existing setting. */ Loading Loading @@ -373,13 +377,13 @@ public class LogMaker { */ */ public void deserialize(Object[] items) { public void deserialize(Object[] items) { int i = 0; int i = 0; while (i < items.length) { while (items != null && i < items.length) { Object key = items[i++]; Object key = items[i++]; Object value = i < items.length ? items[i++] : null; Object value = i < items.length ? items[i++] : null; if (key instanceof Integer) { if (key instanceof Integer) { entries.put((Integer) key, value); entries.put((Integer) key, value); } else { } else { Log.i(TAG, "Invalid key " + key.toString()); Log.i(TAG, "Invalid key " + (key == null ? "null" : key.toString())); } } } } } } Loading core/tests/coretests/src/android/metrics/LogMakerTest.java +28 −0 Original line number Original line Diff line number Diff line Loading @@ -263,4 +263,32 @@ public class LogMakerTest extends TestCase { assertFalse(a.isSubsetOf(b)); assertFalse(a.isSubsetOf(b)); assertFalse(b.isSubsetOf(a)); 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 } } } Loading
core/java/android/metrics/LogMaker.java +7 −3 Original line number Original line Diff line number Diff line Loading @@ -54,7 +54,11 @@ public class LogMaker { /* Deserialize from the eventlog */ /* Deserialize from the eventlog */ public LogMaker(Object[] items) { public LogMaker(Object[] items) { if (items != null) { deserialize(items); deserialize(items); } else { setCategory(MetricsEvent.VIEW_UNKNOWN); } } } /** @param category to replace the existing setting. */ /** @param category to replace the existing setting. */ Loading Loading @@ -373,13 +377,13 @@ public class LogMaker { */ */ public void deserialize(Object[] items) { public void deserialize(Object[] items) { int i = 0; int i = 0; while (i < items.length) { while (items != null && i < items.length) { Object key = items[i++]; Object key = items[i++]; Object value = i < items.length ? items[i++] : null; Object value = i < items.length ? items[i++] : null; if (key instanceof Integer) { if (key instanceof Integer) { entries.put((Integer) key, value); entries.put((Integer) key, value); } else { } else { Log.i(TAG, "Invalid key " + key.toString()); Log.i(TAG, "Invalid key " + (key == null ? "null" : key.toString())); } } } } } } Loading
core/tests/coretests/src/android/metrics/LogMakerTest.java +28 −0 Original line number Original line Diff line number Diff line Loading @@ -263,4 +263,32 @@ public class LogMakerTest extends TestCase { assertFalse(a.isSubsetOf(b)); assertFalse(a.isSubsetOf(b)); assertFalse(b.isSubsetOf(a)); 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 } } }