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

Commit ed0a2c0f authored by Jack Yu's avatar Jack Yu
Browse files

Fixed WFC activation issue

When CBS APN is used, both DNN and OsAppId are filled
in the traffic descriptor. Making the logic change so that
when DNN is filled, matchAllRulesAllowed flag will be set
to true so that if the specified slice does not exist, the
default slice could be used to setup the PDN.

Test: Manual + atest DataNetworkTest
Fix: 222333150
Change-Id: Idfb232952a84e892937352ea183639d78aa61020
parent b61b5dfd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1633,7 +1633,7 @@ public class DataNetwork extends StateMachine {

        TrafficDescriptor trafficDescriptor = mDataProfile.getTrafficDescriptor();
        final boolean matchAllRuleAllowed = trafficDescriptor == null
                || trafficDescriptor.getOsAppId() == null;
                || !TextUtils.isEmpty(trafficDescriptor.getDataNetworkName());

        int accessNetwork = DataUtils.networkTypeToAccessNetworkType(dataNetworkType);

+2 −2
Original line number Diff line number Diff line
@@ -109,9 +109,9 @@ public class TelephonyNetworkRequest {
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_IMS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            // TODO add OS APP Id as part of b/206703524
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_CBS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN
                            | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_XCAP,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_EIMS,
+39 −3
Original line number Diff line number Diff line
@@ -131,6 +131,24 @@ public class DataNetworkTest extends TelephonyTest {
            .setTrafficDescriptor(new TrafficDescriptor("fake_apn", null))
            .build();

    private final DataProfile mEnterpriseDataProfile = new DataProfile.Builder()
            .setTrafficDescriptor(new TrafficDescriptor(null,
                    new TrafficDescriptor.OsAppId(TrafficDescriptor.OsAppId.ANDROID_OS_ID,
                            "ENTERPRISE", 1).getBytes()))
            .build();

    private final DataProfile mUrlccDataProfile = new DataProfile.Builder()
            .setTrafficDescriptor(new TrafficDescriptor(null,
                    new TrafficDescriptor.OsAppId(TrafficDescriptor.OsAppId.ANDROID_OS_ID,
                            "PRIORITIZE_LATENCY", 1).getBytes()))
            .build();

    private final DataProfile mEmbbDataProfile = new DataProfile.Builder()
            .setTrafficDescriptor(new TrafficDescriptor(null,
                    new TrafficDescriptor.OsAppId(TrafficDescriptor.OsAppId.ANDROID_OS_ID,
                            "PRIORITIZE_BANDWIDTH", 1).getBytes()))
            .build();

    // Mocked classes
    private DataNetworkCallback mDataNetworkCallback;
    private DataCallSessionStats mDataCallSessionStats;
@@ -335,7 +353,7 @@ public class DataNetworkTest extends TelephonyTest {
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123, tds);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                mEnterpriseDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, DataAllowedReason.NORMAL,
                mDataNetworkCallback);
        replaceInstance(DataNetwork.class, "mDataCallSessionStats",
@@ -345,6 +363,12 @@ public class DataNetworkTest extends TelephonyTest {

        processAllMessages();

        verify(mMockedWwanDataServiceManager).setupDataCall(eq(AccessNetworkType.EUTRAN),
                eq(mEnterpriseDataProfile), eq(false), eq(false),
                eq(DataService.REQUEST_REASON_NORMAL), nullable(LinkProperties.class),
                eq(DataCallResponse.PDU_SESSION_ID_NOT_SET), nullable(NetworkSliceInfo.class),
                any(TrafficDescriptor.class), eq(false), any(Message.class));

        NetworkCapabilities nc = mDataNetworkUT.getNetworkCapabilities();
        assertThat(nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
        assertThat(nc.getEnterpriseIds()).asList().containsExactly(1, 5);
@@ -366,7 +390,7 @@ public class DataNetworkTest extends TelephonyTest {
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123, tds);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                mUrlccDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, DataAllowedReason.NORMAL,
                mDataNetworkCallback);
        replaceInstance(DataNetwork.class, "mDataCallSessionStats",
@@ -376,6 +400,12 @@ public class DataNetworkTest extends TelephonyTest {

        processAllMessages();

        verify(mMockedWwanDataServiceManager).setupDataCall(eq(AccessNetworkType.EUTRAN),
                eq(mUrlccDataProfile), eq(false), eq(false),
                eq(DataService.REQUEST_REASON_NORMAL), nullable(LinkProperties.class),
                eq(DataCallResponse.PDU_SESSION_ID_NOT_SET), nullable(NetworkSliceInfo.class),
                any(TrafficDescriptor.class), eq(false), any(Message.class));

        NetworkCapabilities nc = mDataNetworkUT.getNetworkCapabilities();
        assertThat(nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY))
                .isTrue();
@@ -397,7 +427,7 @@ public class DataNetworkTest extends TelephonyTest {
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123, tds);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                mEmbbDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, DataAllowedReason.NORMAL,
                mDataNetworkCallback);
        replaceInstance(DataNetwork.class, "mDataCallSessionStats",
@@ -407,6 +437,12 @@ public class DataNetworkTest extends TelephonyTest {

        processAllMessages();

        verify(mMockedWwanDataServiceManager).setupDataCall(eq(AccessNetworkType.EUTRAN),
                eq(mEmbbDataProfile), eq(false), eq(false),
                eq(DataService.REQUEST_REASON_NORMAL), nullable(LinkProperties.class),
                eq(DataCallResponse.PDU_SESSION_ID_NOT_SET), nullable(NetworkSliceInfo.class),
                any(TrafficDescriptor.class), eq(false), any(Message.class));

        NetworkCapabilities nc = mDataNetworkUT.getNetworkCapabilities();
        assertThat(nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH))
                .isTrue();
+2 −3
Original line number Diff line number Diff line
@@ -311,8 +311,7 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
                        .getBytes()))
                .build();

        // TODO: fix as part of as part of b/206703524
        //assertThat(cbsRequest.canBeSatisfiedBy(cbsDataProfile)).isTrue();
        //assertThat(embbRequest.canBeSatisfiedBy(cbsDataProfile)).isFalse();
        assertThat(cbsRequest.canBeSatisfiedBy(cbsDataProfile)).isTrue();
        assertThat(embbRequest.canBeSatisfiedBy(cbsDataProfile)).isFalse();
    }
}