Scan Optimization: Check set device mobility permission is granted to <= 1 app

Add a new CTS test to ensure that set device mobility permission is
granted to at most 1 app.

Bug: 120097108
Test: "atest WifiManagerTest" after installing app with new
permission granted
Change-Id: Ifda2163da6da9e9365c440d47031d25f92c6c375
This commit is contained in:
David Su
2018-11-28 09:25:43 -08:00
parent 8c9f1ec580
commit 4b1386285a

View File

@@ -58,6 +58,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
public class WifiManagerTest extends AndroidTestCase {
private static class MySync {
@@ -998,6 +999,30 @@ public class WifiManagerTest extends AndroidTestCase {
}
}
/**
* Verify that the {@link android.Manifest.permission#WIFI_SET_DEVICE_MOBILITY_STATE} permission
* is held by at most one application.
*/
public void testWifiSetDeviceMobilityStatePermission() {
final PackageManager pm = getContext().getPackageManager();
final List<PackageInfo> holding = pm.getPackagesHoldingPermissions(new String[] {
android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE
}, PackageManager.MATCH_UNINSTALLED_PACKAGES);
List<String> uniquePackageNames = holding
.stream()
.map(pi -> pi.packageName)
.distinct()
.collect(Collectors.toList());
if (uniquePackageNames.size() > 1) {
fail("The WIFI_SET_DEVICE_MOBILITY_STATE permission must not be held by more than one "
+ "application, but is held by " + uniquePackageNames.size() + " applications: "
+ String.join(", ", uniquePackageNames));
}
}
private void turnScreenOnNoDelay() throws Exception {
mUiDevice.executeShellCommand("input keyevent KEYCODE_WAKEUP");
mUiDevice.executeShellCommand("wm dismiss-keyguard");