diff options
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/metrics/LogMaker.java | 25 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/metrics/LogMakerTest.java | 7 |
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(); |