summaryrefslogtreecommitdiff
path: root/PermissionController
diff options
context:
space:
mode:
author Richard MacGregor <rmacgregor@google.com> 2024-12-17 15:17:07 -0800
committer Richard MacGregor <rmacgregor@google.com> 2024-12-20 19:00:03 -0800
commitecbca45fbeec49dcd0c0f805cd3de43641d3a54f (patch)
treec76a4d71b3b7b13fc8b34d2dbf203808df2325a4 /PermissionController
parentc2ca640029c2888f42fcba1be218691cce303be4 (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')
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/model/Role.java5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppViewModel.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRequestRoleFragment.kt9
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,