Commit Graph

51 Commits

Author SHA1 Message Date
Kevin Chyn
715e337af8 Add debugReason to BiometricUtils#tryStartingNextBiometricEnroll
Bug: 196060286
Test: adb shell am start -a android.settings.BIOMETRIC_ENROLL
Change-Id: Ib157dd916b1cfd2238cf6844a970d70cbf56faa6
2021-08-11 16:35:35 -07:00
Curtis Belmonte
b61478c30c Ensure fingerprint setup is shown once after face
Adds an activity result extra during multi-biometric enroll that
ensures fingerprint setup will not be repeated multiple times if
explicitly finished or skipped by the user. Also updates various
activities in the stack to ensure that they handle all possible result
codes correctly and pass along result data.

Test: Manually skip and complete at each stage of multi-biometric enroll
Test: Manually test single-biometric enroll flows for SUW and Settings

Fixes: 193601823
Change-Id: Ic5a8306068eb4c32009f146ad6fff824fde25a11
2021-07-15 17:00:43 -07:00
Curtis Belmonte
68c12f2e04 Add "eyes open" setting message to face enroll intro
Adds an additional message about the "Require eyes to be open" setting
for Face Unlock to the intro/consent screen of enrollment, gated by a
config flag.

Test: Manual

Bug: 192272785
Change-Id: Idcd2395a290b74f4578898fdfebd05b81cd74075
2021-07-12 17:05:45 -07:00
Joe Bolinger
4af5a3644d Update strings for parental consent flow in setup wizard.
Bug: 188847063
Test: manual
Change-Id: I044be874818f6563a47c3f7c8c5011b3cab31ae9
2021-06-17 14:53:56 -07:00
Joe Bolinger
a8808f7368 Add plumbing and placeholder screens for parental consent flow.
Bug: 188847063
Test: adb shell am start -a android.settings.BIOMETRIC_ENROLL --ez require_consent true
Test: atest com.android.settings.biometrics.ParentalConsentHelperTest
Change-Id: Ie136036d5f550775fd0b021979581a5d222f1b68
2021-06-16 09:58:19 -07:00
Curtis Belmonte
e301d59536 Fix face/fingerprint consent primary footer button logic
Currently, the primary footer button on the face and fingerprint enroll
consent pages reads "I agree" even before the user has scrolled to the
bottom of the screen. This commit fixes the issue so that "More" is
displayed until the user scrolls to the bottom. The remaining logic is
left intact.

Test: Manual:
1. Start face or fingerprint enrollment
2. Confirm primary button shows "More" and secondary button is hidden
3. Press the "More" button or scroll to the bottom of the screen
4. Ensure primary button shows "I agree" and secondary shows "No thanks"

Fixes: 189268868
Change-Id: I02fa47d1de83bd5b5d82c733495ae579cbd2d6c6
2021-06-10 16:38:11 -07:00
Joshua Mccloskey
e80c5cddd2 BiometricEnrollIntroduction button update
No longer show the "No thanks" button until the user has
scrolled to the bottom of the introduction text.

This applies for both face and fingerprint enroll introduction screens.

Fixes: 189268868
Test: Manual
Change-Id: I0ccf6ae1d329df06f769f05288706ef22183bc21
2021-06-08 22:25:16 -07:00
Curtis Belmonte
937ff332f3 Update face/fingerprint consent screen UIs
Makes the following UI changes to the consent screens for face and
fingerprint enrollment:
- Sets description text in XML rather than in Java
- Highlight both primary and secondary buttons
- Use extracted highlight color for all icons

Test: Manually tested SUW flow

Bug: 188922185
Bug: 187458628
Bug: 183710943
Change-Id: I39d9b990dcbb82f443515a2175766dc51ca1180c
2021-05-24 13:17:09 -07:00
Curtis Belmonte
cef573f2d0 Consolidate face enroll intro/consent screens
Updates the UI of the face enroll intro screen based on the latest
mocks, while still allowing strings to be overlaid depending on the
device and/or face auth implementation.

Test: Manually tested face enrollment

Bug: 187207438
Change-Id: I5d912261b1eecfc7a241d6b48d549c4ff253ecdf
2021-05-12 17:26:17 -07:00
Joe Bolinger
971f0f3c5a Add userId parameter to all uses of challenge in settings.
Bug: 184915229

Test: manually on device (as normal, extra user, & work profile)
Change-Id: Id509b5866d53525b38a5bb95bbbcc723d6651745
2021-05-10 18:26:57 -07:00
Joe Bolinger
43d978bd7b Fix back navigation in biometric enrollment.
Using the back buttons can cause a crash in at least two cases. Skipping
face enrollment and then starting/stopping any enrollment can lead to
an invalid token and failed HAT request. Backing out of the activity and
restarting it can also lead to using a stale token that fails.

Fix: 179336333
Test: manual on device
Change-Id: I0c1133e4c3d9c97997043ddc9374aa3cfc4f1c97
2021-05-04 14:43:17 -07:00
Kevin Chyn
e91e39b604 Update revokeChallenge together with frameworks/base
Bug: 181977689
Test: Inspect logs
Change-Id: I588ec46896d57d89489f78505a6f2c932462b2d2
2021-03-09 16:25:28 -08:00
Kevin Chyn
587bd62dff Update settings together with frameworks/base
Bug: 169459906
Test: Builds

Exempt-From-Owner-Approval: Name change

Change-Id: I453d743fe29c33776a784942863dcba19c67c26a
2020-09-29 18:19:16 -07:00
Kevin Chyn
87bb772e16 2/n: Add default implementation for multi-biometric enroll
1) Adds a layout for multi-biometric selection in BiometricEnrollActivity
2) Adds widgets for checkboxes
3) Shows ConfirmLock*/ChooseLock* for multi-biometric devices in
   BiometricEnrollActivity
4) finish()'s when loses foreground
5) Adds default string for ChooseLock* and multi-biometrics, e.g.
   "Set up Password + Biometrics", as well as associated plumbing
   to bring the user back to BiometricEnrollActivity once the
   credential is enrolled
6) When max templates enrolled, checkbox becomes disabled and
   description string is updated

Bug: 162341940
Bug: 152242790
Fixes: 161742393

No effect on existing devices with the following:
Test: adb shell am start -a android.settings.BIOMETRIC_ENROLL
Test: SUW
Test: make -j RunSettingsRoboTests

Exempt-From-Owner-Approval: Biometric-related change
to EncryptionInterstitial

Change-Id: I855460d50228ace24d4ec5fbe330f02ab406cc02
2020-09-16 23:30:11 -07:00
Kevin Chyn
202494365c Update settings together with frameworks/base
LockSettingsService returns a handle to the gatekeeper password
instead of the password itself now. As such, update areas of code
accordingly.

Bug: 161765592

Test: RunSettingsRoboTests

Run the following on face/fingerprint devices
Test: Remove credential
      adb shell am start -a android.app.action.SET_NEW_PASSWORD
      Set up credential + fingerprint
Test: Remove credential,
      adb shell am start -a android.settings.FINGERPRINT_SETTINGS
      This tests the ChooseLock* logic in FingerprintSettings
Test: Set up credential,
      adb shell am start -a android.settings.FINGERPRINT_SETTINGS
      This tests the ConfirmLock* logic in FingerprintSettings
Test: Remove device credential, enroll fingerprint/face. Succeeds.
      This tests the ChooseLock* returning SP path from
      BiometricEnrollIntro
Test: With credential and fingerprint/face enrolled, go to
      fingerprint/face settings and enroll. This tests the
      ConfirmLock* path in Fingerprint/FaceSettings
Test: Remove device credential, enroll credential-only, enroll
      fingerprint/face separately. Succeeds. This tests the
      ConfirmLock* returning SP path in BiometricEnrollIntro
Test: In SUW, set up credential, then biometric. This tests
      the ChooseLock* path in SUW
Test: In SUW, set up credential, go back, then set up biometric.
      This tests the ConfirmLock* path in SUW

Change-Id: Ibc71ec88f8192620d041bfd125f400371708b296
2020-08-16 12:38:27 -07:00
Kevin Chyn
9ce9d3d539 Update biometric onChallengeGenerated with frameworks/base
Bug: 145978626
Test: Builds

Change-Id: If02497fa6462f1ff263aeb96cf0beed014fee328
2020-08-16 11:48:13 -07:00
Kevin Chyn
bee84e2daa Remove remainder of generateChallengeBlocking
Test: make -j56 RunSettingsRoboTests

Face Tests:
Test: Open face settings, remove face, add face
Test: Open face settings, but cancel credential confirmation.
      Face settings does not show up
Test: adb shell am start -a android.app.action.SET_NEW_PASSWORD
      Able to enroll face

Fingerprint Tests:
Test: Open fingerprint settings, add button is shown
Test: Open fingerprint settings, but cancel credential confirmation.
      Fingerprint settings does not show up
Test: adb shell am start -a android.app.action.SET_NEW_PASSWORD
      Able to enroll fingerprint

Bug: 162533680
Change-Id: Ie448ed086e73b0b545bd3a2e62437c543f7aad6c
2020-08-07 12:49:37 -07:00
Kevin Chyn
66bfe45f99 BiometricEnrollIntro should use non-blocking generateChallenge
GenerateChallenge used to block when showing the credential screen.
Now that GenerateChallenge is moved to after the credential screen
is shown, we need to delay the next button instead. This is generally
non percievable to the user, but this is more robust against busy
system server.

Fixes: 161325267
Test: Enroll fingerprint/face device
Change-Id: I0fbbef8bf469e32bed251acf22556ad2ea8e2933
2020-08-07 12:49:37 -07:00
Kevin Chyn
7b0867c6d3 4/n: Remove challenge from choose/confirm, use new path
Biometric enrollment will not request a Gatekeeper HAT during
initial credential setup or credential confirmation anymore.
Instead, it is broken down into the following steps now.

Bug: 161765592

1) Request credential setup / confirmation to return a
   Gatekeeper Password
2) Biometric enrollment will generate a challenge
3) Biometric enrollment will request LockSettingsService to
   verify(GatekeeperPassword, challenge), and upon verification,
   the Gatekeeper HAT will be returned.

Since both LockSettingsService and Biometric enroll/settings
make use of biometric challenges, this allows us to make the
challenge ownership/lifecycle clear (vs. previously, where
LockSettingsService has no idea who the challenge belongs to).

Exempt-From-Owner-Approval:For files not owned by our team,
(StorageWizard), this change is just a method rename

Test: RunSettingsRoboTests

Run the following on face/fingerprint devices
Test: Remove credential
      adb shell am start -a android.app.action.SET_NEW_PASSWORD
      Set up credential + fingerprint
Test: Remove credential,
      adb shell am start -a android.settings.FINGERPRINT_SETTINGS
      This tests the ChooseLock* logic in FingerprintSettings
Test: Set up credential,
      adb shell am start -a android.settings.FINGERPRINT_SETTINGS
      This tests the ConfirmLock* logic in FingerprintSettings
Test: Remove device credential, enroll fingerprint/face. Succeeds.
      This tests the ChooseLock* returning SP path from
      BiometricEnrollIntro
Test: With credential and fingerprint/face enrolled, go to
      fingerprint/face settings and enroll. This tests the
      ConfirmLock* path in Fingerprint/FaceSettings
Test: Remove device credential, enroll credential-only, enroll
      fingerprint/face separately. Succeeds. This tests the
      ConfirmLock* returning SP path in BiometricEnrollIntro
Test: In SUW, set up credential, then biometric. This tests
      the ChooseLock* path in SUW
Test: In SUW, set up credential, go back, then set up biometric.
      This tests the ConfirmLock* path in SUW

Change-Id: Idf6fcb43f7497323d089eb9c37125294e7a7f5dc
2020-08-07 12:49:15 -07:00
Kevin Chyn
cbe32ed1cf Update Settings together with generateChallenge/revokeChallenge
The internal implementation of generate/revoke in system_server is now
asynchronous. To keep existing clients working, the manager classes
introduce a blocking version of the generateChallenge calls. This change
updates Settings to use the backward-compatible blocking calls.

Bug: 157790417

Test: Enroll fingerprint/face
Test: After enrollment, toggle setFeature or do subsequent enrollment
      in face/fingerprint settings
Change-Id: Ib4dfdc5f12530b938ab9b1745f5a19cd9e2eceee
2020-06-25 17:12:46 -07:00
Curtis Belmonte
4ac1d25c2a Finish biometric enroll screens when backgrounded
Currently, there are some biometric security setting and enrollment
screens which remain open after the user has backgrounded them. This
means that they can later be resumed without requiring the user to
confirm their device credential as normal.

This commit fixes the issue in AOSP by adding logic to the affected
biometric enrollment/setting activities in to finish() with
RESULT_TIMEOUT in onStop(). We don't want to finish() these activities
prematurely if the user is currently in a wizard setup flow, however. In
that case, this commit ensures that the newly added logic will not run.

Test: Pixel 3 - Background at each step of fingerprint enroll => finish
Test: Pixel 3 - Rotate at each step of fingerprint enroll => no finish
Test: Pixel 3 - Proceed though fingerprint setup wizard => no change

Bug: 142544519
Change-Id: I8ec0fa1e30bafe097d9dc82991ff786ebf24844b
2020-01-02 11:06:29 -08:00
Kevin Chyn
15f241b296 Add feature provider for face unlock
Bug: 146085546

Test: Builds
Change-Id: If5c7d57c12a3f679d81cee22fb94a53fce1de29a
2019-12-16 18:19:20 -08:00
joshmccloskey
4259495574 Added new string.
Fixes: 141762646
Test: Verified that string translates to spanish after changing
the language.

Change-Id: I48e34de15460c93c8f50d26821c4d64984f20c6d
2019-09-27 23:15:32 +00:00
joshmccloskey
186dbc65af Changed string for translations.
Fixes: 141762646
Test: Verified that string translates to spanish after changing
the language.

Change-Id: Ieebb2ec15cf5cff2afcfefcb130193bdce6086fe
2019-09-27 21:56:46 +00:00
joshmccloskey
af1e831ab7 Added mandatory scrolling for FaceIntroduction
Test: Verified in SUW/Settings user must scroll through contents in
order to go to the next screen.
Bug: 141380294

Change-Id: I483ab6ae6a282c81ba2f2c4d1d9d1f21c6cb9453
2019-09-25 00:23:59 +00:00
joshmccloskey
d98257bae6 Change cancel button type to skip for SUW
Test: Verified in SUW that enrollment will skip after
tapping the cancel button in the Introduction.
Fixes: 140702414

Change-Id: I9d9da0ff6d10b6ee6929cb52ff4a03a684f43d17
2019-09-09 16:46:03 -07:00
joshmccloskey
a55cbf036f Modified text to cancel enrollment
Fixes: 140446388
Test: Manual.
Change-Id: If3f0affb390743cd7973957b5dea69d5e012dcb1
2019-09-05 12:23:44 -07:00
Kevin Chyn
e9d50cd91b Call finish() when enrollment loses focus
Bug: 134971919

Test: Entering keyguard on any enrollment screen finishes enrollment now
Test: Going back/forward works

Change-Id: I2c80a5586c10fa3feb780a5eadfe203abed52dea
2019-06-12 11:05:47 -07:00
joshmccloskey
0458262fb3 Added Face Enroll Education Screen
Test: Builds
Bug: 131774352
Fixes: 131857742

Change-Id: Ib384b9efaf053b405ce3f55e449dd6abb9e75296
2019-05-08 19:15:50 +00:00
joshmccloskey
ac653b9838 Updated Face Enroll Introduction
Test: Builds.
Bug: 131774204
Change-Id: Ibccd54185b9d8ffbfd2678be1c8680ffb1699425
2019-05-07 15:28:14 -07:00
Kevin Chyn
5c2842c1c8 Update toggle layout and always show footer text
Fixes: 130740123

Test: Builds

Change-Id: I5f64e22ca8123c6f2825d4341d94581a301551f7
2019-04-22 18:54:01 -07:00
Kevin Chyn
f25830b9cc Update enrollment intro
1) Toggles resources between normal and accessibility enrollment
2) Add footer for more detail text

Fixes: 127514618
Bug: 111548033

Test: Builds

Change-Id: Ib0c47f04abc5ce9abbd8b27ef5782d1874379f16
2019-03-19 19:19:23 -07:00
Kevin Chyn
11679da53d Update toggle logic
Bug: 111548033

Test: Builds
Change-Id: I591297940b48cffe61ca0279ff835ccacd2a625f
2019-03-14 18:25:40 -07:00
Maurice Lam
c14a5863ca Make Face enroll left button "Skip" during SUW
Test: Manual
Bug: 120797018
Change-Id: I5539fc3e3fa9f5ffc7413f8bd44504ee1e5c4c86
2019-03-08 15:24:54 -08:00
pastychang
046a97edde Rewire BiometricEnrollActivity to setup pages
When running in setup flow:
- If fingerprint enrollment is desired, go to
  SetupFingerprintEnrollIntroduction
- Makes sure WizardManagerHelper.copyWizardManagerExtras is called
  to propagate the extras from the incoming intent, propagating
  extras like whether we are in initial / deferred setup flow, theme,
  etc.
- Forward the result code in BiometricEnrollActivity using
  FLAG_ACTIVITY_FORWARD_RESULT

Bug: 120797018
Test: Manual
Change-Id: Ibc0ecc035141d62339f5f664346ed108570e0905
2019-03-07 16:48:35 -08:00
Pasty Chang
0c6e676708 Merge "Rename ButtonFooterMixin to FooterBarMixin" 2019-01-25 03:58:56 +00:00
Kevin Chyn
8565334148 Merge "Streamline accessibility flow" 2019-01-24 09:04:25 +00:00
pastychang
9bdb59a764 Rename ButtonFooterMixin to FooterBarMixin
1. Change to FooterBarMixin
2. Move FooterButton to the same package with FooterBarMixin

Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: Ic6937e3cbc515dd7bf877c9193932cd5800ac801
2019-01-24 16:18:28 +08:00
Kevin Chyn
05668ce78c Streamline accessibility flow
Bug: 111548033

Test: Builds
Change-Id: I5df5ca230732c8ab4ff105b93ee16865b3f4d999
2019-01-22 10:59:51 -08:00
Fan Zhang
31b210017b Migrate all MetricsProto enums to SettingsEnums
Bug: 122855168
Test: rebuild
Change-Id: I962d9a71179f86b7cae9dc5e9a00e0aa1557dc76
2019-01-17 14:55:42 -08:00
pastychang
79614823cb Rename prefix from suw to sud
Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: I44a399b586671c100cb9d85c97effbfb1a379413
2019-01-04 10:46:20 +08:00
pastychang
908501e40f Apply FooterButton builder
FotterButton constructor in setupcompat will be deprecated, change to
use builder.

Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: Ic84b0c91205bf3c770bc658e8eaf2626e4d7bddd
2018-12-26 14:56:44 +08:00
Kevin Chyn
28ac88a736 Add mechanism for vendor-specific enrollment
Bug: 111548033
Test: Builds
Change-Id: I1b87d40a584ea21c3de50651f880ce94ed7d40d7
2018-12-21 12:42:57 -08:00
pastychang
1b1666855e Migrating to new footer button for fingerprint and face enrolling pages.
Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: I89a5e3674b8ba9ec66945c03c9b783664eee214f
2018-12-19 23:24:48 +08:00
Kevin Chyn
2c8d7757f6 Add accessibility for Face
Bug: 111548033

Test: manual
Change-Id: I6638d471f5c6de76934b90d131a221813a38d2b3
2018-12-18 19:16:16 -08:00
Kevin Chyn
69e8a089d7 Show Choose/ConfirmLock before showing BiometricEnrollIntroduction
Skip button is now shown when ChooseLock is launched by
BiometricEnroll, otherwise users are forced to use passwords
(maybe good thing?)

Bug: 111548033

Test: Pin/pattern/pass must be set/confirmed before enrollment
Test: Able to enroll FP in SUW and Settings

Change-Id: Ic4bbeb539e4bf01c1c402dec308943292b43406d
2018-12-18 13:59:45 -08:00
Pasty Chang
c1f8600d9f Change to use setupcompat and setupdesign for suw pages
1. remove the dependence of setupwizardlib.
2. add to use setupcompat and setupdesign.
3. modify new footer button in following up cl.

Bug: 120805516
Bug: 120872944
Test: RunSettingsRoboTests
Change-Id: I463dd35b799d4250b2aabce0cb0b8102cf9dd7d6
2018-12-12 03:16:29 +00:00
Kevin Chyn
a8843f2959 Update FaceSettings to match mocks
Settings page should not show if device credential is not confirmed

Bug: 111548037
Fixes: 116531896

Test: adb shell settings get secure face_unlock_app_enabled
Test: make -j56 RunSettingsRoboTests

Change-Id: I651ee88e9ee4017ee3dc52fa8a5d05cb8f092e1d
2018-09-26 11:50:02 -07:00
Philip P. Moltmann
e3f721132a RestrictedLockUtils was split into ...Internal
This means that in some cases RestrictedLockUtils has to be used and in
some RestrictedLockUtilsInternal.

This causes a lot of trivial code changes.

I also updated the ordering of the imports in all affected files.

Bug: 110953302
Test: Built
      make -j RunSettingsRoboTests
Change-Id: I9bdf8b89134f853bae4f38c81af436715c73e924
2018-08-30 08:11:39 -07:00
Kevin Chyn
ea65b51a36 4/n: Add basic enrollment for Face
Bug: 110589286

Test: fingerprint enrolling still works
Test: enrollment flow with and without a pin set up still works properly
Test: enrollment continues when configuration changes, stops otherwise

Change-Id: I39f76c7f1a16e9533cef573f87cf4b81cb20cb18
2018-07-10 18:39:19 -07:00