am 877c2257: Merge "instrument fingerprint service" into mnc-dr-dev
* commit '877c22579e18736ee77d106ee2419ae99203bc9b': instrument fingerprint service
This commit is contained in:
@@ -29,6 +29,21 @@ public class MetricsLogger implements MetricsConstants {
|
|||||||
// Temporary constants go here, to await migration to MetricsConstants.
|
// Temporary constants go here, to await migration to MetricsConstants.
|
||||||
// next value is 239;
|
// next value is 239;
|
||||||
public static final int ACTION_ASSIST_LONG_PRESS = 239;
|
public static final int ACTION_ASSIST_LONG_PRESS = 239;
|
||||||
|
public static final int FINGERPRINT_ENROLLING = 240;
|
||||||
|
public static final int FINGERPRINT_FIND_SENSOR = 241;
|
||||||
|
public static final int FINGERPRINT_ENROLL_FINISH = 242;
|
||||||
|
public static final int FINGERPRINT_ENROLL_INTRO = 243;
|
||||||
|
public static final int FINGERPRINT_ENROLL_ONBOARD = 244;
|
||||||
|
public static final int FINGERPRINT_ENROLL_SIDECAR = 245;
|
||||||
|
public static final int FINGERPRINT_ENROLLING_SETUP = 246;
|
||||||
|
public static final int FINGERPRINT_FIND_SENSOR_SETUP = 247;
|
||||||
|
public static final int FINGERPRINT_ENROLL_FINISH_SETUP = 248;
|
||||||
|
public static final int FINGERPRINT_ENROLL_INTRO_SETUP = 249;
|
||||||
|
public static final int FINGERPRINT_ENROLL_ONBOARD_SETUP = 250;
|
||||||
|
public static final int ACTION_FINGERPRINT_ENROLL = 251;
|
||||||
|
public static final int ACTION_FINGERPRINT_AUTH = 252;
|
||||||
|
public static final int ACTION_FINGERPRINT_DELETE = 253;
|
||||||
|
public static final int ACTION_FINGERPRINT_RENAME = 254;
|
||||||
|
|
||||||
public static void visible(Context context, int category) throws IllegalArgumentException {
|
public static void visible(Context context, int category) throws IllegalArgumentException {
|
||||||
if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) {
|
if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) {
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
|
|
||||||
package com.android.server.fingerprint;
|
package com.android.server.fingerprint;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityManagerNative;
|
import android.app.ActivityManagerNative;
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
import android.app.IUserSwitchObserver;
|
import android.app.IUserSwitchObserver;
|
||||||
import android.content.ContentResolver;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
@@ -29,8 +29,6 @@ import android.os.Environment;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.IRemoteCallback;
|
import android.os.IRemoteCallback;
|
||||||
import android.os.Looper;
|
|
||||||
import android.os.MessageQueue;
|
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.SELinux;
|
import android.os.SELinux;
|
||||||
@@ -40,20 +38,27 @@ import android.os.UserHandle;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
|
|
||||||
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.server.SystemService;
|
import com.android.server.SystemService;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import android.hardware.fingerprint.Fingerprint;
|
import android.hardware.fingerprint.Fingerprint;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
import android.hardware.fingerprint.IFingerprintService;
|
import android.hardware.fingerprint.IFingerprintService;
|
||||||
import android.hardware.fingerprint.IFingerprintDaemon;
|
import android.hardware.fingerprint.IFingerprintDaemon;
|
||||||
import android.hardware.fingerprint.IFingerprintDaemonCallback;
|
import android.hardware.fingerprint.IFingerprintDaemonCallback;
|
||||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||||
|
import android.view.Display;
|
||||||
|
|
||||||
import static android.Manifest.permission.MANAGE_FINGERPRINT;
|
import static android.Manifest.permission.MANAGE_FINGERPRINT;
|
||||||
import static android.Manifest.permission.USE_FINGERPRINT;
|
import static android.Manifest.permission.USE_FINGERPRINT;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.io.FileDescriptor;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -557,6 +562,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
|
|||||||
private boolean sendEnrollResult(int fpId, int groupId, int remaining) {
|
private boolean sendEnrollResult(int fpId, int groupId, int remaining) {
|
||||||
if (receiver == null) return true; // client not listening
|
if (receiver == null) return true; // client not listening
|
||||||
FingerprintUtils.vibrateFingerprintSuccess(getContext());
|
FingerprintUtils.vibrateFingerprintSuccess(getContext());
|
||||||
|
MetricsLogger.action(mContext, MetricsLogger.ACTION_FINGERPRINT_ENROLL);
|
||||||
try {
|
try {
|
||||||
receiver.onEnrollResult(mHalDeviceId, fpId, groupId, remaining);
|
receiver.onEnrollResult(mHalDeviceId, fpId, groupId, remaining);
|
||||||
return remaining == 0;
|
return remaining == 0;
|
||||||
@@ -574,6 +580,8 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
|
|||||||
boolean authenticated = fpId != 0;
|
boolean authenticated = fpId != 0;
|
||||||
if (receiver != null) {
|
if (receiver != null) {
|
||||||
try {
|
try {
|
||||||
|
MetricsLogger.action(mContext, MetricsLogger.ACTION_FINGERPRINT_AUTH,
|
||||||
|
authenticated);
|
||||||
if (!authenticated) {
|
if (!authenticated) {
|
||||||
receiver.onAuthenticationFailed(mHalDeviceId);
|
receiver.onAuthenticationFailed(mHalDeviceId);
|
||||||
} else {
|
} else {
|
||||||
@@ -669,7 +677,6 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
|
|||||||
public void onEnumerate(long deviceId, int[] fingerIds, int[] groupIds) {
|
public void onEnumerate(long deviceId, int[] fingerIds, int[] groupIds) {
|
||||||
dispatchEnumerate(deviceId, fingerIds, groupIds);
|
dispatchEnumerate(deviceId, fingerIds, groupIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private final class FingerprintServiceWrapper extends IFingerprintService.Stub {
|
private final class FingerprintServiceWrapper extends IFingerprintService.Stub {
|
||||||
@@ -853,6 +860,46 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
|
|||||||
|
|
||||||
return FingerprintService.this.getAuthenticatorId();
|
return FingerprintService.this.getAuthenticatorId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override // Binder call
|
||||||
|
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||||
|
if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
|
||||||
|
!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
pw.println("Permission Denial: can't dump Fingerprint from from pid="
|
||||||
|
+ Binder.getCallingPid()
|
||||||
|
+ ", uid=" + Binder.getCallingUid());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final long ident = Binder.clearCallingIdentity();
|
||||||
|
try {
|
||||||
|
dumpInternal(pw);
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(ident);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dumpInternal(PrintWriter pw) {
|
||||||
|
JSONObject dump = new JSONObject();
|
||||||
|
try {
|
||||||
|
dump.put("service", "Fingerprint Manager");
|
||||||
|
|
||||||
|
JSONArray sets = new JSONArray();
|
||||||
|
for (UserInfo user : UserManager.get(getContext()).getUsers()) {
|
||||||
|
final int userId = user.getUserHandle().getIdentifier();
|
||||||
|
final int N = mFingerprintUtils.getFingerprintsForUser(mContext, userId).size();
|
||||||
|
JSONObject set = new JSONObject();
|
||||||
|
set.put("id", userId);
|
||||||
|
set.put("count", N);
|
||||||
|
sets.put(set);
|
||||||
|
}
|
||||||
|
|
||||||
|
dump.put("prints", sets);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
Slog.e(TAG, "dump formatting failure", e);
|
||||||
|
}
|
||||||
|
pw.println(dump);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user