Merge "NetworkPolicyManager: Add @SystemApi for mainlne module"

This commit is contained in:
Aaron Huang
2020-02-07 05:47:45 +00:00
committed by Gerrit Code Review
2 changed files with 91 additions and 2 deletions

View File

@@ -4613,12 +4613,20 @@ package android.net {
public class NetworkPolicyManager { public class NetworkPolicyManager {
method @NonNull public android.telephony.SubscriptionPlan[] getSubscriptionPlans(int, @NonNull String); method @NonNull public android.telephony.SubscriptionPlan[] getSubscriptionPlans(int, @NonNull String);
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerSubscriptionCallback(@NonNull android.net.NetworkPolicyManager.SubscriptionCallback);
method public void setSubscriptionOverride(int, int, int, long, @NonNull String); method public void setSubscriptionOverride(int, int, int, long, @NonNull String);
method public void setSubscriptionPlans(int, @NonNull android.telephony.SubscriptionPlan[], @NonNull String); method public void setSubscriptionPlans(int, @NonNull android.telephony.SubscriptionPlan[], @NonNull String);
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterSubscriptionCallback(@NonNull android.net.NetworkPolicyManager.SubscriptionCallback);
field public static final int SUBSCRIPTION_OVERRIDE_CONGESTED = 2; // 0x2 field public static final int SUBSCRIPTION_OVERRIDE_CONGESTED = 2; // 0x2
field public static final int SUBSCRIPTION_OVERRIDE_UNMETERED = 1; // 0x1 field public static final int SUBSCRIPTION_OVERRIDE_UNMETERED = 1; // 0x1
} }
public static class NetworkPolicyManager.SubscriptionCallback {
ctor public NetworkPolicyManager.SubscriptionCallback();
method public void onSubscriptionOverride(int, int, int);
method public void onSubscriptionPlansChanged(int, @NonNull android.telephony.SubscriptionPlan[]);
}
public class NetworkProvider { public class NetworkProvider {
ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String); ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest); method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);

View File

@@ -20,6 +20,7 @@ import static android.content.pm.PackageManager.GET_SIGNATURES;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.SystemService; import android.annotation.SystemService;
import android.app.ActivityManager; import android.app.ActivityManager;
@@ -46,11 +47,13 @@ import java.lang.annotation.RetentionPolicy;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* Manager for creating and modifying network policy rules. * Manager for creating and modifying network policy rules.
* *
* {@hide} * @hide
*/ */
@SystemService(Context.NETWORK_POLICY_SERVICE) @SystemService(Context.NETWORK_POLICY_SERVICE)
@SystemApi @SystemApi
@@ -89,6 +92,7 @@ public class NetworkPolicyManager {
* *
* See network-policy-restrictions.md for more info. * See network-policy-restrictions.md for more info.
*/ */
/** /**
* No specific rule was set * No specific rule was set
* @hide * @hide
@@ -120,6 +124,7 @@ public class NetworkPolicyManager {
* @hide * @hide
*/ */
public static final int RULE_REJECT_ALL = 1 << 6; public static final int RULE_REJECT_ALL = 1 << 6;
/** /**
* Mask used to get the {@code RULE_xxx_METERED} rules * Mask used to get the {@code RULE_xxx_METERED} rules
* @hide * @hide
@@ -133,7 +138,6 @@ public class NetworkPolicyManager {
/** @hide */ /** @hide */
public static final int FIREWALL_RULE_DEFAULT = 0; public static final int FIREWALL_RULE_DEFAULT = 0;
/** @hide */ /** @hide */
public static final String FIREWALL_CHAIN_NAME_NONE = "none"; public static final String FIREWALL_CHAIN_NAME_NONE = "none";
/** @hide */ /** @hide */
@@ -180,6 +184,9 @@ public class NetworkPolicyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
private INetworkPolicyManager mService; private INetworkPolicyManager mService;
private final Map<SubscriptionCallback, SubscriptionCallbackProxy>
mCallbackMap = new ConcurrentHashMap<>();
/** @hide */ /** @hide */
public NetworkPolicyManager(Context context, INetworkPolicyManager service) { public NetworkPolicyManager(Context context, INetworkPolicyManager service) {
if (service == null) { if (service == null) {
@@ -285,6 +292,35 @@ public class NetworkPolicyManager {
} }
} }
/** @hide */
@RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
@SystemApi
public void registerSubscriptionCallback(@NonNull SubscriptionCallback callback) {
if (callback == null) {
throw new NullPointerException("Callback cannot be null.");
}
final SubscriptionCallbackProxy callbackProxy = new SubscriptionCallbackProxy(callback);
if (null != mCallbackMap.putIfAbsent(callback, callbackProxy)) {
throw new IllegalArgumentException("Callback is already registered.");
}
registerListener(callbackProxy);
}
/** @hide */
@RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
@SystemApi
public void unregisterSubscriptionCallback(@NonNull SubscriptionCallback callback) {
if (callback == null) {
throw new NullPointerException("Callback cannot be null.");
}
final SubscriptionCallbackProxy callbackProxy = mCallbackMap.remove(callback);
if (callbackProxy == null) return;
unregisterListener(callbackProxy);
}
/** @hide */ /** @hide */
public void setNetworkPolicies(NetworkPolicy[] policies) { public void setNetworkPolicies(NetworkPolicy[] policies) {
try { try {
@@ -512,6 +548,51 @@ public class NetworkPolicyManager {
return WifiInfo.sanitizeSsid(ssid); return WifiInfo.sanitizeSsid(ssid);
} }
/** @hide */
@SystemApi
public static class SubscriptionCallback {
/**
* Notify clients of a new override about a given subscription.
*
* @param subId the subscriber this override applies to.
* @param overrideMask a bitmask that specifies which of the overrides is set.
* @param overrideValue a bitmask that specifies the override values.
*/
public void onSubscriptionOverride(int subId, @SubscriptionOverrideMask int overrideMask,
@SubscriptionOverrideMask int overrideValue) {}
/**
* Notify of subscription plans change about a given subscription.
*
* @param subId the subscriber id that got subscription plans change.
* @param plans the list of subscription plans.
*/
public void onSubscriptionPlansChanged(int subId, @NonNull SubscriptionPlan[] plans) {}
}
/**
* SubscriptionCallback proxy for SubscriptionCallback object.
* @hide
*/
public class SubscriptionCallbackProxy extends Listener {
private final SubscriptionCallback mCallback;
SubscriptionCallbackProxy(SubscriptionCallback callback) {
mCallback = callback;
}
@Override
public void onSubscriptionOverride(int subId, @SubscriptionOverrideMask int overrideMask,
@SubscriptionOverrideMask int overrideValue) {
mCallback.onSubscriptionOverride(subId, overrideMask, overrideValue);
}
@Override
public void onSubscriptionPlansChanged(int subId, SubscriptionPlan[] plans) {
mCallback.onSubscriptionPlansChanged(subId, plans);
}
}
/** {@hide} */ /** {@hide} */
public static class Listener extends INetworkPolicyListener.Stub { public static class Listener extends INetworkPolicyListener.Stub {
@Override public void onUidRulesChanged(int uid, int uidRules) { } @Override public void onUidRulesChanged(int uid, int uidRules) { }