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

Commit 54a348cf authored by Lucas Lin's avatar Lucas Lin Committed by Gerrit Code Review
Browse files

Merge changes I7fd4b6da,Ia36d7944,If7eb7e0e

* changes:
  Modify javadoc for some extra values of VpnManager event
  Add toString() for VpnProfileState
  Move mSessionKey into Ikev2VpnRunner and make it to be a final var
parents 2abd0238 4b6b7987
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -187,14 +187,24 @@ public class VpnManager {
    /**
     * The network that was underlying the VPN when the event occurred, as a {@link Network}.
     *
     * This extra will be null if there was no underlying network at the time of the event.
     * <p>This extra will be null if there was no underlying network at the time of the event, or
     *    the underlying network has no bearing on the event, as in the case of:
     * <ul>
     *   <li>CATEGORY_EVENT_DEACTIVATED_BY_USER
     *   <li>CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED
     * </ul>
     */
    public static final String EXTRA_UNDERLYING_NETWORK = "android.net.extra.UNDERLYING_NETWORK";

    /**
     * The {@link NetworkCapabilities} of the underlying network when the event occurred.
     *
     * This extra will be null if there was no underlying network at the time of the event.
     * <p>This extra will be null if there was no underlying network at the time of the event, or
     *    the underlying network has no bearing on the event, as in the case of:
     * <ul>
     *   <li>CATEGORY_EVENT_DEACTIVATED_BY_USER
     *   <li>CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED
     * </ul>
     */
    public static final String EXTRA_UNDERLYING_NETWORK_CAPABILITIES =
            "android.net.extra.UNDERLYING_NETWORK_CAPABILITIES";
@@ -202,7 +212,12 @@ public class VpnManager {
    /**
     * The {@link LinkProperties} of the underlying network when the event occurred.
     *
     * This extra will be null if there was no underlying network at the time of the event.
     * <p>This extra will be null if there was no underlying network at the time of the event, or
     *    the underlying network has no bearing on the event, as in the case of:
     * <ul>
     *   <li>CATEGORY_EVENT_DEACTIVATED_BY_USER
     *   <li>CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED
     * </ul>
     */
    public static final String EXTRA_UNDERLYING_LINK_PROPERTIES =
            "android.net.extra.UNDERLYING_LINK_PROPERTIES";
+26 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Parcelable;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.StringJoiner;

/**
 * Describe the state of VPN.
@@ -150,4 +151,29 @@ public final class VpnProfileState implements Parcelable {
        mAlwaysOn = in.readBoolean();
        mLockdown = in.readBoolean();
    }

    private String convertStateToString(@State int state) {
        switch (state) {
            case STATE_CONNECTED:
                return "CONNECTED";
            case STATE_CONNECTING:
                return "CONNECTING";
            case STATE_DISCONNECTED:
                return "DISCONNECTED";
            case STATE_FAILED:
                return "FAILED";
            default:
                return "UNKNOWN";
        }
    }

    @Override
    public String toString() {
        final StringJoiner resultJoiner = new StringJoiner(", ", "{", "}");
        resultJoiner.add("State: " + convertStateToString(getState()));
        resultJoiner.add("SessionId: " + getSessionId());
        resultJoiner.add("Always-on: " + isAlwaysOn());
        resultJoiner.add("Lockdown: " + isLockdownEnabled());
        return resultJoiner.toString();
    }
}
+20 −12
Original line number Diff line number Diff line
@@ -209,7 +209,6 @@ public class Vpn {
    private final NetworkInfo mNetworkInfo;
    private int mLegacyState;
    @VisibleForTesting protected String mPackage;
    private String mSessionKey;
    private int mOwnerUID;
    private boolean mIsPackageTargetingAtLeastQ;
    @VisibleForTesting
@@ -1991,9 +1990,7 @@ public class Vpn {
    public synchronized int getActiveVpnType() {
        if (!mNetworkInfo.isConnectedOrConnecting()) return VpnManager.TYPE_VPN_NONE;
        if (mVpnRunner == null) return VpnManager.TYPE_VPN_SERVICE;
        return mVpnRunner instanceof IkeV2VpnRunner
                ? VpnManager.TYPE_VPN_PLATFORM
                : VpnManager.TYPE_VPN_LEGACY;
        return isIkev2VpnRunner() ? VpnManager.TYPE_VPN_PLATFORM : VpnManager.TYPE_VPN_LEGACY;
    }

    private void updateAlwaysOnNotification(DetailedState networkState) {
@@ -2524,6 +2521,7 @@ public class Vpn {
        @Nullable private IpSecTunnelInterface mTunnelIface;
        @Nullable private IkeSession mSession;
        @Nullable private Network mActiveNetwork;
        private final String mSessionKey;

        IkeV2VpnRunner(@NonNull Ikev2VpnProfile profile) {
            super(TAG);
@@ -2869,7 +2867,6 @@ public class Vpn {
         */
        private void disconnectVpnRunner() {
            mActiveNetwork = null;
            mSessionKey = null;
            mIsRunning = false;

            resetIkeState();
@@ -3299,7 +3296,7 @@ public class Vpn {
    }

    private boolean isCurrentIkev2VpnLocked(@NonNull String packageName) {
        return isCurrentPreparedPackage(packageName) && mVpnRunner instanceof IkeV2VpnRunner;
        return isCurrentPreparedPackage(packageName) && isIkev2VpnRunner();
    }

    /**
@@ -3353,6 +3350,16 @@ public class Vpn {
        return VpnProfile.decode("" /* Key unused */, encoded);
    }

    private boolean isIkev2VpnRunner() {
        return (mVpnRunner instanceof IkeV2VpnRunner);
    }

    @GuardedBy("this")
    @Nullable
    private String getSessionKeyLocked() {
        return isIkev2VpnRunner() ? ((IkeV2VpnRunner) mVpnRunner).mSessionKey : null;
    }

    /**
     * Starts an already provisioned VPN Profile, keyed by package name.
     *
@@ -3380,7 +3387,11 @@ public class Vpn {
            }

            startVpnProfilePrivileged(profile, packageName);
            return mSessionKey;
            if (!isIkev2VpnRunner()) {
                throw new IllegalStateException("mVpnRunner shouldn't be null and should also be "
                        + "an instance of Ikev2VpnRunner");
            }
            return getSessionKeyLocked();
        } finally {
            Binder.restoreCallingIdentity(token);
        }
@@ -3483,11 +3494,8 @@ public class Vpn {
    }

    private VpnProfileState makeVpnProfileState() {
        // TODO: mSessionKey will be moved to Ikev2VpnRunner once aosp/2007077 is merged, so after
        //  merging aosp/2007077, here should check Ikev2VpnRunner is null or not. Session key will
        //  be null if Ikev2VpnRunner is null.
        return new VpnProfileState(getStateFromLegacyState(mLegacyState), mSessionKey, mAlwaysOn,
                mLockdown);
        return new VpnProfileState(getStateFromLegacyState(mLegacyState),
                isIkev2VpnRunner() ? getSessionKeyLocked() : null, mAlwaysOn, mLockdown);
    }

    /**