summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/res/xml/roles.xml2
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/behavior/v35/WalletRoleBehavior.java22
-rw-r--r--flags/Android.bp7
-rw-r--r--tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt10
-rw-r--r--tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt3
5 files changed, 39 insertions, 5 deletions
diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml
index 3c61d1569..b5d4db798 100644
--- a/PermissionController/res/xml/roles.xml
+++ b/PermissionController/res/xml/roles.xml
@@ -1830,7 +1830,7 @@
defaultHolders="config_defaultWallet"
description="@string/role_wallet_description"
exclusive="true"
- exclusivity="user"
+ exclusivity="profileGroup"
label="@string/role_wallet_label"
minSdkVersion="35"
overrideUserWhenGranting="true"
diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/v35/WalletRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/v35/WalletRoleBehavior.java
index d01e59456..aed71564d 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/behavior/v35/WalletRoleBehavior.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/v35/WalletRoleBehavior.java
@@ -41,6 +41,7 @@ import com.android.modules.utils.build.SdkLevel;
import com.android.role.controller.model.Role;
import com.android.role.controller.model.RoleBehavior;
import com.android.role.controller.util.CollectionUtils;
+import com.android.role.controller.util.RoleFlags;
import com.android.role.controller.util.UserUtils;
import org.xmlpull.v1.XmlPullParserException;
@@ -62,8 +63,25 @@ public class WalletRoleBehavior implements RoleBehavior {
@Override
public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
- return SdkLevel.isAtLeastV() && Flags.walletRoleEnabled()
- && !UserUtils.isProfile(user, context);
+ if (!(SdkLevel.isAtLeastV() && Flags.walletRoleEnabled())) {
+ return false;
+ }
+
+ if (Flags.walletRoleCrossUserEnabled() && RoleFlags.isProfileGroupExclusivityAvailable()) {
+ return !UserUtils.isPrivateProfile(user, context);
+ } else {
+ return !UserUtils.isProfile(user, context);
+ }
+ }
+
+ @Nullable
+ @Override
+ public Integer getExclusivity() {
+ if (Flags.walletRoleCrossUserEnabled() && RoleFlags.isProfileGroupExclusivityAvailable()) {
+ return Role.EXCLUSIVITY_PROFILE_GROUP;
+ }
+
+ return Role.EXCLUSIVITY_USER;
}
@Nullable
diff --git a/flags/Android.bp b/flags/Android.bp
index d22da26c3..166e55492 100644
--- a/flags/Android.bp
+++ b/flags/Android.bp
@@ -30,15 +30,18 @@ java_aconfig_library {
name: "com.android.permission.flags-aconfig-java-export",
aconfig_declarations: "com.android.permission.flags-aconfig",
mode: "exported",
- sdk_version: "module_current",
+ defaults: ["framework-minus-apex-aconfig-java-defaults"],
min_sdk_version: "30",
installable: false,
- libs: ["framework-configinfrastructure.stubs.module_lib"],
visibility: [
+ "//frameworks/base",
"//packages/modules/Permission:__subpackages__",
+ "//packages/modules/Nfc:__subpackages__",
"//vendor:__subpackages__",
],
apex_available: [
+ "//apex_available:platform",
+ "com.android.nfcservices",
"com.android.permission",
"test_com.android.permission",
],
diff --git a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
index 9ec09dab7..596178b70 100644
--- a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
+++ b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
@@ -29,6 +29,7 @@ import android.platform.test.annotations.AppModeFull
import android.platform.test.annotations.RequiresFlagsEnabled
import android.platform.test.flag.junit.CheckFlagsRule
import android.platform.test.flag.junit.DeviceFlagsValueProvider
+import androidx.test.filters.FlakyTest
import androidx.test.filters.SdkSuppress
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.By
@@ -204,6 +205,7 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
}
@RequiresFlagsEnabled(Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)
+ @FlakyTest(bugId = 387927331)
@Test
fun grantDialogBlocksRestrictedGroupsThenRequestsUnrestrictedGroupsDespiteOutOfOrderRequest() {
installPackageWithInstallSourceFromDownloadedFileAndAllowHardRestrictedPerms(
@@ -219,6 +221,8 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
waitForWindowTransition = false
) {
clickECMAlertDialogOKButton()
+ // TODO: b/387927331 - On some targets, grant dialog hangs after this click
+ Thread.sleep(3_000L)
clickPermissionRequestDenyButton()
}
assertTrue(isClearRestrictionAllowed(APP_PACKAGE_NAME))
@@ -234,6 +238,7 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
}
@RequiresFlagsEnabled(Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)
+ @FlakyTest(bugId = 387927331)
@Test
fun grantDialogBlocksRestrictedGroupsThenRequestsUnrestrictedHighPriorityGroups() {
installPackageWithInstallSourceFromDownloadedFileAndAllowHardRestrictedPerms(
@@ -247,12 +252,15 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
waitForWindowTransition = false
) {
clickECMAlertDialogOKButton()
+ // TODO: b/387927331 - On some targets, grant dialog hangs after this click
+ Thread.sleep(3_000L)
clickPermissionRequestAllowForegroundButton()
}
assertTrue(isClearRestrictionAllowed(APP_PACKAGE_NAME))
}
@RequiresFlagsEnabled(Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)
+ @FlakyTest(bugId = 390440965)
@Test
fun grantDialogBlocksRestrictedGroupsThenRequestsUnrestrictedLowPriorityGroups() {
installPackageWithInstallSourceFromDownloadedFileAndAllowHardRestrictedPerms(
@@ -266,6 +274,8 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
waitForWindowTransition = false
) {
clickECMAlertDialogOKButton()
+ // TODO: b/387927331 - On some targets, grant dialog hangs after this click
+ Thread.sleep(3_000L)
clickPermissionRequestAllowForegroundButton()
}
assertTrue(isClearRestrictionAllowed(APP_PACKAGE_NAME))
diff --git a/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt
index 176010cf5..d2086a06a 100644
--- a/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt
+++ b/tests/cts/permissionui/src/android/permissionui/cts/LocationAccuracyTest.kt
@@ -25,6 +25,7 @@ import com.android.modules.utils.build.SdkLevel
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeTrue
import org.junit.Before
+import org.junit.Ignore
import org.junit.Test
@FlakyTest
@@ -50,6 +51,8 @@ class LocationAccuracyTest : BaseUsePermissionTest() {
}
@Test
+ @Ignore("b/390440965")
+ // Ignore this test until the cause of flakiness is identified.
fun testCoarsePermissionIsGranted() {
installPackage(APP_APK_PATH_31)