Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +1 −0 Original line number Diff line number Diff line Loading @@ -460,6 +460,7 @@ public class DataNetworkController extends Handler { } return true; } /** * Get the first network request that contains all the provided network capabilities. * Loading src/java/com/android/internal/telephony/data/DataUtils.java +21 −3 Original line number Diff line number Diff line Loading @@ -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()); Loading tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java +37 −8 Original line number Diff line number Diff line Loading @@ -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( Loading @@ -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 Loading Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +1 −0 Original line number Diff line number Diff line Loading @@ -460,6 +460,7 @@ public class DataNetworkController extends Handler { } return true; } /** * Get the first network request that contains all the provided network capabilities. * Loading
src/java/com/android/internal/telephony/data/DataUtils.java +21 −3 Original line number Diff line number Diff line Loading @@ -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()); Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataUtilsTest.java +37 −8 Original line number Diff line number Diff line Loading @@ -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( Loading @@ -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 Loading