StatsEvent @SystemApi

Make StatsEvent and StatsLog.write(StatsEvent) @SystemApi.

Bug: 146383532
Test: m

Change-Id: I15050734e757bdb622fb83e3ef244a6ebd26923b
This commit is contained in:
Muhammad Qureshi
2019-12-08 22:18:59 -08:00
parent 34fb1da756
commit 089d1bb28d
3 changed files with 34 additions and 18 deletions

View File

@@ -20,6 +20,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.SystemClock;
import com.android.internal.annotations.GuardedBy;
@@ -51,6 +52,7 @@ import com.android.internal.annotations.VisibleForTesting;
* </pre>
* @hide
**/
@SystemApi
public final class StatsEvent {
// Type Ids.
/**
@@ -270,6 +272,8 @@ public final class StatsEvent {
/**
* Recycle resources used by this StatsEvent object.
* No actions should be taken on this StatsEvent after release() is called.
*
* @hide
**/
public void release() {
if (mBuffer != null) {
@@ -362,16 +366,6 @@ public final class StatsEvent {
return this;
}
/**
* Sets the timestamp in nanos for this StatsEvent.
**/
@VisibleForTesting
@NonNull
public Builder setTimestampNs(final long timestampNs) {
mTimestampNs = timestampNs;
return this;
}
/**
* Write a boolean field to this StatsEvent.
**/
@@ -500,14 +494,14 @@ public final class StatsEvent {
**/
@NonNull
public Builder writeKeyValuePairs(
@NonNull final SparseIntArray intMap,
@NonNull final SparseLongArray longMap,
@NonNull final SparseArray<String> stringMap,
@NonNull final SparseArray<Float> floatMap) {
final int intMapSize = intMap.size();
final int longMapSize = longMap.size();
final int stringMapSize = stringMap.size();
final int floatMapSize = floatMap.size();
@Nullable final SparseIntArray intMap,
@Nullable final SparseLongArray longMap,
@Nullable final SparseArray<String> stringMap,
@Nullable final SparseArray<Float> floatMap) {
final int intMapSize = null == intMap ? 0 : intMap.size();
final int longMapSize = null == longMap ? 0 : longMap.size();
final int stringMapSize = null == stringMap ? 0 : stringMap.size();
final int floatMapSize = null == floatMap ? 0 : floatMap.size();
final int totalCount = intMapSize + longMapSize + stringMapSize + floatMapSize;
if (totalCount > MAX_KEY_VALUE_PAIRS) {

View File

@@ -11961,7 +11961,28 @@ package android.util {
method public int getUid();
}
public final class StatsEvent {
method @NonNull public static android.util.StatsEvent.Builder newBuilder();
}
public static final class StatsEvent.Builder {
method @NonNull public android.util.StatsEvent.Builder addBooleanAnnotation(byte, boolean);
method @NonNull public android.util.StatsEvent.Builder addIntAnnotation(byte, int);
method @NonNull public android.util.StatsEvent build();
method @NonNull public android.util.StatsEvent.Builder setAtomId(int);
method @NonNull public android.util.StatsEvent.Builder usePooledBuffer();
method @NonNull public android.util.StatsEvent.Builder writeAttributionChain(@NonNull int[], @NonNull String[]);
method @NonNull public android.util.StatsEvent.Builder writeBoolean(boolean);
method @NonNull public android.util.StatsEvent.Builder writeByteArray(@NonNull byte[]);
method @NonNull public android.util.StatsEvent.Builder writeFloat(float);
method @NonNull public android.util.StatsEvent.Builder writeInt(int);
method @NonNull public android.util.StatsEvent.Builder writeKeyValuePairs(@Nullable android.util.SparseIntArray, @Nullable android.util.SparseLongArray, @Nullable android.util.SparseArray<java.lang.String>, @Nullable android.util.SparseArray<java.lang.Float>);
method @NonNull public android.util.StatsEvent.Builder writeLong(long);
method @NonNull public android.util.StatsEvent.Builder writeString(@NonNull String);
}
public final class StatsLog {
method public static void write(@NonNull android.util.StatsEvent);
method public static void writeRaw(@NonNull byte[], int);
}

View File

@@ -254,6 +254,7 @@ public final class StatsLog extends StatsLogInternal {
* @param statsEvent The StatsEvent object containing the encoded buffer of data to write.
* @hide
*/
@SystemApi
public static void write(@NonNull final StatsEvent statsEvent) {
writeImpl(statsEvent.getBytes(), statsEvent.getNumBytes(), statsEvent.getAtomId());
statsEvent.release();