From 00cf7eda31b5fae339eaf26dd2b43f49871c0366 Mon Sep 17 00:00:00 2001
From: Yuyang Huang <yuyanghuang@google.com>
Date: Mon, 15 May 2023 10:54:07 +0900
Subject: [PATCH] Enable service offload API

API-Coverage-Bug: 282618639
Bug: 269240366
Test: atest CtsNetTestCases
Change-Id: I7ac72b675ff3715891f31bc03c453e14b1264e40
---
 framework-t/api/system-current.txt            | 40 +++++++++++++++++++
 .../src/android/net/nsd/IOffloadEngine.aidl   |  1 +
 .../src/android/net/nsd/NsdManager.java       |  5 ++-
 .../src/android/net/nsd/OffloadEngine.java    |  9 ++++-
 .../android/net/nsd/OffloadServiceInfo.java   |  3 +-
 5 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/framework-t/api/system-current.txt b/framework-t/api/system-current.txt
index 87b0a6414f..64762b4050 100644
--- a/framework-t/api/system-current.txt
+++ b/framework-t/api/system-current.txt
@@ -348,3 +348,43 @@ package android.net.netstats.provider {
 
 }
 
+package android.net.nsd {
+
+  public final class NsdManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void registerOffloadEngine(@NonNull String, long, long, @NonNull java.util.concurrent.Executor, @NonNull android.net.nsd.OffloadEngine);
+    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void unregisterOffloadEngine(@NonNull android.net.nsd.OffloadEngine);
+  }
+
+  public interface OffloadEngine {
+    method public void onOffloadServiceRemoved(@NonNull android.net.nsd.OffloadServiceInfo);
+    method public void onOffloadServiceUpdated(@NonNull android.net.nsd.OffloadServiceInfo);
+    field public static final int OFFLOAD_CAPABILITY_BYPASS_MULTICAST_LOCK = 1; // 0x1
+    field public static final int OFFLOAD_TYPE_FILTER_QUERIES = 2; // 0x2
+    field public static final int OFFLOAD_TYPE_FILTER_REPLIES = 4; // 0x4
+    field public static final int OFFLOAD_TYPE_REPLY = 1; // 0x1
+  }
+
+  public final class OffloadServiceInfo implements android.os.Parcelable {
+    ctor public OffloadServiceInfo(@NonNull android.net.nsd.OffloadServiceInfo.Key, @NonNull java.util.List<java.lang.String>, @NonNull String, @Nullable byte[], @IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int, long);
+    method public int describeContents();
+    method @NonNull public String getHostname();
+    method @NonNull public android.net.nsd.OffloadServiceInfo.Key getKey();
+    method @Nullable public byte[] getOffloadPayload();
+    method public long getOffloadType();
+    method public int getPriority();
+    method @NonNull public java.util.List<java.lang.String> getSubtypes();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.OffloadServiceInfo> CREATOR;
+  }
+
+  public static final class OffloadServiceInfo.Key implements android.os.Parcelable {
+    ctor public OffloadServiceInfo.Key(@NonNull String, @NonNull String);
+    method public int describeContents();
+    method @NonNull public String getServiceName();
+    method @NonNull public String getServiceType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.OffloadServiceInfo.Key> CREATOR;
+  }
+
+}
+
diff --git a/framework-t/src/android/net/nsd/IOffloadEngine.aidl b/framework-t/src/android/net/nsd/IOffloadEngine.aidl
index 379c2e0bc4..2af733dd58 100644
--- a/framework-t/src/android/net/nsd/IOffloadEngine.aidl
+++ b/framework-t/src/android/net/nsd/IOffloadEngine.aidl
@@ -20,6 +20,7 @@ import android.net.nsd.OffloadServiceInfo;
 
 /**
  * Callbacks from NsdService to inform providers of packet offload.
+ *
  * @hide
  */
 oneway interface IOffloadEngine {
diff --git a/framework-t/src/android/net/nsd/NsdManager.java b/framework-t/src/android/net/nsd/NsdManager.java
index 934f185e50..ef0e34bfe7 100644
--- a/framework-t/src/android/net/nsd/NsdManager.java
+++ b/framework-t/src/android/net/nsd/NsdManager.java
@@ -28,6 +28,7 @@ import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.app.compat.CompatChanges;
 import android.content.Context;
@@ -364,7 +365,7 @@ public final class NsdManager {
      *
      * @hide
      */
-    //@SystemApi
+    @SystemApi
     @RequiresPermission(anyOf = {NETWORK_SETTINGS, PERMISSION_MAINLINE_NETWORK_STACK,
             NETWORK_STACK})
     public void registerOffloadEngine(@NonNull String ifaceName,
@@ -401,7 +402,7 @@ public final class NsdManager {
      *
      * @hide
      */
-    //@SystemApi
+    @SystemApi
     @RequiresPermission(anyOf = {NETWORK_SETTINGS, PERMISSION_MAINLINE_NETWORK_STACK,
             NETWORK_STACK})
     public void unregisterOffloadEngine(@NonNull OffloadEngine engine) {
diff --git a/framework-t/src/android/net/nsd/OffloadEngine.java b/framework-t/src/android/net/nsd/OffloadEngine.java
index d9397252d6..b566b13e92 100644
--- a/framework-t/src/android/net/nsd/OffloadEngine.java
+++ b/framework-t/src/android/net/nsd/OffloadEngine.java
@@ -18,6 +18,7 @@ package android.net.nsd;
 
 import android.annotation.LongDef;
 import android.annotation.NonNull;
+import android.annotation.SystemApi;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -32,7 +33,7 @@ import java.lang.annotation.RetentionPolicy;
  *
  * @hide
  */
-//@SystemApi
+@SystemApi
 public interface OffloadEngine {
     /**
      * Indicates that the OffloadEngine can generate replies to mDns queries.
@@ -55,6 +56,9 @@ public interface OffloadEngine {
      */
     int OFFLOAD_CAPABILITY_BYPASS_MULTICAST_LOCK = 1;
 
+    /**
+     * @hide
+     */
     @Retention(RetentionPolicy.SOURCE)
     @LongDef(flag = true, prefix = {"OFFLOAD_TYPE"}, value = {
             OFFLOAD_TYPE_REPLY,
@@ -63,6 +67,9 @@ public interface OffloadEngine {
     })
     @interface OffloadType {}
 
+    /**
+     * @hide
+     */
     @Retention(RetentionPolicy.SOURCE)
     @LongDef(flag = true, prefix = {"OFFLOAD_CAPABILITY"}, value = {
             OFFLOAD_CAPABILITY_BYPASS_MULTICAST_LOCK
diff --git a/framework-t/src/android/net/nsd/OffloadServiceInfo.java b/framework-t/src/android/net/nsd/OffloadServiceInfo.java
index 4aec7207d3..7bd5a7d5a5 100644
--- a/framework-t/src/android/net/nsd/OffloadServiceInfo.java
+++ b/framework-t/src/android/net/nsd/OffloadServiceInfo.java
@@ -19,6 +19,7 @@ package android.net.nsd;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -36,7 +37,7 @@ import java.util.Objects;
  *
  * @hide
  */
-// @SystemApi
+@SystemApi
 public final class OffloadServiceInfo implements Parcelable {
     @NonNull
     private final Key mKey;
-- 
GitLab