Merge "[SUBID01-0]Grow NetworkIdentity to include a new mSubId field"
This commit is contained in:
@@ -20,6 +20,7 @@ import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.net.NetworkTemplate.NETWORK_TYPE_ALL;
|
||||
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
@@ -86,6 +87,7 @@ public class NetworkIdentity {
|
||||
|
||||
final int mType;
|
||||
final int mRatType;
|
||||
final int mSubId;
|
||||
final String mSubscriberId;
|
||||
final String mWifiNetworkKey;
|
||||
final boolean mRoaming;
|
||||
@@ -96,7 +98,7 @@ public class NetworkIdentity {
|
||||
/** @hide */
|
||||
public NetworkIdentity(
|
||||
int type, int ratType, @Nullable String subscriberId, @Nullable String wifiNetworkKey,
|
||||
boolean roaming, boolean metered, boolean defaultNetwork, int oemManaged) {
|
||||
boolean roaming, boolean metered, boolean defaultNetwork, int oemManaged, int subId) {
|
||||
mType = type;
|
||||
mRatType = ratType;
|
||||
mSubscriberId = subscriberId;
|
||||
@@ -105,12 +107,13 @@ public class NetworkIdentity {
|
||||
mMetered = metered;
|
||||
mDefaultNetwork = defaultNetwork;
|
||||
mOemManaged = oemManaged;
|
||||
mSubId = subId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mType, mRatType, mSubscriberId, mWifiNetworkKey, mRoaming, mMetered,
|
||||
mDefaultNetwork, mOemManaged);
|
||||
mDefaultNetwork, mOemManaged, mSubId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,7 +125,8 @@ public class NetworkIdentity {
|
||||
&& Objects.equals(mWifiNetworkKey, ident.mWifiNetworkKey)
|
||||
&& mMetered == ident.mMetered
|
||||
&& mDefaultNetwork == ident.mDefaultNetwork
|
||||
&& mOemManaged == ident.mOemManaged;
|
||||
&& mOemManaged == ident.mOemManaged
|
||||
&& mSubId == ident.mSubId;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -150,6 +154,7 @@ public class NetworkIdentity {
|
||||
builder.append(", metered=").append(mMetered);
|
||||
builder.append(", defaultNetwork=").append(mDefaultNetwork);
|
||||
builder.append(", oemManaged=").append(getOemManagedNames(mOemManaged));
|
||||
builder.append(", subId=").append(mSubId);
|
||||
return builder.append("}").toString();
|
||||
}
|
||||
|
||||
@@ -256,6 +261,11 @@ public class NetworkIdentity {
|
||||
return mOemManaged;
|
||||
}
|
||||
|
||||
/** Get the SubId of this instance. */
|
||||
public int getSubId() {
|
||||
return mSubId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assemble a {@link NetworkIdentity} from the passed arguments.
|
||||
*
|
||||
@@ -276,7 +286,8 @@ public class NetworkIdentity {
|
||||
public static NetworkIdentity buildNetworkIdentity(Context context,
|
||||
@NonNull NetworkStateSnapshot snapshot, boolean defaultNetwork, int ratType) {
|
||||
final NetworkIdentity.Builder builder = new NetworkIdentity.Builder()
|
||||
.setNetworkStateSnapshot(snapshot).setDefaultNetwork(defaultNetwork);
|
||||
.setNetworkStateSnapshot(snapshot).setDefaultNetwork(defaultNetwork)
|
||||
.setSubId(snapshot.getSubId());
|
||||
if (snapshot.getLegacyType() == TYPE_MOBILE && ratType != NETWORK_TYPE_ALL) {
|
||||
builder.setRatType(ratType);
|
||||
}
|
||||
@@ -325,6 +336,9 @@ public class NetworkIdentity {
|
||||
if (res == 0) {
|
||||
res = Integer.compare(left.mOemManaged, right.mOemManaged);
|
||||
}
|
||||
if (res == 0) {
|
||||
res = Integer.compare(left.mSubId, right.mSubId);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -345,6 +359,7 @@ public class NetworkIdentity {
|
||||
private boolean mMetered;
|
||||
private boolean mDefaultNetwork;
|
||||
private int mOemManaged;
|
||||
private int mSubId;
|
||||
|
||||
/**
|
||||
* Creates a new Builder.
|
||||
@@ -359,6 +374,7 @@ public class NetworkIdentity {
|
||||
mMetered = false;
|
||||
mDefaultNetwork = false;
|
||||
mOemManaged = NetworkTemplate.OEM_MANAGED_NO;
|
||||
mSubId = INVALID_SUBSCRIPTION_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -537,6 +553,19 @@ public class NetworkIdentity {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Subscription Id.
|
||||
*
|
||||
* @param subId the Subscription Id of the network. Or INVALID_SUBSCRIPTION_ID if not
|
||||
* applicable.
|
||||
* @return this builder.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setSubId(int subId) {
|
||||
mSubId = subId;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void ensureValidParameters() {
|
||||
// Assert non-mobile network cannot have a ratType.
|
||||
if (mType != TYPE_MOBILE && mRatType != NetworkTemplate.NETWORK_TYPE_ALL) {
|
||||
@@ -559,7 +588,7 @@ public class NetworkIdentity {
|
||||
public NetworkIdentity build() {
|
||||
ensureValidParameters();
|
||||
return new NetworkIdentity(mType, mRatType, mSubscriberId, mWifiNetworkKey,
|
||||
mRoaming, mMetered, mDefaultNetwork, mOemManaged);
|
||||
mRoaming, mMetered, mDefaultNetwork, mOemManaged, mSubId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.net;
|
||||
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.service.NetworkIdentitySetProto;
|
||||
@@ -42,6 +43,7 @@ public class NetworkIdentitySet extends HashSet<NetworkIdentity> {
|
||||
private static final int VERSION_ADD_METERED = 4;
|
||||
private static final int VERSION_ADD_DEFAULT_NETWORK = 5;
|
||||
private static final int VERSION_ADD_OEM_MANAGED_NETWORK = 6;
|
||||
private static final int VERSION_ADD_SUB_ID = 7;
|
||||
|
||||
/**
|
||||
* Construct a {@link NetworkIdentitySet} object.
|
||||
@@ -103,8 +105,15 @@ public class NetworkIdentitySet extends HashSet<NetworkIdentity> {
|
||||
oemNetCapabilities = NetworkIdentity.OEM_NONE;
|
||||
}
|
||||
|
||||
final int subId;
|
||||
if (version >= VERSION_ADD_SUB_ID) {
|
||||
subId = in.readInt();
|
||||
} else {
|
||||
subId = INVALID_SUBSCRIPTION_ID;
|
||||
}
|
||||
|
||||
add(new NetworkIdentity(type, ratType, subscriberId, networkId, roaming, metered,
|
||||
defaultNetwork, oemNetCapabilities));
|
||||
defaultNetwork, oemNetCapabilities, subId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +122,7 @@ public class NetworkIdentitySet extends HashSet<NetworkIdentity> {
|
||||
* @hide
|
||||
*/
|
||||
public void writeToStream(DataOutput out) throws IOException {
|
||||
out.writeInt(VERSION_ADD_OEM_MANAGED_NETWORK);
|
||||
out.writeInt(VERSION_ADD_SUB_ID);
|
||||
out.writeInt(size());
|
||||
for (NetworkIdentity ident : this) {
|
||||
out.writeInt(ident.getType());
|
||||
@@ -124,6 +133,7 @@ public class NetworkIdentitySet extends HashSet<NetworkIdentity> {
|
||||
out.writeBoolean(ident.isMetered());
|
||||
out.writeBoolean(ident.isDefaultNetwork());
|
||||
out.writeInt(ident.getOemManaged());
|
||||
out.writeInt(ident.getSubId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package android.net;
|
||||
|
||||
import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
@@ -98,12 +100,29 @@ public final class NetworkStateSnapshot implements Parcelable {
|
||||
return mLinkProperties;
|
||||
}
|
||||
|
||||
/** Get the Subscriber Id of the network associated with this snapshot. */
|
||||
/**
|
||||
* Get the Subscriber Id of the network associated with this snapshot.
|
||||
* @deprecated Please use #getSubId, which doesn't return personally identifiable
|
||||
* information.
|
||||
*/
|
||||
@Deprecated
|
||||
@Nullable
|
||||
public String getSubscriberId() {
|
||||
return mSubscriberId;
|
||||
}
|
||||
|
||||
/** Get the subId of the network associated with this snapshot. */
|
||||
public int getSubId() {
|
||||
if (mNetworkCapabilities.hasTransport(TRANSPORT_CELLULAR)) {
|
||||
final NetworkSpecifier spec = mNetworkCapabilities.getNetworkSpecifier();
|
||||
if (spec instanceof TelephonyNetworkSpecifier) {
|
||||
return ((TelephonyNetworkSpecifier) spec).getSubscriptionId();
|
||||
}
|
||||
}
|
||||
return INVALID_SUBSCRIPTION_ID;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the legacy type of the network associated with this snapshot.
|
||||
* @return the legacy network type. See {@code ConnectivityManager#TYPE_*}.
|
||||
|
||||
Reference in New Issue
Block a user