From 11dd7d5fb36a408f1d3962cbec0b58ba5212ade9 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Thu, 27 Aug 2009 11:03:46 +0800 Subject: [PATCH] Fix the state machine for CONNECTING/DISCONNECTING states. --- src/com/android/settings/vpn/VpnSettings.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java index 7d4ea2516a0..8cef7f85a53 100644 --- a/src/com/android/settings/vpn/VpnSettings.java +++ b/src/com/android/settings/vpn/VpnSettings.java @@ -239,7 +239,7 @@ public class VpnSettings extends PreferenceActivity implements .setOnCancelListener(new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { removeDialog(DIALOG_CONNECT); - onIdle(); + changeState(mActiveProfile, VpnState.IDLE); } }) .create(); @@ -451,7 +451,6 @@ public class VpnSettings extends PreferenceActivity implements Dialog d = (Dialog) dialog; String error = mConnectingActor.validateInputs(d); if (error == null) { - changeState(mActiveProfile, VpnState.CONNECTING); mConnectingActor.connect(d); removeDialog(DIALOG_CONNECT); return; @@ -475,7 +474,7 @@ public class VpnSettings extends PreferenceActivity implements } } else { removeDialog(DIALOG_CONNECT); - onIdle(); + changeState(mActiveProfile, VpnState.IDLE); } } @@ -690,13 +689,11 @@ public class VpnSettings extends PreferenceActivity implements if (!unlockKeystore(p, action)) return; } - mConnectingActor = getActor(p); - mActiveProfile = p; if (!checkSecrets(p)) return; + changeState(p, VpnState.CONNECTING); if (mConnectingActor.isConnectDialogNeeded()) { showDialog(DIALOG_CONNECT); } else { - changeState(p, VpnState.CONNECTING); mConnectingActor.connect(null); } } @@ -737,7 +734,10 @@ public class VpnSettings extends PreferenceActivity implements break; case CONNECTING: + mConnectingActor = getActor(p); + // pass through case DISCONNECTING: + mActiveProfile = p; disableProfilePreferencesIfOneActive(); break; @@ -976,6 +976,7 @@ public class VpnSettings extends PreferenceActivity implements } if (secretMissing) { + mActiveProfile = p; showDialog(DIALOG_SECRET_NOT_SET); return false; } else {