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

Commit bcd840e2 authored by Cody Kesting's avatar Cody Kesting Committed by Automerger Merge Worker
Browse files

Merge "Use VCN policy API in Telephony." am: ce614e30 am: f2fa93cf

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1604179

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I959397f70954f22aa3e4a69427fa40610d440ae2
parents c644655b f2fa93cf
Loading
Loading
Loading
Loading
+19 −20
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ import android.net.RouteInfo;
import android.net.SocketKeepalive;
import android.net.TelephonyNetworkSpecifier;
import android.net.vcn.VcnManager;
import android.net.vcn.VcnManager.VcnUnderlyingNetworkPolicyListener;
import android.net.vcn.VcnUnderlyingNetworkPolicy;
import android.net.vcn.VcnManager.VcnNetworkPolicyListener;
import android.net.vcn.VcnNetworkPolicyResult;
import android.os.AsyncResult;
import android.os.HandlerExecutor;
import android.os.Message;
@@ -332,8 +332,8 @@ public class DataConnection extends StateMachine {
    PendingIntent mReconnectIntent = null;

    /** Class used to track VCN-defined Network policies for this DcNetworkAgent. */
    private final VcnUnderlyingNetworkPolicyListener mVcnPolicyListener =
            new DataConnectionVcnUnderlyingNetworkPolicyListener();
    private final VcnNetworkPolicyListener mVcnPolicyListener =
            new DataConnectionVcnNetworkPolicyListener();

    // ***** Event codes for driving the state machine, package visible for Dcc
    static final int BASE = Protocol.BASE_DATA_CONNECTION;
@@ -1769,13 +1769,13 @@ public class DataConnection extends StateMachine {
     * <p>Determining if the Network is VCN-managed requires polling VcnManager.
     */
    private boolean isVcnManaged(NetworkCapabilities networkCapabilities) {
        VcnUnderlyingNetworkPolicy networkPolicy =
                mVcnManager.getUnderlyingNetworkPolicy(networkCapabilities, getLinkProperties());
        VcnNetworkPolicyResult policyResult =
                mVcnManager.applyVcnNetworkPolicy(networkCapabilities, getLinkProperties());

        // if the Network does have capability NOT_VCN_MANAGED, return false to indicate it's not
        // VCN-managed
        return !networkPolicy
                .getMergedNetworkCapabilities()
        return !policyResult
                .getNetworkCapabilities()
                .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED);
    }

@@ -2588,9 +2588,9 @@ public class DataConnection extends StateMachine {
                        + ", mUnmeteredUseOnly = " + mUnmeteredUseOnly);
            }

            // Always register a VcnUnderlyingNetworkPolicyListener, regardless of whether this is a
            // handover or new Network.
            mVcnManager.addVcnUnderlyingNetworkPolicyListener(
            // Always register a VcnNetworkPolicyListener, regardless of whether this is a handover
            // or new Network.
            mVcnManager.addVcnNetworkPolicyListener(
                    new HandlerExecutor(getHandler()), mVcnPolicyListener);

            if (mConnectionParams != null
@@ -2644,10 +2644,10 @@ public class DataConnection extends StateMachine {
                mNetworkAgent = new DcNetworkAgent(DataConnection.this, mPhone, mScore,
                        configBuilder.build(), provider, mTransportType);

                VcnUnderlyingNetworkPolicy policy =
                        mVcnManager.getUnderlyingNetworkPolicy(
                VcnNetworkPolicyResult policyResult =
                        mVcnManager.applyVcnNetworkPolicy(
                                getNetworkCapabilities(), getLinkProperties());
                if (policy.isTeardownRequested()) {
                if (policyResult.isTeardownRequested()) {
                    tearDownAll(
                            Phone.REASON_VCN_REQUESTED_TEARDOWN,
                            DcTracker.RELEASE_TYPE_DETACH,
@@ -2706,7 +2706,7 @@ public class DataConnection extends StateMachine {
                    mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED);
            mDataCallSessionStats.onDataCallDisconnected();

            mVcnManager.removeVcnUnderlyingNetworkPolicyListener(mVcnPolicyListener);
            mVcnManager.removeVcnNetworkPolicyListener(mVcnPolicyListener);

            mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler());
        }
@@ -3716,16 +3716,15 @@ public class DataConnection extends StateMachine {
     *
     * <p>MUST be registered with the associated DataConnection's Handler.
     */
    private class DataConnectionVcnUnderlyingNetworkPolicyListener
            implements VcnUnderlyingNetworkPolicyListener {
    private class DataConnectionVcnNetworkPolicyListener implements VcnNetworkPolicyListener {
        @Override
        public void onPolicyChanged() {
            // Poll the current underlying Network policy from VcnManager and send to NetworkAgent.
            final NetworkCapabilities networkCapabilities = getNetworkCapabilities();
            VcnUnderlyingNetworkPolicy policy =
                    mVcnManager.getUnderlyingNetworkPolicy(
            VcnNetworkPolicyResult policyResult =
                    mVcnManager.applyVcnNetworkPolicy(
                            networkCapabilities, getLinkProperties());
            if (policy.isTeardownRequested()) {
            if (policyResult.isTeardownRequested()) {
                tearDownAll(
                        Phone.REASON_VCN_REQUESTED_TEARDOWN,
                        DcTracker.RELEASE_TYPE_DETACH,
+3 −3
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.vcn.VcnManager;
import android.net.vcn.VcnUnderlyingNetworkPolicy;
import android.net.vcn.VcnNetworkPolicyResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
@@ -649,9 +649,9 @@ public abstract class TelephonyTest {

        doAnswer(invocation -> {
            NetworkCapabilities nc = invocation.getArgument(0);
            return new VcnUnderlyingNetworkPolicy(
            return new VcnNetworkPolicyResult(
                    false /* isTearDownRequested */, nc);
        }).when(mVcnManager).getUnderlyingNetworkPolicy(any(), any());
        }).when(mVcnManager).applyVcnNetworkPolicy(any(), any());

        //SIM
        doReturn(1).when(mTelephonyManager).getSimCount();
+1 −1
Original line number Diff line number Diff line
@@ -389,7 +389,7 @@ public class DataConnectionTest extends TelephonyTest {
                .registerForLceInfo(any(Handler.class),
                        eq(DataConnection.EVENT_LINK_CAPACITY_CHANGED), eq(null));
        verify(mVcnManager, atLeastOnce())
                .getUnderlyingNetworkPolicy(
                .applyVcnNetworkPolicy(
                        argThat(caps ->
                                caps.hasCapability(
                                        NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)),