From 20ddd1c57b498072361959ca1d0ac23319c8b4a0 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Tue, 12 Apr 2016 17:56:38 +0100 Subject: [PATCH] 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 --- res/layout/vpn_dialog.xml | 3 +-- src/com/android/settings/vpn2/ConfigDialog.java | 13 +++++++++---- .../android/settings/vpn2/ConfigDialogFragment.java | 9 +++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/res/layout/vpn_dialog.xml b/res/layout/vpn_dialog.xml index 620b43fcfab..6822e954189 100644 --- a/res/layout/vpn_dialog.xml +++ b/res/layout/vpn_dialog.xml @@ -119,8 +119,7 @@ + android:orientation="vertical"> diff --git a/src/com/android/settings/vpn2/ConfigDialog.java b/src/com/android/settings/vpn2/ConfigDialog.java index a13e29dbad5..92050e92fbb 100644 --- a/src/com/android/settings/vpn2/ConfigDialog.java +++ b/src/com/android/settings/vpn2/ConfigDialog.java @@ -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; } } diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java index fc49fd86cf4..5e4a7d97258 100644 --- a/src/com/android/settings/vpn2/ConfigDialogFragment.java +++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java @@ -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)) {