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

Commit a7c1b80f authored by Chris Wren's avatar Chris Wren
Browse files

add clear methods to LogMaker

To support object reuse.

Test: runtest --path frameworks/base/core/tests/coretests/src/android/metrics
Bug: 36020746
Change-Id: I09e5689da70963e9aba3bd8428a55acfcbe4e92a
parent a33ae2d8
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -26723,7 +26723,12 @@ 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 clearCategory();
    method public android.metrics.LogMaker clearPackageName();
    method public android.metrics.LogMaker clearSubtype();
    method public android.metrics.LogMaker clearTaggedData(int);
    method public android.metrics.LogMaker clearTimestamp();
    method public android.metrics.LogMaker clearType();
    method public void deserialize(java.lang.Object[]);
    method public int getCategory();
    method public long getCounterBucket();
+25 −0
Original line number Diff line number Diff line
@@ -60,26 +60,51 @@ public class LogMaker {
        return this;
    }

    public LogMaker clearCategory() {
        entries.remove(MetricsEvent.RESERVED_FOR_LOGBUILDER_CATEGORY);
        return this;
    }

    public LogMaker setType(int type) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_TYPE, type);
        return this;
    }

    public LogMaker clearType() {
        entries.remove(MetricsEvent.RESERVED_FOR_LOGBUILDER_TYPE);
        return this;
    }

    public LogMaker setSubtype(int subtype) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_SUBTYPE, subtype);
        return this;
    }

    public LogMaker clearSubtype() {
        entries.remove(MetricsEvent.RESERVED_FOR_LOGBUILDER_SUBTYPE);
        return this;
    }

    public LogMaker setTimestamp(long timestamp) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_TIMESTAMP, timestamp);
        return this;
    }

    public LogMaker clearTimestamp() {
        entries.remove(MetricsEvent.RESERVED_FOR_LOGBUILDER_TIMESTAMP);
        return this;
    }

    public LogMaker setPackageName(String packageName) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_PACKAGENAME, packageName);
        return this;
    }

    public LogMaker clearPackageName() {
        entries.remove(MetricsEvent.RESERVED_FOR_LOGBUILDER_PACKAGENAME);
        return this;
    }

    public LogMaker setCounterName(String name) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_NAME, name);
        return this;
+49 −0
Original line number Diff line number Diff line
@@ -122,6 +122,55 @@ public class LogMakerTest extends TestCase {
        assertEquals(null, builder.getTaggedData(1));
    }

    public void testClearFieldLeavesOtherFieldsIntact() {
        LogMaker builder = new LogMaker(0);
        builder.setPackageName("package.name");
        builder.setSubtype(10);
        builder.clearPackageName();
        assertEquals(null, builder.getPackageName());
        assertEquals(10, builder.getSubtype());
    }

    public void testSetAndClearCategory() {
        LogMaker builder = new LogMaker(0);
        builder.setCategory(MetricsEvent.MAIN_SETTINGS);
        assertEquals(MetricsEvent.MAIN_SETTINGS, builder.getCategory());
        builder.clearCategory();
        assertEquals(MetricsEvent.VIEW_UNKNOWN, builder.getCategory());
    }

    public void testSetAndClearType() {
        LogMaker builder = new LogMaker(0);
        builder.setType(MetricsEvent.TYPE_OPEN);
        assertEquals(MetricsEvent.TYPE_OPEN, builder.getType());
        builder.clearType();
        assertEquals(MetricsEvent.TYPE_UNKNOWN, builder.getType());
    }

    public void testSetAndClearSubtype() {
        LogMaker builder = new LogMaker(0);
        builder.setSubtype(1);
        assertEquals(1, builder.getSubtype());
        builder.clearSubtype();
        assertEquals(0, builder.getSubtype());
    }

    public void testSetAndClearTimestamp() {
        LogMaker builder = new LogMaker(0);
        builder.setTimestamp(1);
        assertEquals(1, builder.getTimestamp());
        builder.clearTimestamp();
        assertEquals(0, builder.getTimestamp());
    }

    public void testSetAndClearPackageName() {
        LogMaker builder = new LogMaker(0);
        builder.setPackageName("package.name");
        assertEquals("package.name", builder.getPackageName());
        builder.clearPackageName();
        assertEquals(null, builder.getPackageName());
    }

    public void testGiantLogOmitted() {
        LogMaker badBuilder = new LogMaker(0);
        StringBuilder b = new StringBuilder();
+3 −3
Original line number Diff line number Diff line
@@ -778,9 +778,9 @@ public final class NotificationRecord {
                    .addTaggedData(MetricsEvent.NOTIFICATION_TAG, sbn.getTag());
        }
        return mLogMaker
                .setCategory(MetricsEvent.VIEW_UNKNOWN)
                .setType(MetricsEvent.TYPE_UNKNOWN)
                .setSubtype(0)
                .clearCategory()
                .clearType()
                .clearSubtype()
                .clearTaggedData(MetricsEvent.NOTIFICATION_SHADE_INDEX)
                .addTaggedData(MetricsEvent.NOTIFICATION_SINCE_CREATE_MILLIS, getLifespanMs(now))
                .addTaggedData(MetricsEvent.NOTIFICATION_SINCE_UPDATE_MILLIS, getFreshnessMs(now))