From 5be88d11de395530a1de74c0d5fa64e23362afd6 Mon Sep 17 00:00:00 2001 From: Jeremy Goldman Date: Mon, 19 Apr 2021 16:39:56 +0800 Subject: [PATCH] Remove the "+" button on the help menu if no secure vpns can be created If the provider model is turned on, all new VPNs must have the secure type. However, there is a system property which is necessary in order to create secure VPNs. So if the FEATURE_IPSEC_TUNNELS is missing from the device then we should not enable new 1st party VPNs. Note, it has been confirmed with the VPN team that we don't expect any devices released on S to actually be missing this property, but it's still good to check just in case. Bug: 176821216 Test: atest -c SettingsUnitTest Change-Id: I712d342e1970243520612196ba57227b1ff05bbf --- src/com/android/settings/vpn2/VpnSettings.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java index 181b78f535c..cf0e4fa2ca6 100644 --- a/src/com/android/settings/vpn2/VpnSettings.java +++ b/src/com/android/settings/vpn2/VpnSettings.java @@ -59,6 +59,7 @@ import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; import com.android.settings.R; import com.android.settings.RestrictedSettingsFragment; +import com.android.settings.Utils; import com.android.settings.widget.GearPreference; import com.android.settings.widget.GearPreference.OnGearClickListener; import com.android.settingslib.RestrictedLockUtilsInternal; @@ -129,7 +130,17 @@ public class VpnSettings extends RestrictedSettingsFragment implements @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); - inflater.inflate(R.menu.vpn, menu); + // Although FEATURE_IPSEC_TUNNELS should always be present in android S, + // keep this check here just to be safe. + if (Utils.isProviderModelEnabled(getContext()) + && !getContext().getPackageManager().hasSystemFeature( + PackageManager.FEATURE_IPSEC_TUNNELS)) { + Log.w(LOG_TAG, "FEATURE_IPSEC_TUNNELS missing from system, cannot create new VPNs"); + return; + } else { + // By default, we should inflate this menu. + inflater.inflate(R.menu.vpn, menu); + } } @Override