Merge "Reflect Wifi config lockdown restriction in Settings" into mnc-dev
diff --git a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
index 1444ad5..2d200b5 100644
--- a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
+++ b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
@@ -147,7 +147,7 @@
                 mSelectedAccessPoint = mDlgAccessPoint;
 
                 // Hide forget button if config editing is locked down
-                final boolean hideForgetButton = WifiSettings.isCreatorDeviceOwner(getActivity(),
+                final boolean hideForgetButton = WifiSettings.isEditabilityLockedDown(getActivity(),
                         mDlgAccessPoint.getConfig());
                 mDialog = new WifiDialog(getActivity(), this, mDlgAccessPoint,
                         false /* not editting */, true /* hide the submit button */,
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 0c28db3..97612a9 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -43,6 +43,7 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
 import android.text.Spannable;
@@ -439,8 +440,8 @@
                 }
 
                 WifiConfiguration config = mSelectedAccessPoint.getConfig();
-                // Device Owner created configs are uneditable
-                if (isCreatorDeviceOwner(getActivity(), config)) {
+                // Some configs are ineditable
+                if (isEditabilityLockedDown(getActivity(), config)) {
                     return;
                 }
 
@@ -522,7 +523,7 @@
     private void showDialog(AccessPoint accessPoint, boolean edit) {
         if (accessPoint != null) {
             WifiConfiguration config = accessPoint.getConfig();
-            if (isCreatorDeviceOwner(getActivity(), config) && accessPoint.isActive()) {
+            if (isEditabilityLockedDown(getActivity(), config) && accessPoint.isActive()) {
                 final int userId = UserHandle.getUserId(config.creatorUid);
                 final PackageManager pm = getActivity().getPackageManager();
                 final IPackageManager ipm = AppGlobals.getPackageManager();
@@ -575,7 +576,7 @@
                 }
                 // If it's null, fine, it's for Add Network
                 mSelectedAccessPoint = ap;
-                final boolean hideForget = (ap == null || isCreatorDeviceOwner(getActivity(),
+                final boolean hideForget = (ap == null || isEditabilityLockedDown(getActivity(),
                         ap.getConfig()));
                 mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit,
                         /* no hide submit/connect */ false,
@@ -913,11 +914,11 @@
         };
 
     /**
-     * Returns the true if the app that created this config is the device owner of the device.
+     * Returns true if the config is not editable/removable except by its creating Device Owner.
      * @param config The WiFi config.
-     * @return creator package name or null if creator package is not device owner.
+     * @return true if the config is not editable/removable except by its creating Device Owner.
      */
-    static boolean isCreatorDeviceOwner(Context context, WifiConfiguration config) {
+    static boolean isEditabilityLockedDown(Context context, WifiConfiguration config) {
         if (config == null) {
             return false;
         }
@@ -927,6 +928,10 @@
         if (deviceOwnerPackageName == null) {
             return false;
         }
+        UserManager um = UserManager.get(context);
+        if (um.hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI)) {
+            return false;
+        }
         final PackageManager pm = context.getPackageManager();
         try {
             final int deviceOwnerUid = pm.getPackageUid(deviceOwnerPackageName,