Loading api/system-current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -5073,6 +5073,7 @@ package android.net { } public abstract class NetworkAgent { ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider); method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData); method public void onAutomaticReconnectDisabled(); method public void onBandwidthUpdateRequested(); Loading @@ -5095,6 +5096,8 @@ package android.net { public final class NetworkAgentConfig implements android.os.Parcelable { method public int describeContents(); method public int getLegacyType(); method @NonNull public String getLegacyTypeName(); method @Nullable public String getSubscriberId(); method public boolean isNat64DetectionEnabled(); method public boolean isProvisioningNotificationEnabled(); Loading @@ -5107,6 +5110,8 @@ package android.net { method @NonNull public android.net.NetworkAgentConfig build(); method @NonNull public android.net.NetworkAgentConfig.Builder disableNat64Detection(); method @NonNull public android.net.NetworkAgentConfig.Builder disableProvisioningNotification(); method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int); method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String); method @NonNull public android.net.NetworkAgentConfig.Builder setSubscriberId(@Nullable String); } Loading core/java/android/net/NetworkAgent.java +36 −8 Original line number Diff line number Diff line Loading @@ -262,32 +262,60 @@ public abstract class NetworkAgent { */ public static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER = BASE + 17; // TODO : remove these two constructors. They are a stopgap measure to help sheperding a number // of dependent changes that would conflict throughout the automerger graph. Having these // temporarily helps with the process of going through with all these dependent changes across // the entire tree. /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score) { this(looper, context, logTag, ni, nc, lp, score, null, NetworkProvider.ID_NONE); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config) { this(looper, context, logTag, ni, nc, lp, score, config, NetworkProvider.ID_NONE); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, int providerId) { this(looper, context, logTag, ni, nc, lp, score, null, providerId); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config, int providerId) { this(looper, context, logTag, nc, lp, score, config, providerId, ni); } private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) { // The subtype can be changed with (TODO) setLegacySubtype, but it starts // with the type and an empty description. return new NetworkInfo(config.legacyType, config.legacyType, config.legacyTypeName, ""); } /** * Create a new network agent. * @param context a {@link Context} to get system services from. * @param looper the {@link Looper} on which to invoke the callbacks. * @param logTag the tag for logs * @param nc the initial {@link NetworkCapabilities} of this network. Update with * sendNetworkCapabilities. * @param lp the initial {@link LinkProperties} of this network. Update with sendLinkProperties. * @param score the initial score of this network. Update with sendNetworkScore. * @param config an immutable {@link NetworkAgentConfig} for this agent. * @param provider the {@link NetworkProvider} managing this agent. */ public NetworkAgent(@NonNull Context context, @NonNull Looper looper, @NonNull String logTag, @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, int score, @NonNull NetworkAgentConfig config, @Nullable NetworkProvider provider) { this(looper, context, logTag, nc, lp, score, config, provider == null ? NetworkProvider.ID_NONE : provider.getProviderId(), getLegacyNetworkInfo(config)); } private NetworkAgent(Looper looper, Context context, String logTag, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config, int providerId, NetworkInfo ni) { mHandler = new NetworkAgentHandler(looper); LOG_TAG = logTag; mContext = context; Loading core/java/android/net/NetworkAgentConfig.java +55 −3 Original line number Diff line number Diff line Loading @@ -21,12 +21,11 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; /** * Allows a network transport to provide the system with policy and configuration information about * a particular network when registering a {@link NetworkAgent}. This information cannot change once * the agent is registered. * a particular network when registering a {@link NetworkAgent}. * @note This information cannot change once the agent is registered. * * @hide */ Loading Loading @@ -119,6 +118,19 @@ public final class NetworkAgentConfig implements Parcelable { return !skip464xlat; } /** * The legacy type of this network agent, or TYPE_NONE if unset. * @hide */ public int legacyType = ConnectivityManager.TYPE_NONE; /** * @return the legacy type */ public int getLegacyType() { return legacyType; } /** * Set to true if the PRIVATE_DNS_BROKEN notification has shown for this network. * Reset this bit when private DNS mode is changed from strict mode to opportunistic/off mode. Loading @@ -127,6 +139,21 @@ public final class NetworkAgentConfig implements Parcelable { */ public boolean hasShownBroken; /** * The name of the legacy network type. It's a free-form string used in logging. * @hide */ @NonNull public String legacyTypeName = ""; /** * @return the name of the legacy network type. It's a free-form string used in logging. */ @NonNull public String getLegacyTypeName() { return legacyTypeName; } /** @hide */ public NetworkAgentConfig() { } Loading @@ -140,6 +167,8 @@ public final class NetworkAgentConfig implements Parcelable { subscriberId = nac.subscriberId; provisioningNotificationDisabled = nac.provisioningNotificationDisabled; skip464xlat = nac.skip464xlat; legacyType = nac.legacyType; legacyTypeName = nac.legacyTypeName; } } Loading Loading @@ -184,6 +213,29 @@ public final class NetworkAgentConfig implements Parcelable { return this; } /** * Sets the legacy type for this network. * * @param legacyType the type * @return this builder, to facilitate chaining. */ @NonNull public Builder setLegacyType(int legacyType) { mConfig.legacyType = legacyType; return this; } /** * Sets the name of the legacy type of the agent. It's a free-form string used in logging. * @param legacyTypeName the name * @return this builder, to facilitate chaining. */ @NonNull public Builder setLegacyTypeName(@NonNull String legacyTypeName) { mConfig.legacyTypeName = legacyTypeName; return this; } /** * Returns the constructed {@link NetworkAgentConfig} object. */ Loading services/core/java/com/android/server/ConnectivityService.java +7 −3 Original line number Diff line number Diff line Loading @@ -5848,9 +5848,10 @@ public class ConnectivityService extends IConnectivityManager.Stub } newNc.setPrivateDnsBroken(nai.networkCapabilities.isPrivateDnsBroken()); // TODO : remove this once all factories are updated to send NOT_SUSPENDED // TODO : remove this once all factories are updated to send NOT_SUSPENDED and NOT_ROAMING if (!newNc.hasTransport(TRANSPORT_CELLULAR)) { newNc.addCapability(NET_CAPABILITY_NOT_SUSPENDED); newNc.addCapability(NET_CAPABILITY_NOT_ROAMING); } return newNc; Loading Loading @@ -5899,7 +5900,9 @@ public class ConnectivityService extends IConnectivityManager.Stub processListenRequests(nai); final boolean prevSuspended = !prevNc.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); final boolean suspended = !newNc.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); if (prevSuspended != suspended) { final boolean prevRoaming = !prevNc.hasCapability(NET_CAPABILITY_NOT_ROAMING); final boolean roaming = !newNc.hasCapability(NET_CAPABILITY_NOT_ROAMING); if (prevSuspended != suspended || prevRoaming != roaming) { // TODO (b/73132094) : remove this call once the few users of onSuspended and // onResumed have been removed. notifyNetworkCallbacks(nai, suspended ? ConnectivityManager.CALLBACK_SUSPENDED Loading Loading @@ -6615,7 +6618,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @NonNull private NetworkInfo mixInInfo(@NonNull final NetworkAgentInfo nai, @NonNull NetworkInfo info) { final NetworkInfo newInfo = new NetworkInfo(info); // The suspended bit is managed in NetworkCapabilities. // The suspended and roaming bits are managed in NetworkCapabilities. final boolean suspended = !nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); if (suspended && info.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) { Loading @@ -6628,6 +6631,7 @@ public class ConnectivityService extends IConnectivityManager.Stub newInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, info.getReason(), info.getExtraInfo()); } newInfo.setRoaming(!nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)); return newInfo; } Loading Loading
api/system-current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -5073,6 +5073,7 @@ package android.net { } public abstract class NetworkAgent { ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider); method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData); method public void onAutomaticReconnectDisabled(); method public void onBandwidthUpdateRequested(); Loading @@ -5095,6 +5096,8 @@ package android.net { public final class NetworkAgentConfig implements android.os.Parcelable { method public int describeContents(); method public int getLegacyType(); method @NonNull public String getLegacyTypeName(); method @Nullable public String getSubscriberId(); method public boolean isNat64DetectionEnabled(); method public boolean isProvisioningNotificationEnabled(); Loading @@ -5107,6 +5110,8 @@ package android.net { method @NonNull public android.net.NetworkAgentConfig build(); method @NonNull public android.net.NetworkAgentConfig.Builder disableNat64Detection(); method @NonNull public android.net.NetworkAgentConfig.Builder disableProvisioningNotification(); method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int); method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String); method @NonNull public android.net.NetworkAgentConfig.Builder setSubscriberId(@Nullable String); } Loading
core/java/android/net/NetworkAgent.java +36 −8 Original line number Diff line number Diff line Loading @@ -262,32 +262,60 @@ public abstract class NetworkAgent { */ public static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER = BASE + 17; // TODO : remove these two constructors. They are a stopgap measure to help sheperding a number // of dependent changes that would conflict throughout the automerger graph. Having these // temporarily helps with the process of going through with all these dependent changes across // the entire tree. /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score) { this(looper, context, logTag, ni, nc, lp, score, null, NetworkProvider.ID_NONE); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config) { this(looper, context, logTag, ni, nc, lp, score, config, NetworkProvider.ID_NONE); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, int providerId) { this(looper, context, logTag, ni, nc, lp, score, null, providerId); } /** @hide TODO: decide which of these to expose. */ /** @hide TODO: remove and replace usage with the public constructor. */ public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config, int providerId) { this(looper, context, logTag, nc, lp, score, config, providerId, ni); } private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) { // The subtype can be changed with (TODO) setLegacySubtype, but it starts // with the type and an empty description. return new NetworkInfo(config.legacyType, config.legacyType, config.legacyTypeName, ""); } /** * Create a new network agent. * @param context a {@link Context} to get system services from. * @param looper the {@link Looper} on which to invoke the callbacks. * @param logTag the tag for logs * @param nc the initial {@link NetworkCapabilities} of this network. Update with * sendNetworkCapabilities. * @param lp the initial {@link LinkProperties} of this network. Update with sendLinkProperties. * @param score the initial score of this network. Update with sendNetworkScore. * @param config an immutable {@link NetworkAgentConfig} for this agent. * @param provider the {@link NetworkProvider} managing this agent. */ public NetworkAgent(@NonNull Context context, @NonNull Looper looper, @NonNull String logTag, @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, int score, @NonNull NetworkAgentConfig config, @Nullable NetworkProvider provider) { this(looper, context, logTag, nc, lp, score, config, provider == null ? NetworkProvider.ID_NONE : provider.getProviderId(), getLegacyNetworkInfo(config)); } private NetworkAgent(Looper looper, Context context, String logTag, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config, int providerId, NetworkInfo ni) { mHandler = new NetworkAgentHandler(looper); LOG_TAG = logTag; mContext = context; Loading
core/java/android/net/NetworkAgentConfig.java +55 −3 Original line number Diff line number Diff line Loading @@ -21,12 +21,11 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; /** * Allows a network transport to provide the system with policy and configuration information about * a particular network when registering a {@link NetworkAgent}. This information cannot change once * the agent is registered. * a particular network when registering a {@link NetworkAgent}. * @note This information cannot change once the agent is registered. * * @hide */ Loading Loading @@ -119,6 +118,19 @@ public final class NetworkAgentConfig implements Parcelable { return !skip464xlat; } /** * The legacy type of this network agent, or TYPE_NONE if unset. * @hide */ public int legacyType = ConnectivityManager.TYPE_NONE; /** * @return the legacy type */ public int getLegacyType() { return legacyType; } /** * Set to true if the PRIVATE_DNS_BROKEN notification has shown for this network. * Reset this bit when private DNS mode is changed from strict mode to opportunistic/off mode. Loading @@ -127,6 +139,21 @@ public final class NetworkAgentConfig implements Parcelable { */ public boolean hasShownBroken; /** * The name of the legacy network type. It's a free-form string used in logging. * @hide */ @NonNull public String legacyTypeName = ""; /** * @return the name of the legacy network type. It's a free-form string used in logging. */ @NonNull public String getLegacyTypeName() { return legacyTypeName; } /** @hide */ public NetworkAgentConfig() { } Loading @@ -140,6 +167,8 @@ public final class NetworkAgentConfig implements Parcelable { subscriberId = nac.subscriberId; provisioningNotificationDisabled = nac.provisioningNotificationDisabled; skip464xlat = nac.skip464xlat; legacyType = nac.legacyType; legacyTypeName = nac.legacyTypeName; } } Loading Loading @@ -184,6 +213,29 @@ public final class NetworkAgentConfig implements Parcelable { return this; } /** * Sets the legacy type for this network. * * @param legacyType the type * @return this builder, to facilitate chaining. */ @NonNull public Builder setLegacyType(int legacyType) { mConfig.legacyType = legacyType; return this; } /** * Sets the name of the legacy type of the agent. It's a free-form string used in logging. * @param legacyTypeName the name * @return this builder, to facilitate chaining. */ @NonNull public Builder setLegacyTypeName(@NonNull String legacyTypeName) { mConfig.legacyTypeName = legacyTypeName; return this; } /** * Returns the constructed {@link NetworkAgentConfig} object. */ Loading
services/core/java/com/android/server/ConnectivityService.java +7 −3 Original line number Diff line number Diff line Loading @@ -5848,9 +5848,10 @@ public class ConnectivityService extends IConnectivityManager.Stub } newNc.setPrivateDnsBroken(nai.networkCapabilities.isPrivateDnsBroken()); // TODO : remove this once all factories are updated to send NOT_SUSPENDED // TODO : remove this once all factories are updated to send NOT_SUSPENDED and NOT_ROAMING if (!newNc.hasTransport(TRANSPORT_CELLULAR)) { newNc.addCapability(NET_CAPABILITY_NOT_SUSPENDED); newNc.addCapability(NET_CAPABILITY_NOT_ROAMING); } return newNc; Loading Loading @@ -5899,7 +5900,9 @@ public class ConnectivityService extends IConnectivityManager.Stub processListenRequests(nai); final boolean prevSuspended = !prevNc.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); final boolean suspended = !newNc.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); if (prevSuspended != suspended) { final boolean prevRoaming = !prevNc.hasCapability(NET_CAPABILITY_NOT_ROAMING); final boolean roaming = !newNc.hasCapability(NET_CAPABILITY_NOT_ROAMING); if (prevSuspended != suspended || prevRoaming != roaming) { // TODO (b/73132094) : remove this call once the few users of onSuspended and // onResumed have been removed. notifyNetworkCallbacks(nai, suspended ? ConnectivityManager.CALLBACK_SUSPENDED Loading Loading @@ -6615,7 +6618,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @NonNull private NetworkInfo mixInInfo(@NonNull final NetworkAgentInfo nai, @NonNull NetworkInfo info) { final NetworkInfo newInfo = new NetworkInfo(info); // The suspended bit is managed in NetworkCapabilities. // The suspended and roaming bits are managed in NetworkCapabilities. final boolean suspended = !nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_SUSPENDED); if (suspended && info.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) { Loading @@ -6628,6 +6631,7 @@ public class ConnectivityService extends IConnectivityManager.Stub newInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, info.getReason(), info.getExtraInfo()); } newInfo.setRoaming(!nai.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)); return newInfo; } Loading