Change the data structure of restrictions in UM
Background
* In an org-owned managed profile device, two admins
can set user restrictions on a user. The current
data structure of local user restrictions uses a
SparseArray<Bundle> where the key is the userId
and the value is the restriction bundle.
* The existing data structure cannot store both the
target userId and the originating userId.
Changes
* Introduces RestrictionsSet data structure, which is now
used as a replacement of SparseArray<Bundle>.
* Updates the data structure of local restrictions to
SparseArray<RestrictionsSet>. The first key is the
target userId and the second key is the originating userId.
* targetUserId -> originatingUserId -> restrictionBundle
* Numerous methods in UserManagerService and
UserRestrictionsUtils had to be changed to support this.
There will be follow up changes to move the logic of
sorting the restrictions into local and global restrictions
to DPMS.
Bug: 149743941
Test: atest com.android.server.pm.UserManagerTest
atest com.android.server.pm.RestrictionsSetTest
atest com.android.server.pm.UserRestrictionsUtilsTest
atest com.android.cts.devicepolicy.UserRestrictionsTest
Change-Id: I08c9d60aa7a5e7cc3c661aaa4ba6dcd4f218323b
6 files changed