summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt5
-rw-r--r--core/java/android/metrics/LogMaker.java25
-rw-r--r--core/tests/coretests/src/android/metrics/LogMakerTest.java49
-rw-r--r--services/core/java/com/android/server/notification/NotificationRecord.java6
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))