Merge cherrypicks of ['googleplex-android-review.googlesource.com/32784601'] into 25Q2-release. Change-Id: Ia844cf2e2bf68fe98db30a28e53c94fdc465cf44
diff --git a/src/android/net/util/RawPacketTracker.java b/src/android/net/util/RawPacketTracker.java index b5adcd1..20f0873 100644 --- a/src/android/net/util/RawPacketTracker.java +++ b/src/android/net/util/RawPacketTracker.java
@@ -159,7 +159,7 @@ tracker.setCapture(true); // remove scheduled stop events if it already in the queue - mHandler.removeMessages(CMD_STOP_CAPTURE, ifaceName); + mHandler.removeEqualMessages(CMD_STOP_CAPTURE, ifaceName); // capture up to configured capture time and stop capturing final Message stopMsg = mHandler.obtainMessage(CMD_STOP_CAPTURE, ifaceName); @@ -184,7 +184,7 @@ final Message msg = mHandler.obtainMessage(CMD_STOP_CAPTURE, ifaceName); // remove scheduled stop events if it already in the queue - mHandler.removeMessages(CMD_STOP_CAPTURE, ifaceName); + mHandler.removeEqualMessages(CMD_STOP_CAPTURE, ifaceName); mHandler.sendMessage(msg); }
diff --git a/tests/unit/src/android/net/util/RawPacketTrackerTest.kt b/tests/unit/src/android/net/util/RawPacketTrackerTest.kt index 9e8ad5a..90af65b 100644 --- a/tests/unit/src/android/net/util/RawPacketTrackerTest.kt +++ b/tests/unit/src/android/net/util/RawPacketTrackerTest.kt
@@ -23,6 +23,7 @@ import com.android.testutils.assertThrows import com.android.testutils.visibleOnHandlerThread import kotlin.test.assertEquals +import kotlin.test.assertFalse import kotlin.test.assertTrue import org.junit.After import org.junit.Before @@ -100,6 +101,8 @@ // stop capturing stopCaptureOnHandler(ifaceName) verifySetCapture(false, 1) + + assertFalse(rawTracker.handler.hasMessages(RawPacketTracker.CMD_STOP_CAPTURE)) verifyNoMoreInteractions(tracker) } @@ -166,7 +169,8 @@ } private fun startCaptureOnHandler( - ifaceName: String, maxCaptureTime: Long = TEST_MAX_CAPTURE_TIME_MS + ifaceName: String, + maxCaptureTime: Long = TEST_MAX_CAPTURE_TIME_MS ) { visibleOnHandlerThread(rawTracker.handler) { rawTracker.startCapture(ifaceName, maxCaptureTime) @@ -174,8 +178,10 @@ } private fun stopCaptureOnHandler(ifaceName: String) { + // always create new instance to validate removal of duplicated CMD_STOP_CAPTURE messages + val ifaceNameCloned = String(ifaceName.toCharArray()) visibleOnHandlerThread(rawTracker.handler) { - rawTracker.stopCapture(ifaceName) + rawTracker.stopCapture(ifaceNameCloned) } }