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

Commit 744e27a3 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Gerrit Code Review
Browse files

Merge changes from topic "backport-connectivityresources"

* changes:
  Use module resources in NetworkNotificationManager.
  Cherry-pick some test changes from ag/13210542.
  Add connectivity protos to framework-connectivity
  Remove unused NetworkPolicyManagerInternal in CS
  Move connectivity AIDLs to android.net
  Migrate framework-connectivity internal resources
  Expose isUidNetworkingBlocked and isUidRestrictedOnMeteredNetworks
  Add multipath preference, background status API
parents 98763306 8b77bf79
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -48,7 +48,11 @@ package android.net {

  public class NetworkPolicyManager {
    method @NonNull public static String blockedReasonsToString(int);
    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public int getMultipathPreference(@NonNull android.net.Network);
    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public int getRestrictBackgroundStatus(int);
    method public static boolean isUidBlocked(int, boolean);
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidNetworkingBlocked(int, boolean);
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidRestrictedOnMeteredNetworks(int);
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerNetworkPolicyCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterNetworkPolicyCallback(@NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
    field public static final int BLOCKED_METERED_REASON_ADMIN_DISABLED = 262144; // 0x40000
+2 −0
Original line number Diff line number Diff line
@@ -996,6 +996,8 @@ package android.net {

  public class NetworkPolicyManager {
    method public boolean getRestrictBackground();
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidNetworkingBlocked(int, boolean);
    method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidRestrictedOnMeteredNetworks(int);
    method @NonNull public static String resolveNetworkId(@NonNull android.net.wifi.WifiConfiguration);
    method public void setRestrictBackground(boolean);
  }
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ interface INetworkPolicyManager {
        3 - enabled
    */
    int getRestrictBackgroundByCaller();
    int getRestrictBackgroundStatus(int uid);

    void setDeviceIdleMode(boolean enabled);
    void setWifiMeteredOverride(String networkId, int meteredOverride);
+28 −6
Original line number Diff line number Diff line
@@ -528,6 +528,26 @@ public class NetworkPolicyManager {
        }
    }

    /**
     * Determines if an UID is subject to metered network restrictions while running in background.
     *
     * @param uid The UID whose status needs to be checked.
     * @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
     *         {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED},
     *         or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
     *         the current status of the UID.
     * @hide
     */
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK)
    public int getRestrictBackgroundStatus(int uid) {
        try {
            return mService.getRestrictBackgroundStatus(uid);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Override connections to be temporarily marked as either unmetered or congested,
     * along with automatic timeouts if desired.
@@ -610,9 +630,8 @@ public class NetworkPolicyManager {
     * @param meteredNetwork True if the network is metered.
     * @return true if networking is blocked for the given uid according to current networking
     *         policies.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
    public boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork) {
        try {
            return mService.isUidNetworkingBlocked(uid, meteredNetwork);
@@ -651,9 +670,8 @@ public class NetworkPolicyManager {
     *
     * @param uid The target uid.
     * @return true if the given uid is restricted from doing networking on metered networks.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
    public boolean isUidRestrictedOnMeteredNetworks(int uid) {
        try {
            return mService.isUidRestrictedOnMeteredNetworks(uid);
@@ -663,11 +681,15 @@ public class NetworkPolicyManager {
    }

    /**
     * Get multipath preference for the given network.
     * Gets a hint on whether it is desirable to use multipath data transfer on the given network.
     *
     * @return One of the ConnectivityManager.MULTIPATH_PREFERENCE_* constants.
     *
     * @hide
     */
    public int getMultipathPreference(Network network) {
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK)
    public int getMultipathPreference(@NonNull Network network) {
        try {
            return mService.getMultipathPreference(network);
        } catch (RemoteException e) {
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,25 @@ package {
    default_applicable_licenses: ["frameworks_base_license"],
}

java_library {
    name: "framework-connectivity-protos",
    proto: {
        type: "nano",
    },
    srcs: [
        // TODO: consider moving relevant .proto files directly to the module directory
        ":framework-javastream-protos",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
    jarjar_rules: "jarjar-rules-proto.txt",
    visibility: [
        "//visibility:private",
    ],
}

filegroup {
    name: "framework-connectivity-internal-sources",
    srcs: [
@@ -111,6 +130,7 @@ java_library {
        "ServiceConnectivityResources",
    ],
    static_libs: [
        "framework-connectivity-protos",
        "net-utils-device-common",
    ],
    jarjar_rules: "jarjar-rules.txt",
Loading