summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Severson <evanseverson@google.com>2022-06-16 21:39:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-06-16 21:39:23 +0000
commit66db3124fc936a80e2e1fe0c4804b6f9a5c8258f (patch)
tree8ce8f7a7018ab43fe720968769bc32ae1d5fb126
parentb677e14ac77b45f21e473f6e7779d6e70deafa74 (diff)
parent764e69633800aed6afa0194e0275e544d92360fe (diff)
downloadcts-66db3124fc936a80e2e1fe0c4804b6f9a5c8258f.tar.gz
Merge "Wrap LocationDisabledAppOpsTest in eventually loop" into tm-dev
-rw-r--r--tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java78
1 files changed, 41 insertions, 37 deletions
diff --git a/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java b/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
index 990d1deb11f..a70065cce07 100644
--- a/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
+++ b/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
@@ -19,6 +19,7 @@ package android.location.cts.none;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.OPSTR_FINE_LOCATION;
+import static com.android.compatibility.common.util.SystemUtil.eventually;
import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;
import android.app.ActivityManager;
@@ -26,7 +27,6 @@ import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.os.PackageTagsList;
import android.os.Process;
@@ -70,46 +70,50 @@ public class LocationDisabledAppOpsTest {
runWithShellPermissionIdentity(() -> {
mLm.setLocationEnabledForUser(false, user);
});
+ List<PackageInfo> pkgs =
+ mContext.getPackageManager().getInstalledPackagesAsUser(
+ 0, user.getIdentifier());
+
+ eventually(() -> {
+ List<String> bypassedNoteOps = new ArrayList<>();
+ List<String> bypassedCheckOps = new ArrayList<>();
+ for (PackageInfo pi : pkgs) {
+ ApplicationInfo ai = pi.applicationInfo;
+ if (ai.uid != Process.SYSTEM_UID) {
+ final int[] mode = {MODE_ALLOWED};
+ runWithShellPermissionIdentity(() -> {
+ mode[0] = mAom.noteOpNoThrow(
+ OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
+ });
+ if (mode[0] == MODE_ALLOWED && !ignoreList.containsAll(pi.packageName)) {
+ bypassedNoteOps.add(pi.packageName);
+ }
+
+
+ mode[0] = MODE_ALLOWED;
+ runWithShellPermissionIdentity(() -> {
+ mode[0] = mAom
+ .checkOpNoThrow(OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
+ });
+ if (mode[0] == MODE_ALLOWED && !ignoreList.includes(pi.packageName)) {
+ bypassedCheckOps.add(pi.packageName);
+ }
- List<String> bypassedNoteOps = new ArrayList<>();
- List<String> bypassedCheckOps = new ArrayList<>();
- for (PackageInfo pi : mContext.getPackageManager().getInstalledPackagesAsUser(
- 0, user.getIdentifier())) {
- ApplicationInfo ai = pi.applicationInfo;
- if (ai.uid != Process.SYSTEM_UID) {
- final int[] mode = {MODE_ALLOWED};
- runWithShellPermissionIdentity(() -> {
- mode[0] = mAom.noteOpNoThrow(
- OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
- });
- if (mode[0] == MODE_ALLOWED && !ignoreList.containsAll(pi.packageName)) {
- bypassedNoteOps.add(pi.packageName);
}
-
-
- mode[0] = MODE_ALLOWED;
- runWithShellPermissionIdentity(() -> {
- mode[0] = mAom.checkOpNoThrow(OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
- });
- if (mode[0] == MODE_ALLOWED && !ignoreList.includes(pi.packageName)) {
- bypassedCheckOps.add(pi.packageName);
- }
-
}
- }
-
- String msg = "";
- if (!bypassedNoteOps.isEmpty()) {
- msg += "Apps which still have access from noteOp " + bypassedNoteOps;
- }
- if (!bypassedCheckOps.isEmpty()) {
- msg += (msg.isEmpty() ? "" : "\n\n")
- + "Apps which still have access from checkOp " + bypassedCheckOps;
- }
- if(!msg.isEmpty()) {
- Assert.fail(msg);
- }
+ String msg = "";
+ if (!bypassedNoteOps.isEmpty()) {
+ msg += "Apps which still have access from noteOp " + bypassedNoteOps;
+ }
+ if (!bypassedCheckOps.isEmpty()) {
+ msg += (msg.isEmpty() ? "" : "\n\n")
+ + "Apps which still have access from checkOp " + bypassedCheckOps;
+ }
+ if (!msg.isEmpty()) {
+ Assert.fail(msg);
+ }
+ });
} finally {
runWithShellPermissionIdentity(() -> {
mLm.setLocationEnabledForUser(wasEnabled, user);