Add a systemapi constructor for NetworkAgent am: 0900154ef5 am: 1021194560

Change-Id: I091a6c7d8e92c22ca9393b5c974fcda5356d4102
This commit is contained in:
Automerger Merge Worker
2020-02-12 06:35:39 +00:00
2 changed files with 91 additions and 11 deletions

View File

@@ -262,32 +262,60 @@ public abstract class NetworkAgent {
*/ */
public static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER = BASE + 17; 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 /** @hide TODO: remove and replace usage with the public constructor. */
// 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. */
public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni, public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score) { NetworkCapabilities nc, LinkProperties lp, int score) {
this(looper, context, logTag, ni, nc, lp, score, null, NetworkProvider.ID_NONE); 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, public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config) { NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config) {
this(looper, context, logTag, ni, nc, lp, score, config, NetworkProvider.ID_NONE); 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, public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score, int providerId) { NetworkCapabilities nc, LinkProperties lp, int score, int providerId) {
this(looper, context, logTag, ni, nc, lp, score, null, 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, public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config, NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config,
int providerId) { 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); mHandler = new NetworkAgentHandler(looper);
LOG_TAG = logTag; LOG_TAG = logTag;
mContext = context; mContext = context;

View File

@@ -21,12 +21,11 @@ import android.annotation.Nullable;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.text.TextUtils;
/** /**
* Allows a network transport to provide the system with policy and configuration information about * 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 * a particular network when registering a {@link NetworkAgent}.
* the agent is registered. * @note This information cannot change once the agent is registered.
* *
* @hide * @hide
*/ */
@@ -119,6 +118,19 @@ public final class NetworkAgentConfig implements Parcelable {
return !skip464xlat; 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. * 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. * Reset this bit when private DNS mode is changed from strict mode to opportunistic/off mode.
@@ -127,6 +139,21 @@ public final class NetworkAgentConfig implements Parcelable {
*/ */
public boolean hasShownBroken; 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 */ /** @hide */
public NetworkAgentConfig() { public NetworkAgentConfig() {
} }
@@ -140,6 +167,8 @@ public final class NetworkAgentConfig implements Parcelable {
subscriberId = nac.subscriberId; subscriberId = nac.subscriberId;
provisioningNotificationDisabled = nac.provisioningNotificationDisabled; provisioningNotificationDisabled = nac.provisioningNotificationDisabled;
skip464xlat = nac.skip464xlat; skip464xlat = nac.skip464xlat;
legacyType = nac.legacyType;
legacyTypeName = nac.legacyTypeName;
} }
} }
@@ -184,6 +213,29 @@ public final class NetworkAgentConfig implements Parcelable {
return this; 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. * Returns the constructed {@link NetworkAgentConfig} object.
*/ */