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
Loading
Please register or sign in to comment