Merge "Consolidate handler thread check functions in HandlerUtils" into main
This commit is contained in:
commit
b0e3eaf70b
10 changed files with 62 additions and 24 deletions
|
|
@ -35,7 +35,6 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||
import com.android.net.module.util.DnsUtils;
|
||||
import com.android.net.module.util.HandlerUtils;
|
||||
import com.android.net.module.util.SharedLog;
|
||||
import com.android.server.connectivity.mdns.util.MdnsUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
|
@ -211,7 +210,7 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback {
|
|||
|
||||
void ensureRunningOnHandlerThread() {
|
||||
synchronized (pendingTasks) {
|
||||
MdnsUtils.ensureRunningOnHandlerThread(handler);
|
||||
HandlerUtils.ensureRunningOnHandlerThread(handler);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package com.android.server.connectivity.mdns;
|
||||
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
package com.android.server.connectivity.mdns;
|
||||
|
||||
import static com.android.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.server.connectivity.mdns.MdnsConstants.IPV4_SOCKET_ADDR;
|
||||
import static com.android.server.connectivity.mdns.MdnsConstants.IPV6_SOCKET_ADDR;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.RequiresApi;
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ package com.android.server.connectivity.mdns;
|
|||
|
||||
import static com.android.net.module.util.DnsUtils.equalsIgnoreDnsCase;
|
||||
import static com.android.net.module.util.DnsUtils.toDnsUpperCase;
|
||||
import static com.android.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.server.connectivity.mdns.MdnsResponse.EXPIRATION_NEVER;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread;
|
||||
|
||||
import static java.lang.Math.min;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@
|
|||
|
||||
package com.android.server.connectivity.mdns;
|
||||
|
||||
import static com.android.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.server.connectivity.mdns.MdnsSearchOptions.AGGRESSIVE_QUERY_MODE;
|
||||
import static com.android.server.connectivity.mdns.MdnsServiceCache.ServiceExpiredCallback;
|
||||
import static com.android.server.connectivity.mdns.MdnsServiceCache.findMatchedResponse;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.Clock;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.buildMdnsServiceInfoFromResponse;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@ 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.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.isNetworkMatched;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package com.android.server.connectivity.mdns;
|
||||
|
||||
import static com.android.server.connectivity.mdns.util.MdnsUtils.ensureRunningOnHandlerThread;
|
||||
import static com.android.net.module.util.HandlerUtils.ensureRunningOnHandlerThread;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Handler;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ 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;
|
||||
import android.util.Pair;
|
||||
|
|
@ -88,21 +87,6 @@ public class MdnsUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/*** Ensure that current running thread is same as given handler thread */
|
||||
public static void ensureRunningOnHandlerThread(@NonNull Handler handler) {
|
||||
if (!isRunningOnHandlerThread(handler)) {
|
||||
throw new IllegalStateException(
|
||||
"Not running on Handler thread: " + Thread.currentThread().getName());
|
||||
}
|
||||
}
|
||||
|
||||
/*** Check that current running thread is same as given handler thread */
|
||||
public static boolean isRunningOnHandlerThread(@NonNull Handler handler) {
|
||||
if (handler.getLooper().getThread() == Thread.currentThread()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*** Check whether the target network matches the current network */
|
||||
public static boolean isNetworkMatched(@Nullable Network targetNetwork,
|
||||
|
|
|
|||
|
|
@ -102,4 +102,37 @@ public class HandlerUtils {
|
|||
if (e != null) throw e;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the current running thread is the same as the thread associated with the given
|
||||
* handler.
|
||||
*
|
||||
* @param handler The handler whose thread to compare.
|
||||
* @throws IllegalStateException if the thread associated with the given handler is not the same
|
||||
* as the current running thread.
|
||||
* @hide
|
||||
*/
|
||||
public static void ensureRunningOnHandlerThread(@NonNull Handler handler) {
|
||||
if (!isRunningOnHandlerThread(handler)) {
|
||||
throw new IllegalStateException(
|
||||
"Not running on Handler thread: " + Thread.currentThread().getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current running thread is the same as the thread associated with the given
|
||||
* handler.
|
||||
*
|
||||
* @param handler The handler whose thread to compare.
|
||||
* @return {@code true} if the thread associated with the given handler is the same as the
|
||||
* current running thread, {@code false} otherwise.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static boolean isRunningOnHandlerThread(@NonNull Handler handler) {
|
||||
if (handler.getLooper().getThread() == Thread.currentThread()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,14 @@ package com.android.net.module.util
|
|||
import android.os.HandlerThread
|
||||
import com.android.testutils.DevSdkIgnoreRunner
|
||||
import com.android.testutils.DevSdkIgnoreRunner.MonitorThreadLeak
|
||||
import com.android.testutils.waitForIdle
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
import org.junit.After
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlin.test.assertFalse
|
||||
|
||||
const val THREAD_BLOCK_TIMEOUT_MS = 1000L
|
||||
const val TEST_REPEAT_COUNT = 100
|
||||
|
|
@ -52,6 +55,24 @@ class HandlerUtilsTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIsRunningOnHandlerThread() {
|
||||
assertFalse(HandlerUtils.isRunningOnHandlerThread(handler))
|
||||
handler.post{
|
||||
assertTrue(HandlerUtils.isRunningOnHandlerThread(handler))
|
||||
}
|
||||
handler.waitForIdle(THREAD_BLOCK_TIMEOUT_MS)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testEnsureRunningOnHandlerThread() {
|
||||
assertFailsWith<IllegalStateException>{ HandlerUtils.ensureRunningOnHandlerThread(handler) }
|
||||
handler.post{
|
||||
HandlerUtils.ensureRunningOnHandlerThread(handler)
|
||||
}
|
||||
handler.waitForIdle(THREAD_BLOCK_TIMEOUT_MS)
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
handlerThread.quitSafely()
|
||||
|
|
|
|||
Loading…
Reference in a new issue