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

Commit d63c7bc4 authored by Nathan Harold's avatar Nathan Harold Committed by Android (Google) Code Review
Browse files

Merge "Send QoS Info in PreciseDataConnectionState"

parents d5adca90 949e2d8d
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -74,6 +74,7 @@ import android.telephony.data.DataProfile;
import android.telephony.data.DataService;
import android.telephony.data.DataService;
import android.telephony.data.DataServiceCallback;
import android.telephony.data.DataServiceCallback;
import android.telephony.data.NetworkSliceInfo;
import android.telephony.data.NetworkSliceInfo;
import android.telephony.data.Qos;
import android.telephony.data.QosBearerSession;
import android.telephony.data.QosBearerSession;
import android.telephony.data.TrafficDescriptor;
import android.telephony.data.TrafficDescriptor;
import android.telephony.data.TrafficDescriptor.OsAppId;
import android.telephony.data.TrafficDescriptor.OsAppId;
@@ -676,6 +677,9 @@ public class DataNetwork extends StateMachine {
    /** The QOS bearer sessions. */
    /** The QOS bearer sessions. */
    private final @NonNull List<QosBearerSession> mQosBearerSessions = new ArrayList<>();
    private final @NonNull List<QosBearerSession> mQosBearerSessions = new ArrayList<>();


    /** The QOS for the Default Bearer, should be non-null on LTE and NR */
    private @Nullable Qos mDefaultQos;

    /**
    /**
     * The UIDs of packages that have carrier privilege.
     * The UIDs of packages that have carrier privilege.
     */
     */
@@ -2408,6 +2412,8 @@ public class DataNetwork extends StateMachine {
        mTrafficDescriptors.clear();
        mTrafficDescriptors.clear();
        mTrafficDescriptors.addAll(response.getTrafficDescriptors());
        mTrafficDescriptors.addAll(response.getTrafficDescriptors());


        mDefaultQos = response.getDefaultQos();

        mQosBearerSessions.clear();
        mQosBearerSessions.clear();
        mQosBearerSessions.addAll(response.getQosBearerSessions());
        mQosBearerSessions.addAll(response.getQosBearerSessions());
        if (mQosCallbackTracker != null) {
        if (mQosCallbackTracker != null) {
@@ -3174,6 +3180,7 @@ public class DataNetwork extends StateMachine {
                .setLinkProperties(mLinkProperties)
                .setLinkProperties(mLinkProperties)
                .setNetworkType(getDataNetworkType())
                .setNetworkType(getDataNetworkType())
                .setFailCause(mFailCause)
                .setFailCause(mFailCause)
                .setDefaultQos(mDefaultQos)
                .build();
                .build();
    }
    }


+21 −5
Original line number Original line Diff line number Diff line
@@ -63,7 +63,9 @@ import android.telephony.data.DataCallResponse;
import android.telephony.data.DataProfile;
import android.telephony.data.DataProfile;
import android.telephony.data.DataService;
import android.telephony.data.DataService;
import android.telephony.data.DataServiceCallback;
import android.telephony.data.DataServiceCallback;
import android.telephony.data.EpsQos;
import android.telephony.data.NetworkSliceInfo;
import android.telephony.data.NetworkSliceInfo;
import android.telephony.data.Qos;
import android.telephony.data.TrafficDescriptor;
import android.telephony.data.TrafficDescriptor;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper;
@@ -182,6 +184,11 @@ public class DataNetworkTest extends TelephonyTest {
                            "CBS", 1).getBytes()))
                            "CBS", 1).getBytes()))
            .build();
            .build();


    private final Qos mDefaultQos = new EpsQos(
            new Qos.QosBandwidth(1000, 1),
            new Qos.QosBandwidth(1000, 0),
            9 /* QCI */);

    // Mocked classes
    // Mocked classes
    private DataNetworkCallback mDataNetworkCallback;
    private DataNetworkCallback mDataNetworkCallback;
    private DataCallSessionStats mDataCallSessionStats;
    private DataCallSessionStats mDataCallSessionStats;
@@ -194,16 +201,21 @@ public class DataNetworkTest extends TelephonyTest {
                    .build();
                    .build();


    private void setSuccessfulSetupDataResponse(DataServiceManager dsm, int cid) {
    private void setSuccessfulSetupDataResponse(DataServiceManager dsm, int cid) {
        setSuccessfulSetupDataResponse(dsm, cid, Collections.emptyList());
        setSuccessfulSetupDataResponse(dsm, cid, Collections.emptyList(), null);
    }
    }


    private void setSuccessfulSetupDataResponse(DataServiceManager dsm, int cid,
    private void setSuccessfulSetupDataResponse(DataServiceManager dsm, int cid,
            List<TrafficDescriptor> tds) {
            List<TrafficDescriptor> tds) {
        setSuccessfulSetupDataResponse(dsm, cid, tds, null);
    }

    private void setSuccessfulSetupDataResponse(DataServiceManager dsm, int cid,
            List<TrafficDescriptor> tds, Qos defaultQos) {
        doAnswer(invocation -> {
        doAnswer(invocation -> {
            final Message msg = (Message) invocation.getArguments()[10];
            final Message msg = (Message) invocation.getArguments()[10];


            DataCallResponse response = createDataCallResponse(
            DataCallResponse response = createDataCallResponse(
                    cid, DataCallResponse.LINK_STATUS_ACTIVE, tds);
                    cid, DataCallResponse.LINK_STATUS_ACTIVE, tds, defaultQos);
            msg.getData().putParcelable("data_call_response", response);
            msg.getData().putParcelable("data_call_response", response);
            msg.arg1 = DataServiceCallback.RESULT_SUCCESS;
            msg.arg1 = DataServiceCallback.RESULT_SUCCESS;
            msg.sendToTarget();
            msg.sendToTarget();
@@ -214,7 +226,7 @@ public class DataNetworkTest extends TelephonyTest {
    }
    }


    private DataCallResponse createDataCallResponse(int cid, int linkStatus,
    private DataCallResponse createDataCallResponse(int cid, int linkStatus,
            List<TrafficDescriptor> tds) {
            List<TrafficDescriptor> tds, Qos defaultQos) {
        return new DataCallResponse.Builder()
        return new DataCallResponse.Builder()
                .setCause(0)
                .setCause(0)
                .setRetryDurationMillis(-1L)
                .setRetryDurationMillis(-1L)
@@ -238,6 +250,7 @@ public class DataNetworkTest extends TelephonyTest {
                .setPduSessionId(1)
                .setPduSessionId(1)
                .setQosBearerSessions(new ArrayList<>())
                .setQosBearerSessions(new ArrayList<>())
                .setTrafficDescriptors(tds)
                .setTrafficDescriptors(tds)
                .setDefaultQos(defaultQos)
                .build();
                .build();
    }
    }


@@ -388,7 +401,8 @@ public class DataNetworkTest extends TelephonyTest {
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .build(), mPhone));
                .build(), mPhone));


        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123);
        setSuccessfulSetupDataResponse(
                mMockedWwanDataServiceManager, 123, Collections.emptyList(), mDefaultQos);


        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                mInternetDataProfile, networkRequestList,
@@ -448,6 +462,7 @@ public class DataNetworkTest extends TelephonyTest {
        assertThat(pdcsList.get(0).getTransportType())
        assertThat(pdcsList.get(0).getTransportType())
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(pdcsList.get(0).getLinkProperties()).isEqualTo(new LinkProperties());
        assertThat(pdcsList.get(0).getLinkProperties()).isEqualTo(new LinkProperties());
        assertThat(pdcsList.get(0).getDefaultQos()).isEqualTo(null);


        assertThat(pdcsList.get(1).getApnSetting()).isEqualTo(mInternetApnSetting);
        assertThat(pdcsList.get(1).getApnSetting()).isEqualTo(mInternetApnSetting);
        assertThat(pdcsList.get(1).getState()).isEqualTo(TelephonyManager.DATA_CONNECTED);
        assertThat(pdcsList.get(1).getState()).isEqualTo(TelephonyManager.DATA_CONNECTED);
@@ -455,6 +470,7 @@ public class DataNetworkTest extends TelephonyTest {
        assertThat(pdcsList.get(1).getNetworkType()).isEqualTo(TelephonyManager.NETWORK_TYPE_LTE);
        assertThat(pdcsList.get(1).getNetworkType()).isEqualTo(TelephonyManager.NETWORK_TYPE_LTE);
        assertThat(pdcsList.get(1).getTransportType())
        assertThat(pdcsList.get(1).getTransportType())
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(pdcsList.get(1).getDefaultQos()).isEqualTo(mDefaultQos);
        assertThat(pdcsList.get(1).getLinkProperties().getAddresses().get(0))
        assertThat(pdcsList.get(1).getLinkProperties().getAddresses().get(0))
                .isEqualTo(InetAddresses.parseNumericAddress(IPV4_ADDRESS));
                .isEqualTo(InetAddresses.parseNumericAddress(IPV4_ADDRESS));
        assertThat(pdcsList.get(1).getLinkProperties().getAddresses().get(1))
        assertThat(pdcsList.get(1).getLinkProperties().getAddresses().get(1))
@@ -1787,7 +1803,7 @@ public class DataNetworkTest extends TelephonyTest {


        // data state updated
        // data state updated
        DataCallResponse response = createDataCallResponse(123,
        DataCallResponse response = createDataCallResponse(123,
                DataCallResponse.LINK_STATUS_DORMANT, Collections.emptyList());
                DataCallResponse.LINK_STATUS_DORMANT, Collections.emptyList(), null);
        mDataNetworkUT.sendMessage(8 /*EVENT_DATA_STATE_CHANGED*/, new AsyncResult(
        mDataNetworkUT.sendMessage(8 /*EVENT_DATA_STATE_CHANGED*/, new AsyncResult(
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, List.of(response), null));
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, List.of(response), null));
        processAllMessages();
        processAllMessages();