Commit Graph

94 Commits

Author SHA1 Message Date
Joseph Vincent
6ec3ac32a5 Merge "To skip face enrollment for PS unlock setup based on intent extra" into main 2024-03-19 13:28:10 +00:00
josephpv
f9bc323633 To skip face enrollment for PS unlock setup based on intent extra
For private space lock setup as part of both PS setup and separate lock
form private space settings we need to show only traditional unlock
factors and Fingerprint but not show Face enrolment even on devices
where Face unlock is supported by hardware.
Once LSKF is enrolled it should be followed by Fingerprint enrollment
flow and after that Face enrollment should not be shown and exit lock
setup flow.

Currently for separate profile lock setup ACTION_SET_NEW_PASSWORD intent
is used in private space setup.
With this intent the options of LSKF+fingerprint+Face is shown in
devices supporting both fingerprint and face hardware. After the LSKF
ennrollment BiometricEnrollActivity is started which continues with
fingerprint and Face enrollment.

With this change we are passing an extra along with the intent to enroll
fingerprint only. Based on the intent extra value if set even if hardware
support exists the lock enrollment for the profile will support only
LSKF and fingerprint enrollment but not start Face enrollment.

User will still have the option to enroll Face from the dedicated settings
entrypoint in private space settings.

Recording link : b/323839067#comment4

Bug: 323839067
Test: Manual, verified option for face enrollment is shown or not shown
based on the intent extra. When extra is not passed the behaviour will be
default.

Change-Id: Idf92084052e02df9ca89f288c618796750e563e6
2024-03-19 11:58:08 +00:00
Eran Messeri
47973b88ac Auth-bound keys usability: Update strings
Update the strings for the warning shown to the user when they are about
to remove their screen lock and there are authentication-bound keys
that would be invalidated.

These strings are provided by Android UXW.

Additionally, apply the new string to all types of device lock screen:
Pattern, password and unknown.

Bug: 302109605
Test: Manual, flashed a device and added different types of screen lock.
Change-Id: Ida6f5f16c5aa1671f3f2c1358160b8173a1d1407
2024-03-15 14:55:51 +00:00
Eran Messeri
a200371d1c Warn user when removing LSKF in the presence of auth-bound keys
When the user goes through the flow of removing the device's lockscreen
knowledge factor (LSKF), warn them in case they have apps with
auth-bound keys on the device. Auth-bound keys that are bound to the
LSKF's secure user ID (that is, auth-bound keys that can be
authenticated by the user entering their LSKF) will be invalidated
when the LSKF is removed.

That means apps will not be able to decrypt the data encrypted with
these keys or use them to sign anything anymore (potentially effectively
losing the user's ability to prove their identity).

In this case, change the warning message that is shown to the user,
to make it clear wallet apps (that typically use such keys) will stop
working as well as other apps.

Bug: 302109605
Test: Manual, enrolled a PIN, face and fingerprint and tried removing PIN.
      A CtsVerifier test will be added later.
Change-Id: I276b744f54763e291abe1f20824da4f8f156679d
2024-02-08 14:56:02 +00:00
josephpv
149a06cfdf Add biometric enrollment support for private profile
During a new lock setup for profile whose credential is shareable with
its parent first the user is authenticated with device lock after which
an activity having options of Pin/Pattern/Password with fingerprint and
face combinations is shown.
On choosing any option which has combination to set LSFK and biometric
it is expected that after setting LSKF the Biometric enroll activity is
started but currently this does not work as expected as the
ChooseLockGeneric activity is finished after adding LSKF and it does not
start the biometric enrollment for the profile.
The issue also exists with non-profile users using this workflow through
SET_NEW_PASSWORD intent and if already have LSKF assigned.

This change adds a new boolean which takes care to not finish the
activity till the Biometric enrollment is started.

Below conditions are taken care with this change
- For new lock setup when device lock already exists then after
  authentication of current device lock make sure the activity is not
  finished untill the biometrics enrollment activity is started.
- On choosing continue without fingerprint or face option the biometrics
  enrollment is not started

screen recordings uploaded to buganizer - b/316109077

Bug: 316109077
Test: Manual
Change-Id: Ifcbaa7d89195d87d432fc848092f2301752c3c22
2024-01-16 21:07:38 +00:00
Rhed Jao
19dcf2dc19 Do not finish the activity if the activity result is required
Repair mode requires the completion result after an user chooses
a new screen lock. This change defers finishing the activity until
the activity result is available.

Bug: 281641188
Test: atest SettingsRoboTests:com.android.settings.password
Change-Id: If635521ef7e1c509950d9683c15dffe45375cf4f
2023-12-20 09:47:51 +00:00
josephpv
2d7985fbf3 Show customized message for private space lock setup screen
go/ss/3kmkEkasv6vmDDo.png
go/ss/7CzzSXZthbJVcEr.png

Bug: 308862923
Test: atest ChooseLockGenericTest and Verified manually customized
message is shown when passed with intent.

Change-Id: I784d42c4702801ec45bc8d4c5e911a404f549d46
2023-12-06 20:39:51 +00:00
Chun-Wei Wang
d1de1b532b Revert "Settings ChooseLockscreen* dismiss in background."
This reverts commit 302aa72446.

Reason for revert: b/308468754

Change-Id: I27ab7e374324b99e7a039b06ad698c214d97592a
2023-10-31 06:59:48 +00:00
Joshua McCloskey
302aa72446 Settings ChooseLockscreen* dismiss in background.
Whenever launching
ChooseLockGeneric/ChooseLockPassword/ChooseLockPassword the activity
will finish itself when it goes into the background. This is to ensure
that a user only has an opporunity to complete this process once the
activity is shown. (It cannot be resumed after a power button press, or
sending the activity to the background)

Test: Verified in Settings that the ChooseLockGeneric,
ChooseLockPassword and the ChooseLockPattern activities now exit if they
are sent to the background.
Test: Same as above but in SUW
Test: m -j40 RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password.ChooseLockPatternTest
Test: m -j40 RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password.ChooseLockPasswordTest
Fixes: 287473148

Change-Id: Icc9142ff4672ab3669b2f425ff351b03ce7a223a
2023-10-24 21:45:16 +00:00
Chun-Wei Wang
c726bd48b4 Handle EXTRA_KEY_REQUEST_WRITE_REPAIR_MODE_PW
So the new password can be saved per caller's request.

This will remove the additional step to ask the user
to enter the new credential again and thus simplifying
the UI flow.

Bug: 271968977
Bug: 277561275
Test: atest SettingsUnitTests:SaveAndFinishWorkerTest
Test: atest ChooseLockPasswordTest
Change-Id: I20232619225b17edda0a72dad43b120d5a249203
2023-07-17 23:04:45 +00:00
lbill
67d6dff7cc Refine SkipDialog title and desc by device configs
1. Wrap isFaceSupportedInSUW() in Settings Utils
2. Wrap getCombinedScreenLockOptions in Settings Utils
3. Add EXTRA_KEY_FOR_SUW to judge if in SUW flow
4. Refactor SetupSkipDialog by hasFace, hasFingerprint,
   isSuw, isFaceSupported conditions
5. Clean up the mapping logic of SetupSkipDialog
6. Replace bools with @LockPatternUtils.CredentialType
7. Refine the logic for isFaceSupported
   ---------------------------------------
   Config |SuwSupportFace|!SuwSupportFace|
    isSuw |    true      |      false    |
   !isSuw |   hasFace    |     hasFace   |

Bug: 263070591
Bug: 279389803
Bug: 279195215
Test: adb shell am start -a android.settings.BIOMETRIC_ENROLL
Test: SUW(workprofile), post-SUW
Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password
Test: m RunSettingsRoboTests ROBOTEST_FILTER=SetupSkipDialogTest
Change-Id: Ie7af4299695dc3983b4190929b4dd659c301c082
2023-05-09 09:55:52 +00:00
Xiaozhen Lin
bb54d71a33 Password clearing in Settings App
Pixel Imprint will call onDestroy() whenever its menu is invisible.
(https://cs.android.com/android/platform/superproject/+/master:packages/apps/Settings/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java;l=639?q=packages%2Fapps%2FSettings%2Fsrc%2Fcom%2Fandroid%2Fsettings%2Fbiometrics%2Ffingerprint%2FFingerprintSettings.java&ss=android)
However, Screen lock should have the same behavior as Pixel Imprint but
it doesn't.
onDestroy() for Screen lock should be called whenever we exit the menu
or the menu becomes invisible. Otherwise, the password may be leaked to
RAM unexpectedly in some situations.

Bug: 233373529
Bug: 278488549
Bug: 278530059
Test: manual
Change-Id: Ib11af7073aa1c49096a66c9f5a462e7caf18df5e
2023-05-03 02:04:59 +00:00
Treehugger Robot
6112e583d7 Merge "Revert "Destroy activity in onStop()"" into udc-dev 2023-04-18 19:07:33 +00:00
Daniel Chapin
b215d94d51 Revert "Destroy activity in onStop()"
This reverts commit 7a89f15fed.

Reason for revert: Droidfood blocking bug b/278178618

Change-Id: Ie26b73e1e9584f632625375d36168a42e95e5f02
2023-04-18 00:16:21 +00:00
Treehugger Robot
7d3b07f6cb Merge "Customize ChooseLockGeneric SUW options" into udc-dev 2023-04-17 06:59:18 +00:00
lbill
53c0c2f4ee Customize ChooseLockGeneric SUW options
Legacy choose lock options was hard coded description.

1. In T-QPR when device do not support Face enroll in SUW flow,
We should remove "Face" from the description.
2. Use BidiFormatter to handle RTL string combination.
3. Define a new string for "Fingerprint"
4. Add workaround crash in ChooseLockGenericTest/SetupChooseLockGenericTest

Test: Manual login corp, and observe the UI in Choose screen lock
Test: adb shell settings put system system_locales ar check RTL
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.password
Bug: 269786629
Bug: 277361320
Change-Id: I2b26b7cc229f66300bb23ca190bb21f86f1caa01
2023-04-14 09:34:54 +00:00
Xiaozhen Lin
7a89f15fed Destroy activity in onStop()
Pixel Imprint will call onDestroy() whenever its menu is invisible.
(https://source.corp.google.com/tm-dev/packages/apps/Settings/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java;l=547?sq=package:tm-dev)
However, Screen lock should have the same behavior as Pixel Imprint but
it doesn't.
onDestroy() for Screen lock should be called whenever we exit the menu
or the menu becomes invisible. Otherwise, the password may be leaked to
RAM unexpectedly in some situations.

Bug: 233373529
Test: manual
Change-Id: Idc0c115fc2061d863f9cab2aed99c04340b827f8
2023-04-13 17:29:48 +00:00
Diya Bera
62a25bfb58 Merge "Remove background tint during SUW" into tm-qpr-dev am: 135041eab5 am: 8f2a74479a
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/21265617

Change-Id: I59aef62d50993776a25a9dcfab15d63f880b3298
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-06 18:58:18 +00:00
Diya Bera
87567ceb5e Remove background tint during SUW
Test: Manual - navigate to the activity mentioned in the bug and observe
the background
Bug: 264993674

Change-Id: I21c8143099e4c76ed5744cff12f31f578320a871
2023-02-03 23:29:06 +00:00
Eric Biggers
5f1d894252 Remove EncryptionInterstitial for Full Disk Encryption
Support for Full Disk Encryption was removed in Android 13, since now
File Based Encryption is always used instead.  It turns out that I
missed a fairly large chunk of obsolete code: EncryptionInterstitial,
which is the screen that asks whether the device will require the
primary user's lockscreen credential when it starts up.  This used to be
shown when setting the primary user's lockscreen credential, to
determine whether the full-disk encryption key would be tied to that
lockscreen credential or not.  But now it's unused code.

This CL removes all this unused code.

This should not change any behavior, with one very minor exception:
Settings will no longer explicitly set the REQUIRE_PASSWORD_TO_DECRYPT
setting to 0 whenever the primary user's lockscreen credential is
changed.  (This happened in SaveChosenLockWorkerBase.)  This setting is
a @SystemApi, but it no longer has any meaning, since it is never set to
1 anymore.  If there is a reason to keep it explicitly set to 0, instead
of unset, we should make LockSettingsService in system_server set it.

Test: Went through SUW, set a PIN, cleared the PIN, set a PIN again (all
      using the UI).  Nothing unusual seen.
Bug: 208476087
Change-Id: I039cc7a284e3f43e1e284970a5869958c909d1b7
2022-12-15 20:47:20 +00:00
Eric Biggers
ff16ec8542 Use StorageManager.isFileEncrypted() instead of deprecated methods
Since emulated FBE is no longer supported, isFileEncryptedNativeOnly()
and isFileEncryptedNativeOrEmulated() are the same as the new method
isFileEncrypted().  Replace all calls to these deprecated methods in
this repository with isFileEncrypted().

Bug: 232458753
Change-Id: I95beea86ef771396c2e08f2d6a643fdc629ad89f
2022-06-10 17:42:38 +00:00
Ayush Sharma
d67cd2320e Fix issue no action on clicking link in footer
Links are not allowed in footer preference title now, so splitting the
string in to title text and learn more text for set a separate work
lock message

Bug: 206083998
Bug: 231296099
Test: NA
Change-Id: Ic19b4b7a9c8239726b1d53cecad1e341458610cb
2022-05-10 13:51:31 +01:00
Kholoud Mohamed
155df044e5 Merge "Add missing settings strings." into tm-dev 2022-05-09 07:20:57 +00:00
Ayush Sharma
6e4579a816 Merge "Move set work lock message from header to footer" into tm-dev 2022-05-06 10:42:10 +00:00
kholoud mohamed
194fc00787 Add missing settings strings.
Bug: 226183482
Test: manual
Change-Id: I8efdff4531f31653ffb97c4aa485f49805c090b4
2022-05-06 09:34:54 +01:00
Jonathan Scott
b7f4f56cad Add missing settings strings.
Also re-enable and fix tests.

Test: manual
Fixes: 226183482
Fixes: 218799125
Fixes: 219375624

Change-Id: I9605f1f4e2e834baf63e015e96639567c5481b5f
2022-05-05 09:12:59 +00:00
Ayush Sharma
322d401aa8 Move set work lock message from header to footer
Also update the string.

Bug: 206083998
Bug: 230625178
Test: NA
Change-Id: I3e442f6a43e01f3633255551aa42902bf24e4aa8
2022-05-04 14:29:43 +00:00
kholoud mohamed
de78149c16 RESTRICT AUTOMERGE Refactor device policy resource APIs to a separate class
Bug: 217388602
Bug: 218875965
Test: atest EnterpriseResourcesTests
Test: manual
Change-Id: I4775d7741c7819fd811c3fc4eda1636b1e04b398
2022-03-17 17:37:45 +00:00
Marie Matheson
9f7374b045 On Settings lockscreen changes send new safety status to Safety Center.
Bug: 215518847
Test: atest SettingsUnitTests
Test: make RunSettingsRoboTests
Change-Id: Id8e957e58c45195260157b2b61b93ecbc203164b
2022-02-28 16:36:46 +00:00
Jonathan Scott
e0d439472f Allow Device Management Role Holder to update Settings strings.
Test: manual
Bug: 188414370
Change-Id: I6e1a06619799a9e99382d791e72e2e4518f93cac
2022-01-25 19:03:24 +00:00
Eric Biggers
b4060ef65b Remove FDE support from accessibility settings
With FDE (Full Disk Encryption), secure start-up (i.e. requiring a PIN /
pattern / password to boot the device) was incompatible with
accessibility services.  Thus, the accessibility settings would ask the
user to disable secure start-up when enabling an accessibility service.

Now that FDE support has been removed in favor of FBE (File Based
Encryption), this is no longer necessary.  Remove it.

Bug: 208476087
Change-Id: I5f6e512f223df63e1b4d1c181fc8b3fe683dcd5f
2022-01-11 18:53:51 -08:00
Rubin Xu
8e4acdbf51 Refactor ChooseLockGenericController
* Move all logics around aggregating password policies
  to the controller
* Replace HIDE_DISABLED_PREFS and MINIMUM_QUALITY_KEY
  with HIDE_INSECURE_OPTIONS as all call sites are just
  using them to hide insecure screenlock options.
* Remove password policy aggregation logic from
  ChooseLockPassword and make it use policies passed in.
* Remove padlock from disabled screen lock options,
  per UX mock.
* Increase char limit for some strings

Bug: 177638284
Bug: 177641868
Bug: 182561862
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.password
Test: 1. set profile password quality/complexity and enroll device lock
      2. set profile password quality/complexity and enroll work challenge
      3. set parent password quality/complexity and enroll device lock
      4. set parent password quality/complexity and enroll work challenge
      5. set profile and parent password complexity, then enroll work challenge
      6. set profile and parent password complexity, then unify work challenge
      7. Enroll device lock during SUW
Change-Id: Iba1d37e6f33eba7b7e8e1f805f8e37aaec108404
2021-05-06 23:09:27 +01:00
Kevin Chyn
a435a5a288 Update credential removal strings
1) Credential can no longer be removed for separate challenge profiles,
   so strings and supporting logic are also now removed
2) Updates existing strings for credential and fingerprint
3) Adds new strings for face
4) Adds new strings for face + fingerprint

Bug: 185180691
Test: manual on device

Change-Id: I2a850eb6644103e14ef2a670222e500c705a16cd
2021-05-03 16:15:55 -07:00
Rubin Xu
1ac05237ab Update titles & messages for password enrolment flows
Show different titles and description messages when
enrolling password under various conditions:
* personal lock verus work lock
* adding a new lock versus updating existing lock
* enrolling a PIN verus password versus pattern

Add icons to options in screen lock picker.

Add an option to redirect to work lock flow if the admin
has set device-wide password requirement.

Bug: 183922696
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.password
Change-Id: I40417b113814659d3226a44eb7f9d553386e3c58
2021-04-09 14:35:36 +01:00
Rubin Xu
da09a8547d Correctly save credential on config changes
Need to make a copy of the LockscreenCredential in
onSaveInstanceState() since the credential will be
zeroized in onDestroy() while Bundle.putParcelable()
only keeps a reference of the object without any
copying.

Bug: 179108398
Test: manual
Change-Id: I090b691630f82406d1ae2f625dd2e0d578b83707
2021-04-06 14:23:45 +01:00
Rubin Xu
ff1b547548 Support EXTRA_DEVICE_PASSWORD_REQUIREMENT_ONLY
When set, only enforce password requirement explicitly set device-wide.

As part of the change, restructure the code such that ChooseLockGeneric
becomes the central place for aggregating password requirements from
different parties, while ChooseLockPassword only enforces whatever
password reuirement it is told (by ChooseLockGeneric via intent extras)

Bug: 169832516
Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password

Change-Id: I0acbea4819c13d4a8444c7b06928baccead18837
2021-01-20 11:16:22 +00:00
Eran Messeri
d8e49b45b1 Enforce password complexity in lockscreen setting
Enforce a lock screen that adheres with the required complexity set by
the admin.

This is done by querying the DevicePolicyManager for the complexity set
for the given user, and merging it with the complexity from the "change
lock screen" intent (if any).

If the admin sets a higher complexity requirement than the app
triggering the lock screen change request, then the admin-set complexity
is enforced and the user is not shown information about the requesting
app.

Bug: 165573442
Test: Manually, set complexity using TestDPC and see it applies.
Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password.ChooseLockGenericTest
Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password.ChooseLockPasswordTest
Change-Id: If3f24f7430bdcbcd34265339f7d2a1ff82a44fc1
2020-11-30 22:26:50 +00: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
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
Treehugger Robot
a32b11f45b Merge "Update language to comply with Android's inclusive language guidance" am: ba534426bf am: 95773b6f1a am: d7e5e940ea am: c397bd301d am: 4727c3b1c5
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1374111

Change-Id: I77609347466b45e081c14fd64274f9844dd9822c
2020-07-29 03:43:24 +00:00
Treehugger Robot
d7e5e940ea Merge "Update language to comply with Android's inclusive language guidance" am: ba534426bf am: 95773b6f1a
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1374111

Change-Id: I458ae96ae298c32cc2f070dddac54d625929332c
2020-07-29 02:48:26 +00:00
Curtis Belmonte
1aa03da058 Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Change-Id: I25b5f8a2d87d8754e6536d24f986ab90a2bc69fe
Test: Presubmit
Bug: 161896447
2020-07-28 20:08:17 +00: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
Rubin Xu
670a30e766 Remove password shards from memory
Force a garbage collection and zeroize some fields after Activity finishes

Test: Goes through password change flow, then grab a heap dump via
      adb shell 'am dumpheap $(pidof com.android.settings)
      /data/local/tmp/settings.hprof'
      And grep for password in the dump
Bug: 144537463
Change-Id: Idd0a04ada98900aeb2a6d20bb1270a4a4aec2cfd
2020-06-12 15:56:04 +01:00
Rubin Xu
5e51ed6a89 Allow setting password during provisioning if FRP is not supported
On devices without PersistentDataBlock support, we should
always allow setting up password during provisioning.

Bug: 157451551
Test: make RunSettingsRoboTests
      ROBOTEST_FILTER=com.android.settings.password
Test: On cuttlefish, file ACTION_SET_NET_PASSWORD before SUW completes
Change-Id: Ic7b5d99b38e6427750ce70fa7e38f7ef6054d4ad
2020-05-28 10:30:47 +01:00
Rubin Xu
81d8664d81 Merge "Improve work profile unification flow" into rvc-dev 2020-04-15 11:18:00 +00:00
Rubin Xu
f535e87e51 Improve work profile unification flow
When unifying work profile challenge, keep the device lock
as long as it will still meet password requirement after unification.
If not, prompt the user to set a new device lock and only unify
work challenge after a compliant device lock is set.

Bug: 148630506
Fix: 149682344
Test: make RunSettingsRoboTests
ROBOTEST_FILTER='ChooseLockGenericTest|ChooseLockPasswordTest|ChooseLockPatternTest|LockUnificationPreferenceControllerTest'

Change-Id: I99cde2650902927f6a4cc7c0cc7c6016e0dc283f
2020-04-08 14:43:48 +01:00
Jason Chiu
b12e3b96c9 Support click metrics logs in several pages
- Assign metrics category to perferences at an earlier stage in
  DashboardFragment for better usability.

Bug: 137559984
Test: robotest
Change-Id: Icd4185efa0e655be20c4b673a1380fa42140923f
2020-04-07 16:44:53 +08:00
Eric Sandness
7430932305 Use ChooseLockGeneric When Started By Admin App
The device management app may run before the end of device provisioning,
and it may start SetNewPasswordActivity.  If this happens, use
ChooseLockGeneric instead of SetupChooseLockGeneric.  Only use
SetupChoseLockGeneric if SetNewPasswordActivity was started by Setup
Wizard itself.

Fixes: 151552453
Test: atest com.android.settings.password.SetNewPasswordActivityTest
Test: atest com.android.settings.password.ChooseLockGenericTest
Test: Manually run consumer and enterprise device setup
Change-Id: I3b479ed18211d6625654f266fe692f07d0047e4f
2020-03-17 17:16:08 +00:00