Merge changes If5f9b5e8,I2ae559df into main

* changes:
  Remove delayed messages from handler queue correctly
  Exclude more files from mDNS standalone library
This commit is contained in:
Treehugger Robot 2025-06-26 17:47:59 -07:00 • committed by Android (Google) Code Review
commit 830b2bc40e
3 changed files with 21 additions and 8 deletions

View file

@ -114,8 +114,10 @@ java_library {
"src/com/android/server/connectivity/mdns/MdnsAdvertiser.java",
"src/com/android/server/connectivity/mdns/MdnsAnnouncer.java",
"src/com/android/server/connectivity/mdns/MdnsInterfaceAdvertiser.java",
"src/com/android/server/connectivity/mdns/MdnsPacketRepeater.java",
"src/com/android/server/connectivity/mdns/MdnsProber.java",
"src/com/android/server/connectivity/mdns/MdnsRecordRepository.java",
"src/com/android/server/connectivity/mdns/MdnsReplySender.java",
"src/com/android/server/connectivity/mdns/SchedulerFactory.java",
"src/com/android/server/connectivity/mdns/SocketNetLinkMonitorFactory.java",
],

View file

@ -53,7 +53,8 @@ import java.util.Set;
*/
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
public class MdnsReplySender {
private static final int MSG_SEND = 1;
@VisibleForTesting
static final int MSG_SEND = 1;
private static final int PACKET_NOT_SENT = 0;
private static final int PACKET_SENT = 1;
@ -96,10 +97,11 @@ public class MdnsReplySender {
}
/**
* @see Handler#removeMessages(int)
* @see Handler#removeEqualMessages(int, Object)
*/
public void removeMessages(@NonNull Handler handler, int what, @NonNull Object object) {
handler.removeMessages(what, object);
public void removeEqualMessages(@NonNull Handler handler, int what,
@NonNull Object object) {
handler.removeEqualMessages(what, object);
}
/**
@ -155,7 +157,7 @@ public class MdnsReplySender {
ensureRunningOnHandlerThread(mHandler);
if (mMdnsFeatureFlags.isKnownAnswerSuppressionEnabled()) {
mDependencies.removeMessages(mHandler, MSG_SEND, reply.source);
mDependencies.removeEqualMessages(mHandler, MSG_SEND, reply.source);
final MdnsReplyInfo queuingReply = mSrcReplies.remove(reply.source);
final ArraySet<MdnsRecord> answers = new ArraySet<>();

View file

@ -25,6 +25,7 @@ import android.os.Message
import com.android.net.module.util.SharedLog
import com.android.server.connectivity.mdns.MdnsConstants.IPV4_SOCKET_ADDR
import com.android.server.connectivity.mdns.MdnsConstants.IPV6_SOCKET_ADDR
import com.android.server.connectivity.mdns.MdnsReplySender.MSG_SEND
import com.android.server.connectivity.mdns.MdnsReplySender.getReplyDestination
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo
import com.android.testutils.DevSdkIgnoreRunner
@ -352,12 +353,18 @@ class MdnsReplySenderTest {
private fun verifyMessageQueued(
sender: MdnsReplySender,
replies: List<MdnsReplyInfo>
replies: List<MdnsReplyInfo>,
enableKAS: Boolean = true
): Pair<Handler, Message> {
val handlerCaptor = ArgumentCaptor.forClass(Handler::class.java)
val messageCaptor = ArgumentCaptor.forClass(Message::class.java)
for (reply in replies) {
for ((index, reply) in replies.withIndex()) {
queueReply(sender, reply)
verify(deps, times(if (enableKAS) index + 1 else 0)).removeEqualMessages(
any(),
eq(MSG_SEND),
any()
)
verify(deps).sendMessageDelayed(
handlerCaptor.capture(),
messageCaptor.capture(),
@ -396,7 +403,7 @@ class MdnsReplySenderTest {
source,
emptyList()
)
val (handler, message) = verifyMessageQueued(replySender, listOf(reply))
val (handler, message) = verifyMessageQueued(replySender, listOf(reply), enableKAS = false)
verifyReplySent(handler, message, answers)
}
@ -438,6 +445,7 @@ class MdnsReplySenderTest {
answers
)
queueReply(replySender, knownAnswersReply)
verify(deps, times(2)).removeEqualMessages(any(), eq(MSG_SEND), any())
verify(deps, times(1)).sendMessageDelayed(any(), any(), anyLong())
}
@ -517,6 +525,7 @@ class MdnsReplySenderTest {
)
queueReply(replySender, secondKnownAnswerReply)
verify(deps, times(3)).removeEqualMessages(any(), eq(MSG_SEND), any())
// Verify that no reply is queued, as all answers are known.
verify(deps, times(2)).sendMessageDelayed(any(), any(), anyLong())
}