OSDN Git Service

Properly remove fingerprints when removing device lock.
authorCharles He <qiurui@google.com>
Thu, 11 May 2017 18:51:46 +0000 (19:51 +0100)
committerCharles He <qiurui@google.com>
Tue, 16 May 2017 22:40:38 +0000 (23:40 +0100)
commit7569bb18815437a2f656fc7ff4d57274c5055477
tree4006a0a8d5bc52f9bd6e70c5d9edd9eec2c99b26
parent49b86b5c6afb7e9f6347b78e3dd4b91fe5879fa4
Properly remove fingerprints when removing device lock.

When strong auth (PIN, password, or pattern) is removed from a user,
fingerprints enrolled for that user should also be removed. Then, if the
user has a work profile guarded by a unified work challenge, the work
profile's fingerprints should also be removed.

Previously, when removing the fingerprints of the current user,
ChooseLockGeneric checked the finger id of the onRemovalSucceeded() and
onRemovalError() callbacks, and assumed the removal had completed when
the id was 0. Only after this would it initiate the removal of work
profile fingerprints, if any.

However, the finger id is actually non-zero even for the user's last
fingerprint. This means the work profile fingerprints (under unified
challenge) were never removed. Another more visible symptom was that
when the user removed the device lock by choosing "None" or "Swipe" in
ChooseLockGeneric, the activity failed to exit, since finish() is called
only at the end of the removal flow which was not executed.

In this CL, we check the number of remaining fingerprints instead of
relying on the finger id, thus allowing the removal flow to complete and
the activity to finish().

Bug: 37938345
Test: manual, both with and without work profile
Test: make SettingsRoboTests
Change-Id: Ic04fd01177ad6d4a061023a4b6889af585f8f2b7
src/com/android/settings/ChooseLockGeneric.java
src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java