From 82e396394bd2a67a0d905ceee2de31e69ecebd6f Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Tue, 16 Apr 2024 08:07:11 +0000 Subject: [PATCH] Return current testable networks directly in instant mode Some MultinetworkApiTest tests require a testable network and attempt to request cell or Wi-Fi connections. This involves calling ConnectivityManager#requestNetwork, which requires the CHANGE_NETWORK_STATE permission. Since instant apps cannot be granted this permission, return currently available testable networks directly in instant mode instead of attempting to request new ones. Fix: 335103621 Test: atest CtsNetTestCases:android.net.cts.MultinetworkApiTest \ --instant Change-Id: I51dbd33e0dab12856e1c0f387e45e6286feefe20 --- .../cts/net/src/android/net/cts/MultinetworkApiTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/cts/net/src/android/net/cts/MultinetworkApiTest.java b/tests/cts/net/src/android/net/cts/MultinetworkApiTest.java index 73f65e019d..06a827b646 100644 --- a/tests/cts/net/src/android/net/cts/MultinetworkApiTest.java +++ b/tests/cts/net/src/android/net/cts/MultinetworkApiTest.java @@ -265,6 +265,14 @@ public class MultinetworkApiTest { * Get all testable Networks with internet capability. */ private Set getTestableNetworks() throws InterruptedException { + // Calling requestNetwork() to request a cell or Wi-Fi network via CtsNetUtils or + // NetworkCallbackRule requires the CHANGE_NETWORK_STATE permission. This permission cannot + // be granted to instant apps. Therefore, return currently available testable networks + // directly in instant mode. + if (mContext.getApplicationInfo().isInstantApp()) { + return new ArraySet<>(mCtsNetUtils.getTestableNetworks()); + } + // Obtain cell and Wi-Fi through CtsNetUtils (which uses NetworkCallbacks), as they may have // just been reconnected by the test using NetworkCallbacks, so synchronous calls may not // yet return them (synchronous calls and callbacks should not be mixed for a given