From 541358b5d6334deacfd7997840c36786066f2bd4 Mon Sep 17 00:00:00 2001 From: Richard MacGregor Date: Tue, 25 Feb 2025 16:56:43 -0800 Subject: Reenable fallback for parent profile When setting role holder ensure the parent profile role fallback is reenabled Bug: 399184180 Flag: com.android.permission.flags.cross_user_role_ux_bugfix_enabled Relnote: N/A Test: atest RoleManagerMultiUserTest Change-Id: I64db7f9dcf13ef3da89f175f1b5512b229fd11d3 --- .../rolemultiuser/cts/RoleManagerMultiUserTest.kt | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) (limited to 'tests') diff --git a/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt index dc2ba42c6..3e24d5025 100644 --- a/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt +++ b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt @@ -481,6 +481,47 @@ class RoleManagerMultiUserTest { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) } + @RequireFlagsEnabled( + com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED, + com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_UX_BUGFIX_ENABLED, + ) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun addRoleHolderAsUserReenablesFallbackOnProfileParent() { + // Set other user as active + val initialUserReference = deviceState.initialUser() + val initialUser = initialUserReference.userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val profileParentRoleManager = getRoleManagerForUser(initialUserReference) + profileParentRoleManager.setRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, false) + assertThat( + profileParentRoleManager.isRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isFalse() + + val targetActiveUser = deviceState.workProfile().userHandle() + val future = CallbackFuture() + roleManager.addRoleHolderAsUser( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + targetActiveUser, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat( + profileParentRoleManager.isRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isTrue() + } + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) @EnsureHasPermission(MANAGE_DEFAULT_APPLICATIONS) @EnsureDoesNotHavePermission(INTERACT_ACROSS_USERS_FULL) @@ -575,6 +616,50 @@ class RoleManagerMultiUserTest { eventually { assertExpectedProfileHasRoleUsingGetDefaultApplication(targetActiveUser) } } + @RequireFlagsEnabled( + com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED, + com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_UX_BUGFIX_ENABLED, + ) + @EnsureHasPermission( + INTERACT_ACROSS_USERS_FULL, + MANAGE_DEFAULT_APPLICATIONS, + MANAGE_ROLE_HOLDERS, + ) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(java.lang.Exception::class) + fun setDefaultApplicationReenablesFallbackOnProfileParent() { + // Set other user as active + val initialUserReference = deviceState.initialUser() + val initialUser = initialUserReference.userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val profileParentRoleManager = getRoleManagerForUser(initialUserReference) + profileParentRoleManager.setRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, false) + assertThat( + profileParentRoleManager.isRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isFalse() + + val future = CallbackFuture() + getRoleManagerForUser(deviceState.workProfile()) + .setDefaultApplication( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat( + profileParentRoleManager.isRoleFallbackEnabled(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isTrue() + } + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) @EnsureCanAddUser -- cgit v1.2.3-59-g8ed1b