Add Executors to NSD shim

The new APIs use Executors and need shims for testing

Bug: 218752665
Test: atest NsdManagerTest
Change-Id: I5ade8c8019eff1bd67ba07d0d7573a9b21437220
diff --git a/apishim/29/com/android/networkstack/apishim/api29/NsdShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/NsdShimImpl.java
index b54746a..51cb2ba 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/NsdShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/NsdShimImpl.java
@@ -29,6 +29,8 @@
 import com.android.networkstack.apishim.common.NsdShim;
 import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
 
+import java.util.concurrent.Executor;
+
 /**
  * Implementation of {@link NsdShim}.
  */
@@ -55,17 +57,33 @@
     }
 
     @Override
+    public void registerService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            int protocolType, @NonNull Executor executor,
+            @NonNull NsdManager.RegistrationListener listener) throws UnsupportedApiLevelException {
+        throw new UnsupportedApiLevelException("Register with an executor is only supported on T+");
+    }
+
+    @Override
     public void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable Network network,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException {
+            @NonNull Executor executor, @NonNull NsdManager.DiscoveryListener listener)
+            throws UnsupportedApiLevelException {
         throw new UnsupportedApiLevelException("Discover on network is only supported on T+");
     }
 
     @Override
     public void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable NetworkRequest request,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException {
+            @NonNull Executor executor, @NonNull NsdManager.DiscoveryListener listener)
+            throws UnsupportedApiLevelException {
         throw new UnsupportedApiLevelException(
                 "Discover with NetworkRequest is only supported on T+");
     }
+
+    @Override
+    public void resolveService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            @NonNull Executor executor, @NonNull NsdManager.ResolveListener resolveListener)
+            throws UnsupportedApiLevelException {
+        throw new UnsupportedApiLevelException("Resolve with executor is only supported on T+");
+    }
 }
diff --git a/apishim/33/com/android/networkstack/apishim/NsdShimImpl.java b/apishim/33/com/android/networkstack/apishim/NsdShimImpl.java
index bee56d3..2f13397 100644
--- a/apishim/33/com/android/networkstack/apishim/NsdShimImpl.java
+++ b/apishim/33/com/android/networkstack/apishim/NsdShimImpl.java
@@ -30,6 +30,8 @@
 import com.android.networkstack.apishim.common.NsdShim;
 import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
 
+import java.util.concurrent.Executor;
+
 /**
  * Implementation of {@link com.android.networkstack.apishim.common.NsdShim}.
  */
@@ -60,16 +62,32 @@
     }
 
     @Override
+    public void registerService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            int protocolType, @NonNull Executor executor,
+            @NonNull NsdManager.RegistrationListener listener) {
+        nsdManager.registerService(serviceInfo, protocolType, executor, listener);
+    }
+
+    @Override
     public void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable Network network,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException {
-        nsdManager.discoverServices(serviceType, protocolType, network, listener);
+            @NonNull Executor executor, @NonNull NsdManager.DiscoveryListener listener)
+            throws UnsupportedApiLevelException {
+        nsdManager.discoverServices(serviceType, protocolType, network, executor, listener);
     }
 
     @Override
     public void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable NetworkRequest request,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException {
-        nsdManager.discoverServices(serviceType, protocolType, request, listener);
+            @NonNull Executor executor, @NonNull NsdManager.DiscoveryListener listener)
+            throws UnsupportedApiLevelException {
+        nsdManager.discoverServices(serviceType, protocolType, request, executor, listener);
+    }
+
+    @Override
+    public void resolveService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            @NonNull Executor executor, @NonNull NsdManager.ResolveListener resolveListener)
+            throws UnsupportedApiLevelException {
+        nsdManager.resolveService(serviceInfo, executor, resolveListener);
     }
 }
diff --git a/apishim/common/com/android/networkstack/apishim/common/NsdShim.java b/apishim/common/com/android/networkstack/apishim/common/NsdShim.java
index ff5209e..9e067ee 100644
--- a/apishim/common/com/android/networkstack/apishim/common/NsdShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/NsdShim.java
@@ -19,11 +19,16 @@
 import android.net.Network;
 import android.net.NetworkRequest;
 import android.net.nsd.NsdManager;
+import android.net.nsd.NsdManager.DiscoveryListener;
+import android.net.nsd.NsdManager.RegistrationListener;
+import android.net.nsd.NsdManager.ResolveListener;
 import android.net.nsd.NsdServiceInfo;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import java.util.concurrent.Executor;
+
 /** Shim for NSD APIs, including {@link android.net.nsd.NsdManager} and
  * {@link android.net.nsd.NsdServiceInfo}. */
 public interface NsdShim {
@@ -39,16 +44,32 @@
     void setNetwork(@NonNull NsdServiceInfo serviceInfo, @Nullable Network network);
 
     /**
-     * @see NsdManager#discoverServices(String, int, Network, NsdManager.DiscoveryListener)
+     * @see NsdManager#registerService(NsdServiceInfo, int, Executor, RegistrationListener)
+     */
+    void registerService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            int protocolType, @NonNull Executor executor, @NonNull RegistrationListener listener)
+            throws UnsupportedApiLevelException;
+
+    /**
+     * @see NsdManager#discoverServices(String, int, Network, Executor, DiscoveryListener)
      */
     void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable Network network,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException;
+            @NonNull Executor executor, @NonNull DiscoveryListener listener)
+            throws UnsupportedApiLevelException;
 
     /**
-     * @see NsdManager#discoverServices(String, int, NetworkRequest, NsdManager.DiscoveryListener)
+     * @see NsdManager#resolveService(NsdServiceInfo, Executor, ResolveListener)
+     */
+    void resolveService(@NonNull NsdManager nsdManager, @NonNull NsdServiceInfo serviceInfo,
+            @NonNull Executor executor, @NonNull ResolveListener resolveListener)
+            throws UnsupportedApiLevelException;
+
+    /**
+     * @see NsdManager#discoverServices(String, int, NetworkRequest, Executor, DiscoveryListener)
      */
     void discoverServices(@NonNull NsdManager nsdManager, @NonNull String serviceType,
             int protocolType, @Nullable NetworkRequest request,
-            @NonNull NsdManager.DiscoveryListener listener) throws UnsupportedApiLevelException;
+            @NonNull Executor executor, @NonNull DiscoveryListener listener)
+            throws UnsupportedApiLevelException;
 }