Merge "Add network created callback support" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-03-25 08:52:56 +00:00
committed by Android (Google) Code Review
5 changed files with 36 additions and 0 deletions

View File

@@ -218,6 +218,7 @@ package android.net {
method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData); method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
method public void onAutomaticReconnectDisabled(); method public void onAutomaticReconnectDisabled();
method public void onBandwidthUpdateRequested(); method public void onBandwidthUpdateRequested();
method public void onNetworkCreated();
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);

View File

@@ -46,4 +46,5 @@ oneway interface INetworkAgent {
void onRemoveKeepalivePacketFilter(int slot); void onRemoveKeepalivePacketFilter(int slot);
void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel); void onQosFilterCallbackRegistered(int qosCallbackId, in QosFilterParcelable filterParcel);
void onQosCallbackUnregistered(int qosCallbackId); void onQosCallbackUnregistered(int qosCallbackId);
void onNetworkCreated();
} }

View File

@@ -362,6 +362,14 @@ public abstract class NetworkAgent {
*/ */
public static final int CMD_UNREGISTER_QOS_CALLBACK = BASE + 21; public static final int CMD_UNREGISTER_QOS_CALLBACK = BASE + 21;
/**
* Sent by ConnectivityService to {@link NetworkAgent} to inform the agent that its native
* network was created and the Network object is now valid.
*
* @hide
*/
public static final int CMD_NETWORK_CREATED = BASE + 22;
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,
config.legacyTypeName, config.legacySubTypeName); config.legacyTypeName, config.legacySubTypeName);
@@ -561,6 +569,10 @@ public abstract class NetworkAgent {
msg.arg1 /* QoS callback id */); msg.arg1 /* QoS callback id */);
break; break;
} }
case CMD_NETWORK_CREATED: {
onNetworkCreated();
break;
}
} }
} }
} }
@@ -701,6 +713,11 @@ public abstract class NetworkAgent {
mHandler.sendMessage(mHandler.obtainMessage( mHandler.sendMessage(mHandler.obtainMessage(
CMD_UNREGISTER_QOS_CALLBACK, qosCallbackId, 0, null)); CMD_UNREGISTER_QOS_CALLBACK, qosCallbackId, 0, null));
} }
@Override
public void onNetworkCreated() {
mHandler.sendMessage(mHandler.obtainMessage(CMD_NETWORK_CREATED));
}
} }
/** /**
@@ -1010,6 +1027,11 @@ public abstract class NetworkAgent {
protected void saveAcceptUnvalidated(boolean accept) { protected void saveAcceptUnvalidated(boolean accept) {
} }
/**
* Called when ConnectivityService has successfully created this NetworkAgent's native network.
*/
public void onNetworkCreated() {}
/** /**
* 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.
* *

View File

@@ -8126,6 +8126,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
updateCapabilitiesForNetwork(networkAgent); updateCapabilitiesForNetwork(networkAgent);
} }
networkAgent.created = true; networkAgent.created = true;
networkAgent.onNetworkCreated();
} }
if (!networkAgent.everConnected && state == NetworkInfo.State.CONNECTED) { if (!networkAgent.everConnected && state == NetworkInfo.State.CONNECTED) {

View File

@@ -577,6 +577,17 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
} }
} }
/**
* Notify the NetworkAgent that the network is successfully connected.
*/
public void onNetworkCreated() {
try {
networkAgent.onNetworkCreated();
} catch (RemoteException e) {
Log.e(TAG, "Error sending network created event", e);
}
}
// TODO: consider moving out of NetworkAgentInfo into its own class // TODO: consider moving out of NetworkAgentInfo into its own class
private class NetworkAgentMessageHandler extends INetworkAgentRegistry.Stub { private class NetworkAgentMessageHandler extends INetworkAgentRegistry.Stub {
private final Handler mHandler; private final Handler mHandler;