Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e343ffd authored by Robin Lee's avatar Robin Lee Committed by Android (Google) Code Review
Browse files

Merge "Move 'is already always-on' check into Vpn.java" into nyc-dev

parents 65266b99 9ff1a588
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -3417,10 +3417,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
                return false;
                return false;
            }
            }
            // If the current VPN package is the same as the new one, this is a no-op
            if (TextUtils.equals(packageName, vpn.getAlwaysOnPackage())) {
                return true;
            }
            if (!vpn.setAlwaysOnPackage(packageName, lockdown)) {
            if (!vpn.setAlwaysOnPackage(packageName, lockdown)) {
                return false;
                return false;
            }
            }
+18 −7
Original line number Original line Diff line number Diff line
@@ -259,28 +259,39 @@ public class Vpn {
     *
     *
     * @param packageName the package to designate as always-on VPN supplier.
     * @param packageName the package to designate as always-on VPN supplier.
     * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting.
     * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting.
     * @return {@code true} if the package has been set as always-on, {@code false} otherwise.
     */
     */
    public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) {
    public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) {
        enforceControlPermissionOrInternalCaller();
        enforceControlPermissionOrInternalCaller();
        if (VpnConfig.LEGACY_VPN.equals(packageName)) {
            Log.w(TAG, "Not setting legacy VPN \"" + packageName + "\" as always-on.");
            return false;
        }


        // Disconnect current VPN.
        prepareInternal(VpnConfig.LEGACY_VPN);

        // Pre-authorize new always-on VPN package.
        if (packageName != null) {
        if (packageName != null) {
            // Pre-authorize new always-on VPN package.
            if (!setPackageAuthorization(packageName, true)) {
            if (!setPackageAuthorization(packageName, true)) {
                return false;
                return false;
            }
            }
            prepareInternal(packageName);
            mAlwaysOn = true;
        } else {
            packageName = VpnConfig.LEGACY_VPN;
            mAlwaysOn = false;
        }
        }


        mAlwaysOn = (packageName != null);
        mLockdown = (mAlwaysOn && lockdown);
        mLockdown = (mAlwaysOn && lockdown);
        if (!isCurrentPreparedPackage(packageName)) {
            prepareInternal(packageName);
        }
        maybeRegisterPackageChangeReceiverLocked(packageName);
        maybeRegisterPackageChangeReceiverLocked(packageName);
        setVpnForcedLocked(mLockdown);
        setVpnForcedLocked(mLockdown);
        return true;
        return true;
    }
    }


    private static boolean isNullOrLegacyVpn(String packageName) {
        return packageName == null || VpnConfig.LEGACY_VPN.equals(packageName);
    }

    private void unregisterPackageChangeReceiverLocked() {
    private void unregisterPackageChangeReceiverLocked() {
        // register previous intent filter
        // register previous intent filter
        if (mIsPackageIntentReceiverRegistered) {
        if (mIsPackageIntentReceiverRegistered) {
@@ -293,7 +304,7 @@ public class Vpn {
        // Unregister IntentFilter listening for previous always-on package change
        // Unregister IntentFilter listening for previous always-on package change
        unregisterPackageChangeReceiverLocked();
        unregisterPackageChangeReceiverLocked();


        if (packageName != null) {
        if (!isNullOrLegacyVpn(packageName)) {
            mIsPackageIntentReceiverRegistered = true;
            mIsPackageIntentReceiverRegistered = true;


            IntentFilter intentFilter = new IntentFilter();
            IntentFilter intentFilter = new IntentFilter();