resolve merge conflicts of cb1968148a
to master
Test: make RunSettingsRoboTests Change-Id: I436af9f0415b9ad7ea0ea53f4f68d337fdbaa0aa
This commit is contained in:
@@ -5379,6 +5379,8 @@
|
||||
|
||||
<!-- Toast message when there is no network connection to start VPN. [CHAR LIMIT=100] -->
|
||||
<string name="vpn_no_network">There is no network connection. Please try again later.</string>
|
||||
<!-- Toast message when VPN has disconnected automatically due to Clear credentials. [CHAR LIMIT=NONE] -->
|
||||
<string name="vpn_disconnected">Disconnected from VPN</string>
|
||||
<!-- Toast message when a certificate is missing. [CHAR LIMIT=100] -->
|
||||
<string name="vpn_missing_cert">A certificate is missing. Please edit the profile.</string>
|
||||
|
||||
|
@@ -47,6 +47,7 @@ import android.widget.Toast;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.org.bouncycastle.asn1.ASN1InputStream;
|
||||
import com.android.org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
|
||||
import com.android.settings.vpn2.VpnUtils;
|
||||
|
||||
import sun.security.util.ObjectIdentifier;
|
||||
import sun.security.x509.AlgorithmId;
|
||||
@@ -361,6 +362,7 @@ public final class CredentialStorage extends Activity {
|
||||
if (success) {
|
||||
Toast.makeText(CredentialStorage.this,
|
||||
R.string.credentials_erased, Toast.LENGTH_SHORT).show();
|
||||
clearLegacyVpnIfEstablished();
|
||||
} else {
|
||||
Toast.makeText(CredentialStorage.this,
|
||||
R.string.credentials_not_erased, Toast.LENGTH_SHORT).show();
|
||||
@@ -369,6 +371,14 @@ public final class CredentialStorage extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearLegacyVpnIfEstablished() {
|
||||
boolean isDone = VpnUtils.disconnectLegacyVpn(getApplicationContext());
|
||||
if (isDone) {
|
||||
Toast.makeText(CredentialStorage.this, R.string.vpn_disconnected,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prompt for key guard configuration confirmation.
|
||||
*/
|
||||
|
@@ -249,8 +249,7 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements
|
||||
if (!isConnected(profile)) {
|
||||
return true;
|
||||
}
|
||||
VpnUtils.clearLockdownVpn(mContext);
|
||||
return mService.prepareVpn(null, VpnConfig.LEGACY_VPN, UserHandle.myUserId());
|
||||
return VpnUtils.disconnectLegacyVpn(getContext());
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to disconnect", e);
|
||||
return false;
|
||||
|
@@ -23,7 +23,9 @@ import android.os.ServiceManager;
|
||||
import android.provider.Settings;
|
||||
import android.security.Credentials;
|
||||
import android.security.KeyStore;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.net.LegacyVpnInfo;
|
||||
import com.android.internal.net.VpnConfig;
|
||||
|
||||
/**
|
||||
@@ -32,6 +34,9 @@ import com.android.internal.net.VpnConfig;
|
||||
* Keystore methods should only be called in system user
|
||||
*/
|
||||
public class VpnUtils {
|
||||
|
||||
private static final String TAG = "VpnUtils";
|
||||
|
||||
public static String getLockdownVpn() {
|
||||
final byte[] value = KeyStore.getInstance().get(Credentials.LOCKDOWN_VPN);
|
||||
return value == null ? null : new String(value);
|
||||
@@ -86,4 +91,20 @@ public class VpnUtils {
|
||||
public static boolean isAlwaysOnVpnSet(ConnectivityManagerWrapper cm, final int userId) {
|
||||
return cm.getAlwaysOnVpnPackageForUser(userId) != null;
|
||||
}
|
||||
|
||||
public static boolean disconnectLegacyVpn(Context context) {
|
||||
try {
|
||||
int userId = context.getUserId();
|
||||
IConnectivityManager connectivityService = getIConnectivityManager();
|
||||
LegacyVpnInfo currentLegacyVpn = connectivityService.getLegacyVpnInfo(userId);
|
||||
if (currentLegacyVpn != null) {
|
||||
clearLockdownVpn(context);
|
||||
connectivityService.prepareVpn(null, VpnConfig.LEGACY_VPN, userId);
|
||||
return true;
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Legacy VPN could not be disconnected", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user