Merge "Fix testNetworkSettingsPermission for headless User 0" into qt-dev am: e49034996e
am: 34d56ee82c
Change-Id: I4804c913b304d04e286f53adaa359819abae60db
diff --git a/tests/cts/net/AndroidManifest.xml b/tests/cts/net/AndroidManifest.xml
index 44a00ef..c2b3bf7 100644
--- a/tests/cts/net/AndroidManifest.xml
+++ b/tests/cts/net/AndroidManifest.xml
@@ -27,6 +27,7 @@
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
diff --git a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
index d8c7dc8..0ef5cd9 100644
--- a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
@@ -36,6 +36,7 @@
import android.net.wifi.hotspot2.pps.HomeSp;
import android.os.Process;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.platform.test.annotations.AppModeFull;
import android.provider.Settings;
import android.support.test.uiautomator.UiDevice;
@@ -771,21 +772,20 @@
}, PackageManager.MATCH_UNINSTALLED_PACKAGES);
for (PackageInfo pi : holding) {
String packageName = pi.packageName;
- if (allowedPackages.contains(packageName)) {
- // this is an explicitly allowed package
- } else {
- // now check if the packages are from allowed UIDs
- boolean allowed = false;
- try {
- if (allowedUIDs.contains(pm.getPackageUid(packageName, 0))) {
- allowed = true;
- Log.d(TAG, packageName + " is on an allowed UID");
- }
- } catch (PackageManager.NameNotFoundException e) { }
- if (!allowed) {
- fail("The NETWORK_SETTINGS permission must not be held by "
- + packageName + " and must be revoked for security reasons");
- }
+
+ // this is an explicitly allowed package
+ if (allowedPackages.contains(packageName)) continue;
+
+ // now check if the packages are from allowed UIDs
+ int uid = -1;
+ try {
+ uid = pm.getPackageUidAsUser(packageName, UserHandle.USER_SYSTEM);
+ } catch (PackageManager.NameNotFoundException e) {
+ continue;
+ }
+ if (!allowedUIDs.contains(uid)) {
+ fail("The NETWORK_SETTINGS permission must not be held by " + packageName
+ + ":" + uid + " and must be revoked for security reasons");
}
}
}