Merge "Add newApi linter check for mDNS library" into main
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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<Pair<Integer, List<Str
|
||||
throws IOException {
|
||||
DatagramPacket packet = packetWriter.getPacket(address);
|
||||
if (expectUnicastResponse) {
|
||||
if (requestSender instanceof MdnsMultinetworkSocketClient) {
|
||||
// MdnsMultinetworkSocketClient is only available on T+
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
|
||||
&& requestSender instanceof MdnsMultinetworkSocketClient) {
|
||||
((MdnsMultinetworkSocketClient) requestSender).sendPacketRequestingUnicastResponse(
|
||||
packet, socketKey, onlyUseIpv6OnIpv6OnlyNetworks);
|
||||
} else {
|
||||
@@ -228,7 +231,8 @@ public class EnqueueMdnsQueryCallable implements Callable<Pair<Integer, List<Str
|
||||
packet, onlyUseIpv6OnIpv6OnlyNetworks);
|
||||
}
|
||||
} else {
|
||||
if (requestSender instanceof MdnsMultinetworkSocketClient) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
|
||||
&& requestSender instanceof MdnsMultinetworkSocketClient) {
|
||||
((MdnsMultinetworkSocketClient) requestSender)
|
||||
.sendPacketRequestingMulticastResponse(
|
||||
packet, socketKey, onlyUseIpv6OnIpv6OnlyNetworks);
|
||||
|
||||
@@ -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<ScheduledExecutorService> serviceTypeClientSchedulerExecutors =
|
||||
new ArraySet<>();
|
||||
MdnsUtils.newSet();
|
||||
|
||||
/** Returns a new {@link ScheduledExecutorService} instance. */
|
||||
public ScheduledExecutorService newServiceTypeClientSchedulerExecutor() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<MdnsAnnouncer.BaseAnnouncementInfo> {
|
||||
private static final long ANNOUNCEMENT_INITIAL_DELAY_MS = 1000L;
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
*
|
||||
* * <p>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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 <T> The type of the request providing packet repeating parameters.
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
|
||||
public abstract class MdnsPacketRepeater<T extends MdnsPacketRepeater.Request> {
|
||||
private static final boolean DBG = MdnsAdvertiser.DBG;
|
||||
private static final InetSocketAddress[] ALL_ADDRS = new InetSocketAddress[] {
|
||||
|
||||
@@ -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<MdnsProber.ProbingInfo> {
|
||||
private static final long CONFLICT_RETRY_DELAY_MS = 5_000L;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<ArraySet<MdnsResponse>, ArrayList<MdnsResponse>> augmentResponses(
|
||||
public Pair<Set<MdnsResponse>, ArrayList<MdnsResponse>> augmentResponses(
|
||||
@NonNull MdnsPacket mdnsPacket,
|
||||
@NonNull Collection<MdnsResponse> existingResponses, int interfaceIndex,
|
||||
@Nullable Network network) {
|
||||
@@ -136,7 +136,7 @@ public class MdnsResponseDecoder {
|
||||
records.addAll(mdnsPacket.authorityRecords);
|
||||
records.addAll(mdnsPacket.additionalRecords);
|
||||
|
||||
final ArraySet<MdnsResponse> modified = new ArraySet<>();
|
||||
final Set<MdnsResponse> modified = MdnsUtils.newSet();
|
||||
final ArrayList<MdnsResponse> responses = new ArrayList<>(existingResponses.size());
|
||||
final ArrayMap<MdnsResponse, MdnsResponse> augmentedToOriginal = new ArrayMap<>();
|
||||
for (MdnsResponse existing : existingResponses) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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<ArraySet<MdnsResponse>, ArrayList<MdnsResponse>> augmentedResult =
|
||||
final Pair<Set<MdnsResponse>, ArrayList<MdnsResponse>> augmentedResult =
|
||||
responseDecoder.augmentResponses(packet, currentList,
|
||||
socketKey.getInterfaceIndex(), socketKey.getNetwork());
|
||||
|
||||
final ArraySet<MdnsResponse> modifiedResponse = augmentedResult.first;
|
||||
final Set<MdnsResponse> modifiedResponse = augmentedResult.first;
|
||||
final ArrayList<MdnsResponse> allResponses = augmentedResult.second;
|
||||
|
||||
for (MdnsResponse response : allResponses) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<MulticastPacketReader.
|
||||
@NonNull
|
||||
private final Handler mHandler;
|
||||
@NonNull
|
||||
private final Set<PacketHandler> mPacketHandlers = new ArraySet<>();
|
||||
private final Set<PacketHandler> mPacketHandlers = MdnsUtils.newSet();
|
||||
|
||||
interface PacketHandler {
|
||||
void handlePacket(byte[] recvbuf, int length, InetSocketAddress src);
|
||||
|
||||
@@ -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 <Type> Set<Type> 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<Network> currentNetworks) {
|
||||
Set<Network> currentNetworks) {
|
||||
if (targetNetwork == null) {
|
||||
return !currentNetworks.isEmpty();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user