Merge changes If539cf5d,I9765f1c9,I6d3007a1 am: f2babbbd67 am: e18ea6cb80

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652262

Change-Id: I028d1f51c9685bcc7bcaabd0339b930aa46940c6
This commit is contained in:
Lorenzo Colitti
2021-03-30 01:58:24 +00:00
committed by Automerger Merge Worker
5 changed files with 50 additions and 10 deletions

View File

@@ -219,7 +219,7 @@ package android.net {
method public void onAutomaticReconnectDisabled(); method public void onAutomaticReconnectDisabled();
method public void onBandwidthUpdateRequested(); method public void onBandwidthUpdateRequested();
method public void onNetworkCreated(); method public void onNetworkCreated();
method public void onNetworkDisconnected(); method public void onNetworkDestroyed();
method public void onNetworkUnwanted(); method public void onNetworkUnwanted();
method public void onQosCallbackRegistered(int, @NonNull android.net.QosFilter); method public void onQosCallbackRegistered(int, @NonNull android.net.QosFilter);
method public void onQosCallbackUnregistered(int); method public void onQosCallbackUnregistered(int);
@@ -238,6 +238,7 @@ package android.net {
method public final void sendQosSessionLost(int, int, int); method public final void sendQosSessionLost(int, int, int);
method public final void sendSocketKeepaliveEvent(int, int); method public final void sendSocketKeepaliveEvent(int, int);
method @Deprecated public void setLegacySubtype(int, @NonNull String); method @Deprecated public void setLegacySubtype(int, @NonNull String);
method public void setTeardownDelayMs(@IntRange(from=0, to=0x1388) int);
method public final void setUnderlyingNetworks(@Nullable java.util.List<android.net.Network>); method public final void setUnderlyingNetworks(@Nullable java.util.List<android.net.Network>);
method public void unregister(); method public void unregister();
field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2 field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2

View File

@@ -921,6 +921,7 @@ public class ConnectivityManager {
BLOCKED_REASON_DOZE, BLOCKED_REASON_DOZE,
BLOCKED_REASON_APP_STANDBY, BLOCKED_REASON_APP_STANDBY,
BLOCKED_REASON_RESTRICTED_MODE, BLOCKED_REASON_RESTRICTED_MODE,
BLOCKED_REASON_LOCKDOWN_VPN,
BLOCKED_METERED_REASON_DATA_SAVER, BLOCKED_METERED_REASON_DATA_SAVER,
BLOCKED_METERED_REASON_USER_RESTRICTED, BLOCKED_METERED_REASON_USER_RESTRICTED,
BLOCKED_METERED_REASON_ADMIN_DISABLED, BLOCKED_METERED_REASON_ADMIN_DISABLED,
@@ -3659,7 +3660,8 @@ public class ConnectivityManager {
public void onBlockedStatusChanged(@NonNull Network network, boolean blocked) {} public void onBlockedStatusChanged(@NonNull Network network, boolean blocked) {}
/** /**
* Called when access to the specified network is blocked or unblocked. * Called when access to the specified network is blocked or unblocked, or the reason for
* access being blocked changes.
* *
* If a NetworkCallback object implements this method, * If a NetworkCallback object implements this method,
* {@link #onBlockedStatusChanged(Network, boolean)} will not be called. * {@link #onBlockedStatusChanged(Network, boolean)} will not be called.

View File

@@ -47,5 +47,5 @@ oneway interface INetworkAgent {
void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel); void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel);
void onQosCallbackUnregistered(int qosCallbackId); void onQosCallbackUnregistered(int qosCallbackId);
void onNetworkCreated(); void onNetworkCreated();
void onNetworkDisconnected(); void onNetworkDestroyed();
} }

View File

@@ -41,4 +41,5 @@ oneway interface INetworkAgentRegistry {
void sendNrQosSessionAvailable(int callbackId, in QosSession session, in NrQosSessionAttributes attributes); void sendNrQosSessionAvailable(int callbackId, in QosSession session, in NrQosSessionAttributes attributes);
void sendQosSessionLost(int qosCallbackId, in QosSession session); void sendQosSessionLost(int qosCallbackId, in QosSession session);
void sendQosCallbackError(int qosCallbackId, int exceptionType); void sendQosCallbackError(int qosCallbackId, int exceptionType);
void sendTeardownDelayMs(int teardownDelayMs);
} }

View File

@@ -184,6 +184,20 @@ public abstract class NetworkAgent {
*/ */
public static final int EVENT_UNDERLYING_NETWORKS_CHANGED = BASE + 5; public static final int EVENT_UNDERLYING_NETWORKS_CHANGED = BASE + 5;
/**
* Sent by the NetworkAgent to ConnectivityService to pass the current value of the teardown
* delay.
* arg1 = teardown delay in milliseconds
* @hide
*/
public static final int EVENT_TEARDOWN_DELAY_CHANGED = BASE + 6;
/**
* The maximum value for the teardown delay, in milliseconds.
* @hide
*/
public static final int MAX_TEARDOWN_DELAY_MS = 5000;
/** /**
* Sent by ConnectivityService to the NetworkAgent to inform the agent of the * Sent by ConnectivityService to the NetworkAgent to inform the agent of the
* networks status - whether we could use the network or could not, due to * networks status - whether we could use the network or could not, due to
@@ -197,7 +211,6 @@ public abstract class NetworkAgent {
*/ */
public static final int CMD_REPORT_NETWORK_STATUS = BASE + 7; public static final int CMD_REPORT_NETWORK_STATUS = BASE + 7;
/** /**
* Network validation suceeded. * Network validation suceeded.
* Corresponds to {@link NetworkCapabilities.NET_CAPABILITY_VALIDATED}. * Corresponds to {@link NetworkCapabilities.NET_CAPABILITY_VALIDATED}.
@@ -376,7 +389,7 @@ public abstract class NetworkAgent {
* *
* @hide * @hide
*/ */
public static final int CMD_NETWORK_DISCONNECTED = BASE + 23; public static final int CMD_NETWORK_DESTROYED = BASE + 23;
private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) { private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) {
final NetworkInfo ni = new NetworkInfo(config.legacyType, config.legacySubType, final NetworkInfo ni = new NetworkInfo(config.legacyType, config.legacySubType,
@@ -581,8 +594,8 @@ public abstract class NetworkAgent {
onNetworkCreated(); onNetworkCreated();
break; break;
} }
case CMD_NETWORK_DISCONNECTED: { case CMD_NETWORK_DESTROYED: {
onNetworkDisconnected(); onNetworkDestroyed();
break; break;
} }
} }
@@ -732,8 +745,8 @@ public abstract class NetworkAgent {
} }
@Override @Override
public void onNetworkDisconnected() { public void onNetworkDestroyed() {
mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_DISCONNECTED)); mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_DESTROYED));
} }
} }
@@ -850,6 +863,29 @@ public abstract class NetworkAgent {
queueOrSendNetworkInfo(mNetworkInfo); queueOrSendNetworkInfo(mNetworkInfo);
} }
/**
* Sets the value of the teardown delay.
*
* The teardown delay is the time between when the network disconnects and when the native
* network corresponding to this {@code NetworkAgent} is destroyed. By default, the native
* network is destroyed immediately. If {@code teardownDelayMs} is non-zero, then when this
* network disconnects, the system will instead immediately mark the network as restricted
* and unavailable to unprivileged apps, but will defer destroying the native network until the
* teardown delay timer expires.
*
* The interfaces in use by this network will remain in use until the native network is
* destroyed and cannot be reused until {@link #onNetworkDestroyed()} is called.
*
* This method may be called at any time while the network is connected. It has no effect if
* the network is already disconnected and the teardown delay timer is running.
*
* @param teardownDelayMs the teardown delay to set, or 0 to disable teardown delay.
*/
public void setTeardownDelayMs(
@IntRange(from = 0, to = MAX_TEARDOWN_DELAY_MS) int teardownDelayMs) {
queueOrSendMessage(reg -> reg.sendTeardownDelayMs(teardownDelayMs));
}
/** /**
* Change the legacy subtype of this network agent. * Change the legacy subtype of this network agent.
* *
@@ -1053,7 +1089,7 @@ public abstract class NetworkAgent {
/** /**
* Called when ConnectivityService has successfully destroy this NetworkAgent's native network. * Called when ConnectivityService has successfully destroy this NetworkAgent's native network.
*/ */
public void onNetworkDisconnected() {} public void onNetworkDestroyed() {}
/** /**
* Requests that the network hardware send the specified packet at the specified interval. * Requests that the network hardware send the specified packet at the specified interval.