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

Commit 0470fbac authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "Create separate groups for NetworkRequests with different enterprise...

Merge "Create separate groups for NetworkRequests with different enterprise IDs" into tm-qpr-dev am: fa7d5acc

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



Change-Id: Iefefcf8ee29f82281bfaf10277ec0045290c5899
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ed242725 fa7d5acc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -460,6 +460,7 @@ public class DataNetworkController extends Handler {
            }
            return true;
        }

        /**
         * Get the first network request that contains all the provided network capabilities.
         *
+21 −3
Original line number Diff line number Diff line
@@ -404,9 +404,27 @@ public class DataUtils {
                            .boxed().collect(Collectors.toSet()),
                    v -> new NetworkRequestList()).add(networkRequest);
        }
        // Sort the list, so the network request list contains higher priority will be in the front
        // of the list.
        return new ArrayList<>(requestsMap.values()).stream()
        List<NetworkRequestList> requests = new ArrayList<>();
        // Create separate groups for enterprise requests with different enterprise IDs.
        for (NetworkRequestList requestList : requestsMap.values()) {
            List<TelephonyNetworkRequest> enterpriseRequests = requestList.stream()
                    .filter(request ->
                            request.hasCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE))
                    .collect(Collectors.toList());
            if (enterpriseRequests.isEmpty()) {
                requests.add(requestList);
                continue;
            }
            // Key is the enterprise ID
            Map<Integer, NetworkRequestList> enterpriseRequestsMap = new ArrayMap<>();
            for (TelephonyNetworkRequest request : enterpriseRequests) {
                enterpriseRequestsMap.computeIfAbsent(request.getCapabilityDifferentiator(),
                        v -> new NetworkRequestList()).add(request);
            }
            requests.addAll(enterpriseRequestsMap.values());
        }
        // Sort the requests so the network request list with higher priority will be at the front.
        return requests.stream()
                .sorted((list1, list2) -> Integer.compare(
                        list2.get(0).getPriority(), list1.get(0).getPriority()))
                .collect(Collectors.toList());
+37 −8
Original line number Diff line number Diff line
@@ -53,26 +53,40 @@ public class DataUtilsTest extends TelephonyTest {
                NetworkCapabilities.NET_CAPABILITY_INTERNET,
                NetworkCapabilities.NET_CAPABILITY_MMS,
                NetworkCapabilities.NET_CAPABILITY_MMS,
                NetworkCapabilities.NET_CAPABILITY_EIMS
                NetworkCapabilities.NET_CAPABILITY_EIMS,
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE,
        };

        int requestId = 0;
        int enterpriseId = 1;
        TelephonyNetworkRequest networkRequest;
        for (int netCap : netCaps) {
            if (netCap == NetworkCapabilities.NET_CAPABILITY_ENTERPRISE) {
                networkRequest = new TelephonyNetworkRequest(new NetworkRequest(
                        new NetworkCapabilities.Builder()
                                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                                .addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
                                .addEnterpriseId(enterpriseId).build(), -1, requestId++,
                        NetworkRequest.Type.REQUEST), mPhone);
                if (enterpriseId == 1) enterpriseId++;
            } else {
                networkRequest = new TelephonyNetworkRequest(new NetworkRequest(
                        new NetworkCapabilities.Builder()
                                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                                .addCapability(netCap).build(), -1, requestId++,
                        NetworkRequest.Type.REQUEST), mPhone);
            }
            requestList.add(networkRequest);
        }

        assertThat(requestList).hasSize(5);
        assertThat(requestList).hasSize(8);

        List<NetworkRequestList> requestListList =
                DataUtils.getGroupedNetworkRequestList(requestList);

        assertThat(requestListList).hasSize(3);
        assertThat(requestListList).hasSize(5);
        requestList = requestListList.get(0);
        assertThat(requestList).hasSize(1);
        assertThat(requestList.get(0).hasCapability(
@@ -91,6 +105,21 @@ public class DataUtilsTest extends TelephonyTest {
                NetworkCapabilities.NET_CAPABILITY_INTERNET)).isTrue();
        assertThat(requestList.get(1).hasCapability(
                NetworkCapabilities.NET_CAPABILITY_INTERNET)).isTrue();

        requestList = requestListList.get(3);
        assertThat(requestList).hasSize(1);
        assertThat(requestList.get(0).hasCapability(
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
        assertThat(requestList.get(0).getCapabilityDifferentiator() == 1).isTrue();

        requestList = requestListList.get(4);
        assertThat(requestList).hasSize(2);
        assertThat(requestList.get(0).hasCapability(
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
        assertThat(requestList.get(0).getCapabilityDifferentiator() == 2).isTrue();
        assertThat(requestList.get(1).hasCapability(
                NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)).isTrue();
        assertThat(requestList.get(1).getCapabilityDifferentiator() == 2).isTrue();
    }

    @Test