summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeffrey Huang <jeffreyhuang@google.com> 2020-01-16 14:56:37 -0800
committer Jeffrey Huang <jeffreyhuang@google.com> 2020-01-17 11:50:47 -0800
commit597a886d207d17b9543552a6dfee9d23a04a189b (patch)
tree635c650cdfae2f9dcdbdf62fb3f3292c73355249
parente85d7ad7211127c4df01127917682151597733c4 (diff)
Migrate pullNumBiometricsEnrolled
Test: adb shell cmd stats pull-source 10031 Test: adb shell cmd stats pull-source 10048 Change-Id: I35e366d6a53288afdbee7eb5462a5f15a4bd0dc8
-rw-r--r--apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java56
-rw-r--r--cmds/statsd/src/external/StatsPullerManager.cpp8
-rw-r--r--services/core/java/com/android/server/stats/pull/StatsPullAtomService.java70
3 files changed, 62 insertions, 72 deletions
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
index e2962f38506a..6c1166a1d594 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -722,50 +722,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
pulledData.add(e);
}
- private void pullNumBiometricsEnrolled(int modality, int tagId, long elapsedNanos,
- long wallClockNanos, List<StatsLogEventWrapper> pulledData) {
- final PackageManager pm = mContext.getPackageManager();
- FingerprintManager fingerprintManager = null;
- FaceManager faceManager = null;
-
- if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
- fingerprintManager = mContext.getSystemService(
- FingerprintManager.class);
- }
- if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
- faceManager = mContext.getSystemService(FaceManager.class);
- }
-
- if (modality == BiometricsProtoEnums.MODALITY_FINGERPRINT && fingerprintManager == null) {
- return;
- }
- if (modality == BiometricsProtoEnums.MODALITY_FACE && faceManager == null) {
- return;
- }
- UserManager userManager = mContext.getSystemService(UserManager.class);
- if (userManager == null) {
- return;
- }
-
- final long token = Binder.clearCallingIdentity();
- for (UserInfo user : userManager.getUsers()) {
- final int userId = user.getUserHandle().getIdentifier();
- int numEnrolled = 0;
- if (modality == BiometricsProtoEnums.MODALITY_FINGERPRINT) {
- numEnrolled = fingerprintManager.getEnrolledFingerprints(userId).size();
- } else if (modality == BiometricsProtoEnums.MODALITY_FACE) {
- numEnrolled = faceManager.getEnrolledFaces(userId).size();
- } else {
- return;
- }
- StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos);
- e.writeInt(userId);
- e.writeInt(numEnrolled);
- pulledData.add(e);
- }
- Binder.restoreCallingIdentity(token);
- }
-
// read high watermark for section
private long readProcStatsHighWaterMark(int section) {
try {
@@ -1372,18 +1328,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
break;
}
- case StatsLog.NUM_FINGERPRINTS_ENROLLED: {
- pullNumBiometricsEnrolled(BiometricsProtoEnums.MODALITY_FINGERPRINT, tagId,
- elapsedNanos, wallClockNanos, ret);
- break;
- }
-
- case StatsLog.NUM_FACES_ENROLLED: {
- pullNumBiometricsEnrolled(BiometricsProtoEnums.MODALITY_FACE, tagId, elapsedNanos,
- wallClockNanos, ret);
- break;
- }
-
case StatsLog.PROC_STATS: {
pullProcessStats(ProcessStats.REPORT_ALL, tagId, elapsedNanos, wallClockNanos, ret);
break;
diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp
index 96292a14197f..b72de3b9fa39 100644
--- a/cmds/statsd/src/external/StatsPullerManager.cpp
+++ b/cmds/statsd/src/external/StatsPullerManager.cpp
@@ -95,14 +95,6 @@ std::map<PullerKey, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = {
{{.atomTag = android::util::BATTERY_CYCLE_COUNT},
{.puller = new ResourceHealthManagerPuller(android::util::BATTERY_CYCLE_COUNT)}},
- // Number of fingerprints enrolled for each user.
- {{.atomTag = android::util::NUM_FINGERPRINTS_ENROLLED},
- {.puller = new StatsCompanionServicePuller(android::util::NUM_FINGERPRINTS_ENROLLED)}},
-
- // Number of faces enrolled for each user.
- {{.atomTag = android::util::NUM_FACES_ENROLLED},
- {.puller = new StatsCompanionServicePuller(android::util::NUM_FACES_ENROLLED)}},
-
// ProcStats.
{{.atomTag = android::util::PROC_STATS},
{.puller = new StatsCompanionServicePuller(android::util::PROC_STATS)}},
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index be30c651c78a..8d45b42f9a87 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -1751,19 +1751,73 @@ public class StatsPullAtomService extends SystemService {
}
private void registerNumFingerprintsEnrolled() {
- // No op.
- }
-
- private void pullNumFingerprintsEnrolled() {
- // No op.
+ int tagId = StatsLog.NUM_FINGERPRINTS_ENROLLED;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ (atomTag, data) -> pullNumBiometricsEnrolled(
+ BiometricsProtoEnums.MODALITY_FINGERPRINT, atomTag, data),
+ BackgroundThread.getExecutor()
+ );
}
private void registerNumFacesEnrolled() {
- // No op.
+ int tagId = StatsLog.NUM_FACES_ENROLLED;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ (atomTag, data) -> pullNumBiometricsEnrolled(
+ BiometricsProtoEnums.MODALITY_FACE, atomTag, data),
+ BackgroundThread.getExecutor()
+ );
}
- private void pullNumFacesEnrolled() {
- // No op.
+ private int pullNumBiometricsEnrolled(int modality, int atomTag, List<StatsEvent> pulledData) {
+ final PackageManager pm = mContext.getPackageManager();
+ FingerprintManager fingerprintManager = null;
+ FaceManager faceManager = null;
+
+ if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
+ fingerprintManager = mContext.getSystemService(FingerprintManager.class);
+ }
+ if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
+ faceManager = mContext.getSystemService(FaceManager.class);
+ }
+
+ if (modality == BiometricsProtoEnums.MODALITY_FINGERPRINT && fingerprintManager == null) {
+ return StatsManager.PULL_SKIP;
+ }
+ if (modality == BiometricsProtoEnums.MODALITY_FACE && faceManager == null) {
+ return StatsManager.PULL_SKIP;
+ }
+ UserManager userManager = mContext.getSystemService(UserManager.class);
+ if (userManager == null) {
+ return StatsManager.PULL_SKIP;
+ }
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ for (UserInfo user : userManager.getUsers()) {
+ final int userId = user.getUserHandle().getIdentifier();
+ int numEnrolled = 0;
+ if (modality == BiometricsProtoEnums.MODALITY_FINGERPRINT) {
+ numEnrolled = fingerprintManager.getEnrolledFingerprints(userId).size();
+ } else if (modality == BiometricsProtoEnums.MODALITY_FACE) {
+ numEnrolled = faceManager.getEnrolledFaces(userId).size();
+ } else {
+ return StatsManager.PULL_SKIP;
+ }
+ StatsEvent e = StatsEvent.newBuilder()
+ .setAtomId(atomTag)
+ .writeInt(userId)
+ .writeInt(numEnrolled)
+ .build();
+ pulledData.add(e);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ return StatsManager.PULL_SUCCESS;
}
private void registerProcStats() {