Fix testNetworkSettingsPermission for headless User 0

This test fails on devices with headless user 0 when it tries to
verify apps with android:sharedUserId="android.uid.system" (and without
explicit ask for NETWORK_SETTINGS). Such apps get this permission
by default, but when running on user 1 they get UID 1001000, what doesn't
match SYSTEM_UID=1000.

By the chance of modifying this code, let's also add more verbose error
message (with UID), simplify it and reduce indentation count.

Bug: 120143468
Test: atest android.net.wifi.cts.WifiManagerTest#testNetworkSettingsPermission
Change-Id: Ifc09320cf738a518003126fad1ce31f5e38a3aff
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 7576450..fbf1abd 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;
@@ -770,21 +771,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");
             }
         }
     }