Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b1e74c2 authored by Chalard Jean's avatar Chalard Jean
Browse files

Allow any transport with TEST if the network is restricted

This will allow CTS to add the WIFI transport and others,
letting them test a number of essential features of the
ranking algorithm.
It's relatively safe because restricted networks can never
become the default, and NOT_RESTRICTED is a default
capability so very few apps would be affected by the shell
creating such a network.

Bug: 184037351
Test: NetworkScoreTest (which is under review)
Change-Id: I21055dc613fead6130adc2122f2cdd0af9b49adf
parent 964fccfe
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -830,8 +830,17 @@ public final class NetworkCapabilities implements Parcelable {
        final int[] originalAdministratorUids = getAdministratorUids();
        final TransportInfo originalTransportInfo = getTransportInfo();
        clearAll();
        mTransportTypes = (originalTransportTypes & TEST_NETWORKS_ALLOWED_TRANSPORTS)
        if (0 != (originalCapabilities & NET_CAPABILITY_NOT_RESTRICTED)) {
            // If the test network is not restricted, then it is only allowed to declare some
            // specific transports. This is to minimize impact on running apps in case an app
            // run from the shell creates a test a network.
            mTransportTypes =
                    (originalTransportTypes & UNRESTRICTED_TEST_NETWORKS_ALLOWED_TRANSPORTS)
                            | (1 << TRANSPORT_TEST);
        } else {
            // If the test transport is restricted, then it may declare any transport.
            mTransportTypes = (originalTransportTypes | (1 << TRANSPORT_TEST));
        }
        mNetworkCapabilities = originalCapabilities & TEST_NETWORKS_ALLOWED_CAPABILITIES;
        mNetworkSpecifier = originalSpecifier;
        mSignalStrength = originalSignalStrength;
@@ -935,9 +944,10 @@ public final class NetworkCapabilities implements Parcelable {
    };

    /**
     * Allowed transports on a test network, in addition to TRANSPORT_TEST.
     * Allowed transports on an unrestricted test network (in addition to TRANSPORT_TEST).
     */
    private static final int TEST_NETWORKS_ALLOWED_TRANSPORTS = 1 << TRANSPORT_TEST
    private static final int UNRESTRICTED_TEST_NETWORKS_ALLOWED_TRANSPORTS =
            1 << TRANSPORT_TEST
            // Test ethernet networks can be created with EthernetManager#setIncludeTestInterfaces
            | 1 << TRANSPORT_ETHERNET
            // Test VPN networks can be created but their UID ranges must be empty.