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

Commit 43403201 authored by Pavel Maltsev's avatar Pavel Maltsev
Browse files

Add OEM_PAID network capability

Bug: 68762530

Test: runtest -x frameworks/base/tests/net/

Change-Id: I51c07e0c2211d631e90b27468c26b599e7b07bc8
parent 1da6f542
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ public final class NetworkCapabilities implements Parcelable {
            NET_CAPABILITY_FOREGROUND,
            NET_CAPABILITY_NOT_CONGESTED,
            NET_CAPABILITY_NOT_SUSPENDED,
            NET_CAPABILITY_OEM_PAID,
    })
    public @interface NetCapability { }

@@ -264,8 +265,15 @@ public final class NetworkCapabilities implements Parcelable {
     */
    public static final int NET_CAPABILITY_NOT_SUSPENDED = 21;

    /**
     * Indicates that traffic that goes through this network is paid by oem. For example,
     * this network can be used by system apps to upload telemetry data.
     * @hide
     */
    public static final int NET_CAPABILITY_OEM_PAID = 22;

    private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS;
    private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_NOT_SUSPENDED;
    private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_OEM_PAID;

    /**
     * Network capabilities that are expected to be mutable, i.e., can change while a particular
@@ -313,7 +321,8 @@ public final class NetworkCapabilities implements Parcelable {
            (1 << NET_CAPABILITY_IA) |
            (1 << NET_CAPABILITY_IMS) |
            (1 << NET_CAPABILITY_RCS) |
            (1 << NET_CAPABILITY_XCAP);
            (1 << NET_CAPABILITY_XCAP) |
            (1 << NET_CAPABILITY_OEM_PAID);

    /**
     * Capabilities that suggest that a network is unrestricted.
@@ -1290,6 +1299,7 @@ public final class NetworkCapabilities implements Parcelable {
            case NET_CAPABILITY_FOREGROUND:     return "FOREGROUND";
            case NET_CAPABILITY_NOT_CONGESTED:  return "NOT_CONGESTED";
            case NET_CAPABILITY_NOT_SUSPENDED:  return "NOT_SUSPENDED";
            case NET_CAPABILITY_OEM_PAID:       return "OEM_PAID";
            default:                            return Integer.toString(capability);
        }
    }
+14 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_EIMS;
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
@@ -261,6 +262,19 @@ public class NetworkCapabilitiesTest {
        assertEqualsThroughMarshalling(netCap);
    }

    @Test
    public void testOemPaid() {
        NetworkCapabilities nc = new NetworkCapabilities();
        nc.maybeMarkCapabilitiesRestricted();
        assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
        assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));

        nc.addCapability(NET_CAPABILITY_OEM_PAID);
        nc.maybeMarkCapabilitiesRestricted();
        assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
        assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
    }

    private void assertEqualsThroughMarshalling(NetworkCapabilities netCap) {
        Parcel p = Parcel.obtain();
        netCap.writeToParcel(p, /* flags */ 0);