diff options
| author | 2013-05-01 11:31:41 -0700 | |
|---|---|---|
| committer | 2013-05-01 11:31:41 -0700 | |
| commit | a49cea63a080b7c5f884626ba3c0309cb6e49f99 (patch) | |
| tree | 19ad5b5d35d8df937b6fd2fa2a69aa81c6855446 | |
| parent | 334c04e2f0eb62c6c9db73da0ec0021abffceb92 (diff) | |
| parent | 033168b1b0e6fc24a01bef6ec65948663f0ad3b7 (diff) | |
am 033168b1: Merge "Lockdown VPN handles its own connection teardown." into jb-mr2-dev
* commit '033168b1b0e6fc24a01bef6ec65948663f0ad3b7':
Lockdown VPN handles its own connection teardown.
| -rw-r--r-- | services/java/com/android/server/connectivity/Vpn.java | 19 | ||||
| -rw-r--r-- | services/java/com/android/server/net/LockdownVpnTracker.java | 7 |
2 files changed, 23 insertions, 3 deletions
diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java index 10c7e2776921..e7d1fa4ede21 100644 --- a/services/java/com/android/server/connectivity/Vpn.java +++ b/services/java/com/android/server/connectivity/Vpn.java @@ -95,7 +95,8 @@ public class Vpn extends BaseNetworkStateTracker { private Connection mConnection; private LegacyVpnRunner mLegacyVpnRunner; private PendingIntent mStatusIntent; - private boolean mEnableNotif = true; + private volatile boolean mEnableNotif = true; + private volatile boolean mEnableTeardown = true; private final IConnectivityManager mConnService; public Vpn(Context context, VpnCallback callback, INetworkManagementService netService, @@ -113,10 +114,23 @@ public class Vpn extends BaseNetworkStateTracker { } } + /** + * Set if this object is responsible for showing its own notifications. When + * {@code false}, notifications are handled externally by someone else. + */ public void setEnableNotifications(boolean enableNotif) { mEnableNotif = enableNotif; } + /** + * Set if this object is responsible for watching for {@link NetworkInfo} + * teardown. When {@code false}, teardown is handled externally by someone + * else. + */ + public void setEnableTeardown(boolean enableTeardown) { + mEnableTeardown = enableTeardown; + } + @Override protected void startMonitoringInternal() { // Ignored; events are sent through callbacks for now @@ -647,6 +661,8 @@ public class Vpn extends BaseNetworkStateTracker { private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + if (!mEnableTeardown) return; + if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { if (intent.getIntExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_NONE) == mOuterConnection.get()) { @@ -688,7 +704,6 @@ public class Vpn extends BaseNetworkStateTracker { IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); mContext.registerReceiver(mBroadcastReceiver, filter); - } public void check(String interfaze) { diff --git a/services/java/com/android/server/net/LockdownVpnTracker.java b/services/java/com/android/server/net/LockdownVpnTracker.java index 5b6e48545adb..e25192525e33 100644 --- a/services/java/com/android/server/net/LockdownVpnTracker.java +++ b/services/java/com/android/server/net/LockdownVpnTracker.java @@ -128,7 +128,10 @@ public class LockdownVpnTracker { mAcceptedEgressIface = null; mVpn.stopLegacyVpn(); } - if (egressDisconnected) return; + if (egressDisconnected) { + hideNotification(); + return; + } final int egressType = egressInfo.getType(); if (vpnInfo.getDetailedState() == DetailedState.FAILED) { @@ -192,6 +195,7 @@ public class LockdownVpnTracker { Slog.d(TAG, "initLocked()"); mVpn.setEnableNotifications(false); + mVpn.setEnableTeardown(false); final IntentFilter resetFilter = new IntentFilter(ACTION_LOCKDOWN_RESET); mContext.registerReceiver(mResetReceiver, resetFilter, CONNECTIVITY_INTERNAL, null); @@ -235,6 +239,7 @@ public class LockdownVpnTracker { mContext.unregisterReceiver(mResetReceiver); mVpn.setEnableNotifications(true); + mVpn.setEnableTeardown(true); } public void reset() { |