Commit Graph

534 Commits

Author SHA1 Message Date
Tetiana Meronyk
977025ff16 Put "Add user" dialog within activity to capture focus
Dialogs are not a part of view hierarchy so if the dialog loses focus, it cannot be reached by traversing.

When it is places within full-screen activity, then the focus is captured within activity and returns to the dialog. If the activity was embedded in the right side pane, like the dialog used to look, the dialog would be accessible by traversing but the focus would  be granted to the left pane of Settings app. Therefore this UI change is required.

Bug: 376815882
Test: atest UserSettingsTest
Flag: android.multiuser.place_add_user_dialog_within_activity
Change-Id: If9f280573d2b0da8deedcdeaeffc9db6160f27a0
2025-02-17 19:50:04 +00:00
Denis Kuznetsov
851bf18783 Merge "Control user switching UI visibility according to config" into main 2024-11-22 19:22:12 +00:00
Denis Kuznetsov
472e415659 Control user switching UI visibility according to config
Bug: 375394047
Test: atest UserDetailsSettingsTest UserSettingsTest
Test: build platform with config overrides, check the result
Flag: EXEMPT Desktop-only change
Change-Id: Iaf1ac6c98a648066bf77b069039dcd59e243835f
2024-11-21 17:42:00 +00:00
Adam Bookatz
69c7f5dac5 Don't let profiles open the UserSettings overflow
Really, profiles aren't expected to open Settings at all. But if they
do somehow, the overflow shouldn't appear.

Bug: 352542820
Flag: EXEMPT bugfix
Test: Try to access the overflow of the work profile by launching its Settings in
adb shell am start --user 10 'com.android.settings/.Settings\$UserSettingsActivity'

Change-Id: I5e4c095cda3e19fa5c63c2c550a526f5da8ec5c1
2024-11-18 15:53:41 -08:00
Tetiana Meronyk
b0706be4af Set availability of AddUserWhenLockedPreference before it gets displayed.
This prevents flickering if the preference is meant to be hidden.

Bug: 373269781
Test: manual
Flag: EXEMPT bugfix
Change-Id: Ibf1e1915e9ad872bdaaba30fb7fa9047665531f7
2024-10-16 13:28:54 +00:00
Tetiana Meronyk
92ada7e3a5 Remove "Add supervised user" from search result if such user type is not allowed on the device
Bug: 371202325
Test: manual: 1. Open settings 2. Search "Add user" 3. Verify "Add supervised user" does not come up
Flag: EXEMPT bugfix
Change-Id: Iaf96bd8d7ffde4f9d09f14af1de422e1b1d39eda
2024-10-03 17:28:25 +00:00
Tetiana Meronyk
1da65db12f Update search index in UserSettings based on allowed user types
If USER_TYPE_FULL_RESTRICTED is disallowed, addUserPreference is renamed to only mention user. But search results still state default name "Add user or profile". This change updates this entry in the search index.

Bug: 365899560
Test: atest UserSettingsTest#testGetRawDataToIndex_returnAllIndexablePreferences && atest UserSettingsTest#testGetRawDataToIndex_addRestrictedProfileAllowed_addUserTitleIsCorrect && atest UserSettingsTest#testGetRawDataToIndex_addRestrictedProfileDisallowed_addUserTitleIsCorrect
Flag: EXEMPT bugfix_only
Change-Id: I3c26180225491e4916141a3fca9d2e7ab36e8cfc
2024-10-03 12:02:44 +00:00
Tetiana Meronyk
9ba90e5b3b Update main toggle state in User Settings onResume()
The toggle state used to be set on creation and only changed onSwitchToggled(). But the state can also change when restrictions are applied from outside of settings, or when user is added with toggle being off by default.

This change updates the state during execution of onResume() in Users Settings, which also aligns with the update strategy of other Toggles on this Settings page.

Bug: 362706097
Test: atest MultiUserSwitchBarControllerTest
Flag: EXEMPT bugfix
Change-Id: I8a994b2e0ddb672362e69653374b87f85ae1548c
2024-09-02 10:28:51 +00:00
Treehugger Robot
ea813ef565 Merge "Prevent restricted users from being made admins" into main 2024-08-15 16:59:58 +00:00
Tetiana Meronyk
53058c197c Prevent restricted users from being made admins
Bug: 357704332
Test: manual
Flag: EXEMPT bug_fix

Restricted

Change-Id: I45b31616829134a61bfa587302c5165da192dc8a
2024-08-15 13:10:32 +00:00
Tetiana Meronyk
56446fa3b8 Read new value of admin status on UserCapabilities update
Before multiple admins were introduced, only main user could be an admin and that status was not modifiable. But now it can be updated for non-main admins of the device. So it is important to refresh this value to keep it up to date.

Bug: 359466920
Test: atest UserCapabilitiesTest
Flag: EXEMPT bugfix_only
Change-Id: If39ad24b10daf6886f402926b3bab23b50201c98
2024-08-14 15:44:35 +00:00
Adam Bookatz
97caf58b33 Merge "startActivityForResult with new Intent" into main 2024-08-12 16:29:38 +00:00
Treehugger Robot
11d21e57d9 Merge "SettingsApp Implement DISALLOW_GRANT_ADMIN in user creation flow" into main 2024-08-09 10:24:17 +00:00
Nikhil Kumar
c05f058083 SettingsApp Implement DISALLOW_GRANT_ADMIN in user creation flow
In the process of creating a user through the Settings app, if the current user has the DISALLOW_GRANT_ADMIN restriction, the dialogue for granting ADMIN privileges will be hidden after this implementation. This action ensures that even if child users can create SECONDARY users, they cannot create ADMIN users.

Design doc: go/unicorn-hsum

Bug: 357819541
Test: manually verified the user is not allowed to create ADMIN user when DISALLOW_GRANT_ADMIN restriction is applied.
Flag: android.multiuser.unicorn_mode_refactoring_for_hsum_read_only
Change-Id: I4b40f83b50d4de0af103d4f5ca400e42345144e0
2024-08-06 13:53:46 +00:00
Nikhil Kumar
01b7062b34 Restrict admin status change when DISALLOW_GRANT_ADMIN is present
This change addresses a security gap where users with the "DISALLOW_GRANT_ADMIN" restriction could still grant admin privileges to others, potentially undermining supervised user models.  We've extended the existing logic to ensure that restricted users cannot grant or receive admin privileges when the DISALLOW_GRANT_ADMIN restriction is in place. This prevents scenarios where supervised users could create new admins to bypass restrictions and factory reset the device.

In addition to the core functionality improvement, significant code refactoring has been done to untangle complex multiple if conditions. The logic for determining when admin status changes are allowed is now clearer and more readable, taking into account both the "current user" (initiating the change) and the "target user" (whose privileges are being modified).

Bug: 357056776
Test: atest UserDetailsSettingsTest and manually verified the user having DISALLOW_GRANT_ADMIN restriction is not allowed to change admin status of any other user.
Flag: android.multiuser.unicorn_mode_refactoring_for_hsum_read_only
Change-Id: If02c9355ee7ce285b5b7bcddae630d716d5bf333
2024-08-05 18:16:33 +00:00
Tetiana Meronyk
061669815a Fix toggle when no_user_switch is applied without EnforcedAdmin
If EnforcedAdmin is null, calling setDisabledByEnforcedAdmin does not disable the setting. So if this restriction was applied by a source different than admin, the toggle was still active for users to change (even non-main).

After this change, the restriction is correctly processed both when it is applied by admin or by some other source.

Bug: 356387759
Test: atest MultiUserSwitchBarControllerTest
Flag: android.multiuser.fix_disabling_of_mu_toggle_when_restriction_applied
Change-Id: I5d38e250359ccbee67ac747f1d8a0a2143f4c216
2024-07-31 13:55:10 +00:00
Adam Bookatz
1189e24e47 startActivityForResult with new Intent
Rather than use the raw Intent, we make a copy of it. See bug.

Bug: 330722900
Flag: EXEMPT bugfix
Test: manual
Test: atest com.android.settings.users.UserSettingsTest
            com.android.settings.users.UserDetailsSettingsTest
Change-Id: Id74e4b7ae261f2916eedaef04a679f83409a4b67
2024-07-22 17:03:12 -07:00
Edgar Wang
1010a85eda Merge "Add Multiuser team to the OWNERS file for users package in Settings" into main am: 969c26392d am: ff519515b6
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/3176079

Change-Id: Id47bd03f0686b8f4dbb0c50383d374bbd51657c5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-17 01:37:19 +00:00
Edgar Wang
ff519515b6 Merge "Add Multiuser team to the OWNERS file for users package in Settings" into main am: 969c26392d
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/3176079

Change-Id: Id9f83a06f922904ddf56ed803fa58cd362eba59f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-17 01:13:36 +00:00
Tetiana Meronyk
c641849a42 Add Multiuser team to the OWNERS file for users package in Settings
Bug: 352721898
Change-Id: Ica47025c4ba5033a15422931fd9f8ed85ae97e9e
Test: N/A
2024-07-16 12:05:25 +00:00
Tetiana Meronyk
25e1b4d88b Show disabled add actions in COPE mode
Before this change these actions were hidden.

After this change, they are displayed but disabled which makes it more intuitive.

Bug: 336762423
Test: atest UserSettingsTest && atest UserDetailsSettingsTest
Flag: android.multiuser.new_multiuser_settings_ux
Change-Id: Ie07816b7d3817d12e78e1ec2692fcddea9328933
2024-06-24 21:28:57 +00:00
Tetiana Meronyk
0f311e1195 Add handling of admin enforced restrictions in Users Settings
Before, when the restrictions were applied, the preferences that were restricted were hidden.

After this change, if admin applies a restriction, the preference is displayed as disabled and Policy Transparency Dialog is displayed

Bug: 338226475
Test: atest UserSettingsTest && atest UserDetailsSettingsTest
Flag: android.multiuser.new_multiuser_settings_ux
Change-Id: I1b5aeeeec7accde278ff3e46ea3d64c91d8400db
2024-06-24 20:22:16 +00:00
Tetiana Meronyk
caef61b5eb Refactor multiuser toggle to control user switch feature
The  name  "Allow multiple users" is too ambiguous. It sounds like by toggling it off, the feature is completely disabled. In fact, it only hides user switcher. In conjunction with hiding other users from the list, it makes it appear as all the users get deleted when the toggle is off. On the contrary, users might be running in background when the toggle is off.

After this change, the new name better represents the intention behind this toggle, as well as makes the UI more intuitive. The users are not being hidden anymore. But switching preference gets disabled.

Since the toggle can only be enabled or disabled by owner (after this refactoring), it means that Owner has full control over multiuser settings and is able to perform actions on users without having to enable the toggle.

Bug: 336762423
Test: atest UserSettingsTest && atest UserDetailsSettingsTest
Flag: android.multiuser.new_multiuser_settings_ux
Change-Id: Id9d507039b58d3df66fe78710409716fd4816890
2024-06-24 18:58:01 +00:00
Tetiana Meronyk
c502ee4540 Fix tests in UserDetailsSettingsTest and TimeoutToDockUserPreferenceControllerTest
Bug: 313530297
Test: atest UserDetailsSettingsTest && atest TimeoutToDockUserPreferenceControllerTest
Flag: EXEMPT fixing tests that were failing before
Change-Id: Ic4bd257aa26c6627d271acd1f22b59855bbddb20
2024-06-19 21:09:55 +00:00
Tetiana Meronyk
bac3e20cce Disable mRemoveUserPreference when mGuestUserAutoCreated only for guest.
Before this change, Delete action was disabled for all uninitialized secondary users.

Bug: 341840847
Test: atest UserDetailsSettingsTest
Change-Id: Icd43836f577dd061d267f6fb75658c35a0c47589
2024-06-11 16:25:06 +00:00
Tetiana Meronyk
b06a4f74a1 Merge "Make Multiuser toggle disabled for all non-main users" into main 2024-05-15 15:52:58 +00:00
Tetiana Meronyk
4e13fdcd37 Remove telephony related settings preferences for HSUM devices
Bug: 338358654
Test: atest UserDetailsSettingsTest
Change-Id: I53c3a8e4386b5d7738caffb42abf15dd33c360c7
2024-05-02 11:57:38 +00:00
Tetiana Meronyk
dc0c58b427 Make Multiuser toggle disabled for all non-main users
Only let main user (Owner) change state of the toggle
Bug: 336764498
Test: atest MultiUserSwitchBarControllerTest

Change-Id: Ib694d1cb4685764c64633efc090765b470a0a015
2024-05-01 17:21:14 +00:00
Treehugger Robot
72ba6ec2ca Merge "Rename Multiple users page to Users" into main 2024-05-01 09:47:56 +00:00
Tetiana Meronyk
177e852ea9 Rename Multiple users page to Users
Ensure it is still searchable by "multiple users" prompt.

Bug: 336764972
Test: manual
Change-Id: I1126bfe601b75532882d6158d82be1a3b566aefc
2024-04-30 18:48:40 +00:00
Tetiana Meronyk
86322e6398 Merge "Keep Multiuser toggle hint visible at all times" into main 2024-04-25 16:16:18 +00:00
Tetiana Meronyk
37ac9a393b Keep Multiuser toggle hint visible at all times
Bug: 336773027
Test: atest UserSettingsTest
Change-Id: Ib5f4ad674c4099a276c8c86d0ed96bdba956540c
2024-04-25 11:41:09 +00:00
Tetiana Meronyk
9e32702ded Add separate summary "Owner" for main user on the device
Bug: 298008926
Test: visual
Change-Id: I78ece410ab939a4727e44e371ae43779e96950e0
2024-04-23 17:38:49 +00:00
Jason Chiu
0bd014c497 [Safer intents] Settings misc
To avoid implicit intents, make intents launch explicitly.

Test: build
Bug: 323061508
Change-Id: Ie19cbceb89842a75a180898abcce81b63c18d46c
2024-03-29 04:22:45 +00:00
Chris Antol
9531458ca5 Merge "Multiple users yields a search result despite being disabled" into main 2024-02-05 20:36:03 +00:00
Adam Bookatz
84bc8a918d Settings: Profiles inherit call restrictions
Currently, if Settings applies CALLS or SMS restrictions to a user, that
restriction doesn't propogate to its child profiles. It should.

This is actually a no-op right now, since it's not possible to have a
profile on a user that isn't the Admin user anyway. But one day such a
thing may be allowed, so this implementation is more future-proof and
safer.

Test: Manual verification that applying the restriction continues to
work properly a full user
Test: UserDetailsSettingsTest
Bug: 261469887

Change-Id: Ib19cecbd37b6efc90f9655565295e7856427f049
2024-01-31 16:14:38 -08:00
David Magno
6fdeb081ae Multiple users yields a search result despite being disabled
'Multiple users' still yields a search result, even if the multiple
users functionality is unavailable on the device.

Bug: 298548379
Test: Manual
(cherry picked from https://partner-android-review.googlesource.com/q/commit:e7afc620ef3d9d7b05835c9bf31394cecf3b77b5)
Merged-In: I224668afacc115326ca9279d7b99bfe7d95ee79c
Change-Id: I224668afacc115326ca9279d7b99bfe7d95ee79c
2024-01-30 19:26:36 +00:00
Anna Bauza
ac717e4dc2 Avatar sync functionality
Send information to avatar sync service that user selected confirm or cancel on edit user info dialog

Bug: 320656026
Test: manual
Change-Id: I84356b844d47ea7c07f662691f1e48eaca56b7d8
2024-01-18 08:01:44 +00:00
Tetiana Meronyk
ebfd6f87f4 Merge "Revert "Disable multiuser toggle om COPE device and add explanat..."" into main 2023-12-14 17:54:48 +00:00
Tetiana Meronyk
1a81a9e942 Revert "Disable multiuser toggle om COPE device and add explanat..."
Revert submission 25262217-fix_mu_for_cope

Reason for revert: This issue requires a different approach to the solution.

Reverted changes: /q/submissionid:25262217-fix_mu_for_cope

Change-Id: Ic6e8afd76cb0af88612cf5a6cd34a0c7f50759c4
2023-12-14 15:38:03 +00:00
Edgar Wang
6024953f02 Remove injecting multi-user settings into settings itself
- It can improve performance because we use less injected item

Bug: 242152448
Test: robotest
Change-Id: I892e1ac9c3f8297c489fc1fec934e9f5f2e2f5e9
2023-11-21 21:05:54 +08:00
Treehugger Robot
af25484200 Merge "Settings: remove multiple users search when multi-user not supported" into main am: 5a9826b844 am: 202b3b147b am: 12d5f62933
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2827270

Change-Id: Ica69ec04685462749e97c2afde61d307dd4564b6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-15 11:17:32 +00:00
Treehugger Robot
202b3b147b Merge "Settings: remove multiple users search when multi-user not supported" into main am: 5a9826b844
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2827270

Change-Id: I5a9b318d5ce194fc7b4623a1d68085dd43b4a4da
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-15 09:57:05 +00:00
hoffc
f336657508 Settings: remove multiple users search when multi-user not supported
When multi-user feature not supported in framework, SettingsIntelligence should not build the index of multiple users for searching.

Return empty list when multi-user feature not supported during building search index.

Change-Id: Id2fb8f2066784d63bbfd5c396da88b04306a3563
Bug: 310108420
2023-11-13 14:36:32 +08:00
Tetiana Meronyk
80ae4b3c41 Disable multiuser toggle om COPE device and add explanation dialog
Bug: 304359233
Test: set up device in COPE mode and check toggle in Settings -> System -> Multiple Users

Change-Id: I0edd58651f94c9f9a51349025a29e33a1e1a9c14
2023-11-09 14:46:55 +00:00
Chaohui Wang
c4a3a50d58 Migrate to CompoundButton
Switch and SwitchCompat are both CompoundButton.

Using CompoundButton in Java will helps migration in the future.

Bug: 306658427
Test: manual - on affected pages
Change-Id: I7cdc2601879a85d33f77239e38263320d5a6984e
2023-10-25 14:57:48 +08:00
Chaohui Wang
cfdb3b1f1b Migrate new() to SwitchPreferenceCompat
Bug: 306658427
Test: manual - on Settings pages
Change-Id: I258a8c63d5c46403c6d333a9d2f34c33cb35e27f
2023-10-24 14:05:34 +08:00
Chaohui Wang
15ca95a31b Migrate to TwoStatePreference
SwitchPreference and SwitchPreferenceCompat are both TwoStatePreference.

Using TwoStatePreference in Java will helps migration in the future.

Bug: 306771414
Test: manual - check Settings pages
Change-Id: I84e1d7b09451106797c2b23d127855c6976678ca
2023-10-23 09:28:57 +00:00
Manish Singh
6efc455f2c Show a separate tab for the Private Space
This covers all the known Settings pages using the tabbed view model.

https://docs.google.com/document/d/1CdjUjAE84-5ZEPRIfw5KYFjLVHtEZxc_sF0w95su8DA/edit?resourcekey=0-dAACT9HRexY1IyoxMmkVlw#heading=h.58jd58rmznte

Screenshots:
all apps
https://screenshot.googleplex.com/3E5Jm7Pi2JfN64r
with work tab:
https://screenshot.googleplex.com/8egk4yHK5jSENjR

PS Apps Special media management apps
https://screenshot.googleplex.com/BHHafqW7bgUwSGg
with work tab:
https://screenshot.googleplex.com/3cocdhruEmCCh5k

PS Location Services tab view
https://screenshot.googleplex.com/3DqJcT2BFTEpvYT
with work tab:
https://screenshot.googleplex.com/6Avpx6hxSrdGJw5

PS on screen keyboard tab view
https://screenshot.googleplex.com/4FzVNnBWwbUeJNw
with work tab:
https://screenshot.googleplex.com/8E8UhpWq8PL5nxU

PS password account tab view
https://screenshot.googleplex.com/6bDR4AKtth2S3EW
with work tab:
https://screenshot.googleplex.com/9msXV2TdHdJapch

PS storage tab view
https://screenshot.googleplex.com/5Nk2FTxwdmpEv3B
with work tab:
https://screenshot.googleplex.com/79tw2EaWZKfMsnC

PS appl_languages_work
https://screenshot.googleplex.com/3qrREeg3RQdHhhH

Bug: 302278487
Test: manual
Change-Id: I8cd39170827fbe251bc4075ef306206020b3a022
2023-10-11 12:32:17 +01:00
Tetiana Meronyk
8489ae99dc Revert "Disable multiuser toggle when more than 1 user is created"
Revert submission 24420426-multi_toggle

Reason for revert: This change needs to be done along with some other UI changes to avoid confusion

Reverted changes: /q/submissionid:24420426-multi_toggle

Change-Id: Ife2e03d0090fefcb4c1fa53dd007336759eb1bc7
2023-09-07 15:50:09 +00:00