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

Commit fac847e7 authored by Cody Kesting's avatar Cody Kesting
Browse files

Use VCN policy API in Telephony.

This CL updates the use of VCN Network policies in DataConnection to use
the new API naming. The API previously defined
VcnUnderlyingNetworkPolicyListener and
VcnManager#getVcnUnderlyingNetworkPolicy. Following API Guidance, these
were renamed to VcnNetworkPolicyListener and
VcnManager#applyVcnNetworkPolicy, respectively.

Bug: 177020190
Test: atest DataConnectionTest
Change-Id: Iab05b7a7ddb170d8e3afa6290ad1e7144ec4887d
parent 3d4707af
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)),