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

Commit 8b498737 authored by Chris Wren's avatar Chris Wren
Browse files

allow clearing fields for LogMaker reuse

Bug: 34705522
Test: runtest --path frameworks/base/core/tests/coretests/src/android/metrics
Change-Id: I00a1ef279740c890ff8b059be97c4463c9f1af0e
parent 132dffbc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -26108,6 +26108,7 @@ package android.metrics {
    ctor public LogMaker(int);
    ctor public LogMaker(java.lang.Object[]);
    method public android.metrics.LogMaker addTaggedData(int, java.lang.Object);
    method public android.metrics.LogMaker clearTaggedData(int);
    method public void deserialize(java.lang.Object[]);
    method public int getCategory();
    method public long getCounterBucket();
+19 −6
Original line number Diff line number Diff line
@@ -102,10 +102,13 @@ public class LogMaker {

    /**
     * @param tag From your MetricsEvent enum.
     * @param value One of Integer, Long, Float, String
     * @return
     * @param value One of Integer, Long, Float, or String; or null to clear the tag.
     * @return modified LogMaker
     */
    public LogMaker addTaggedData(int tag, Object value) {
        if (value == null) {
            return clearTaggedData(tag);
        }
        if (!isValidValue(value)) {
            throw new IllegalArgumentException(
                    "Value must be loggable type - int, long, float, String");
@@ -118,11 +121,21 @@ public class LogMaker {
        return this;
    }

    public boolean isValidValue(Object value) {
        if (value == null) {
            Log.i("LogBuilder", "Logging a null value.");
            return true;
    /**
     * Remove a value from the LogMaker.
     *
     * @param tag From your MetricsEvent enum.
     * @return modified LogMaker
     */
    public LogMaker clearTaggedData(int tag) {
        entries.delete(tag);
        return this;
    }

    /**
     * @return true if this object may be added to a LogMaker as a value.
     */
    public boolean isValidValue(Object value) {
        return value instanceof Integer ||
            value instanceof String ||
            value instanceof Long ||
+7 −0
Original line number Diff line number Diff line
@@ -115,6 +115,13 @@ public class LogMakerTest extends TestCase {
        assertEquals(10, out[1]);
    }

    public void testClearData() {
        LogMaker builder = new LogMaker(0);
        builder.addTaggedData(1, "onetwothree");
        builder.clearTaggedData(1);
        assertEquals(null, builder.getTaggedData(1));
    }

    public void testGiantLogOmitted() {
        LogMaker badBuilder = new LogMaker(0);
        StringBuilder b = new StringBuilder();