summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-04-18 23:32:02 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-04-18 23:32:09 +0000
commitddf1d16504d60be6deb8d130e920b0709aa331b5 (patch)
tree74ea26f22d21f462a50d410f04da31158fe12c5f
parent944782fac265834242db046a255364ca7dedfd5e (diff)
parent572c5df5783bfbe2828180fcbabd97bea4c9188e (diff)
Merge "guard against nulls in LogMaker" into oc-dev
-rw-r--r--core/java/android/metrics/LogMaker.java10
-rw-r--r--core/tests/coretests/src/android/metrics/LogMakerTest.java28
2 files changed, 35 insertions, 3 deletions
diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java
index a76a8a0e3da2..3c6baa76558a 100644
--- a/core/java/android/metrics/LogMaker.java
+++ b/core/java/android/metrics/LogMaker.java
@@ -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()));
}
}
}
diff --git a/core/tests/coretests/src/android/metrics/LogMakerTest.java b/core/tests/coretests/src/android/metrics/LogMakerTest.java
index bab9f631d7d4..63c1f87178aa 100644
--- a/core/tests/coretests/src/android/metrics/LogMakerTest.java
+++ b/core/tests/coretests/src/android/metrics/LogMakerTest.java
@@ -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
+ }
}