Include login/alwayson in legacy VPN editor dialog

A little more consistent with the new app VPNs' dialogs. To make this
work it was also necessary to restart the lockdown VPN every time it is
edited, which makes sense because the expected action after editing a
VPN is that it reconnects with the new settings.

Bug: 28072644
Change-Id: I4b6a6f0a6ed96d2ec6f62889fdae4abb60d0646c
This commit is contained in:
Robin Lee
2016-04-12 17:56:38 +01:00
parent 6599660196
commit 20ddd1c57b
3 changed files with 13 additions and 12 deletions

View File

@@ -119,8 +119,7 @@
<LinearLayout android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
android:orientation="vertical">
<TextView style="@style/vpn_label" android:text="@string/vpn_username"/>
<EditText style="@style/vpn_value" android:id="@+id/username"/>

View File

@@ -170,6 +170,9 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
// Show type-specific fields.
changeType(mProfile.type);
// Hide 'save login' when we are editing.
mSaveLogin.setVisibility(View.GONE);
// Switch to advanced view immediately if any advanced options are on
if (!mProfile.searchDomains.isEmpty() || !mProfile.dnsServers.isEmpty() ||
!mProfile.routes.isEmpty()) {
@@ -188,9 +191,6 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
} else {
setTitle(context.getString(R.string.vpn_connect_to, mProfile.name));
// Not editing, just show username and password.
mView.findViewById(R.id.login).setVisibility(View.VISIBLE);
// Create a button to connect the network.
setButton(DialogInterface.BUTTON_POSITIVE,
context.getString(R.string.vpn_connect), mListener);
@@ -259,6 +259,7 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (compoundButton == mAlwaysOnVpn) {
updateSaveLoginStatus();
getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(validate(mEditing));
}
}
@@ -318,6 +319,9 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
if (!editing) {
return mUsername.getText().length() != 0 && mPassword.getText().length() != 0;
}
if (mAlwaysOnVpn.isChecked() && !getProfile().isValidLockdownProfile()) {
return false;
}
if (mName.getText().length() == 0 || mServer.getText().length() == 0 ||
!validateAddresses(mDnsServers.getText().toString(), false) ||
!validateAddresses(mRoutes.getText().toString(), true)) {
@@ -441,7 +445,8 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
break;
}
profile.saveLogin = mSaveLogin.isChecked();
final boolean hasLogin = !profile.username.isEmpty() || !profile.password.isEmpty();
profile.saveLogin = mSaveLogin.isChecked() || (mEditing && hasLogin);
return profile;
}
}

View File

@@ -152,12 +152,9 @@ public class ConfigDialogFragment extends DialogFragment implements
return;
}
// Update only if lockdown vpn has been changed
if (!VpnUtils.isVpnLockdown(profile.key)) {
final ConnectivityManager conn = ConnectivityManager.from(getActivity());
conn.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null);
VpnUtils.setLockdownVpn(getContext(), profile.key);
}
final ConnectivityManager conn = ConnectivityManager.from(getActivity());
conn.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null);
VpnUtils.setLockdownVpn(getContext(), profile.key);
} else {
// update only if lockdown vpn has been changed
if (VpnUtils.isVpnLockdown(profile.key)) {