Merge "Update VPN preference state after disallow configuring VPN policy has changed." am: 601d339868
am: 4395176792

Change-Id: Ie71a58c50fde7c5ecc4f80dfe5eb854428044480
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 7434e67..fc473fc 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -80,6 +80,7 @@
 
     private AirplaneModeEnabler mAirplaneModeEnabler;
     private SwitchPreference mAirplaneModePreference;
+    private RestrictedPreference mVpnPreference;
     private NfcEnabler mNfcEnabler;
     private NfcAdapter mNfcAdapter;
 
@@ -230,6 +231,7 @@
 
         final Activity activity = getActivity();
         mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
+        mVpnPreference = (RestrictedPreference) findPreference(KEY_VPN_SETTINGS);
         SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
         RestrictedPreference androidBeam = (RestrictedPreference) findPreference(
                 KEY_ANDROID_BEAM_SETTINGS);
@@ -260,7 +262,7 @@
 
         // Manually set dependencies for Wifi when not toggleable.
         if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIFI)) {
-            findPreference(KEY_VPN_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+            mVpnPreference.setDependency(KEY_TOGGLE_AIRPLANE);
         }
         // Disable VPN.
         // TODO: http://b/23693383
@@ -366,6 +368,11 @@
         } else {
             removePreference(KEY_WFC_SETTINGS);
         }
+
+        // update VPN setting
+        if (mVpnPreference != null) {
+            mVpnPreference.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN);
+        }
     }
 
     @Override
@@ -429,11 +436,13 @@
                 final boolean isWimaxEnabled = !isSecondaryUser
                         && context.getResources().getBoolean(
                         com.android.internal.R.bool.config_wimaxEnabled);
+                final boolean isVpnDisallowed = um.hasUserRestriction(
+                        UserManager.DISALLOW_CONFIG_VPN);
                 if (!isWimaxEnabled) {
                     result.add(KEY_WIMAX_SETTINGS);
                 }
 
-                if (isSecondaryUser) { // Disable VPN
+                if (isSecondaryUser || isVpnDisallowed) { // Disable VPN
                     result.add(KEY_VPN_SETTINGS);
                 }
 
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index a675779..0d968ab 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -164,6 +164,7 @@
     public void onResume() {
         super.onResume();
 
+        mUnavailable = mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN);
         if (mUnavailable) {
             // Show a message to explain that VPN settings have been disabled
             if (!isUiRestrictedByOnlyAdmin()) {
@@ -172,6 +173,7 @@
             getPreferenceScreen().removeAll();
             return;
         } else {
+            setEmptyView(getEmptyTextView());
             getEmptyTextView().setText(R.string.vpn_no_vpns_added);
         }