Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ddf1d165 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 944782fa 572c5df5
Loading
Loading
Loading
Loading
+7 −3
Original line number Original line Diff line number Diff line
@@ -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. */
@@ -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()));
            }
            }
        }
        }
    }
    }
+28 −0
Original line number Original line Diff line number Diff line
@@ -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
    }
}
}