am 033168b1: Merge "Lockdown VPN handles its own connection teardown." into jb-mr2-dev

* commit '033168b1b0e6fc24a01bef6ec65948663f0ad3b7':
  Lockdown VPN handles its own connection teardown.
This commit is contained in:
Jeff Sharkey
2013-05-01 11:31:41 -07:00
committed by Android Git Automerger
2 changed files with 23 additions and 3 deletions

View File

@@ -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) {

View File

@@ -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() {