diff --git a/framework-t/src/android/net/nsd/OffloadServiceInfo.java b/framework-t/src/android/net/nsd/OffloadServiceInfo.java index 2c839bc7b7..d5dbf19e76 100644 --- a/framework-t/src/android/net/nsd/OffloadServiceInfo.java +++ b/framework-t/src/android/net/nsd/OffloadServiceInfo.java @@ -19,7 +19,9 @@ package android.net.nsd; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.annotation.SystemApi; +import android.os.Build; import android.os.Parcel; import android.os.Parcelable; @@ -38,6 +40,7 @@ import java.util.Objects; * @hide */ @SystemApi +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public final class OffloadServiceInfo implements Parcelable { @NonNull private final Key mKey; diff --git a/service-t/Android.bp b/service-t/Android.bp index 08527a35d2..7e2d2f46a5 100644 --- a/service-t/Android.bp +++ b/service-t/Android.bp @@ -91,6 +91,10 @@ java_library { java_library { name: "service-connectivity-mdns-standalone-build-test", sdk_version: "core_platform", + min_sdk_version: "21", + lint: { + error_checks: ["NewApi"], + }, srcs: [ "src/com/android/server/connectivity/mdns/**/*.java", ":framework-connectivity-t-mdns-standalone-build-sources", diff --git a/service-t/src/com/android/server/NsdService.java b/service-t/src/com/android/server/NsdService.java index 1250e656aa..fc6c6e4212 100644 --- a/service-t/src/com/android/server/NsdService.java +++ b/service-t/src/com/android/server/NsdService.java @@ -35,6 +35,7 @@ import static com.android.server.connectivity.mdns.util.MdnsUtils.Clock; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; @@ -59,6 +60,7 @@ import android.net.nsd.OffloadEngine; import android.net.nsd.OffloadServiceInfo; import android.net.wifi.WifiManager; import android.os.Binder; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; @@ -120,6 +122,7 @@ import java.util.regex.Pattern; * * @hide */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class NsdService extends INsdManager.Stub { private static final String TAG = "NsdService"; private static final String MDNS_TAG = "mDnsConnector"; diff --git a/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java b/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java index fa3b646e9e..1582fb66b4 100644 --- a/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java +++ b/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java @@ -19,6 +19,7 @@ package com.android.server.connectivity.mdns; import static com.android.server.connectivity.mdns.MdnsServiceTypeClient.INVALID_TRANSACTION_ID; import android.annotation.NonNull; +import android.os.Build; import android.text.TextUtils; import android.util.Pair; @@ -220,7 +221,9 @@ public class EnqueueMdnsQueryCallable implements Callable= Build.VERSION_CODES.TIRAMISU + && requestSender instanceof MdnsMultinetworkSocketClient) { ((MdnsMultinetworkSocketClient) requestSender).sendPacketRequestingUnicastResponse( packet, socketKey, onlyUseIpv6OnIpv6OnlyNetworks); } else { @@ -228,7 +231,8 @@ public class EnqueueMdnsQueryCallable implements Callable= Build.VERSION_CODES.TIRAMISU + && requestSender instanceof MdnsMultinetworkSocketClient) { ((MdnsMultinetworkSocketClient) requestSender) .sendPacketRequestingMulticastResponse( packet, socketKey, onlyUseIpv6OnIpv6OnlyNetworks); diff --git a/service-t/src/com/android/server/connectivity/mdns/ExecutorProvider.java b/service-t/src/com/android/server/connectivity/mdns/ExecutorProvider.java index 161669b15e..5d75b48681 100644 --- a/service-t/src/com/android/server/connectivity/mdns/ExecutorProvider.java +++ b/service-t/src/com/android/server/connectivity/mdns/ExecutorProvider.java @@ -17,7 +17,8 @@ package com.android.server.connectivity.mdns; import android.annotation.NonNull; -import android.util.ArraySet; + +import com.android.server.connectivity.mdns.util.MdnsUtils; import java.util.Set; import java.util.concurrent.ScheduledExecutorService; @@ -30,7 +31,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; public class ExecutorProvider { private final Set serviceTypeClientSchedulerExecutors = - new ArraySet<>(); + MdnsUtils.newSet(); /** Returns a new {@link ScheduledExecutorService} instance. */ public ScheduledExecutorService newServiceTypeClientSchedulerExecutor() { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsAdvertiser.java b/service-t/src/com/android/server/connectivity/mdns/MdnsAdvertiser.java index ce13747664..a946bca40b 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsAdvertiser.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsAdvertiser.java @@ -21,12 +21,14 @@ import static com.android.server.connectivity.mdns.MdnsRecord.MAX_LABEL_LENGTH; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.net.LinkAddress; import android.net.Network; import android.net.nsd.NsdManager; import android.net.nsd.NsdServiceInfo; import android.net.nsd.OffloadEngine; import android.net.nsd.OffloadServiceInfo; +import android.os.Build; import android.os.Looper; import android.util.ArrayMap; import android.util.Log; @@ -50,6 +52,7 @@ import java.util.function.Consumer; * * All methods except the constructor must be called on the looper thread. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsAdvertiser { private static final String TAG = MdnsAdvertiser.class.getSimpleName(); static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG); diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsAnnouncer.java b/service-t/src/com/android/server/connectivity/mdns/MdnsAnnouncer.java index fd2c32e439..d9bc64305f 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsAnnouncer.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsAnnouncer.java @@ -18,6 +18,8 @@ package com.android.server.connectivity.mdns; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; +import android.os.Build; import android.os.Looper; import com.android.internal.annotations.VisibleForTesting; @@ -31,6 +33,7 @@ import java.util.List; * * This allows maintaining other hosts' caches up-to-date. See RFC6762 8.3. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsAnnouncer extends MdnsPacketRepeater { private static final long ANNOUNCEMENT_INITIAL_DELAY_MS = 1000L; @VisibleForTesting diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java index d55098cdeb..24e9fa8977 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java @@ -35,6 +35,7 @@ import com.android.server.connectivity.mdns.util.MdnsUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * This class keeps tracking the set of registered {@link MdnsServiceBrowserListener} instances, and @@ -102,8 +103,12 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback { } public void remove(@NonNull MdnsServiceTypeClient client) { - final int index = clients.indexOfValue(client); - clients.removeAt(index); + for (int i = 0; i < clients.size(); ++i) { + if (Objects.equals(client, clients.valueAt(i))) { + clients.removeAt(i); + break; + } + } } public boolean isEmpty() { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceAdvertiser.java b/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceAdvertiser.java index 6454959d9d..40dfd571fa 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceAdvertiser.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceAdvertiser.java @@ -20,8 +20,10 @@ import static com.android.server.connectivity.mdns.MdnsConstants.NO_PACKET; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.net.LinkAddress; import android.net.nsd.NsdServiceInfo; +import android.os.Build; import android.os.Handler; import android.os.Looper; @@ -39,6 +41,7 @@ import java.util.List; /** * A class that handles advertising services on a {@link MdnsInterfaceSocket} tied to an interface. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsInterfaceAdvertiser implements MulticastPacketReader.PacketHandler { private static final boolean DBG = MdnsAdvertiser.DBG; @VisibleForTesting diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceSocket.java b/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceSocket.java index 534f8d0dc8..63dd703612 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceSocket.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsInterfaceSocket.java @@ -20,8 +20,10 @@ import static com.android.server.connectivity.mdns.MdnsSocket.MULTICAST_IPV4_ADD import static com.android.server.connectivity.mdns.MdnsSocket.MULTICAST_IPV6_ADDRESS; import android.annotation.NonNull; +import android.annotation.RequiresApi; import android.net.LinkAddress; import android.net.util.SocketUtils; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.ParcelFileDescriptor; @@ -49,6 +51,7 @@ import java.util.List; * @see MulticastSocket for javadoc of each public method. * @see MulticastSocket for javadoc of each public method. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsInterfaceSocket { private static final String TAG = MdnsInterfaceSocket.class.getSimpleName(); @NonNull private final MulticastSocket mMulticastSocket; diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java index 2ef7368138..4ba691212f 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java @@ -20,8 +20,10 @@ import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningO import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.net.LinkAddress; import android.net.Network; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.util.ArrayMap; @@ -40,6 +42,7 @@ import java.util.List; * * *

This class is not thread safe. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsMultinetworkSocketClient implements MdnsSocketClientBase { private static final String TAG = MdnsMultinetworkSocketClient.class.getSimpleName(); private static final boolean DBG = MdnsDiscoveryManager.DBG; diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsPacket.java b/service-t/src/com/android/server/connectivity/mdns/MdnsPacket.java index 27002b9cc6..7fa3f845ea 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsPacket.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsPacket.java @@ -18,7 +18,6 @@ package com.android.server.connectivity.mdns; import android.annotation.NonNull; import android.annotation.Nullable; -import android.util.Log; import java.io.EOFException; import java.io.IOException; @@ -206,9 +205,6 @@ public class MdnsPacket { default: { try { - if (MdnsAdvertiser.DBG) { - Log.i(TAG, "Skipping parsing of record of unhandled type " + type); - } skipMdnsRecord(reader, isQuestion); return null; } catch (IOException e) { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsPacketRepeater.java b/service-t/src/com/android/server/connectivity/mdns/MdnsPacketRepeater.java index 12ed1396fd..fd0f5c9eaf 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsPacketRepeater.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsPacketRepeater.java @@ -21,6 +21,8 @@ import static com.android.server.connectivity.mdns.MdnsRecordRepository.IPV6_ADD import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -34,6 +36,7 @@ import java.net.InetSocketAddress; * A class used to send several packets at given time intervals. * @param The type of the request providing packet repeating parameters. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public abstract class MdnsPacketRepeater { private static final boolean DBG = MdnsAdvertiser.DBG; private static final InetSocketAddress[] ALL_ADDRS = new InetSocketAddress[] { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsProber.java b/service-t/src/com/android/server/connectivity/mdns/MdnsProber.java index ba37f32659..f2b562ace3 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsProber.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsProber.java @@ -17,6 +17,8 @@ package com.android.server.connectivity.mdns; import android.annotation.NonNull; +import android.annotation.RequiresApi; +import android.os.Build; import android.os.Looper; import com.android.internal.annotations.VisibleForTesting; @@ -33,6 +35,7 @@ import java.util.List; * * TODO: implement receiving replies and handling conflicts. */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsProber extends MdnsPacketRepeater { private static final long CONFLICT_RETRY_DELAY_MS = 5_000L; diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsReplySender.java b/service-t/src/com/android/server/connectivity/mdns/MdnsReplySender.java index 71057fbbb2..3d64b5ab04 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsReplySender.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsReplySender.java @@ -19,6 +19,8 @@ package com.android.server.connectivity.mdns; import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread; import android.annotation.NonNull; +import android.annotation.RequiresApi; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -41,6 +43,7 @@ import java.util.Collections; * * TODO: implement sending after a delay, combining queued replies and duplicate answer suppression */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsReplySender { private static final boolean DBG = MdnsAdvertiser.DBG; private static final int MSG_SEND = 1; diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java b/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java index 2f10bde9c7..a3cc0eba5b 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java @@ -20,7 +20,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.net.Network; import android.util.ArrayMap; -import android.util.ArraySet; import android.util.Pair; import com.android.server.connectivity.mdns.util.MdnsUtils; @@ -29,6 +28,7 @@ import java.io.EOFException; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; /** A class that decodes mDNS responses from UDP packets. */ public class MdnsResponseDecoder { @@ -125,7 +125,7 @@ public class MdnsResponseDecoder { * 2) A copy of the original responses with some of them have records * update or only contains receive time updated. */ - public Pair, ArrayList> augmentResponses( + public Pair, ArrayList> augmentResponses( @NonNull MdnsPacket mdnsPacket, @NonNull Collection existingResponses, int interfaceIndex, @Nullable Network network) { @@ -136,7 +136,7 @@ public class MdnsResponseDecoder { records.addAll(mdnsPacket.authorityRecords); records.addAll(mdnsPacket.additionalRecords); - final ArraySet modified = new ArraySet<>(); + final Set modified = MdnsUtils.newSet(); final ArrayList responses = new ArrayList<>(existingResponses.size()); final ArrayMap augmentedToOriginal = new ArrayMap<>(); for (MdnsResponse existing : existingResponses) { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java index f09596d118..63835d9f54 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java @@ -22,7 +22,8 @@ import android.net.Network; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import android.util.ArraySet; + +import com.android.server.connectivity.mdns.util.MdnsUtils; import java.util.ArrayList; import java.util.Collection; @@ -46,11 +47,11 @@ public class MdnsSearchOptions implements Parcelable { public MdnsSearchOptions createFromParcel(Parcel source) { return new MdnsSearchOptions( source.createStringArrayList(), - source.readBoolean(), - source.readBoolean(), + source.readInt() == 1, + source.readInt() == 1, source.readParcelable(null), source.readString(), - source.readBoolean(), + source.readInt() == 1, source.readInt()); } @@ -165,11 +166,11 @@ public class MdnsSearchOptions implements Parcelable { @Override public void writeToParcel(Parcel out, int flags) { out.writeStringList(subtypes); - out.writeBoolean(isPassiveMode); - out.writeBoolean(removeExpiredService); + out.writeInt(isPassiveMode ? 1 : 0); + out.writeInt(removeExpiredService ? 1 : 0); out.writeParcelable(mNetwork, 0); out.writeString(resolveInstanceName); - out.writeBoolean(onlyUseIpv6OnIpv6OnlyNetworks); + out.writeInt(onlyUseIpv6OnIpv6OnlyNetworks ? 1 : 0); out.writeInt(numOfQueriesBeforeBackoff); } @@ -184,7 +185,7 @@ public class MdnsSearchOptions implements Parcelable { private String resolveInstanceName; private Builder() { - subtypes = new ArraySet<>(); + subtypes = MdnsUtils.newSet(); } /** diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java index 861d8d10e8..bbe8f4c555 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java @@ -27,7 +27,6 @@ import android.os.Looper; import android.os.Message; import android.text.TextUtils; import android.util.ArrayMap; -import android.util.ArraySet; import android.util.Pair; import com.android.internal.annotations.VisibleForTesting; @@ -42,6 +41,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.concurrent.ScheduledExecutorService; /** @@ -414,11 +414,11 @@ public class MdnsServiceTypeClient { currentList.add(additionalResponse); } } - final Pair, ArrayList> augmentedResult = + final Pair, ArrayList> augmentedResult = responseDecoder.augmentResponses(packet, currentList, socketKey.getInterfaceIndex(), socketKey.getNetwork()); - final ArraySet modifiedResponse = augmentedResult.first; + final Set modifiedResponse = augmentedResult.first; final ArrayList allResponses = augmentedResult.second; for (MdnsResponse response : allResponses) { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java index 23c5a4d7fb..5c9ec09e49 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java @@ -19,12 +19,12 @@ package com.android.server.connectivity.mdns; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_VPN; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; - import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread; import static com.android.server.connectivity.mdns.util.MdnsUtils.isNetworkMatched; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresApi; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -41,6 +41,7 @@ import android.net.TetheringManager.TetheringEventCallback; import android.net.wifi.p2p.WifiP2pGroup; import android.net.wifi.p2p.WifiP2pInfo; import android.net.wifi.p2p.WifiP2pManager; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.util.ArrayMap; @@ -67,6 +68,7 @@ import java.util.Objects; * to their default value (0, false or null). * */ +@RequiresApi(Build.VERSION_CODES.TIRAMISU) public class MdnsSocketProvider { private static final String TAG = MdnsSocketProvider.class.getSimpleName(); private static final boolean DBG = MdnsDiscoveryManager.DBG; diff --git a/service-t/src/com/android/server/connectivity/mdns/MulticastPacketReader.java b/service-t/src/com/android/server/connectivity/mdns/MulticastPacketReader.java index 63119ac440..3cd77a4610 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MulticastPacketReader.java +++ b/service-t/src/com/android/server/connectivity/mdns/MulticastPacketReader.java @@ -22,9 +22,9 @@ import android.annotation.NonNull; import android.os.Handler; import android.os.ParcelFileDescriptor; import android.system.Os; -import android.util.ArraySet; import com.android.net.module.util.FdEventsReader; +import com.android.server.connectivity.mdns.util.MdnsUtils; import java.io.FileDescriptor; import java.net.InetSocketAddress; @@ -39,7 +39,7 @@ public class MulticastPacketReader extends FdEventsReader mPacketHandlers = new ArraySet<>(); + private final Set mPacketHandlers = MdnsUtils.newSet(); interface PacketHandler { void handlePacket(byte[] recvbuf, int length, InetSocketAddress src); diff --git a/service-t/src/com/android/server/connectivity/mdns/util/MdnsUtils.java b/service-t/src/com/android/server/connectivity/mdns/util/MdnsUtils.java index c1c9c42390..0dcc560e46 100644 --- a/service-t/src/com/android/server/connectivity/mdns/util/MdnsUtils.java +++ b/service-t/src/com/android/server/connectivity/mdns/util/MdnsUtils.java @@ -19,6 +19,7 @@ package com.android.server.connectivity.mdns.util; import android.annotation.NonNull; import android.annotation.Nullable; import android.net.Network; +import android.os.Build; import android.os.Handler; import android.os.SystemClock; import android.util.ArraySet; @@ -34,6 +35,8 @@ import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.nio.charset.StandardCharsets; +import java.util.HashSet; +import java.util.Set; /** * Mdns utility functions. @@ -57,6 +60,17 @@ public class MdnsUtils { return new String(outChars); } + /** + * Create a ArraySet or HashSet based on the sdk version. + */ + public static Set newSet() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return new ArraySet<>(); + } else { + return new HashSet<>(); + } + } + /** * Convert the array of labels to DNS case-insensitive lowercase. */ @@ -142,7 +156,7 @@ public class MdnsUtils { /*** Check whether the target network matches any of the current networks */ public static boolean isAnyNetworkMatched(@Nullable Network targetNetwork, - ArraySet currentNetworks) { + Set currentNetworks) { if (targetNetwork == null) { return !currentNetworks.isEmpty(); } diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java index d71bea447c..3fc656ace6 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java @@ -17,10 +17,8 @@ package com.android.server.connectivity.mdns; import static android.net.InetAddresses.parseNumericAddress; - import static com.android.server.connectivity.mdns.util.MdnsUtils.Clock; import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2; - import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -343,9 +341,9 @@ public class MdnsResponseDecoderTests { assertNotNull(parsedPacket); final Network network = mock(Network.class); - responses = decoder.augmentResponses(parsedPacket, + responses = new ArraySet<>(decoder.augmentResponses(parsedPacket, /* existingResponses= */ Collections.emptyList(), - /* interfaceIndex= */ 10, network /* expireOnExit= */).first; + /* interfaceIndex= */ 10, network /* expireOnExit= */).first); assertEquals(responses.size(), 1); assertEquals(responses.valueAt(0).getInterfaceIndex(), 10); @@ -641,8 +639,8 @@ public class MdnsResponseDecoderTests { final MdnsPacket parsedPacket = MdnsResponseDecoder.parseResponse(data, data.length); assertNotNull(parsedPacket); - return decoder.augmentResponses(parsedPacket, + return new ArraySet<>(decoder.augmentResponses(parsedPacket, existingResponses, - MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class)).first; + MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class)).first); } } \ No newline at end of file