Update Policy Listener API naming.
This CL changes the policy listener API to be
VcnNetworkPolicyChangeListener (it was previously
VcnNetworkPolicyListener) per API Council guidance.
This CL also requires permission NETWORK_FACTORY for removing registered
policy listeners.
Bug: 181562364
Test: atest FrameworksVcnTests
Change-Id: I026eaefa62d8f64b9180fc182a7cf0605d83bf97
Merged-In: I026eaefa62d8f64b9180fc182a7cf0605d83bf97
(cherry picked from commit a96ec13821)
This commit is contained in:
@@ -73,7 +73,8 @@ import java.util.concurrent.Executor;
|
||||
public class VcnManager {
|
||||
@NonNull private static final String TAG = VcnManager.class.getSimpleName();
|
||||
|
||||
private static final Map<VcnNetworkPolicyListener, VcnUnderlyingNetworkPolicyListenerBinder>
|
||||
private static final Map<
|
||||
VcnNetworkPolicyChangeListener, VcnUnderlyingNetworkPolicyListenerBinder>
|
||||
REGISTERED_POLICY_LISTENERS = new ConcurrentHashMap<>();
|
||||
|
||||
@NonNull private final Context mContext;
|
||||
@@ -93,13 +94,13 @@ public class VcnManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all currently registered VcnNetworkPolicyListeners for testing purposes.
|
||||
* Get all currently registered VcnNetworkPolicyChangeListeners for testing purposes.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@VisibleForTesting(visibility = Visibility.PRIVATE)
|
||||
@NonNull
|
||||
public static Map<VcnNetworkPolicyListener, VcnUnderlyingNetworkPolicyListenerBinder>
|
||||
public static Map<VcnNetworkPolicyChangeListener, VcnUnderlyingNetworkPolicyListenerBinder>
|
||||
getAllPolicyListeners() {
|
||||
return Collections.unmodifiableMap(REGISTERED_POLICY_LISTENERS);
|
||||
}
|
||||
@@ -162,14 +163,14 @@ public class VcnManager {
|
||||
}
|
||||
|
||||
// TODO(b/180537630): remove all VcnUnderlyingNetworkPolicyListener refs once Telephony is using
|
||||
// the new VcnNetworkPolicyListener API
|
||||
// the new VcnNetworkPolicyChangeListener API
|
||||
/**
|
||||
* VcnUnderlyingNetworkPolicyListener is the interface through which internal system components
|
||||
* can register to receive updates for VCN-underlying Network policies from the System Server.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface VcnUnderlyingNetworkPolicyListener extends VcnNetworkPolicyListener {}
|
||||
public interface VcnUnderlyingNetworkPolicyListener extends VcnNetworkPolicyChangeListener {}
|
||||
|
||||
/**
|
||||
* Add a listener for VCN-underlying network policy updates.
|
||||
@@ -185,7 +186,7 @@ public class VcnManager {
|
||||
@RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
|
||||
public void addVcnUnderlyingNetworkPolicyListener(
|
||||
@NonNull Executor executor, @NonNull VcnUnderlyingNetworkPolicyListener listener) {
|
||||
addVcnNetworkPolicyListener(executor, listener);
|
||||
addVcnNetworkPolicyChangeListener(executor, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,7 +199,7 @@ public class VcnManager {
|
||||
*/
|
||||
public void removeVcnUnderlyingNetworkPolicyListener(
|
||||
@NonNull VcnUnderlyingNetworkPolicyListener listener) {
|
||||
removeVcnNetworkPolicyListener(listener);
|
||||
removeVcnNetworkPolicyChangeListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -233,20 +234,20 @@ public class VcnManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* VcnNetworkPolicyListener is the interface through which internal system components (e.g.
|
||||
* Network Factories) can register to receive updates for VCN-underlying Network policies from
|
||||
* the System Server.
|
||||
* VcnNetworkPolicyChangeListener is the interface through which internal system components
|
||||
* (e.g. Network Factories) can register to receive updates for VCN-underlying Network policies
|
||||
* from the System Server.
|
||||
*
|
||||
* <p>Any Network Factory that brings up Networks capable of being VCN-underlying Networks
|
||||
* should register a VcnNetworkPolicyListener. VcnManager will then use this listener to notify
|
||||
* the registrant when VCN Network policies change. Upon receiving this signal, the listener
|
||||
* must check {@link VcnManager} for the current Network policy result for each of its Networks
|
||||
* via {@link #applyVcnNetworkPolicy(NetworkCapabilities, LinkProperties)}.
|
||||
* should register a VcnNetworkPolicyChangeListener. VcnManager will then use this listener to
|
||||
* notify the registrant when VCN Network policies change. Upon receiving this signal, the
|
||||
* listener must check {@link VcnManager} for the current Network policy result for each of its
|
||||
* Networks via {@link #applyVcnNetworkPolicy(NetworkCapabilities, LinkProperties)}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public interface VcnNetworkPolicyListener {
|
||||
public interface VcnNetworkPolicyChangeListener {
|
||||
/**
|
||||
* Notifies the implementation that the VCN's underlying Network policy has changed.
|
||||
*
|
||||
@@ -260,20 +261,21 @@ public class VcnManager {
|
||||
/**
|
||||
* Add a listener for VCN-underlying Network policy updates.
|
||||
*
|
||||
* <p>A {@link VcnNetworkPolicyListener} is eligible to begin receiving callbacks once it is
|
||||
* registered. No callbacks are guaranteed upon registration.
|
||||
* <p>A {@link VcnNetworkPolicyChangeListener} is eligible to begin receiving callbacks once it
|
||||
* is registered. No callbacks are guaranteed upon registration.
|
||||
*
|
||||
* @param executor the Executor that will be used for invoking all calls to the specified
|
||||
* Listener
|
||||
* @param listener the VcnNetworkPolicyListener to be added
|
||||
* @param listener the VcnNetworkPolicyChangeListener to be added
|
||||
* @throws SecurityException if the caller does not have permission NETWORK_FACTORY
|
||||
* @throws IllegalStateException if the specified VcnNetworkPolicyListener is already registered
|
||||
* @throws IllegalStateException if the specified VcnNetworkPolicyChangeListener is already
|
||||
* registered
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
|
||||
public void addVcnNetworkPolicyListener(
|
||||
@NonNull Executor executor, @NonNull VcnNetworkPolicyListener listener) {
|
||||
public void addVcnNetworkPolicyChangeListener(
|
||||
@NonNull Executor executor, @NonNull VcnNetworkPolicyChangeListener listener) {
|
||||
requireNonNull(executor, "executor must not be null");
|
||||
requireNonNull(listener, "listener must not be null");
|
||||
|
||||
@@ -292,15 +294,18 @@ public class VcnManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified VcnNetworkPolicyListener from VcnManager.
|
||||
* Remove the specified VcnNetworkPolicyChangeListener from VcnManager.
|
||||
*
|
||||
* <p>If the specified listener is not currently registered, this is a no-op.
|
||||
*
|
||||
* @param listener the VcnNetworkPolicyListener that will be removed
|
||||
* @param listener the VcnNetworkPolicyChangeListener that will be removed
|
||||
* @throws SecurityException if the caller does not have permission NETWORK_FACTORY
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public void removeVcnNetworkPolicyListener(@NonNull VcnNetworkPolicyListener listener) {
|
||||
@RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
|
||||
public void removeVcnNetworkPolicyChangeListener(
|
||||
@NonNull VcnNetworkPolicyChangeListener listener) {
|
||||
requireNonNull(listener, "listener must not be null");
|
||||
|
||||
VcnUnderlyingNetworkPolicyListenerBinder binder =
|
||||
@@ -320,8 +325,9 @@ public class VcnManager {
|
||||
* Applies the network policy for a {@link android.net.Network} with the given parameters.
|
||||
*
|
||||
* <p>Prior to a new NetworkAgent being registered, or upon notification that Carrier VCN policy
|
||||
* may have changed via {@link VcnNetworkPolicyListener#onPolicyChanged()}, a Network Provider
|
||||
* MUST poll for the updated Network policy based on that Network's capabilities and properties.
|
||||
* may have changed via {@link VcnNetworkPolicyChangeListener#onPolicyChanged()}, a Network
|
||||
* Provider MUST poll for the updated Network policy based on that Network's capabilities and
|
||||
* properties.
|
||||
*
|
||||
* @param networkCapabilities the NetworkCapabilities to be used in determining the Network
|
||||
* policy result for this Network.
|
||||
@@ -532,17 +538,18 @@ public class VcnManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Binder wrapper for added VcnNetworkPolicyListeners to receive signals from System Server.
|
||||
* Binder wrapper for added VcnNetworkPolicyChangeListeners to receive signals from System
|
||||
* Server.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
private static class VcnUnderlyingNetworkPolicyListenerBinder
|
||||
extends IVcnUnderlyingNetworkPolicyListener.Stub {
|
||||
@NonNull private final Executor mExecutor;
|
||||
@NonNull private final VcnNetworkPolicyListener mListener;
|
||||
@NonNull private final VcnNetworkPolicyChangeListener mListener;
|
||||
|
||||
private VcnUnderlyingNetworkPolicyListenerBinder(
|
||||
Executor executor, VcnNetworkPolicyListener listener) {
|
||||
Executor executor, VcnNetworkPolicyChangeListener listener) {
|
||||
mExecutor = executor;
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user