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
This commit is contained in:
Paul Hu 2024-04-16 08:07:11 +00:00
commit 82e396394b

View file

@ -265,6 +265,14 @@ public class MultinetworkApiTest {
* Get all testable Networks with internet capability.
*/
private Set<Network> 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