diff options
author | 2024-12-17 15:17:07 -0800 | |
---|---|---|
committer | 2024-12-20 19:00:03 -0800 | |
commit | ecbca45fbeec49dcd0c0f805cd3de43641d3a54f (patch) | |
tree | c76a4d71b3b7b13fc8b34d2dbf203808df2325a4 /PermissionController | |
parent | c2ca640029c2888f42fcba1be218691cce303be4 (diff) |
Fix selecting none default app
Fix selection of "none" default apps when the current active user for a
profile group exclusive role is not the primary user
LOW_COVERAGE_REASON=FLAG_NOT_ENABLED
Bug: 382688491
Flag: com.android.permission.flags.cross_user_role_enabled
Relnote: N/A
Test: atest RoleManagerTest
Test: atest RoleManagerMultiUserTest
Change-Id: Id362c17ac9ae937228667f3617eb937d97d90111
Diffstat (limited to 'PermissionController')
4 files changed, 21 insertions, 6 deletions
diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/Role.java b/PermissionController/role-controller/java/com/android/role/controller/model/Role.java index 118cb25a1..c09cb197d 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/Role.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/Role.java @@ -1086,6 +1086,11 @@ public class Role { */ public void onNoneHolderSelectedAsUser(@NonNull UserHandle user, @NonNull Context context) { RoleManagerCompat.setRoleFallbackEnabledAsUser(this, false, user, context); + if (RoleFlags.isProfileGroupExclusivityAvailable() + && getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP) { + RoleManager roleManager = context.getSystemService(RoleManager.class); + roleManager.setActiveUserForRole(mName, user, 0); + } } /** diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java index a8bc44877..cdee94b13 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java @@ -110,12 +110,15 @@ public class DefaultAppViewModel extends AndroidViewModel { */ public void setNoneDefaultApp() { Context context = getApplication(); - mRole.onNoneHolderSelectedAsUser(mUser, context); + UserHandle user = mRole.getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP + ? UserUtils.getProfileParentOrSelf(mUser, context) + : mUser; + mRole.onNoneHolderSelectedAsUser(user, context); if (mManageRoleHolderStateLiveData.getValue() != ManageRoleHolderStateLiveData.STATE_IDLE) { Log.i(LOG_TAG, "Trying to set default app while another request is on-going"); return; } - mManageRoleHolderStateLiveData.clearRoleHoldersAsUser(mRole.getName(), 0, mUser, context); + mManageRoleHolderStateLiveData.clearRoleHoldersAsUser(mRole.getName(), 0, user, context); } /** diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java index e7b6dcc4c..234554193 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java @@ -57,6 +57,7 @@ import com.android.permissioncontroller.role.model.UserDeniedManager; import com.android.permissioncontroller.role.utils.PackageUtils; import com.android.permissioncontroller.role.utils.RoleUiBehaviorUtils; import com.android.permissioncontroller.role.utils.UiUtils; +import com.android.permissioncontroller.role.utils.UserUtils; import com.android.role.controller.model.Role; import com.android.role.controller.model.Roles; @@ -301,8 +302,9 @@ public class RequestRoleFragment extends DialogFragment { reportRequestResult(PermissionControllerStatsLog .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_GRANTED_ANOTHER, null); - // TODO(b/382688491): add support for "none" for profile group exclusive roles - UserHandle user = Process.myUserHandle(); + UserHandle user = mRole.getExclusivity() == Role.EXCLUSIVITY_PROFILE_GROUP + ? UserUtils.getProfileParentOrSelf(Process.myUserHandle(), context) + : Process.myUserHandle(); mRole.onNoneHolderSelectedAsUser(user, context); mViewModel.getManageRoleHolderStateLiveData().clearRoleHoldersAsUser(mRoleName, 0, user, context); diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRequestRoleFragment.kt b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRequestRoleFragment.kt index 5406fc904..af8dc5e92 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRequestRoleFragment.kt +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRequestRoleFragment.kt @@ -39,6 +39,7 @@ import com.android.permissioncontroller.role.ui.RequestRoleViewModel import com.android.permissioncontroller.role.ui.wear.model.WearRequestRoleViewModel import com.android.permissioncontroller.role.ui.wear.model.WearRequestRoleViewModelFactory import com.android.permissioncontroller.role.utils.PackageUtils +import com.android.permissioncontroller.role.utils.UserUtils import com.android.role.controller.model.Role import com.android.role.controller.model.Roles import java.util.Objects @@ -276,8 +277,12 @@ class WearRequestRoleFragment : Fragment() { .ROLE_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_GRANTED_ANOTHER, null, ) - // TODO(b/382688491): add support for "none" for profile group exclusive roles - val user: UserHandle = Process.myUserHandle() + val user: UserHandle = + if (role.exclusivity == Role.EXCLUSIVITY_PROFILE_GROUP) { + UserUtils.getProfileParentOrSelf(Process.myUserHandle(), context) + } else { + Process.myUserHandle() + } role.onNoneHolderSelectedAsUser(user, context) viewModel.manageRoleHolderStateLiveData.clearRoleHoldersAsUser( roleName, |