diff options
author | Evan Severson <evanseverson@google.com> | 2022-06-16 21:39:23 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-06-16 21:39:23 +0000 |
commit | 66db3124fc936a80e2e1fe0c4804b6f9a5c8258f (patch) | |
tree | 8ce8f7a7018ab43fe720968769bc32ae1d5fb126 | |
parent | b677e14ac77b45f21e473f6e7779d6e70deafa74 (diff) | |
parent | 764e69633800aed6afa0194e0275e544d92360fe (diff) | |
download | cts-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.java | 78 |
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); |