Commit Graph

277 Commits

Author SHA1 Message Date
Edgar Wang
0c914077aa Merge "Change packagename of TwoTargetPreference" into sc-dev 2021-03-17 05:08:21 +00:00
TreeHugger Robot
53d7495162 Merge "Use title area for enrollment error messages" into sc-dev 2021-03-11 06:16:42 +00:00
Kevin Chyn
13b05b6fb8 Merge changes from topics "fp-revokeChallenge", "new-revokeChallenge" into sc-dev
* changes:
  Update fingerprint revokeChallenge with frameworks/base
  Update revokeChallenge together with frameworks/base
2021-03-11 01:14:15 +00:00
Mill Chen
a01f882e61 Use title area for enrollment error messages
This CL is trying to put the enrollment error messages into the title
area for UDFPS, and left the red text for the older devices with a rear
fingerprint.

Fixes: 178432748
Test: visual verified
Change-Id: Ib3a81531219dc963723ad0de99f079a230c580f5
2021-03-10 19:46:13 +08:00
Kevin Chyn
39b2fe8bd5 Update fingerprint revokeChallenge with frameworks/base
Bug: 181977689
Test: manual
Change-Id: I92e6dae58d67f1355c6d0ba3bbf95ff2ad5247ed
2021-03-09 18:12:54 -08: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
TreeHugger Robot
6ef1bc7336 Merge "Update fingerprint layouts for landscape" into sc-dev 2021-03-09 07:26:20 +00:00
Kevin Chyn
5dca77291b Merge "Do not re-start fingerprint auth if ERROR_USER_CANCELED" into sc-dev 2021-03-09 02:26:15 +00:00
Mill Chen
7cd08b6aa2 Update fingerprint layouts for landscape
- Refine the portrait layout to be reused for landscape
- Add strings for UDFPS enrollment
- Remove the landcaspe layout since it is no longer used.

Fixes: 171294253
Test: visual verified
Change-Id: Ibbfa5515437e2c2a348db9b621b4e60ba922a383
2021-03-09 06:14:27 +08:00
TreeHugger Robot
0b29ebd420 Merge "Update FingerprintEnrollFindSensor for landscape" into sc-dev 2021-03-08 08:46:12 +00:00
Mill Chen
f97df931df Update FingerprintEnrollFindSensor for landscape
SUW library can support landscape mode. It reuse the portrait layout to
render the screen for landscape. So we don't need to have a layout for
it. This change is to move the description to a subtitle and remove the
unused layout.

Bug: 179234361
Bug: 171294253
Bug: 179317709
Test: visual verified
Change-Id: Icfb3be799c1b4e190691731638aaa3467cadf624
2021-03-08 15:27:03 +08:00
Mill Chen
873d5ef6f5 Fix NPE crash during setup flow
The sud_layout_description text view has been removed and being replaced
with a subtitle of GlifLayout. This is why Settings crash during setup
flow. Removing the text view and putting the string in the right place
can fix this issue.

Fixes: 182095350
Test: robotest
Change-Id: I05ea6fe5a404a20a46cf17ab212e6f736a119fe4
2021-03-08 14:02:33 +08:00
Kevin Chyn
aa35b8fcab Do not re-start fingerprint auth if ERROR_USER_CANCELED
Fixes: 178403701
Test: Enter fingerprint settings, swipe up
Change-Id: I0762405f01d5dfd710ad8b4c4b0e8d4a2bd13b2e
2021-03-05 18:45:09 -08:00
Mill Chen
c2be31a7d3 Update new consent screen for fingerprint
- Move top description into subtitle for landscape mode
- Update the button text

Bug: 177591560
Test: robotest and visual verified
1) Settings -> Security -> Fingerprint
2) Rotate the device and check if the description is on the right side

Change-Id: Ie20597fce48f73aa83c5d637682db1860c384a7a
2021-03-05 15:53:01 +08:00
TreeHugger Robot
d9fe64bec6 Merge "Remove enroll animation from touch sensor page" into sc-dev 2021-02-22 06:25:04 +00:00
Mill Chen
5fea7c9a46 Remove enroll animation from touch sensor page
During the setup flow, the enrolling animation will be shown in the
touch sensor page. This was caused by using the old layout during the
setup flow. Removing the overrided method getContentView to fix this
issue.

Fixes: 179447737
Test: visual verified
1) adb shell am start -n
com.google.android.setupwizard/.SetupWizardTestActivity
2) Follow the setup flow and check if the touch sensor page has an
animation

Change-Id: I249535d6c0e8a5f12d86aeeac5308489e469bf71
2021-02-20 17:30:59 +08:00
Mill Chen
2ad549e13a Update FingerprintEnrollEnrolling for UDFPS
The BC theme didn't work in the fingerprint enrollment page since this
page was using a customized layout and wasn't following the SUD
template. Also the fingerprint sensor icon has been moved to SysUI so
it's unnecessary to have the customized layout.

This CL is trying to merge two layouts together and make BC theme apply
to the fingerprint enrollment page.

Bug: 177026664
Test: visual verified
Change-Id: Ia22ea14244cd4b508a1fa6341aa15bd741c195f4
2021-02-20 16:58:32 +08:00
Edgar Wang
9691da0d21 Change packagename of TwoTargetPreference
Bug: 180156703
Test: robotest
Change-Id: Ida344e689971aa780054093b2472582d61c476d1
2021-02-13 12:17:14 +08:00
Kevin Chyn
c01232b16b Update fingerprint enroll together with frameworks/base
Bug: 179447737
Test: Builds
Change-Id: Ifccb96dbf51e610fb9cd1b238a6ef62350fb1169
2021-02-06 16:57:48 -08:00
Kevin Chyn
2eca234af7 Remove UDFPS ProgressBar from Settings
Moving it to SystemUI, which handles rotation and position calculation
much easier.

Bug: 177965281
Test: manual
Change-Id: I9b7aadce95aae26330192074295d91283e49a24d
2021-02-05 18:37:35 -08:00
Mill Chen
057ce4055e Update FingerprintEnrollFindSensor for UDFPS
Since the education page of UDFPS is different from the one for rear
fingerprint, it's necessary to create a new education page for UDFPS and
update the decription.

Bug: 177026524
Test: visual verified
Change-Id: I70eb80484cccfbb583c32dbaadbc6c2744b5db60
2021-01-20 00:01:35 +08:00
Kevin Chyn
95ca345b23 Update FingerprintEnrollEnrolling for UDFPS
SysUI is now responsible for showing the fingerprint icon and
circle (when finger is not down). This changes makes slight tweak
so the progress indicator is not covered by SysUI.

Fixes a few corner cases when onConfigurationChange occurs

Bug: 177026664
Bug: 177275693
Test: No effect on existing devices

Change-Id: Id06eab00861878a867804a27f4778f1e3fbd174e
2021-01-12 18:31:13 -08:00
joshmccloskey
75587638ff Updated Fingerprint enrollment logging
Test: Verified regular fingerprint enrollment correctly logged
enrollment.
Test: Verified that the find fingerprint sensor activity no longer
falsely reports a failed enrollment.
Bug: 175316123

Fingerprint enrollment shows a find sensor screen which makes a call to
FingerprintManager.enroll(), the purpose is to get the user to locate
the sensor. The consequence was that logging built into the framework
was incorrectly logging a failed enrollment after cancellation.

Change-Id: I4777613fe521f04cc97c471e0a1e85e5809d7f06
2021-01-07 13:53:27 -08:00
Kevin Chyn
516c3cea50 Immediately finish FingerprintEnroll when no FingerprintManager
Fixes: 161603652
Test: adb shell am start -a android.settings.FINGERPRINT_ENROLL
Change-Id: I52e2770a8870a1699dec5b20cb8c54db8991a14d
2020-12-16 16:07:58 -08:00
Kevin Chyn
ee1dd50e74 Forward gatekeeper password handle to enrollment
Fixes: 169629017
Test: Wipe device, go through setup flow with a managed account.
      Successfully set up credential and fingerprint

During the conversion to GkPwHandle (instead of HAT), the code in
Choose/ConfirmLock* and most of the biometric paths were updated, with
the exception of 2a below.
1) Only multi-biometric devices request Choose/ConfirmLock in
   BiometricEnrollActivity.
2) Single-biometric devices (in almost all paths) request credentials
   in their intro activities (FingerprintEnrollIntro, etc).
2a) However, there is a special path used by work profiles where
    credentials are first set up, and the GkPwHandle is passed into
    BiometricEnrollActivity, with the request to skip the fingerprint
    enroll introduction page. In this case, we must remember to
    forward the GkPwHandle to the relavent enrollment page
    (FingerprintEnrollFindSensor).

At some point in the future we should have all credential stuff
done in BiometricEnrollActivity. However, due to legacy APIs, etc,
it may be more work than it's worth right now.

Change-Id: I3f95876de6969fee7130d7a19c8db363da69c4c2
2020-12-16 12:34:44 -08:00
Kevin Chyn
201f027586 Start udfps enroll after activity animates in
1) Do not request enrollment until activity animation is complete
2) Do not show fingerprint icon until activity animation is complete

Bug: 171353506
Test: manual
Change-Id: I7cdf5fc4888e35c0a7ba38ea622ae9f3fe1a3abf
2020-12-01 18:17:16 -08:00
Kevin Chyn
b07e2dbfd3 Update portrait enrollment for UDFPS
Bug: 171353506

Test: No effect on existing devices

Change-Id: I701baf06bf3defde78af50eff5c0e01fafeb07cd
2020-12-01 17:01:57 -08:00
Tsung-Mao Fang
ae7f264fa2 Apply top intro preference for face settings page
Do a few things in this cl
- Use correct way to work with controller.
- Refactor xml file.
- Separate content of footer to two parts.
  - First paragraph should become top intro.
  - Rest should keep in footer.

Test: Build apk and see the screen
Bug: 173087905
Change-Id: Icb16dedf6b36542b833527471579aaadb5407d87
Screenshot: https://screenshot.googleplex.com/92Jx6zKyTZU8LJa.png
2020-11-16 18:34:21 +08:00
Kevin Chyn
5b2cd89abd Make biometric PendingIntent immutable
Fixes: 172207250
Test: Builds
Change-Id: I75688873ca74408c70559ca9ec3717a38bba0f60
2020-11-10 18:15:43 -08:00
pihuei
55fb2b745d Use system day/night to switch theme instead of from intent extra.
Use value-night to give theme instead of directly from intent extra when Setup day/nNight mode enabled and in Setup flow

Before:
<vision settings>
https://hsv.googleplex.com/4837266235064320
<wifi dialog>
https://hsv.googleplex.com/5687053981319168
<lock screen with disabling button>
https://hsv.googleplex.com/4843506419892224
<lock screen with enabling button>
https://hsv.googleplex.com/5650348922372096
<fingerprint intro>
https://hsv.googleplex.com/5133769046491136
<fingerprint touch>
https://hsv.googleplex.com/5681937198874624
<fingerprint left touch>
https://hsv.googleplex.com/5767441676238848
<squeeze release>
https://hsv.googleplex.com/6632476812247040

After:
<vision settings>
https://hsv.googleplex.com/6213298875793408
<wifi dialog>
https://hsv.googleplex.com/6025790804197376
<lock screen with disabling button>
https://hsv.googleplex.com/5747461219942400
<lock screen with enabling button>
https://hsv.googleplex.com/5766700781797376
<fingerprint intro>
https://hsv.googleplex.com/6751334529236992
<fingerprint touch>
https://hsv.googleplex.com/5625963293442048
<fingerprint left touch>
https://hsv.googleplex.com/4518139360444416
<squeeze release>
https://hsv.googleplex.com/5220720579706880

Bug: 169734655
Test: robo test
Change-Id: I4aab843e28a932c7b823f36f1d8df1e5b2341f4e
2020-11-05 05:09:14 +00:00
Kevin Chyn
af7837f602 Update generateChallenge/revokeChallenge w/ frameworks/base
Bug: 171002801
Bug: 170517180
Test: Enroll on existing devices
Change-Id: I78530fde275c5ac924e50d77de43b90969d6eb5b
2020-10-15 18:41:47 -07:00
joshmccloskey
97a6da46a7 Added null check to fingerprint fragment
Test: It builds.
Fixes: 167619037
Change-Id: I76fdfd9f4be412b5f47fb05a772f7973fe6676da
2020-10-05 14:38:01 -07:00
Kevin Chyn
a8bf11979b Merge "Update settings together with frameworks/base" 2020-10-01 01:24:02 +00: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
pihuei
59e3fa1a3e deprecated applyPartnerCustomizationStyle
change applyPartnerCustomizationStyle to applyPartnerCustomizationHeavyStyle

Bug: 162723150
Test: manual
Change-Id: Ie13b1e2cd372582236a8244cee5671e0a4b239c6
2020-09-24 19:12:14 +08:00
Kevin Chyn
8d63b98272 Update settings together with frameworks/base
Bug: 169195610
Test: Builds
Change-Id: I2c732dba78eb8c90ef71351562415e06949b31bb
2020-09-23 00:17:56 -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
eb8c0f14ea 1/n: Clean up BiometricEnrollActivity
Test: fingerprint and face enroll via
      adb shell am start -a android.settings.BIOMETRIC_ENROLL
Test: credential enroll via
      adb shell am start -a android.settings.BIOMETRIC_ENROLL --ei android.provider.extra.BIOMETRIC_AUTHENTICATORS_ALLOWED 32768

Bug: 162341940
Bug: 152242790
Change-Id: Idfdf96891ba9a2394f61eedb0adde2adf9fd85e6
2020-09-09 15:07:24 -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
ba47b9ae3e Save mConfirmingCredentials state
Fixes: 162486392
Test: Remove all fingerprints/credentials, tap fingerprint settings,
      rotate device when setting credential. Finish credential
      setup and biometric enrollment. Only prompted to set up credential
      once.
Test: 1) Wipe device
      2) Proceed to set up credential in SUW, but pause on first
         credential screen (choose lock)
      3) adb shell cmd uimode night yes // triggers activity recreate
      4) Proceed with credential/biometric setup
      Notice not re-prompted for credentials
Change-Id: I65fc0265acad98b18b152070b85cc4f71693cc68
2020-07-31 22:12:21 +00:00
Edgar Wang
7af9ea9c90 Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Bug: 161896447
Test: robotest & manual
Change-Id: I0254b07ba7ba096e33a9da3f828f99434ff07a2d
2020-07-29 14:12:04 +08:00
Kevin Chyn
b13bc50542 1/n: Make ChooseLockSettingsHelper into a builder
The multitude of slightly different launchConfirmationActivity(*)
methods are a big unsustainable pyramid. It's too difficult to
read, too difficult to track which clients are interested in which
parameters, and too difficult to add new parameters, since we need to

1) Read through all of them and find one that's the closest
2) Try not to affect other callers, so potentially add yet another
3) Modify the internal paths, which all basically call each other
   until it reaches the biggest launchConfirmationActivity which
   has ALL of the parameters

This change should have no behavioral change.

Note: CredentialStorage doesn't need returnCredentials anymore as of
      ag/6073449

Test: make -j56 RunSettingsRoboTests
Test: Manually traced code paths for each invocation. A few hidden
      dependencies (such as explicitly setting challenge=0 with
      hasChallenge=true) were found. Left them the way they were in
      case they were intended
Test: Enroll face, fingerprint
Test: Enable developer options
Test: Change to PIN, Pattern, Password, then back to PIN (so each
      type requests confirmation)
Test: adb shell am start -a android.app.action.CONFIRM_DEVICE_CREDENTIAL,
      authenticate
Test: adb shell am start -a android.app.action.CONFIRM_FRP_CREDENTIAL
      (shows confirm credential screen)
Fixes: 138453993

Change-Id: Ic82ef3c3ac2e14d624281921f2d816bcdacbd82b
2020-07-24 11:13:13 -07:00
Kevin Chyn
7595874e63 Merge "Add face enroll accessibility dialog" into rvc-qpr-dev am: 4b83725ee6 am: 61259e7436
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/12172087

Change-Id: I6080fadd54962885a13ad08027916d13e0eacfe0
2020-07-17 03:14:26 +00:00
Kevin Chyn
243aa8e2e0 Add face enroll accessibility dialog
When accessibility services such as talkback are enabled, and the
user tries to start the non-accessibility enrollment flow, present
a confirmation dialog.

Fixes: 152633740
Test: Enable talkback, start enrollment
      1) Accessibility flow --> no dialog, as expected
      2) Non-accessibility flow --> new dialog shown
Test: No talkback, start enrollment. No dialog shown in either case
Change-Id: I0cd07a9d0012f6c9bea36e74365a6707755d3ab7
2020-07-16 16:33:16 -07:00
Kevin Chyn
4624a1ca5d Update settings together with frameworks/base
Bug: 157790417

Test: SettingsRoboTests
Change-Id: Ib99d1cc2cb3196dd7231d0b78403427467a787b2
2020-07-01 00:08:40 -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