OSDN Git Service

Fix bug where fingerprint events can be delivered to the wrong client
authorJim Miller <jaggies@google.com>
Thu, 14 Apr 2016 03:28:18 +0000 (20:28 -0700)
committerJim Miller <jaggies@google.com>
Fri, 15 Apr 2016 00:53:45 +0000 (17:53 -0700)
commitcb2ce6f1f0deef80943ece093ae40bacc1f57c44
tree70303f69f9e24e110d5c8ee06e2082e700a7080c
parent4f9b759d8f801a590c38b50dd0bc530ee169957f
Fix bug where fingerprint events can be delivered to the wrong client

- Make FingerprintService more closely track the expected state of fingerprintd.
- Don't switch to a new operation until fingerprintd completes previous operation.
- Refactor clients into separate classes and add tracking logic.
- Add missing enumerate()/cancelEnumeration() methods to IFingerprintDaemon
- Make late-binding decision of "foregroundness" of activity so that it's
decided in the order the events are actually handled.
- Add more logging so we can determine FingerprintService state when errors occur.
- Cache a copy of authenticator_id from the last time it was set so we don't
interrupt the driver during actual authentication.
- Don't allow clients to access authenticator_id unless they're current.

Fixes: 2790247826273819
Change-Id: Ic1f9e30bd89bcdbb8fe7f69e0545e68339317721
core/java/android/hardware/fingerprint/FingerprintManager.java
core/java/android/hardware/fingerprint/IFingerprintDaemon.aidl
core/java/android/hardware/fingerprint/IFingerprintService.aidl
services/core/java/com/android/server/fingerprint/AuthenticationClient.java [new file with mode: 0644]
services/core/java/com/android/server/fingerprint/ClientMonitor.java [new file with mode: 0644]
services/core/java/com/android/server/fingerprint/EnrollClient.java [new file with mode: 0644]
services/core/java/com/android/server/fingerprint/EnumerateClient.java [new file with mode: 0644]
services/core/java/com/android/server/fingerprint/FingerprintService.java
services/core/java/com/android/server/fingerprint/RemovalClient.java [new file with mode: 0644]