Merge "Connect VPN warning help icon with the network & internet page." into sc-dev

This commit is contained in:
Jeremy Goldman
2021-03-24 05:18:46 +00:00
committed by Android (Google) Code Review
3 changed files with 123 additions and 1 deletions

View File

@@ -27,6 +27,8 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.provider.SettingsSlicesContract;
import android.security.Credentials;
import android.security.LegacyVpnProfileStore;
import android.util.Log;
import android.util.SparseArray;
@@ -36,8 +38,11 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.net.LegacyVpnInfo;
import com.android.internal.net.VpnConfig;
import com.android.internal.net.VpnProfile;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.vpn2.VpnInfoPreference;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -147,6 +152,10 @@ public class VpnPreferenceController extends AbstractPreferenceController
} else {
summary = getNameForVpnConfig(vpn, UserHandle.of(uid));
}
// Optionally add warning icon if an insecure VPN is present.
if (Utils.isProviderModelEnabled(mContext) && mPreference instanceof VpnInfoPreference) {
((VpnInfoPreference) mPreference).setInsecureVpn(hasInsecureVpn());
}
ThreadUtils.postOnMainThread(() -> mPreference.setSummary(summary));
}
@@ -167,6 +176,20 @@ public class VpnPreferenceController extends AbstractPreferenceController
}
}
@VisibleForTesting
protected boolean hasInsecureVpn() {
for (String key : LegacyVpnProfileStore.list(Credentials.VPN)) {
final VpnProfile profile = VpnProfile.decode(key,
LegacyVpnProfileStore.get(Credentials.VPN + key));
// Return whether any profile is an insecure type.
if (VpnProfile.isLegacyType(profile.type)) {
return true;
}
}
// We did not find any insecure VPNs.
return false;
}
// Copied from SystemUI::SecurityControllerImpl
private final ConnectivityManager.NetworkCallback
mNetworkCallback = new ConnectivityManager.NetworkCallback() {