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:
commit
830b2bc40e
3 changed files with 21 additions and 8 deletions
|
|
@ -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",
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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<>();
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue