[automerger skipped] Merge "Add DnsSdTxtRecord to common net static library" am: 3c88646bed am: d041562121 am: a37ea4abfa -s ours
am skip reason: Change-Id I16c37b1c0b70bd57f38bde1171bd7d84cf3fa9ce with SHA-1 d060c661c3 is in history

Change-Id: Ibcecf08625d12813c7aad5f6383a86692f457265
diff --git a/staticlibs/Android.bp b/staticlibs/Android.bp
index 2dfce09..8f845bc 100644
--- a/staticlibs/Android.bp
+++ b/staticlibs/Android.bp
@@ -41,7 +41,6 @@
     jarjar_rules: "jarjar-rules-shared.txt",
     visibility: [
         "//frameworks/base/packages/Tethering",
-        "//frameworks/opt/net/wifi",
         "//frameworks/opt/net/ike",
         "//frameworks/opt/telephony",
         "//packages/modules/NetworkStack",
@@ -60,7 +59,6 @@
     visibility: [
         "//frameworks/base/services/net",
         "//frameworks/base/packages/Tethering",
-        "//frameworks/opt/net/wifi/service",
         "//frameworks/opt/net/ike",
         "//packages/modules/NetworkStack",
         "//packages/modules/CaptivePortalLogin",
@@ -80,3 +78,31 @@
         "//frameworks/opt/telephony",
     ],
 }
+
+// Use a filegroup and not a library for wifi sources, as this needs corresponding jar-jar
+// rules on the wifi side.
+// Any class here *must* have a corresponding jarjar rule in the wifi build rules.
+filegroup {
+    name: "net-utils-framework-wifi-common-srcs",
+    srcs: [
+        "src_frameworkcommon/android/net/util/nsd/DnsSdTxtRecord.java",
+        "src_frameworkcommon/android/net/util/MacAddressUtils.java",
+    ],
+    visibility: [
+        "//frameworks/base",
+    ],
+}
+
+// Use a filegroup and not a library for wifi sources, as this needs corresponding jar-jar
+// rules on the wifi side.
+// Any class here *must* have a corresponding jarjar rule in the wifi build rules.
+filegroup {
+    name: "net-utils-wifi-service-common-srcs",
+    srcs: [
+        "src_frameworkcommon/android/net/util/NetUtils.java",
+        "src_servicescommon/android/net/NetworkFactory.java",
+    ],
+    visibility: [
+        "//frameworks/opt/net/wifi/service",
+    ],
+}
diff --git a/staticlibs/src_frameworkcommon/android/net/util/MacAddressUtils.java b/staticlibs/src_frameworkcommon/android/net/util/MacAddressUtils.java
index e71f8fb..3ad452b 100644
--- a/staticlibs/src_frameworkcommon/android/net/util/MacAddressUtils.java
+++ b/staticlibs/src_frameworkcommon/android/net/util/MacAddressUtils.java
@@ -103,7 +103,7 @@
         }
         long longAddr = 0;
         for (byte b : addr) {
-            final int uint8Byte = b & 255;
+            final int uint8Byte = b & 0xff;
             longAddr = (longAddr << 8) + uint8Byte;
         }
         return longAddr;
diff --git a/staticlibs/src_servicescommon/android/net/NetworkFactory.java b/staticlibs/src_servicescommon/android/net/NetworkFactory.java
index 571f796..47054f5 100644
--- a/staticlibs/src_servicescommon/android/net/NetworkFactory.java
+++ b/staticlibs/src_servicescommon/android/net/NetworkFactory.java
@@ -29,9 +29,8 @@
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * A NetworkFactory is an entity that creates NetworkAgent objects.
@@ -49,20 +48,6 @@
  * @hide
  **/
 public class NetworkFactory extends Handler {
-    /* TODO: delete when all callers have migrated to NetworkProvider IDs. */
-    public static class SerialNumber {
-        // Guard used by no network factory.
-        public static final int NONE = -1;
-        // A hardcoded serial number for NetworkAgents representing VPNs. These agents are
-        // not created by any factory, so they use this constant for clarity instead of NONE.
-        public static final int VPN = -2;
-        private static final AtomicInteger sNetworkFactorySerialNumber = new AtomicInteger(1);
-        /** Returns a unique serial number for a factory. */
-        public static final int nextSerialNumber() {
-            return sNetworkFactorySerialNumber.getAndIncrement();
-        }
-    }
-
     private static final boolean DBG = true;
     private static final boolean VDBG = false;
     /**
@@ -115,7 +100,7 @@
     private final String LOG_TAG;
 
     private final Map<NetworkRequest, NetworkRequestInfo> mNetworkRequests =
-            new HashMap<>();
+            new LinkedHashMap<>();
 
     private int mScore;
     private NetworkCapabilities mCapabilityFilter;
@@ -123,7 +108,6 @@
     private int mRefCount = 0;
     private Messenger mMessenger = null;
     private NetworkProvider mProvider = null;
-    private int mProviderId;
 
     public NetworkFactory(Looper looper, Context context, String logTag,
             NetworkCapabilities filter) {
@@ -154,7 +138,7 @@
         };
 
         mMessenger = new Messenger(this);
-        mProviderId = ((ConnectivityManager) mContext.getSystemService(
+        ((ConnectivityManager) mContext.getSystemService(
             Context.CONNECTIVITY_SERVICE)).registerNetworkProvider(mProvider);
     }
 
@@ -307,8 +291,8 @@
             log(" n.requests = " + n.requested);
             log(" n.score = " + n.score);
             log(" mScore = " + mScore);
-            log(" n.providerId = " + n.providerId);
-            log(" mProviderId = " + mProviderId);
+            log(" request.providerId = " + n.providerId);
+            log(" mProvider.id = " + mProvider.getProviderId());
         }
         if (shouldNeedNetworkFor(n)) {
             if (VDBG) log("  needNetworkFor");
@@ -329,7 +313,7 @@
             // If the score of this request is higher or equal to that of this factory and some
             // other factory is responsible for it, then this factory should not track the request
             // because it has no hope of satisfying it.
-            && (n.score < mScore || n.providerId == mProviderId)
+            && (n.score < mScore || n.providerId == mProvider.getProviderId())
             // If this factory can't satisfy the capability needs of this request, then it
             // should not be tracked.
             && n.request.satisfiedBy(mCapabilityFilter)
@@ -347,7 +331,7 @@
             //   assigned to the factory
             // - This factory can't satisfy the capability needs of the request
             // - The concrete implementation of the factory rejects the request
-            && ((n.score > mScore && n.providerId != mProviderId)
+            && ((n.score > mScore && n.providerId != mProvider.getProviderId())
                     || !n.request.satisfiedBy(mCapabilityFilter)
                     || !acceptRequest(n.request, n.score));
     }
@@ -417,11 +401,11 @@
 
     /* TODO: delete when all callers have migrated to NetworkProvider IDs. */
     public int getSerialNumber() {
-        return mProviderId;
+        return mProvider.getProviderId();
     }
 
-    public int getProviderId() {
-        return mProviderId;
+    public NetworkProvider getProvider() {
+        return mProvider;
     }
 
     protected void log(String s) {
@@ -437,8 +421,8 @@
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder("{").append(LOG_TAG).append(" - mProviderId=")
-                .append(mProviderId).append(", ScoreFilter=")
+        StringBuilder sb = new StringBuilder("{").append(LOG_TAG).append(" - providerId=")
+                .append(mProvider.getProviderId()).append(", ScoreFilter=")
                 .append(mScore).append(", Filter=").append(mCapabilityFilter).append(", requests=")
                 .append(mNetworkRequests.size()).append(", refCount=").append(mRefCount)
                 .append("}");