summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/res/xml/roles.xml5
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/behavior/v33/CompanionDeviceAppStreamingRoleBehavior.java4
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/behavior/v34/CompanionDeviceNearbyDeviceStreamingRoleBehavior.java4
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleBehavior.java (renamed from PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java)6
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/model/AppOp.java3
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/model/Permission.java3
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/model/Role.java2
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java3
-rw-r--r--PermissionController/role-controller/java/com/android/role/controller/util/RoleFlags.java12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/compat/AppPermissionFragmentCompat.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java (renamed from PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java)6
-rw-r--r--tests/cts/permission/AppThatAccessesLocationOnCommand/src/android/permission/cts/appthataccesseslocation/AccessLocationOnCommand.java97
-rw-r--r--tests/cts/permission/src/android/permission/cts/LocationAccessCheckTest.java58
-rw-r--r--tests/cts/role/src/android/app/role/cts/RoleManagerTest.java6
14 files changed, 113 insertions, 99 deletions
diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml
index 72e1d9654..0f9ff7112 100644
--- a/PermissionController/res/xml/roles.xml
+++ b/PermissionController/res/xml/roles.xml
@@ -1878,19 +1878,20 @@
-->
<role
name="android.app.role.RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY"
- behavior="ReservedForTestingProfileGroupExclusivityRoleBehavior"
+ behavior="v36.ReservedForTestingProfileGroupExclusivityRoleBehavior"
description="@string/role_for_testing_profile_group_exclusivity_description"
exclusive="true"
exclusivity="profileGroup"
fallBackToDefaultHolder="true"
featureFlag="com.android.permission.flags.Flags.crossUserRoleEnabled"
label="@string/role_for_testing_profile_group_exclusivity_label"
+ minSdkVersion="36"
requestable="true"
requestDescription="@string/role_for_testing_profile_group_exclusivity_request_description"
requestTitle="@string/role_for_testing_profile_group_exclusivity_request_title"
shortLabel="@string/role_for_testing_profile_group_exclusivity_short_label"
showNone="true"
- uiBehavior="ReservedForTestingProfileGroupExclusivityRoleUiBehavior"
+ uiBehavior="v36.ReservedForTestingProfileGroupExclusivityRoleUiBehavior"
visible="false"/>
<!---
diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/v33/CompanionDeviceAppStreamingRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/v33/CompanionDeviceAppStreamingRoleBehavior.java
index e99ffb58c..85c4be569 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/behavior/v33/CompanionDeviceAppStreamingRoleBehavior.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/v33/CompanionDeviceAppStreamingRoleBehavior.java
@@ -22,10 +22,10 @@ import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+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.NotificationUtils;
-import com.android.role.controller.util.RoleFlags;
import com.android.role.controller.util.UserUtils;
/**
@@ -52,6 +52,6 @@ public class CompanionDeviceAppStreamingRoleBehavior implements RoleBehavior {
@Override
@Nullable
public Boolean shouldAllowBypassingQualification(@NonNull Role role, @NonNull Context context) {
- return !RoleFlags.isAtLeastB();
+ return !SdkLevel.isAtLeastB();
}
}
diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/v34/CompanionDeviceNearbyDeviceStreamingRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/v34/CompanionDeviceNearbyDeviceStreamingRoleBehavior.java
index b0f58f40b..f941ec68d 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/behavior/v34/CompanionDeviceNearbyDeviceStreamingRoleBehavior.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/v34/CompanionDeviceNearbyDeviceStreamingRoleBehavior.java
@@ -21,9 +21,9 @@ import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+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.RoleFlags;
/**
* Class for behavior of the "Nearby Device Streaming" Companion device profile role.
@@ -33,6 +33,6 @@ public class CompanionDeviceNearbyDeviceStreamingRoleBehavior implements RoleBeh
@Override
@Nullable
public Boolean shouldAllowBypassingQualification(@NonNull Role role, @NonNull Context context) {
- return !RoleFlags.isAtLeastB();
+ return !SdkLevel.isAtLeastB();
}
}
diff --git a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java b/PermissionController/role-controller/java/com/android/role/controller/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleBehavior.java
index 5299886f6..e50f33ffd 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/behavior/ReservedForTestingProfileGroupExclusivityRoleBehavior.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleBehavior.java
@@ -14,15 +14,17 @@
* limitations under the License.
*/
-package com.android.role.controller.behavior;
+package com.android.role.controller.behavior.v36;
import android.app.role.RoleManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
+import android.os.Build;
import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
import com.android.role.controller.model.Role;
import com.android.role.controller.model.RoleBehavior;
@@ -33,7 +35,7 @@ import com.android.role.controller.util.UserUtils;
import java.util.ArrayList;
import java.util.List;
-// TODO(b/383538899): make minSdk36
+@RequiresApi(Build.VERSION_CODES.BAKLAVA)
public class ReservedForTestingProfileGroupExclusivityRoleBehavior implements RoleBehavior {
@Nullable
@Override
diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/AppOp.java b/PermissionController/role-controller/java/com/android/role/controller/model/AppOp.java
index 99145c747..a0007dcc0 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/model/AppOp.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/model/AppOp.java
@@ -26,7 +26,6 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.modules.utils.build.SdkLevel;
-import com.android.role.controller.util.RoleFlags;
import com.android.role.controller.util.PackageUtils;
import java.util.Objects;
@@ -139,7 +138,7 @@ public class AppOp {
}
return Build.VERSION.SDK_INT >= mMinSdkVersion
// Workaround to match the value 36 for B in roles.xml before SDK finalization.
- || (mMinSdkVersion == 36 && RoleFlags.isAtLeastB());
+ || (mMinSdkVersion == 36 && SdkLevel.isAtLeastB());
}
private boolean isAvailableAsUser(@NonNull String packageName,
diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/Permission.java b/PermissionController/role-controller/java/com/android/role/controller/model/Permission.java
index 889f5263d..c3404be8b 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/model/Permission.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/model/Permission.java
@@ -26,7 +26,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.modules.utils.build.SdkLevel;
-import com.android.role.controller.util.RoleFlags;
import com.android.role.controller.util.UserUtils;
import java.util.Objects;
@@ -99,7 +98,7 @@ public class Permission {
}
if (Build.VERSION.SDK_INT >= mMinSdkVersion
// Workaround to match the value 36 for B in roles.xml before SDK finalization.
- || (mMinSdkVersion == 36 && RoleFlags.isAtLeastB())) {
+ || (mMinSdkVersion == 36 && SdkLevel.isAtLeastB())) {
return true;
}
if (Build.VERSION.SDK_INT >= mOptionalMinSdkVersion) {
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 f0df97acc..1b7617b0d 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
@@ -501,7 +501,7 @@ public class Role {
}
return (Build.VERSION.SDK_INT >= mMinSdkVersion
// Workaround to match the value 36 for B in roles.xml before SDK finalization.
- || (mMinSdkVersion == 36 && RoleFlags.isAtLeastB()))
+ || (mMinSdkVersion == 36 && SdkLevel.isAtLeastB()))
&& Build.VERSION.SDK_INT <= mMaxSdkVersion;
}
diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java
index 9c3746b79..f0a730647 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/model/RoleParser.java
@@ -436,10 +436,9 @@ public class RoleParser {
exclusivity = Role.EXCLUSIVITY_USER;
break;
case EXCLUSIVITY_PROFILE_GROUP:
- // TODO(b/372743073): change to isAtLeastB once available
// EXCLUSIVITY_PROFILE behavior only available for B+
// fallback to default of EXCLUSIVITY_USER
- exclusivity = SdkLevel.isAtLeastV()
+ exclusivity = SdkLevel.isAtLeastB()
? Role.EXCLUSIVITY_PROFILE_GROUP
: Role.EXCLUSIVITY_USER;
break;
diff --git a/PermissionController/role-controller/java/com/android/role/controller/util/RoleFlags.java b/PermissionController/role-controller/java/com/android/role/controller/util/RoleFlags.java
index 2c5a247b6..23e3a2c65 100644
--- a/PermissionController/role-controller/java/com/android/role/controller/util/RoleFlags.java
+++ b/PermissionController/role-controller/java/com/android/role/controller/util/RoleFlags.java
@@ -20,7 +20,7 @@ import android.os.Build;
import androidx.annotation.ChecksSdkIntAtLeast;
-import java.util.Objects;
+import com.android.modules.utils.build.SdkLevel;
/** Util class for getting shared feature flag check logic. */
public final class RoleFlags {
@@ -32,14 +32,6 @@ public final class RoleFlags {
*/
@ChecksSdkIntAtLeast(api = Build.VERSION_CODES.BAKLAVA)
public static boolean isProfileGroupExclusivityAvailable() {
- // TODO(b/372743073): change to isAtLeastB once available
- return isAtLeastB() && com.android.permission.flags.Flags.crossUserRoleEnabled();
- }
-
- // TODO(b/372743073): remove once SdkLevel.isAtLeastB available
- @ChecksSdkIntAtLeast(api = 36 /* BUILD_VERSION_CODES.Baklava */)
- public static boolean isAtLeastB() {
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA
- || Objects.equals(Build.VERSION.CODENAME, "Baklava");
+ return SdkLevel.isAtLeastB() && com.android.permission.flags.Flags.crossUserRoleEnabled();
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/compat/AppPermissionFragmentCompat.java b/PermissionController/src/com/android/permissioncontroller/permission/compat/AppPermissionFragmentCompat.java
index a5234562b..50e3688e2 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/compat/AppPermissionFragmentCompat.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/compat/AppPermissionFragmentCompat.java
@@ -33,7 +33,6 @@ import com.android.permission.flags.Flags;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.handheld.max35.LegacyAppPermissionFragment;
import com.android.permissioncontroller.permission.ui.handheld.v36.AppPermissionFragment;
-import com.android.role.controller.util.RoleFlags;
/** Helper methods for AppPermissionFragment across SDKs for compatibility. */
public class AppPermissionFragmentCompat {
@@ -45,7 +44,7 @@ public class AppPermissionFragmentCompat {
*/
@NonNull
public static PreferenceFragmentCompat createFragment(@NonNull Context context) {
- if ((RoleFlags.isAtLeastB() && Flags.appPermissionFragmentUsesPreferences())
+ if ((SdkLevel.isAtLeastB() && Flags.appPermissionFragmentUsesPreferences())
|| (SdkLevel.isAtLeastV() && context.getResources().getBoolean(
R.bool.config_usePreferenceForAppPermissionSettings))) {
return new AppPermissionFragment();
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java
index be51a1e17..00b1ce5b1 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/behavior/v36/ReservedForTestingProfileGroupExclusivityRoleUiBehavior.java
@@ -14,23 +14,27 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.role.ui.behavior;
+package com.android.permissioncontroller.role.ui.behavior.v36;
import android.content.Context;
import android.content.pm.ApplicationInfo;
+import android.os.Build;
import android.os.UserHandle;
import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
import androidx.preference.Preference;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.permissioncontroller.role.ui.RequestRoleItemView;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.role.ui.behavior.RoleUiBehavior;
import com.android.role.controller.model.Role;
import com.android.role.controller.util.UserUtils;
import java.util.List;
+@RequiresApi(Build.VERSION_CODES.BAKLAVA)
public class ReservedForTestingProfileGroupExclusivityRoleUiBehavior implements RoleUiBehavior {
@Override
public void preparePreferenceAsUser(@NonNull Role role, @NonNull TwoTargetPreference preference,
diff --git a/tests/cts/permission/AppThatAccessesLocationOnCommand/src/android/permission/cts/appthataccesseslocation/AccessLocationOnCommand.java b/tests/cts/permission/AppThatAccessesLocationOnCommand/src/android/permission/cts/appthataccesseslocation/AccessLocationOnCommand.java
index fae03d973..75f4a0ce5 100644
--- a/tests/cts/permission/AppThatAccessesLocationOnCommand/src/android/permission/cts/appthataccesseslocation/AccessLocationOnCommand.java
+++ b/tests/cts/permission/AppThatAccessesLocationOnCommand/src/android/permission/cts/appthataccesseslocation/AccessLocationOnCommand.java
@@ -16,6 +16,8 @@
package android.permission.cts.appthataccesseslocation;
+import static android.location.Criteria.ACCURACY_FINE;
+
import android.app.Service;
import android.content.Intent;
import android.location.Criteria;
@@ -25,83 +27,42 @@ import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
-import android.os.SystemClock;
-
-import java.util.Timer;
-import java.util.TimerTask;
-
-public class AccessLocationOnCommand extends Service implements LocationListener {
- private static final String TEST_PROVIDER = "test_provider";
- private LocationManager mLocationManager;
- private IAccessLocationOnCommand.Stub mBinder;
- private final LocationListener mLocationListener = this;
- private final Timer mTimer = new Timer();
-
- private void updateMockLocation() {
- final Location location = new Location(TEST_PROVIDER);
- location.setLatitude(35.657f);
- location.setLongitude(139.703f);
- location.setAccuracy(1.0f);
- location.setTime(System.currentTimeMillis());
- location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
- mLocationManager.setTestProviderLocation(TEST_PROVIDER, location);
- }
+public class AccessLocationOnCommand extends Service {
+ private IAccessLocationOnCommand.Stub mBinder = new IAccessLocationOnCommand.Stub() {
+ public void accessLocation() {
+ Criteria crit = new Criteria();
+ crit.setAccuracy(ACCURACY_FINE);
+
+ AccessLocationOnCommand.this.getSystemService(LocationManager.class)
+ .requestSingleUpdate(crit, new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status,
+ Bundle extras) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+ }, Looper.getMainLooper());
+ }
+ };
@Override
public IBinder onBind(Intent intent) {
- mLocationManager = getSystemService(LocationManager.class);
-
- mLocationManager.addTestProvider(TEST_PROVIDER,
- /* requiresNetwork= */true,
- /* requiresSatellite= */false,
- /* requiresCell= */true,
- /* hasMonetaryCost= */false,
- /* supportsAltitude= */false,
- /* supportsSpeed= */false,
- /* supportsBearing= */false,
- Criteria.POWER_HIGH,
- Criteria.ACCURACY_FINE);
- mLocationManager.setTestProviderEnabled(TEST_PROVIDER, true);
-
- mTimer.schedule(new TimerTask() {
- @Override
- public void run() {
- updateMockLocation();
- }
- }, 0, 1000);
-
- mBinder = new IAccessLocationOnCommand.Stub() {
- public void accessLocation() {
- mLocationManager.requestSingleUpdate(
- TEST_PROVIDER, mLocationListener, Looper.getMainLooper());
- }
- };
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
- mTimer.cancel();
- mLocationManager.removeTestProvider(TEST_PROVIDER);
return true;
}
-
- @Override
- public void onLocationChanged(Location location) {
- }
-
- @Override
- public void onStatusChanged(String provider, int status,
- Bundle extras) {
- }
-
- @Override
- public void onProviderEnabled(String provider) {
- }
-
- @Override
- public void onProviderDisabled(String provider) {
- }
-
}
diff --git a/tests/cts/permission/src/android/permission/cts/LocationAccessCheckTest.java b/tests/cts/permission/src/android/permission/cts/LocationAccessCheckTest.java
index 799a43fe3..024a89f2e 100644
--- a/tests/cts/permission/src/android/permission/cts/LocationAccessCheckTest.java
+++ b/tests/cts/permission/src/android/permission/cts/LocationAccessCheckTest.java
@@ -22,6 +22,7 @@ import static android.app.AppOpsManager.OPSTR_FINE_LOCATION;
import static android.app.AppOpsManager.OP_FLAGS_ALL_TRUSTED;
import static android.content.Context.BIND_AUTO_CREATE;
import static android.content.Context.BIND_NOT_FOREGROUND;
+import static android.location.Criteria.ACCURACY_FINE;
import static android.os.Process.myUserHandle;
import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_DELAY_MILLIS;
import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_INTERVAL_MILLIS;
@@ -37,6 +38,8 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.AppOpsManager;
@@ -48,9 +51,14 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
+import android.location.Criteria;
+import android.location.Location;
+import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
+import android.os.Bundle;
import android.os.IBinder;
+import android.os.Looper;
import android.os.Process;
import android.permission.cts.appthataccesseslocation.IAccessLocationOnCommand;
import android.platform.test.annotations.AppModeFull;
@@ -83,6 +91,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
+import java.util.concurrent.CountDownLatch;
/**
* Tests the {@code LocationAccessCheck} in permission controller.
@@ -135,6 +144,13 @@ public class LocationAccessCheckTest {
"com.android.permissioncontroller.permission.service"
+ ".LocationAccessCheck$SetupPeriodicBackgroundLocationAccessCheck";
+
+ /**
+ * The result of {@link #assumeCanGetFineLocation()}, so we don't have to run it over and over
+ * again.
+ */
+ private static Boolean sCanAccessFineLocation = null;
+
private static ServiceConnection sConnection;
private static IAccessLocationOnCommand sLocationAccessor;
@@ -395,7 +411,6 @@ public class LocationAccessCheckTest {
assertTrue(output.contains("Success"));
// Wait for user sensitive to be updated, which is checked by LocationAccessCheck.
Thread.sleep(5000);
- runShellCommand("cmd appops set " + TEST_APP_PKG + " android:mock_location allow");
}
public static void uninstallTestApp() {
@@ -464,6 +479,7 @@ public class LocationAccessCheckTest {
wakeUpAndDismissKeyguard();
bindService();
resetPermissionControllerBeforeEachTest();
+ assumeCanGetFineLocation();
}
/**
@@ -486,6 +502,46 @@ public class LocationAccessCheckTest {
}
/**
+ * Make sure fine location can be accessed at all.
+ */
+ public void assumeCanGetFineLocation() {
+ if (sCanAccessFineLocation == null) {
+ Criteria crit = new Criteria();
+ crit.setAccuracy(ACCURACY_FINE);
+
+ CountDownLatch locationCounter = new CountDownLatch(1);
+ sContext.getSystemService(LocationManager.class).requestSingleUpdate(crit,
+ new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ locationCounter.countDown();
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+ }, Looper.getMainLooper());
+
+
+ try {
+ sCanAccessFineLocation = locationCounter.await(LOCATION_ACCESS_TIMEOUT_MILLIS,
+ MILLISECONDS);
+ } catch (InterruptedException ignored) {
+ }
+ }
+
+ assumeTrue(sCanAccessFineLocation);
+ }
+
+ /**
* Reset the permission controllers state.
*/
private static void resetPermissionController() throws Throwable {
diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java
index bf1e32676..5e61c66be 100644
--- a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java
+++ b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java
@@ -47,7 +47,6 @@ import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
import android.permission.flags.Flags;
-import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
@@ -170,6 +169,9 @@ public class RoleManagerTest {
? By.text("Don\u2019t ask again")
: By.res("com.android.permissioncontroller:id/dont_ask_again");
+ private static final BySelector PERMISSION_APP_LABEL =
+ By.pkg(sPackageManager.getPermissionControllerPackageName()).text(APP_LABEL);
+
@Rule
public CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Rule
@@ -473,7 +475,7 @@ public class RoleManagerTest {
private void respondToRoleRequest(boolean allow)
throws InterruptedException, UiObjectNotFoundException {
if (allow) {
- waitFindObject(By.text(APP_LABEL)).click();
+ waitFindObject(PERMISSION_APP_LABEL).click();
}
Pair<Integer, Intent> result = clickButtonAndWaitForResult(allow);
int expectedResult = allow ? Activity.RESULT_OK : Activity.RESULT_CANCELED;