summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt1
-rw-r--r--core/java/android/metrics/LogMaker.java25
-rw-r--r--core/tests/coretests/src/android/metrics/LogMakerTest.java7
3 files changed, 27 insertions, 6 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index b4a374ffc11d..7f79c70861c4 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -26109,6 +26109,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();
diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java
index 2bf841c3171e..83f30bee4434 100644
--- a/core/java/android/metrics/LogMaker.java
+++ b/core/java/android/metrics/LogMaker.java
@@ -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;
}
+ /**
+ * 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) {
- if (value == null) {
- Log.i("LogBuilder", "Logging a null value.");
- return true;
- }
return value instanceof Integer ||
value instanceof String ||
value instanceof Long ||
diff --git a/core/tests/coretests/src/android/metrics/LogMakerTest.java b/core/tests/coretests/src/android/metrics/LogMakerTest.java
index 35d8d9343887..b0c394e1b194 100644
--- a/core/tests/coretests/src/android/metrics/LogMakerTest.java
+++ b/core/tests/coretests/src/android/metrics/LogMakerTest.java
@@ -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();