Stop VPN profiles by exiting VpnRunner instead of prepareInternal am: 03f0d12480 am: 5d025053e5

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2139312

Change-Id: I1ccca273649d8b24fb9bdeb5aa4b5c4e37cae269
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
chiachangwang
2022-07-11 02:06:25 +00:00
committed by Automerger Merge Worker

View File

@@ -1182,20 +1182,9 @@ public class Vpn {
cleanupVpnStateLocked(); cleanupVpnStateLocked();
} else if (mVpnRunner != null) { } else if (mVpnRunner != null) {
if (!VpnConfig.LEGACY_VPN.equals(mPackage)) { if (!VpnConfig.LEGACY_VPN.equals(mPackage)) {
mAppOpsManager.finishOp( notifyVpnManagerVpnStopped(mPackage, mOwnerUID);
AppOpsManager.OPSTR_ESTABLISH_VPN_MANAGER, mOwnerUID, mPackage, null);
// The underlying network, NetworkCapabilities and LinkProperties are not
// necessary to send to VPN app since the purpose of this event is to notify
// VPN app that VPN is deactivated by the user.
// TODO(b/230548427): Remove SDK check once VPN related stuff are decoupled from
// ConnectivityServiceTest.
if (SdkLevel.isAtLeastT()) {
sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
-1 /* errorClass */, -1 /* errorCode*/, mPackage,
getSessionKeyLocked(), makeVpnProfileStateLocked(),
null /* underlyingNetwork */, null /* nc */, null /* lp */);
}
} }
// cleanupVpnStateLocked() is called from mVpnRunner.exit() // cleanupVpnStateLocked() is called from mVpnRunner.exit()
mVpnRunner.exit(); mVpnRunner.exit();
} }
@@ -4043,7 +4032,25 @@ public class Vpn {
// To stop the VPN profile, the caller must be the current prepared package and must be // To stop the VPN profile, the caller must be the current prepared package and must be
// running an Ikev2VpnProfile. // running an Ikev2VpnProfile.
if (isCurrentIkev2VpnLocked(packageName)) { if (isCurrentIkev2VpnLocked(packageName)) {
prepareInternal(VpnConfig.LEGACY_VPN); notifyVpnManagerVpnStopped(packageName, mOwnerUID);
mVpnRunner.exit();
}
}
private synchronized void notifyVpnManagerVpnStopped(String packageName, int ownerUID) {
mAppOpsManager.finishOp(
AppOpsManager.OPSTR_ESTABLISH_VPN_MANAGER, ownerUID, packageName, null);
// The underlying network, NetworkCapabilities and LinkProperties are not
// necessary to send to VPN app since the purpose of this event is to notify
// VPN app that VPN is deactivated by the user.
// TODO(b/230548427): Remove SDK check once VPN related stuff are decoupled from
// ConnectivityServiceTest.
if (SdkLevel.isAtLeastT()) {
sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_DEACTIVATED_BY_USER,
-1 /* errorClass */, -1 /* errorCode*/, packageName,
getSessionKeyLocked(), makeVpnProfileStateLocked(),
null /* underlyingNetwork */, null /* nc */, null /* lp */);
} }
} }