Expose APIs for VcnStatusCallback.
This CL exposes the APIs needed to define VcnStatusCallback as well as register and unregister them. VcnStatusCallbacks should be registered by Carrier Apps to receive VCN-related status updates for their configured VCNs. Potential status updates include a VCN entering safe mode or an error with an underlying Network. Bug: 163433613 Test: atest FrameworksVcnTests Change-Id: I1bf01139d4feea71f650acdbf98c6634c66acbbf
This commit is contained in:
@@ -25711,7 +25711,22 @@ package android.net.vcn {
|
||||
|
||||
public class VcnManager {
|
||||
method @RequiresPermission("carrier privileges") public void clearVcnConfig(@NonNull android.os.ParcelUuid) throws java.io.IOException;
|
||||
method public void registerVcnStatusCallback(@NonNull android.os.ParcelUuid, @NonNull java.util.concurrent.Executor, @NonNull android.net.vcn.VcnManager.VcnStatusCallback);
|
||||
method @RequiresPermission("carrier privileges") public void setVcnConfig(@NonNull android.os.ParcelUuid, @NonNull android.net.vcn.VcnConfig) throws java.io.IOException;
|
||||
method public void unregisterVcnStatusCallback(@NonNull android.net.vcn.VcnManager.VcnStatusCallback);
|
||||
field public static final int VCN_ERROR_CODE_CONFIG_ERROR = 1; // 0x1
|
||||
field public static final int VCN_ERROR_CODE_INTERNAL_ERROR = 0; // 0x0
|
||||
field public static final int VCN_ERROR_CODE_NETWORK_ERROR = 2; // 0x2
|
||||
field public static final int VCN_STATUS_CODE_ACTIVE = 2; // 0x2
|
||||
field public static final int VCN_STATUS_CODE_INACTIVE = 1; // 0x1
|
||||
field public static final int VCN_STATUS_CODE_NOT_CONFIGURED = 0; // 0x0
|
||||
field public static final int VCN_STATUS_CODE_SAFE_MODE = 3; // 0x3
|
||||
}
|
||||
|
||||
public abstract static class VcnManager.VcnStatusCallback {
|
||||
ctor public VcnManager.VcnStatusCallback();
|
||||
method public abstract void onGatewayConnectionError(@NonNull int[], int, @Nullable Throwable);
|
||||
method public abstract void onVcnStatusChanged(int);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -359,8 +359,6 @@ public class VcnManager {
|
||||
/**
|
||||
* Value indicating that the VCN for the subscription group is not configured, or that the
|
||||
* callback is not privileged for the subscription group.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_STATUS_CODE_NOT_CONFIGURED = 0;
|
||||
|
||||
@@ -369,8 +367,6 @@ public class VcnManager {
|
||||
*
|
||||
* <p>A VCN is inactive if a {@link VcnConfig} is present for the subscription group, but the
|
||||
* provisioning package is not privileged.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_STATUS_CODE_INACTIVE = 1;
|
||||
|
||||
@@ -380,8 +376,6 @@ public class VcnManager {
|
||||
* <p>A VCN is active if a {@link VcnConfig} is present for the subscription, the provisioning
|
||||
* package is privileged, and the VCN is not in Safe Mode. In other words, a VCN is considered
|
||||
* active while it is connecting, fully connected, and disconnecting.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_STATUS_CODE_ACTIVE = 2;
|
||||
|
||||
@@ -391,8 +385,6 @@ public class VcnManager {
|
||||
* <p>A VCN will be put into Safe Mode if any of the gateway connections were unable to
|
||||
* establish a connection within a system-determined timeout (while underlying networks were
|
||||
* available).
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_STATUS_CODE_SAFE_MODE = 3;
|
||||
|
||||
@@ -407,8 +399,6 @@ public class VcnManager {
|
||||
|
||||
/**
|
||||
* Value indicating that an internal failure occurred in this Gateway Connection.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_ERROR_CODE_INTERNAL_ERROR = 0;
|
||||
|
||||
@@ -416,8 +406,6 @@ public class VcnManager {
|
||||
* Value indicating that an error with this Gateway Connection's configuration occurred.
|
||||
*
|
||||
* <p>For example, this error code will be returned after authentication failures.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_ERROR_CODE_CONFIG_ERROR = 1;
|
||||
|
||||
@@ -427,19 +415,14 @@ public class VcnManager {
|
||||
* <p>For example, this error code will be returned if an underlying {@link android.net.Network}
|
||||
* for this Gateway Connection is lost, or if an error occurs while resolving the connection
|
||||
* endpoint address.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int VCN_ERROR_CODE_NETWORK_ERROR = 2;
|
||||
|
||||
// TODO: make VcnStatusCallback @SystemApi
|
||||
/**
|
||||
* VcnStatusCallback is the interface for Carrier apps to receive updates for their VCNs.
|
||||
*
|
||||
* <p>VcnStatusCallbacks may be registered before {@link VcnConfig}s are provided for a
|
||||
* subscription group.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public abstract static class VcnStatusCallback {
|
||||
private VcnStatusCallbackBinder mCbBinder;
|
||||
@@ -451,11 +434,11 @@ public class VcnManager {
|
||||
* establish a connection within a system-determined timeout (while underlying networks were
|
||||
* available).
|
||||
*
|
||||
* <p>A VCN-configuring app may opt to exit safe mode by (re)setting the VCN configuration
|
||||
* via {@link #setVcnConfig(ParcelUuid, VcnConfig)}.
|
||||
*
|
||||
* @deprecated Removed in favor of {@link #onVcnStatusChanged(int)}. To be removed in a
|
||||
* followup patch.
|
||||
* @hide
|
||||
*/
|
||||
@Deprecated
|
||||
public void onEnteredSafeMode() {}
|
||||
|
||||
/**
|
||||
@@ -467,15 +450,16 @@ public class VcnManager {
|
||||
public abstract void onVcnStatusChanged(@VcnStatusCode int statusCode);
|
||||
|
||||
/**
|
||||
* Invoked when a VCN Gateway Connection corresponding to this callback's subscription
|
||||
* Invoked when a VCN Gateway Connection corresponding to this callback's subscription group
|
||||
* encounters an error.
|
||||
*
|
||||
* @param networkCapabilities an array of underlying NetworkCapabilities for the Gateway
|
||||
* Connection that encountered the error for identification purposes. These will be a
|
||||
* sorted list with no duplicates, matching one of the {@link
|
||||
* @param networkCapabilities an array of NetworkCapabilities.NET_CAPABILITY_* capabilities
|
||||
* for the Gateway Connection that encountered the error, for identification purposes.
|
||||
* These will be a sorted list with no duplicates and will match {@link
|
||||
* VcnGatewayConnectionConfig#getRequiredUnderlyingCapabilities()} for one of the {@link
|
||||
* VcnGatewayConnectionConfig}s set in the {@link VcnConfig} for this subscription
|
||||
* group.
|
||||
* @param errorCode {@link VcnErrorCode} to indicate the error that occurred
|
||||
* @param errorCode the code to indicate the error that occurred
|
||||
* @param detail Throwable to provide additional information about the error, or {@code
|
||||
* null} if none
|
||||
*/
|
||||
@@ -496,6 +480,10 @@ public class VcnManager {
|
||||
* <p>A {@link VcnStatusCallback} will only be invoked if the registering package has carrier
|
||||
* privileges for the specified subscription at the time of invocation.
|
||||
*
|
||||
* <p>A {@link VcnStatusCallback} is eligible to begin receiving callbacks once it is registered
|
||||
* and there is a VCN active for its specified subscription group (this may happen after the
|
||||
* callback is registered).
|
||||
*
|
||||
* <p>{@link VcnStatusCallback#onVcnStatusChanged(int)} will be invoked on registration with the
|
||||
* current status for the specified subscription group's VCN. If the registrant is not
|
||||
* privileged for this subscription group, {@link #VCN_STATUS_CODE_NOT_CONFIGURED} will be
|
||||
@@ -505,7 +493,6 @@ public class VcnManager {
|
||||
* @param executor The {@link Executor} to be used for invoking callbacks
|
||||
* @param callback The VcnStatusCallback to be registered
|
||||
* @throws IllegalStateException if callback is currently registered with VcnManager
|
||||
* @hide
|
||||
*/
|
||||
public void registerVcnStatusCallback(
|
||||
@NonNull ParcelUuid subscriptionGroup,
|
||||
@@ -538,7 +525,6 @@ public class VcnManager {
|
||||
* was registered with.
|
||||
*
|
||||
* @param callback The callback to be unregistered
|
||||
* @hide
|
||||
*/
|
||||
public void unregisterVcnStatusCallback(@NonNull VcnStatusCallback callback) {
|
||||
requireNonNull(callback, "callback must not be null");
|
||||
|
||||
Reference in New Issue
Block a user