[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
diff --git a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
index 3c67927..b9ebf89 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 @@
         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 @@
     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 381f961..05b2782 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 @@
             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 @@
         // 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 @@
         }
         // 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();
     }
 
     /**