From 810d8f0c941b3fa02f78df722c2a07fb6a9b94b7 Mon Sep 17 00:00:00 2001 From: lifr Date: Thu, 28 Jan 2021 19:11:04 +0800 Subject: [PATCH] [CS02]Remove hidden API usage of NetworkCapabilities The connection service will become the mainline module. The mutable NetworkCapabilities is deprecated, and the NetworkCapabilities should be built through their Builder instead. Bug: 170598012 Test: atest EthernetServiceTests Change-Id: I31f12a39a924302beca980b8d920e3c5c18816d4 --- .../ethernet/EthernetNetworkFactory.java | 12 ++++++++-- .../server/ethernet/EthernetTracker.java | 22 +++++++++---------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java index 3c67927baa..b9ebf8974e 100644 --- a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java +++ b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java @@ -161,12 +161,20 @@ public class EthernetNetworkFactory extends NetworkFactory { updateCapabilityFilter(); } + private static NetworkCapabilities mixInCapabilities(NetworkCapabilities nc, + NetworkCapabilities addedNc) { + final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(nc); + for (int transport : addedNc.getTransportTypes()) builder.addTransportType(transport); + for (int capability : addedNc.getCapabilities()) builder.addCapability(capability); + return builder.build(); + } + private void updateCapabilityFilter() { NetworkCapabilities capabilitiesFilter = new NetworkCapabilities(); capabilitiesFilter.clearAll(); for (NetworkInterfaceState iface: mTrackingInterfaces.values()) { - capabilitiesFilter.combineCapabilities(iface.mCapabilities); + capabilitiesFilter = mixInCapabilities(capabilitiesFilter, iface.mCapabilities); } if (DBG) Log.d(TAG, "updateCapabilityFilter: " + capabilitiesFilter); @@ -210,7 +218,7 @@ public class EthernetNetworkFactory extends NetworkFactory { private NetworkInterfaceState networkForRequest(NetworkRequest request) { String requestedIface = null; - NetworkSpecifier specifier = request.networkCapabilities.getNetworkSpecifier(); + NetworkSpecifier specifier = request.getNetworkSpecifier(); if (specifier instanceof StringNetworkSpecifier) { requestedIface = ((StringNetworkSpecifier) specifier).specifier; } diff --git a/service-t/src/com/android/server/ethernet/EthernetTracker.java b/service-t/src/com/android/server/ethernet/EthernetTracker.java index 381f96163d..05b2782216 100644 --- a/service-t/src/com/android/server/ethernet/EthernetTracker.java +++ b/service-t/src/com/android/server/ethernet/EthernetTracker.java @@ -506,9 +506,9 @@ final class EthernetTracker { boolean clearDefaultCapabilities, @Nullable String commaSeparatedCapabilities, @Nullable String overrideTransport) { - NetworkCapabilities nc = new NetworkCapabilities(); + final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(); if (clearDefaultCapabilities) { - nc.clearAll(); // Remove default capabilities and transports + builder.clearAll(); // Remove default capabilities and transports } // Determine the transport type. If someone has tried to define an override transport then @@ -536,21 +536,21 @@ final class EthernetTracker { // Apply the transport. If the user supplied a valid number that is not a valid transport // then adding will throw an exception. Default back to TRANSPORT_ETHERNET if that happens try { - nc.addTransportType(transport); + builder.addTransportType(transport); } catch (IllegalArgumentException iae) { Log.e(TAG, transport + " is not a valid NetworkCapability.TRANSPORT_* value. " + "Defaulting to TRANSPORT_ETHERNET"); - nc.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET); + builder.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET); } - nc.setLinkUpstreamBandwidthKbps(100 * 1000); - nc.setLinkDownstreamBandwidthKbps(100 * 1000); + builder.setLinkUpstreamBandwidthKbps(100 * 1000); + builder.setLinkDownstreamBandwidthKbps(100 * 1000); if (!TextUtils.isEmpty(commaSeparatedCapabilities)) { for (String strNetworkCapability : commaSeparatedCapabilities.split(",")) { if (!TextUtils.isEmpty(strNetworkCapability)) { try { - nc.addCapability(Integer.valueOf(strNetworkCapability)); + builder.addCapability(Integer.valueOf(strNetworkCapability)); } catch (NumberFormatException nfe) { Log.e(TAG, "Capability '" + strNetworkCapability + "' could not be parsed"); } catch (IllegalArgumentException iae) { @@ -562,11 +562,11 @@ final class EthernetTracker { } // Ethernet networks have no way to update the following capabilities, so they always // have them. - nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); - nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED); - nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); + builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); + builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED); + builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); - return nc; + return builder.build(); } /**