Merge "Address Puller API Feedback" into rvc-dev am: 8651b62518

Change-Id: I1d5f22763d175f6bf747436d669c162c7281beed
This commit is contained in:
Automerger Merge Worker
2020-03-06 18:48:44 +00:00
12 changed files with 169 additions and 160 deletions

View File

@@ -128,7 +128,7 @@ interface IStatsManagerService {
void removeConfiguration(in long configId, in String packageName);
/** Tell StatsManagerService to register a puller for the given atom tag with statsd. */
oneway void registerPullAtomCallback(int atomTag, long coolDownNs, long timeoutNs,
oneway void registerPullAtomCallback(int atomTag, long coolDownMillis, long timeoutMillis,
in int[] additiveFields, IPullAtomCallback pullerCallback);
/** Tell StatsManagerService to unregister the pulller for the given atom tag from statsd. */

View File

@@ -186,8 +186,9 @@ interface IStatsd {
* Registers a puller callback function that, when invoked, pulls the data
* for the specified atom tag.
*/
oneway void registerPullAtomCallback(int uid, int atomTag, long coolDownNs, long timeoutNs,
in int[] additiveFields, IPullAtomCallback pullerCallback);
oneway void registerPullAtomCallback(int uid, int atomTag, long coolDownMillis,
long timeoutMillis,in int[] additiveFields,
IPullAtomCallback pullerCallback);
/**
* Registers a puller callback function that, when invoked, pulls the data

View File

@@ -119,14 +119,12 @@ public final class StatsManager {
/**
* @hide
**/
@VisibleForTesting
public static final long DEFAULT_COOL_DOWN_NS = 1_000_000_000L; // 1 second.
@VisibleForTesting public static final long DEFAULT_COOL_DOWN_MILLIS = 1_000L; // 1 second.
/**
* @hide
**/
@VisibleForTesting
public static final long DEFAULT_TIMEOUT_NS = 10_000_000_000L; // 10 seconds.
@VisibleForTesting public static final long DEFAULT_TIMEOUT_MILLIS = 10_000L; // 10 seconds.
/**
* Constructor for StatsManagerClient.
@@ -489,23 +487,24 @@ public final class StatsManager {
}
/**
* Registers a callback for an atom when that atom is to be pulled. The stats service will
* Sets a callback for an atom when that atom is to be pulled. The stats service will
* invoke pullData in the callback when the stats service determines that this atom needs to be
* pulled. This method should not be called by third-party apps.
*
* @param atomTag The tag of the atom for this puller callback.
* @param metadata Optional metadata specifying the timeout, cool down time, and
* additive fields for mapping isolated to host uids.
* @param callback The callback to be invoked when the stats service pulls the atom.
* @param executor The executor in which to run the callback.
* @param callback The callback to be invoked when the stats service pulls the atom.
*
*/
@RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM)
public void registerPullAtomCallback(int atomTag, @Nullable PullAtomMetadata metadata,
public void setPullAtomCallback(int atomTag, @Nullable PullAtomMetadata metadata,
@NonNull @CallbackExecutor Executor executor,
@NonNull StatsPullAtomCallback callback) {
long coolDownNs = metadata == null ? DEFAULT_COOL_DOWN_NS : metadata.mCoolDownNs;
long timeoutNs = metadata == null ? DEFAULT_TIMEOUT_NS : metadata.mTimeoutNs;
long coolDownMillis =
metadata == null ? DEFAULT_COOL_DOWN_MILLIS : metadata.mCoolDownMillis;
long timeoutMillis = metadata == null ? DEFAULT_TIMEOUT_MILLIS : metadata.mTimeoutMillis;
int[] additiveFields = metadata == null ? new int[0] : metadata.mAdditiveFields;
if (additiveFields == null) {
additiveFields = new int[0];
@@ -516,8 +515,8 @@ public final class StatsManager {
IStatsManagerService service = getIStatsManagerServiceLocked();
PullAtomCallbackInternal rec =
new PullAtomCallbackInternal(atomTag, callback, executor);
service.registerPullAtomCallback(atomTag, coolDownNs, timeoutNs, additiveFields,
rec);
service.registerPullAtomCallback(
atomTag, coolDownMillis, timeoutMillis, additiveFields, rec);
} catch (RemoteException e) {
throw new RuntimeException("Unable to register pull callback", e);
}
@@ -525,14 +524,14 @@ public final class StatsManager {
}
/**
* Unregisters a callback for an atom when that atom is to be pulled. Note that any ongoing
* Clears a callback for an atom when that atom is to be pulled. Note that any ongoing
* pulls will still occur. This method should not be called by third-party apps.
*
* @param atomTag The tag of the atom of which to unregister
*
*/
@RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM)
public void unregisterPullAtomCallback(int atomTag) {
public void clearPullAtomCallback(int atomTag) {
synchronized (sLock) {
try {
IStatsManagerService service = getIStatsManagerServiceLocked();
@@ -585,14 +584,14 @@ public final class StatsManager {
*
*/
public static class PullAtomMetadata {
private final long mCoolDownNs;
private final long mTimeoutNs;
private final long mCoolDownMillis;
private final long mTimeoutMillis;
private final int[] mAdditiveFields;
// Private Constructor for builder
private PullAtomMetadata(long coolDownNs, long timeoutNs, int[] additiveFields) {
mCoolDownNs = coolDownNs;
mTimeoutNs = timeoutNs;
private PullAtomMetadata(long coolDownMillis, long timeoutMillis, int[] additiveFields) {
mCoolDownMillis = coolDownMillis;
mTimeoutMillis = timeoutMillis;
mAdditiveFields = additiveFields;
}
@@ -600,8 +599,8 @@ public final class StatsManager {
* Builder for PullAtomMetadata.
*/
public static class Builder {
private long mCoolDownNs;
private long mTimeoutNs;
private long mCoolDownMillis;
private long mTimeoutMillis;
private int[] mAdditiveFields;
/**
@@ -609,27 +608,28 @@ public final class StatsManager {
* StatsManager#registerPullAtomCallback
*/
public Builder() {
mCoolDownNs = DEFAULT_COOL_DOWN_NS;
mTimeoutNs = DEFAULT_TIMEOUT_NS;
mCoolDownMillis = DEFAULT_COOL_DOWN_MILLIS;
mTimeoutMillis = DEFAULT_TIMEOUT_MILLIS;
mAdditiveFields = null;
}
/**
* Set the cool down time of the pull in nanoseconds. If two successive pulls are issued
* within the cool down, a cached version of the first will be used for the second.
* Set the cool down time of the pull in milliseconds. If two successive pulls are
* issued within the cool down, a cached version of the first pull will be used for the
* second pull.
*/
@NonNull
public Builder setCoolDownNs(long coolDownNs) {
mCoolDownNs = coolDownNs;
public Builder setCoolDownMillis(long coolDownMillis) {
mCoolDownMillis = coolDownMillis;
return this;
}
/**
* Set the maximum time the pull can take in nanoseconds.
* Set the maximum time the pull can take in milliseconds.
*/
@NonNull
public Builder setTimeoutNs(long timeoutNs) {
mTimeoutNs = timeoutNs;
public Builder setTimeoutMillis(long timeoutMillis) {
mTimeoutMillis = timeoutMillis;
return this;
}
@@ -652,30 +652,32 @@ public final class StatsManager {
*/
@NonNull
public PullAtomMetadata build() {
return new PullAtomMetadata(mCoolDownNs, mTimeoutNs, mAdditiveFields);
return new PullAtomMetadata(mCoolDownMillis, mTimeoutMillis, mAdditiveFields);
}
}
/**
* @hide
* Return the cool down time of this pull in milliseconds.
*/
@VisibleForTesting
public long getCoolDownNs() {
return mCoolDownNs;
public long getCoolDownMillis() {
return mCoolDownMillis;
}
/**
* @hide
* Return the maximum amount of time this pull can take in milliseconds.
*/
@VisibleForTesting
public long getTimeoutNs() {
return mTimeoutNs;
public long getTimeoutMillis() {
return mTimeoutMillis;
}
/**
* @hide
* Return the additive fields of this pulled atom.
*
* This is only applicable for atoms that have a uid field. When tasks are run in
* isolated processes, the data will be attributed to the host uid. Additive fields
* will be combined when the non-additive fields are the same.
*/
@VisibleForTesting
@Nullable
public int[] getAdditiveFields() {
return mAdditiveFields;
}

View File

@@ -33,28 +33,28 @@ public final class PullAtomMetadataTest {
@Test
public void testEmpty() {
PullAtomMetadata metadata = new PullAtomMetadata.Builder().build();
assertThat(metadata.getTimeoutNs()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_NS);
assertThat(metadata.getCoolDownNs()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_NS);
assertThat(metadata.getTimeoutMillis()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_MILLIS);
assertThat(metadata.getCoolDownMillis()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_MILLIS);
assertThat(metadata.getAdditiveFields()).isNull();
}
@Test
public void testSetTimeoutNs() {
long timeoutNs = 500_000_000L;
public void testSetTimeoutMillis() {
long timeoutMillis = 500L;
PullAtomMetadata metadata =
new PullAtomMetadata.Builder().setTimeoutNs(timeoutNs).build();
assertThat(metadata.getTimeoutNs()).isEqualTo(timeoutNs);
assertThat(metadata.getCoolDownNs()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_NS);
new PullAtomMetadata.Builder().setTimeoutMillis(timeoutMillis).build();
assertThat(metadata.getTimeoutMillis()).isEqualTo(timeoutMillis);
assertThat(metadata.getCoolDownMillis()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_MILLIS);
assertThat(metadata.getAdditiveFields()).isNull();
}
@Test
public void testSetCoolDownNs() {
long coolDownNs = 10_000_000_000L;
public void testSetCoolDownMillis() {
long coolDownMillis = 10_000L;
PullAtomMetadata metadata =
new PullAtomMetadata.Builder().setCoolDownNs(coolDownNs).build();
assertThat(metadata.getTimeoutNs()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_NS);
assertThat(metadata.getCoolDownNs()).isEqualTo(coolDownNs);
new PullAtomMetadata.Builder().setCoolDownMillis(coolDownMillis).build();
assertThat(metadata.getTimeoutMillis()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_MILLIS);
assertThat(metadata.getCoolDownMillis()).isEqualTo(coolDownMillis);
assertThat(metadata.getAdditiveFields()).isNull();
}
@@ -63,23 +63,23 @@ public final class PullAtomMetadataTest {
int[] fields = {2, 4, 6};
PullAtomMetadata metadata =
new PullAtomMetadata.Builder().setAdditiveFields(fields).build();
assertThat(metadata.getTimeoutNs()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_NS);
assertThat(metadata.getCoolDownNs()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_NS);
assertThat(metadata.getTimeoutMillis()).isEqualTo(StatsManager.DEFAULT_TIMEOUT_MILLIS);
assertThat(metadata.getCoolDownMillis()).isEqualTo(StatsManager.DEFAULT_COOL_DOWN_MILLIS);
assertThat(metadata.getAdditiveFields()).isEqualTo(fields);
}
@Test
public void testSetAllElements() {
long timeoutNs = 300L;
long coolDownNs = 9572L;
long timeoutMillis = 300L;
long coolDownMillis = 9572L;
int[] fields = {3, 2};
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setTimeoutNs(timeoutNs)
.setCoolDownNs(coolDownNs)
.setTimeoutMillis(timeoutMillis)
.setCoolDownMillis(coolDownMillis)
.setAdditiveFields(fields)
.build();
assertThat(metadata.getTimeoutNs()).isEqualTo(timeoutNs);
assertThat(metadata.getCoolDownNs()).isEqualTo(coolDownNs);
assertThat(metadata.getTimeoutMillis()).isEqualTo(timeoutMillis);
assertThat(metadata.getCoolDownMillis()).isEqualTo(coolDownMillis);
assertThat(metadata.getAdditiveFields()).isEqualTo(fields);
}
}

View File

@@ -136,25 +136,25 @@ public class StatsManagerService extends IStatsManagerService.Stub {
}
private static class PullerValue {
private final long mCoolDownNs;
private final long mTimeoutNs;
private final long mCoolDownMillis;
private final long mTimeoutMillis;
private final int[] mAdditiveFields;
private final IPullAtomCallback mCallback;
PullerValue(long coolDownNs, long timeoutNs, int[] additiveFields,
PullerValue(long coolDownMillis, long timeoutMillis, int[] additiveFields,
IPullAtomCallback callback) {
mCoolDownNs = coolDownNs;
mTimeoutNs = timeoutNs;
mCoolDownMillis = coolDownMillis;
mTimeoutMillis = timeoutMillis;
mAdditiveFields = additiveFields;
mCallback = callback;
}
public long getCoolDownNs() {
return mCoolDownNs;
public long getCoolDownMillis() {
return mCoolDownMillis;
}
public long getTimeoutNs() {
return mTimeoutNs;
public long getTimeoutMillis() {
return mTimeoutMillis;
}
public int[] getAdditiveFields() {
@@ -169,12 +169,13 @@ public class StatsManagerService extends IStatsManagerService.Stub {
private final ArrayMap<PullerKey, PullerValue> mPullers = new ArrayMap<>();
@Override
public void registerPullAtomCallback(int atomTag, long coolDownNs, long timeoutNs,
public void registerPullAtomCallback(int atomTag, long coolDownMillis, long timeoutMillis,
int[] additiveFields, IPullAtomCallback pullerCallback) {
enforceRegisterStatsPullAtomPermission();
int callingUid = Binder.getCallingUid();
PullerKey key = new PullerKey(callingUid, atomTag);
PullerValue val = new PullerValue(coolDownNs, timeoutNs, additiveFields, pullerCallback);
PullerValue val =
new PullerValue(coolDownMillis, timeoutMillis, additiveFields, pullerCallback);
// Always cache the puller in StatsManagerService. If statsd is down, we will register the
// puller when statsd comes back up.
@@ -189,8 +190,8 @@ public class StatsManagerService extends IStatsManagerService.Stub {
final long token = Binder.clearCallingIdentity();
try {
statsd.registerPullAtomCallback(
callingUid, atomTag, coolDownNs, timeoutNs, additiveFields, pullerCallback);
statsd.registerPullAtomCallback(callingUid, atomTag, coolDownMillis, timeoutMillis,
additiveFields, pullerCallback);
} catch (RemoteException e) {
Log.e(TAG, "Failed to access statsd to register puller for atom " + atomTag);
} finally {
@@ -596,8 +597,8 @@ public class StatsManagerService extends IStatsManagerService.Stub {
for (Map.Entry<PullerKey, PullerValue> entry : pullersCopy.entrySet()) {
PullerKey key = entry.getKey();
PullerValue value = entry.getValue();
statsd.registerPullAtomCallback(key.getUid(), key.getAtom(), value.getCoolDownNs(),
value.getTimeoutNs(), value.getAdditiveFields(), value.getCallback());
statsd.registerPullAtomCallback(key.getUid(), key.getAtom(), value.getCoolDownMillis(),
value.getTimeoutMillis(), value.getAdditiveFields(), value.getCallback());
}
}

View File

@@ -229,7 +229,7 @@ public class LibStatsPullTests {
// Let the current bucket finish.
Thread.sleep(LONG_SLEEP_MILLIS);
List<Atom> data = StatsConfigUtils.getGaugeMetricDataList(statsManager, sConfigId);
statsManager.unregisterPullAtomCallback(PULL_ATOM_TAG);
unregisterStatsPuller(PULL_ATOM_TAG);
assertThat(data.size()).isEqualTo(sAtomsPerPull);
for (int i = 0; i < data.size(); i++) {

View File

@@ -702,12 +702,12 @@ package android.app {
public final class StatsManager {
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean addConfiguration(long, byte[]);
method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void clearPullAtomCallback(int);
method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getData(long);
method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getMetadata();
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] getRegisteredExperimentIds() throws android.app.StatsManager.StatsUnavailableException;
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void registerPullAtomCallback(int, @Nullable android.app.StatsManager.PullAtomMetadata, @NonNull java.util.concurrent.Executor, @NonNull android.app.StatsManager.StatsPullAtomCallback);
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean removeConfiguration(long);
method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] setActiveConfigsChangedOperation(@Nullable android.app.PendingIntent) throws android.app.StatsManager.StatsUnavailableException;
@@ -715,7 +715,7 @@ package android.app {
method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setDataFetchOperation(long, android.app.PendingIntent);
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void unregisterPullAtomCallback(int);
method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void setPullAtomCallback(int, @Nullable android.app.StatsManager.PullAtomMetadata, @NonNull java.util.concurrent.Executor, @NonNull android.app.StatsManager.StatsPullAtomCallback);
field public static final String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
field public static final String EXTRA_STATS_ACTIVE_CONFIG_KEYS = "android.app.extra.STATS_ACTIVE_CONFIG_KEYS";
field public static final String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
@@ -729,14 +729,17 @@ package android.app {
}
public static class StatsManager.PullAtomMetadata {
method @Nullable public int[] getAdditiveFields();
method public long getCoolDownMillis();
method public long getTimeoutMillis();
}
public static class StatsManager.PullAtomMetadata.Builder {
ctor public StatsManager.PullAtomMetadata.Builder();
method @NonNull public android.app.StatsManager.PullAtomMetadata build();
method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setAdditiveFields(@NonNull int[]);
method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setCoolDownNs(long);
method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setTimeoutNs(long);
method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setCoolDownMillis(long);
method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setTimeoutMillis(long);
}
public static interface StatsManager.StatsPullAtomCallback {

View File

@@ -1196,13 +1196,14 @@ Status StatsService::sendAppBreadcrumbAtom(int32_t label, int32_t state) {
return Status::ok();
}
Status StatsService::registerPullAtomCallback(int32_t uid, int32_t atomTag, int64_t coolDownNs,
int64_t timeoutNs, const std::vector<int32_t>& additiveFields,
const shared_ptr<IPullAtomCallback>& pullerCallback) {
Status StatsService::registerPullAtomCallback(int32_t uid, int32_t atomTag, int64_t coolDownMillis,
int64_t timeoutMillis,
const std::vector<int32_t>& additiveFields,
const shared_ptr<IPullAtomCallback>& pullerCallback) {
ENFORCE_UID(AID_SYSTEM);
VLOG("StatsService::registerPullAtomCallback called.");
mPullerManager->RegisterPullAtomCallback(uid, atomTag, coolDownNs, timeoutNs, additiveFields,
mPullerManager->RegisterPullAtomCallback(uid, atomTag, MillisToNano(coolDownMillis),
MillisToNano(timeoutMillis), additiveFields,
pullerCallback);
return Status::ok();
}

View File

@@ -167,8 +167,9 @@ public:
/**
* Binder call to register a callback function for a pulled atom.
*/
virtual Status registerPullAtomCallback(int32_t uid, int32_t atomTag, int64_t coolDownNs,
int64_t timeoutNs, const std::vector<int32_t>& additiveFields,
virtual Status registerPullAtomCallback(
int32_t uid, int32_t atomTag, int64_t coolDownMillis, int64_t timeoutMillis,
const std::vector<int32_t>& additiveFields,
const shared_ptr<IPullAtomCallback>& pullerCallback) override;
/**

View File

@@ -624,7 +624,7 @@ public class GnssMetrics {
private void registerGnssStats() {
mPullAtomCallback = new StatsPullAtomCallbackImpl();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
FrameworkStatsLog.GNSS_STATS,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(), mPullAtomCallback);

View File

@@ -2189,19 +2189,19 @@ public class NotificationManagerService extends SystemService {
private void registerNotificationPreferencesPullers() {
mPullAtomCallback = new StatsPullAtomCallbackImpl();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
PACKAGE_NOTIFICATION_PREFERENCES,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
mPullAtomCallback
);
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
mPullAtomCallback
);
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),

View File

@@ -182,7 +182,7 @@ public class StatsPullAtomService extends SystemService {
* How long to wait on an individual subsystem to return its stats.
*/
private static final long EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS = 2000;
private static final long NS_PER_SEC = 1000000000;
private static final long MILLIS_PER_SEC = 1000;
private static final long MILLI_AMP_HR_TO_NANO_AMP_SECS = 1_000_000L * 3600L;
private static final int MAX_BATTERY_STATS_HELPER_FREQUENCY_MS = 1000;
@@ -680,7 +680,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2, 3, 4, 5})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -772,7 +772,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {3, 4, 5, 6})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -810,7 +810,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2, 3, 4, 5})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -848,7 +848,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {3, 4, 5, 6})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -886,7 +886,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2, 3})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -955,7 +955,7 @@ public class StatsPullAtomService extends SystemService {
private void registerKernelWakelock() {
int tagId = FrameworkStatsLog.KERNEL_WAKELOCK;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
/* PullAtomMetadata */ null,
BackgroundThread.getExecutor(),
@@ -986,7 +986,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {3})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1017,7 +1017,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2, 3})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1046,7 +1046,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {4})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1078,7 +1078,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1105,7 +1105,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {3})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1130,7 +1130,7 @@ public class StatsPullAtomService extends SystemService {
private void registerWifiActivityInfo() {
int tagId = FrameworkStatsLog.WIFI_ACTIVITY_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1182,7 +1182,7 @@ public class StatsPullAtomService extends SystemService {
private void registerModemActivityInfo() {
int tagId = FrameworkStatsLog.MODEM_ACTIVITY_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1220,7 +1220,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBluetoothActivityInfo() {
int tagId = FrameworkStatsLog.BLUETOOTH_ACTIVITY_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
/* metadata */ null,
BackgroundThread.getExecutor(),
@@ -1249,10 +1249,10 @@ public class StatsPullAtomService extends SystemService {
private void registerSystemElapsedRealtime() {
int tagId = FrameworkStatsLog.SYSTEM_ELAPSED_REALTIME;
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setCoolDownNs(NS_PER_SEC)
.setTimeoutNs(NS_PER_SEC / 2)
.setCoolDownMillis(MILLIS_PER_SEC)
.setTimeoutMillis(MILLIS_PER_SEC / 2)
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1271,7 +1271,7 @@ public class StatsPullAtomService extends SystemService {
private void registerSystemUptime() {
int tagId = FrameworkStatsLog.SYSTEM_UPTIME;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1293,7 +1293,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {4, 5, 6, 7, 8})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1336,7 +1336,7 @@ public class StatsPullAtomService extends SystemService {
private void registerProcessMemoryHighWaterMark() {
int tagId = FrameworkStatsLog.PROCESS_MEMORY_HIGH_WATER_MARK;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1389,7 +1389,7 @@ public class StatsPullAtomService extends SystemService {
private void registerProcessMemorySnapshot() {
int tagId = FrameworkStatsLog.PROCESS_MEMORY_SNAPSHOT;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1449,7 +1449,7 @@ public class StatsPullAtomService extends SystemService {
private void registerSystemIonHeapSize() {
int tagId = FrameworkStatsLog.SYSTEM_ION_HEAP_SIZE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1472,7 +1472,7 @@ public class StatsPullAtomService extends SystemService {
return;
}
int tagId = FrameworkStatsLog.ION_HEAP_SIZE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
/* PullAtomMetadata */ null,
BackgroundThread.getExecutor(),
@@ -1492,7 +1492,7 @@ public class StatsPullAtomService extends SystemService {
private void registerProcessSystemIonHeapSize() {
int tagId = FrameworkStatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1518,7 +1518,7 @@ public class StatsPullAtomService extends SystemService {
private void registerTemperature() {
int tagId = FrameworkStatsLog.TEMPERATURE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1556,7 +1556,7 @@ public class StatsPullAtomService extends SystemService {
private void registerCoolingDevice() {
int tagId = FrameworkStatsLog.COOLING_DEVICE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1596,7 +1596,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {4, 5, 6, 8, 12})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1639,7 +1639,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBinderCallsStatsExceptions() {
int tagId = FrameworkStatsLog.BINDER_CALLS_EXCEPTIONS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1674,7 +1674,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {5, 6, 7, 8, 9})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -1716,7 +1716,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDiskStats() {
int tagId = FrameworkStatsLog.DISK_STATS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1782,7 +1782,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDirectoryUsage() {
int tagId = FrameworkStatsLog.DIRECTORY_USAGE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1823,7 +1823,7 @@ public class StatsPullAtomService extends SystemService {
private void registerAppSize() {
int tagId = FrameworkStatsLog.APP_SIZE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1867,7 +1867,7 @@ public class StatsPullAtomService extends SystemService {
private void registerCategorySize() {
int tagId = FrameworkStatsLog.CATEGORY_SIZE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1971,7 +1971,7 @@ public class StatsPullAtomService extends SystemService {
private void registerNumFingerprintsEnrolled() {
int tagId = FrameworkStatsLog.NUM_FINGERPRINTS_ENROLLED;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -1981,7 +1981,7 @@ public class StatsPullAtomService extends SystemService {
private void registerNumFacesEnrolled() {
int tagId = FrameworkStatsLog.NUM_FACES_ENROLLED;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2039,7 +2039,7 @@ public class StatsPullAtomService extends SystemService {
private void registerProcStats() {
int tagId = FrameworkStatsLog.PROC_STATS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2049,7 +2049,7 @@ public class StatsPullAtomService extends SystemService {
private void registerProcStatsPkgProc() {
int tagId = FrameworkStatsLog.PROC_STATS_PKG_PROC;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2120,9 +2120,9 @@ public class StatsPullAtomService extends SystemService {
int tagId = FrameworkStatsLog.DISK_IO;
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11})
.setCoolDownNs(3 * NS_PER_SEC)
.setCoolDownMillis(3 * MILLIS_PER_SEC)
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -2155,7 +2155,7 @@ public class StatsPullAtomService extends SystemService {
private void registerPowerProfile() {
int tagId = FrameworkStatsLog.POWER_PROFILE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
/* PullAtomMetadata */ null,
BackgroundThread.getExecutor(),
@@ -2180,9 +2180,9 @@ public class StatsPullAtomService extends SystemService {
int tagId = FrameworkStatsLog.PROCESS_CPU_TIME;
// Min cool-down is 5 sec, in line with what ActivityManagerService uses.
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setCoolDownNs(5 * NS_PER_SEC)
.setCoolDownMillis(5 * MILLIS_PER_SEC)
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -2217,7 +2217,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {7, 9, 11, 13, 15, 17, 19, 21})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -2310,7 +2310,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDeviceCalculatedPowerUse() {
int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_USE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2330,7 +2330,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDeviceCalculatedPowerBlameUid() {
int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_UID;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2360,7 +2360,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDeviceCalculatedPowerBlameOther() {
int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2396,7 +2396,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {1, 2, 3, 4})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -2447,7 +2447,7 @@ public class StatsPullAtomService extends SystemService {
PullAtomMetadata metadata = new PullAtomMetadata.Builder()
.setAdditiveFields(new int[] {1, 2, 3, 4})
.build();
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
metadata,
BackgroundThread.getExecutor(),
@@ -2485,7 +2485,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBuildInformation() {
int tagId = FrameworkStatsLog.BUILD_INFORMATION;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2512,7 +2512,7 @@ public class StatsPullAtomService extends SystemService {
private void registerRoleHolder() {
int tagId = FrameworkStatsLog.ROLE_HOLDER;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2570,7 +2570,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDangerousPermissionState() {
int tagId = FrameworkStatsLog.DANGEROUS_PERMISSION_STATE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2660,7 +2660,7 @@ public class StatsPullAtomService extends SystemService {
private void registerTimeZoneDataInfo() {
int tagId = FrameworkStatsLog.TIME_ZONE_DATA_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2687,7 +2687,7 @@ public class StatsPullAtomService extends SystemService {
private void registerExternalStorageInfo() {
int tagId = FrameworkStatsLog.EXTERNAL_STORAGE_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2737,7 +2737,7 @@ public class StatsPullAtomService extends SystemService {
private void registerAppsOnExternalStorageInfo() {
int tagId = FrameworkStatsLog.APPS_ON_EXTERNAL_STORAGE_INFO;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2793,7 +2793,7 @@ public class StatsPullAtomService extends SystemService {
private void registerFaceSettings() {
int tagId = FrameworkStatsLog.FACE_SETTINGS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2847,7 +2847,7 @@ public class StatsPullAtomService extends SystemService {
private void registerAppOps() {
int tagId = FrameworkStatsLog.APP_OPS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2857,7 +2857,7 @@ public class StatsPullAtomService extends SystemService {
private void registerRuntimeAppOpAccessMessage() {
int tagId = FrameworkStatsLog.RUNTIME_APP_OP_ACCESS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -2927,7 +2927,7 @@ public class StatsPullAtomService extends SystemService {
private void registerAppFeaturesOps() {
int tagId = FrameworkStatsLog.APP_FEATURES_OPS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3080,7 +3080,7 @@ public class StatsPullAtomService extends SystemService {
private void registerNotificationRemoteViews() {
int tagId = FrameworkStatsLog.NOTIFICATION_REMOTE_VIEWS;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3124,7 +3124,7 @@ public class StatsPullAtomService extends SystemService {
private void registerDangerousPermissionStateSampled() {
int tagId = FrameworkStatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3134,7 +3134,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBatteryLevel() {
int tagId = FrameworkStatsLog.BATTERY_LEVEL;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3144,7 +3144,7 @@ public class StatsPullAtomService extends SystemService {
private void registerRemainingBatteryCapacity() {
int tagId = FrameworkStatsLog.REMAINING_BATTERY_CAPACITY;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3154,7 +3154,7 @@ public class StatsPullAtomService extends SystemService {
private void registerFullBatteryCapacity() {
int tagId = FrameworkStatsLog.FULL_BATTERY_CAPACITY;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3164,7 +3164,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBatteryVoltage() {
int tagId = FrameworkStatsLog.BATTERY_VOLTAGE;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),
@@ -3174,7 +3174,7 @@ public class StatsPullAtomService extends SystemService {
private void registerBatteryCycleCount() {
int tagId = FrameworkStatsLog.BATTERY_CYCLE_COUNT;
mStatsManager.registerPullAtomCallback(
mStatsManager.setPullAtomCallback(
tagId,
null, // use default PullAtomMetadata values
BackgroundThread.getExecutor(),