diff options
| -rw-r--r-- | api/system-current.txt | 5 | ||||
| -rw-r--r-- | core/java/android/metrics/LogMaker.java | 25 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/metrics/LogMakerTest.java | 49 | ||||
| -rw-r--r-- | services/core/java/com/android/server/notification/NotificationRecord.java | 6 |
4 files changed, 82 insertions, 3 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 6d6b321fb8ce..56778132ba4b 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -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(); diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java index 0ee25744488c..612b1356e306 100644 --- a/core/java/android/metrics/LogMaker.java +++ b/core/java/android/metrics/LogMaker.java @@ -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; diff --git a/core/tests/coretests/src/android/metrics/LogMakerTest.java b/core/tests/coretests/src/android/metrics/LogMakerTest.java index b9c973fb09cd..ece44bebf9ba 100644 --- a/core/tests/coretests/src/android/metrics/LogMakerTest.java +++ b/core/tests/coretests/src/android/metrics/LogMakerTest.java @@ -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(); diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index 3016b17db7b9..d751a2258dc6 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -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)) |