Merge "Add PermissionUtils"
diff --git a/staticlibs/Android.bp b/staticlibs/Android.bp
index c7a4bd5..c6a17fe 100644
--- a/staticlibs/Android.bp
+++ b/staticlibs/Android.bp
@@ -149,7 +149,6 @@
     name: "net-utils-services-common-srcs",
     srcs: [
         "device/android/net/NetworkFactory.java",
-        "device/com/android/net/module/util/CollectionUtils.java",
     ],
     visibility: [
         "//frameworks/base/services/net",
diff --git a/staticlibs/device/android/net/NetworkFactory.java b/staticlibs/device/android/net/NetworkFactory.java
index 55edd29..4bc45cf 100644
--- a/staticlibs/device/android/net/NetworkFactory.java
+++ b/staticlibs/device/android/net/NetworkFactory.java
@@ -244,6 +244,12 @@
         evalRequests();
     }
 
+    /** @deprecated None of the implementors use the score, remove this method */
+    @Deprecated
+    public boolean acceptRequest(NetworkRequest request, int score) {
+        return true;
+    }
+
     /**
      * Overridable function to provide complex filtering.
      * Called for every request every time a new NetworkRequest is seen
@@ -263,7 +269,7 @@
      *
      * @return {@code true} to accept the request.
      */
-    public boolean acceptRequest(NetworkRequest request, int score) {
+    public boolean acceptRequest(NetworkRequest request) {
         return true;
     }
 
@@ -357,8 +363,14 @@
     protected void startNetwork() { }
     protected void stopNetwork() { }
 
-    // override to do fancier stuff
+    /** @deprecated none of the implementors use the score : migrate them */
+    @Deprecated
     protected void needNetworkFor(NetworkRequest networkRequest, int score) {
+        needNetworkFor(networkRequest);
+    }
+
+    // override to do fancier stuff
+    protected void needNetworkFor(NetworkRequest networkRequest) {
         if (++mRefCount == 1) startNetwork();
     }
 
diff --git a/staticlibs/device/com/android/net/module/util/Struct.java b/staticlibs/device/com/android/net/module/util/Struct.java
index 6d8d301..07a7e7a 100644
--- a/staticlibs/device/com/android/net/module/util/Struct.java
+++ b/staticlibs/device/com/android/net/module/util/Struct.java
@@ -602,4 +602,9 @@
         writeToByteBufferInternal(buffer, fieldInfos);
         return output;
     }
+
+    /** Convert the parsed Struct subclass object to byte array with native order. */
+    public final byte[] writeToBytes() {
+        return writeToBytes(ByteOrder.nativeOrder());
+    }
 }
diff --git a/staticlibs/device/com/android/net/module/util/CollectionUtils.java b/staticlibs/framework/com/android/net/module/util/CollectionUtils.java
similarity index 100%
rename from staticlibs/device/com/android/net/module/util/CollectionUtils.java
rename to staticlibs/framework/com/android/net/module/util/CollectionUtils.java
diff --git a/staticlibs/device/com/android/net/module/util/NetworkCapabilitiesUtils.java b/staticlibs/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
similarity index 98%
rename from staticlibs/device/com/android/net/module/util/NetworkCapabilitiesUtils.java
rename to staticlibs/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
index dd5a481..5a0200f 100644
--- a/staticlibs/device/com/android/net/module/util/NetworkCapabilitiesUtils.java
+++ b/staticlibs/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
@@ -23,7 +23,8 @@
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI_AWARE;
 
-import androidx.annotation.NonNull;
+import android.annotation.NonNull;
+
 
 /**
  * Utilities to examine {@link android.net.NetworkCapabilities}.
diff --git a/staticlibs/tests/unit/src/com/android/net/module/util/StructTest.java b/staticlibs/tests/unit/src/com/android/net/module/util/StructTest.java
index 47b34b9..d5e27fb 100644
--- a/staticlibs/tests/unit/src/com/android/net/module/util/StructTest.java
+++ b/staticlibs/tests/unit/src/com/android/net/module/util/StructTest.java
@@ -697,4 +697,23 @@
         assertThrows(IllegalArgumentException.class,
                 () -> Struct.parse(BadMacAddressType.class, toByteBuffer("ffffffffffff")));
     }
+
+    @Test
+    public void testStructToByteArray() {
+        final SignedDataMessage littleEndianMsg = doParsingMessageTest(SIGNED_DATA,
+                SignedDataMessage.class, ByteOrder.LITTLE_ENDIAN);
+        assertArrayEquals(toByteBuffer(SIGNED_DATA).array(),
+                littleEndianMsg.writeToBytes(ByteOrder.LITTLE_ENDIAN));
+
+        final SignedDataMessage bigEndianMsg = doParsingMessageTest(SIGNED_DATA,
+                SignedDataMessage.class, ByteOrder.BIG_ENDIAN);
+        assertArrayEquals(toByteBuffer(SIGNED_DATA).array(),
+                bigEndianMsg.writeToBytes(ByteOrder.BIG_ENDIAN));
+
+        final SignedDataMessage nativeOrderMsg = ByteOrder.nativeOrder().equals(
+                ByteOrder.LITTLE_ENDIAN) ? littleEndianMsg : bigEndianMsg;
+        assertArrayEquals(toByteBuffer(SIGNED_DATA).array(),
+                nativeOrderMsg.writeToBytes());
+
+    }
 }