Merge changes from topic "removeNI" am: c2d6240642
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1536707 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Ia7c6e3bf8f10b98fc2c4d83d41e65c64737753f0
This commit is contained in:
@@ -32,7 +32,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Network definition that includes strong identity. Analogous to combining
|
* Network definition that includes strong identity. Analogous to combining
|
||||||
* {@link NetworkInfo} and an IMSI.
|
* {@link NetworkCapabilities} and an IMSI.
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@@ -160,7 +160,7 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
|
|||||||
*/
|
*/
|
||||||
public static NetworkIdentity buildNetworkIdentity(Context context, NetworkState state,
|
public static NetworkIdentity buildNetworkIdentity(Context context, NetworkState state,
|
||||||
boolean defaultNetwork, @NetworkType int subType) {
|
boolean defaultNetwork, @NetworkType int subType) {
|
||||||
final int type = state.networkInfo.getType();
|
final int legacyType = state.legacyNetworkType;
|
||||||
|
|
||||||
String subscriberId = null;
|
String subscriberId = null;
|
||||||
String networkId = null;
|
String networkId = null;
|
||||||
@@ -171,7 +171,7 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
|
|||||||
|
|
||||||
subscriberId = state.subscriberId;
|
subscriberId = state.subscriberId;
|
||||||
|
|
||||||
if (type == TYPE_WIFI) {
|
if (legacyType == TYPE_WIFI) {
|
||||||
if (state.networkCapabilities.getSsid() != null) {
|
if (state.networkCapabilities.getSsid() != null) {
|
||||||
networkId = state.networkCapabilities.getSsid();
|
networkId = state.networkCapabilities.getSsid();
|
||||||
if (networkId == null) {
|
if (networkId == null) {
|
||||||
@@ -184,7 +184,7 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new NetworkIdentity(type, subType, subscriberId, networkId, roaming, metered,
|
return new NetworkIdentity(legacyType, subType, subscriberId, networkId, roaming, metered,
|
||||||
defaultNetwork);
|
defaultNetwork);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package android.net;
|
package android.net;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.Nullable;
|
||||||
import android.compat.annotation.UnsupportedAppUsage;
|
import android.compat.annotation.UnsupportedAppUsage;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
@@ -41,6 +42,7 @@ public class NetworkState implements Parcelable {
|
|||||||
public final Network network;
|
public final Network network;
|
||||||
public final String subscriberId;
|
public final String subscriberId;
|
||||||
public final String networkId;
|
public final String networkId;
|
||||||
|
public final int legacyNetworkType;
|
||||||
|
|
||||||
private NetworkState() {
|
private NetworkState() {
|
||||||
networkInfo = null;
|
networkInfo = null;
|
||||||
@@ -49,17 +51,35 @@ public class NetworkState implements Parcelable {
|
|||||||
network = null;
|
network = null;
|
||||||
subscriberId = null;
|
subscriberId = null;
|
||||||
networkId = null;
|
networkId = null;
|
||||||
|
legacyNetworkType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NetworkState(int legacyNetworkType, @NonNull LinkProperties linkProperties,
|
||||||
|
@NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
|
||||||
|
@Nullable String subscriberId, @Nullable String networkId) {
|
||||||
|
this(legacyNetworkType, new NetworkInfo(legacyNetworkType, 0, null, null), linkProperties,
|
||||||
|
networkCapabilities, network, subscriberId, networkId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructor that used internally in ConnectivityService mainline module.
|
||||||
public NetworkState(@NonNull NetworkInfo networkInfo, @NonNull LinkProperties linkProperties,
|
public NetworkState(@NonNull NetworkInfo networkInfo, @NonNull LinkProperties linkProperties,
|
||||||
@NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
|
@NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
|
||||||
String subscriberId, String networkId) {
|
String subscriberId, String networkId) {
|
||||||
|
this(networkInfo.getType(), networkInfo, linkProperties,
|
||||||
|
networkCapabilities, network, subscriberId, networkId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkState(int legacyNetworkType, @NonNull NetworkInfo networkInfo,
|
||||||
|
@NonNull LinkProperties linkProperties,
|
||||||
|
@NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
|
||||||
|
String subscriberId, String networkId) {
|
||||||
this.networkInfo = networkInfo;
|
this.networkInfo = networkInfo;
|
||||||
this.linkProperties = linkProperties;
|
this.linkProperties = linkProperties;
|
||||||
this.networkCapabilities = networkCapabilities;
|
this.networkCapabilities = networkCapabilities;
|
||||||
this.network = network;
|
this.network = network;
|
||||||
this.subscriberId = subscriberId;
|
this.subscriberId = subscriberId;
|
||||||
this.networkId = networkId;
|
this.networkId = networkId;
|
||||||
|
this.legacyNetworkType = legacyNetworkType;
|
||||||
|
|
||||||
// This object is an atomic view of a network, so the various components
|
// This object is an atomic view of a network, so the various components
|
||||||
// should always agree on roaming state.
|
// should always agree on roaming state.
|
||||||
@@ -80,6 +100,7 @@ public class NetworkState implements Parcelable {
|
|||||||
network = in.readParcelable(null);
|
network = in.readParcelable(null);
|
||||||
subscriberId = in.readString();
|
subscriberId = in.readString();
|
||||||
networkId = in.readString();
|
networkId = in.readString();
|
||||||
|
legacyNetworkType = in.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -95,6 +116,7 @@ public class NetworkState implements Parcelable {
|
|||||||
out.writeParcelable(network, flags);
|
out.writeParcelable(network, flags);
|
||||||
out.writeString(subscriberId);
|
out.writeString(subscriberId);
|
||||||
out.writeString(networkId);
|
out.writeString(networkId);
|
||||||
|
out.writeInt(legacyNetworkType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@UnsupportedAppUsage
|
@UnsupportedAppUsage
|
||||||
|
|||||||
@@ -1894,7 +1894,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
final ArrayList<NetworkState> result = new ArrayList<>();
|
final ArrayList<NetworkState> result = new ArrayList<>();
|
||||||
for (Network network : getAllNetworks()) {
|
for (Network network : getAllNetworks()) {
|
||||||
final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
|
final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
|
||||||
if (nai != null) {
|
// TODO: Consider include SUSPENDED networks.
|
||||||
|
if (nai != null && nai.networkInfo.isConnected()) {
|
||||||
// TODO (b/73321673) : NetworkState contains a copy of the
|
// TODO (b/73321673) : NetworkState contains a copy of the
|
||||||
// NetworkCapabilities, which may contain UIDs of apps to which the
|
// NetworkCapabilities, which may contain UIDs of apps to which the
|
||||||
// network applies. Should the UIDs be cleared so as not to leak or
|
// network applies. Should the UIDs be cleared so as not to leak or
|
||||||
|
|||||||
@@ -1962,14 +1962,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
if (state.network != null) {
|
if (state.network != null) {
|
||||||
mNetIdToSubId.put(state.network.netId, parseSubId(state));
|
mNetIdToSubId.put(state.network.netId, parseSubId(state));
|
||||||
}
|
}
|
||||||
if (state.networkInfo != null && state.networkInfo.isConnected()) {
|
|
||||||
// Policies matched by NPMS only match by subscriber ID or by ssid. Thus subtype
|
// Policies matched by NPMS only match by subscriber ID or by ssid. Thus subtype
|
||||||
// in the object created here is never used and its value doesn't matter, so use
|
// in the object created here is never used and its value doesn't matter, so use
|
||||||
// NETWORK_TYPE_UNKNOWN.
|
// NETWORK_TYPE_UNKNOWN.
|
||||||
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
|
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
|
||||||
true, TelephonyManager.NETWORK_TYPE_UNKNOWN /* subType */);
|
true, TelephonyManager.NETWORK_TYPE_UNKNOWN /* subType */);
|
||||||
identified.put(state, ident);
|
identified.put(state, ident);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final ArraySet<String> newMeteredIfaces = new ArraySet<>();
|
final ArraySet<String> newMeteredIfaces = new ArraySet<>();
|
||||||
@@ -2044,8 +2043,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
// One final pass to catch any metered ifaces that don't have explicitly
|
// One final pass to catch any metered ifaces that don't have explicitly
|
||||||
// defined policies; typically Wi-Fi networks.
|
// defined policies; typically Wi-Fi networks.
|
||||||
for (NetworkState state : states) {
|
for (NetworkState state : states) {
|
||||||
if (state.networkInfo != null && state.networkInfo.isConnected()
|
if (!state.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
|
||||||
&& !state.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
|
|
||||||
matchingIfaces.clear();
|
matchingIfaces.clear();
|
||||||
collectIfaces(matchingIfaces, state);
|
collectIfaces(matchingIfaces, state);
|
||||||
for (int j = matchingIfaces.size() - 1; j >= 0; j--) {
|
for (int j = matchingIfaces.size() - 1; j >= 0; j--) {
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ import android.net.LinkProperties;
|
|||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkIdentity;
|
import android.net.NetworkIdentity;
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.net.NetworkStack;
|
import android.net.NetworkStack;
|
||||||
import android.net.NetworkState;
|
import android.net.NetworkState;
|
||||||
import android.net.NetworkStats;
|
import android.net.NetworkStats;
|
||||||
@@ -1264,7 +1263,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Inspect all current {@link NetworkState} to derive mapping from {@code iface} to {@link
|
* Inspect all current {@link NetworkState} to derive mapping from {@code iface} to {@link
|
||||||
* NetworkStatsHistory}. When multiple {@link NetworkInfo} are active on a single {@code iface},
|
* NetworkStatsHistory}. When multiple networks are active on a single {@code iface},
|
||||||
* they are combined under a single {@link NetworkIdentitySet}.
|
* they are combined under a single {@link NetworkIdentitySet}.
|
||||||
*/
|
*/
|
||||||
@GuardedBy("mStatsLock")
|
@GuardedBy("mStatsLock")
|
||||||
@@ -1294,84 +1293,82 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
final boolean combineSubtypeEnabled = mSettings.getCombineSubtypeEnabled();
|
final boolean combineSubtypeEnabled = mSettings.getCombineSubtypeEnabled();
|
||||||
final ArraySet<String> mobileIfaces = new ArraySet<>();
|
final ArraySet<String> mobileIfaces = new ArraySet<>();
|
||||||
for (NetworkState state : states) {
|
for (NetworkState state : states) {
|
||||||
if (state.networkInfo.isConnected()) {
|
final boolean isMobile = isNetworkTypeMobile(state.legacyNetworkType);
|
||||||
final boolean isMobile = isNetworkTypeMobile(state.networkInfo.getType());
|
final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, state.network);
|
||||||
final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, state.network);
|
final int subType = combineSubtypeEnabled ? SUBTYPE_COMBINED
|
||||||
final int subType = combineSubtypeEnabled ? SUBTYPE_COMBINED
|
: getSubTypeForState(state);
|
||||||
: getSubTypeForState(state);
|
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
|
||||||
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
|
isDefault, subType);
|
||||||
isDefault, subType);
|
|
||||||
|
|
||||||
// Traffic occurring on the base interface is always counted for
|
// Traffic occurring on the base interface is always counted for
|
||||||
// both total usage and UID details.
|
// both total usage and UID details.
|
||||||
final String baseIface = state.linkProperties.getInterfaceName();
|
final String baseIface = state.linkProperties.getInterfaceName();
|
||||||
if (baseIface != null) {
|
if (baseIface != null) {
|
||||||
findOrCreateNetworkIdentitySet(mActiveIfaces, baseIface).add(ident);
|
findOrCreateNetworkIdentitySet(mActiveIfaces, baseIface).add(ident);
|
||||||
findOrCreateNetworkIdentitySet(mActiveUidIfaces, baseIface).add(ident);
|
findOrCreateNetworkIdentitySet(mActiveUidIfaces, baseIface).add(ident);
|
||||||
|
|
||||||
// Build a separate virtual interface for VT (Video Telephony) data usage.
|
// Build a separate virtual interface for VT (Video Telephony) data usage.
|
||||||
// Only do this when IMS is not metered, but VT is metered.
|
// Only do this when IMS is not metered, but VT is metered.
|
||||||
// If IMS is metered, then the IMS network usage has already included VT usage.
|
// If IMS is metered, then the IMS network usage has already included VT usage.
|
||||||
// VT is considered always metered in framework's layer. If VT is not metered
|
// VT is considered always metered in framework's layer. If VT is not metered
|
||||||
// per carrier's policy, modem will report 0 usage for VT calls.
|
// per carrier's policy, modem will report 0 usage for VT calls.
|
||||||
if (state.networkCapabilities.hasCapability(
|
if (state.networkCapabilities.hasCapability(
|
||||||
NetworkCapabilities.NET_CAPABILITY_IMS) && !ident.getMetered()) {
|
NetworkCapabilities.NET_CAPABILITY_IMS) && !ident.getMetered()) {
|
||||||
|
|
||||||
// Copy the identify from IMS one but mark it as metered.
|
// Copy the identify from IMS one but mark it as metered.
|
||||||
NetworkIdentity vtIdent = new NetworkIdentity(ident.getType(),
|
NetworkIdentity vtIdent = new NetworkIdentity(ident.getType(),
|
||||||
ident.getSubType(), ident.getSubscriberId(), ident.getNetworkId(),
|
ident.getSubType(), ident.getSubscriberId(), ident.getNetworkId(),
|
||||||
ident.getRoaming(), true /* metered */,
|
ident.getRoaming(), true /* metered */,
|
||||||
true /* onDefaultNetwork */);
|
true /* onDefaultNetwork */);
|
||||||
findOrCreateNetworkIdentitySet(mActiveIfaces, IFACE_VT).add(vtIdent);
|
findOrCreateNetworkIdentitySet(mActiveIfaces, IFACE_VT).add(vtIdent);
|
||||||
findOrCreateNetworkIdentitySet(mActiveUidIfaces, IFACE_VT).add(vtIdent);
|
findOrCreateNetworkIdentitySet(mActiveUidIfaces, IFACE_VT).add(vtIdent);
|
||||||
}
|
|
||||||
|
|
||||||
if (isMobile) {
|
|
||||||
mobileIfaces.add(baseIface);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Traffic occurring on stacked interfaces is usually clatd.
|
if (isMobile) {
|
||||||
//
|
mobileIfaces.add(baseIface);
|
||||||
// UID stats are always counted on the stacked interface and never on the base
|
}
|
||||||
// interface, because the packets on the base interface do not actually match
|
}
|
||||||
// application sockets (they're not IPv4) and thus the app uid is not known.
|
|
||||||
// For receive this is obvious: packets must be translated from IPv6 to IPv4
|
|
||||||
// before the application socket can be found.
|
|
||||||
// For transmit: either they go through the clat daemon which by virtue of going
|
|
||||||
// through userspace strips the original socket association during the IPv4 to
|
|
||||||
// IPv6 translation process, or they are offloaded by eBPF, which doesn't:
|
|
||||||
// However, on an ebpf device the accounting is done in cgroup ebpf hooks,
|
|
||||||
// which don't trigger again post ebpf translation.
|
|
||||||
// (as such stats accounted to the clat uid are ignored)
|
|
||||||
//
|
|
||||||
// Interface stats are more complicated.
|
|
||||||
//
|
|
||||||
// eBPF offloaded 464xlat'ed packets never hit base interface ip6tables, and thus
|
|
||||||
// *all* statistics are collected by iptables on the stacked v4-* interface.
|
|
||||||
//
|
|
||||||
// Additionally for ingress all packets bound for the clat IPv6 address are dropped
|
|
||||||
// in ip6tables raw prerouting and thus even non-offloaded packets are only
|
|
||||||
// accounted for on the stacked interface.
|
|
||||||
//
|
|
||||||
// For egress, packets subject to eBPF offload never appear on the base interface
|
|
||||||
// and only appear on the stacked interface. Thus to ensure packets increment
|
|
||||||
// interface stats, we must collate data from stacked interfaces. For xt_qtaguid
|
|
||||||
// (or non eBPF offloaded) TX they would appear on both, however egress interface
|
|
||||||
// accounting is explicitly bypassed for traffic from the clat uid.
|
|
||||||
//
|
|
||||||
final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks();
|
|
||||||
for (LinkProperties stackedLink : stackedLinks) {
|
|
||||||
final String stackedIface = stackedLink.getInterfaceName();
|
|
||||||
if (stackedIface != null) {
|
|
||||||
findOrCreateNetworkIdentitySet(mActiveIfaces, stackedIface).add(ident);
|
|
||||||
findOrCreateNetworkIdentitySet(mActiveUidIfaces, stackedIface).add(ident);
|
|
||||||
if (isMobile) {
|
|
||||||
mobileIfaces.add(stackedIface);
|
|
||||||
}
|
|
||||||
|
|
||||||
mStatsFactory.noteStackedIface(stackedIface, baseIface);
|
// Traffic occurring on stacked interfaces is usually clatd.
|
||||||
|
//
|
||||||
|
// UID stats are always counted on the stacked interface and never on the base
|
||||||
|
// interface, because the packets on the base interface do not actually match
|
||||||
|
// application sockets (they're not IPv4) and thus the app uid is not known.
|
||||||
|
// For receive this is obvious: packets must be translated from IPv6 to IPv4
|
||||||
|
// before the application socket can be found.
|
||||||
|
// For transmit: either they go through the clat daemon which by virtue of going
|
||||||
|
// through userspace strips the original socket association during the IPv4 to
|
||||||
|
// IPv6 translation process, or they are offloaded by eBPF, which doesn't:
|
||||||
|
// However, on an ebpf device the accounting is done in cgroup ebpf hooks,
|
||||||
|
// which don't trigger again post ebpf translation.
|
||||||
|
// (as such stats accounted to the clat uid are ignored)
|
||||||
|
//
|
||||||
|
// Interface stats are more complicated.
|
||||||
|
//
|
||||||
|
// eBPF offloaded 464xlat'ed packets never hit base interface ip6tables, and thus
|
||||||
|
// *all* statistics are collected by iptables on the stacked v4-* interface.
|
||||||
|
//
|
||||||
|
// Additionally for ingress all packets bound for the clat IPv6 address are dropped
|
||||||
|
// in ip6tables raw prerouting and thus even non-offloaded packets are only
|
||||||
|
// accounted for on the stacked interface.
|
||||||
|
//
|
||||||
|
// For egress, packets subject to eBPF offload never appear on the base interface
|
||||||
|
// and only appear on the stacked interface. Thus to ensure packets increment
|
||||||
|
// interface stats, we must collate data from stacked interfaces. For xt_qtaguid
|
||||||
|
// (or non eBPF offloaded) TX they would appear on both, however egress interface
|
||||||
|
// accounting is explicitly bypassed for traffic from the clat uid.
|
||||||
|
//
|
||||||
|
final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks();
|
||||||
|
for (LinkProperties stackedLink : stackedLinks) {
|
||||||
|
final String stackedIface = stackedLink.getInterfaceName();
|
||||||
|
if (stackedIface != null) {
|
||||||
|
findOrCreateNetworkIdentitySet(mActiveIfaces, stackedIface).add(ident);
|
||||||
|
findOrCreateNetworkIdentitySet(mActiveUidIfaces, stackedIface).add(ident);
|
||||||
|
if (isMobile) {
|
||||||
|
mobileIfaces.add(stackedIface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mStatsFactory.noteStackedIface(stackedIface, baseIface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,13 @@ package com.android.server.net;
|
|||||||
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
|
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
|
||||||
import static android.Manifest.permission.NETWORK_STACK;
|
import static android.Manifest.permission.NETWORK_STACK;
|
||||||
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
|
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED;
|
import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED;
|
||||||
import static android.net.INetd.FIREWALL_RULE_ALLOW;
|
import static android.net.INetd.FIREWALL_RULE_ALLOW;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
|
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||||
import static android.net.NetworkPolicy.LIMIT_DISABLED;
|
import static android.net.NetworkPolicy.LIMIT_DISABLED;
|
||||||
import static android.net.NetworkPolicy.SNOOZE_NEVER;
|
import static android.net.NetworkPolicy.SNOOZE_NEVER;
|
||||||
import static android.net.NetworkPolicy.WARNING_DISABLED;
|
import static android.net.NetworkPolicy.WARNING_DISABLED;
|
||||||
@@ -112,8 +114,6 @@ import android.net.INetworkPolicyListener;
|
|||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.net.NetworkInfo.DetailedState;
|
|
||||||
import android.net.NetworkPolicy;
|
import android.net.NetworkPolicy;
|
||||||
import android.net.NetworkPolicyManager;
|
import android.net.NetworkPolicyManager;
|
||||||
import android.net.NetworkState;
|
import android.net.NetworkState;
|
||||||
@@ -1985,13 +1985,6 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
return users;
|
return users;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkInfo buildNetworkInfo() {
|
|
||||||
final NetworkInfo ni = new NetworkInfo(ConnectivityManager.TYPE_MOBILE,
|
|
||||||
TelephonyManager.NETWORK_TYPE_LTE, null, null);
|
|
||||||
ni.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
|
|
||||||
return ni;
|
|
||||||
}
|
|
||||||
|
|
||||||
private LinkProperties buildLinkProperties(String iface) {
|
private LinkProperties buildLinkProperties(String iface) {
|
||||||
final LinkProperties lp = new LinkProperties();
|
final LinkProperties lp = new LinkProperties();
|
||||||
lp.setInterfaceName(iface);
|
lp.setInterfaceName(iface);
|
||||||
@@ -2045,13 +2038,12 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildWifi() {
|
private static NetworkState buildWifi() {
|
||||||
final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null);
|
|
||||||
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(TEST_IFACE);
|
prop.setInterfaceName(TEST_IFACE);
|
||||||
final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
|
final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
|
||||||
|
networkCapabilities.addTransportType(TRANSPORT_WIFI);
|
||||||
networkCapabilities.setSSID(TEST_SSID);
|
networkCapabilities.setSSID(TEST_SSID);
|
||||||
return new NetworkState(info, prop, networkCapabilities, null, null, TEST_SSID);
|
return new NetworkState(TYPE_WIFI, prop, networkCapabilities, null, null, TEST_SSID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expectHasInternetPermission(int uid, boolean hasIt) throws Exception {
|
private void expectHasInternetPermission(int uid, boolean hasIt) throws Exception {
|
||||||
@@ -2072,7 +2064,7 @@ public class NetworkPolicyManagerServiceTest {
|
|||||||
when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID)))
|
when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID)))
|
||||||
.thenReturn(mCarrierConfig);
|
.thenReturn(mCarrierConfig);
|
||||||
when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[] {
|
when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[] {
|
||||||
new NetworkState(buildNetworkInfo(),
|
new NetworkState(TYPE_MOBILE,
|
||||||
buildLinkProperties(TEST_IFACE),
|
buildLinkProperties(TEST_IFACE),
|
||||||
buildNetworkCapabilities(TEST_SUB_ID, roaming),
|
buildNetworkCapabilities(TEST_SUB_ID, roaming),
|
||||||
new Network(TEST_NET_ID), TEST_IMSI, null)
|
new Network(TEST_NET_ID), TEST_IMSI, null)
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import org.junit.Before
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.junit.runners.JUnit4
|
import org.junit.runners.JUnit4
|
||||||
import org.mockito.Mockito.doReturn
|
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import kotlin.test.assertFalse
|
import kotlin.test.assertFalse
|
||||||
@@ -60,16 +59,13 @@ class NetworkTemplateTest {
|
|||||||
subscriberId: String? = null,
|
subscriberId: String? = null,
|
||||||
ssid: String? = null
|
ssid: String? = null
|
||||||
): NetworkState {
|
): NetworkState {
|
||||||
val info = mock(NetworkInfo::class.java)
|
|
||||||
doReturn(type).`when`(info).type
|
|
||||||
doReturn(NetworkInfo.State.CONNECTED).`when`(info).state
|
|
||||||
val lp = LinkProperties()
|
val lp = LinkProperties()
|
||||||
val caps = NetworkCapabilities().apply {
|
val caps = NetworkCapabilities().apply {
|
||||||
setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false)
|
setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false)
|
||||||
setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true)
|
setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true)
|
||||||
setSSID(ssid)
|
setSSID(ssid)
|
||||||
}
|
}
|
||||||
return NetworkState(info, lp, caps, mock(Network::class.java), subscriberId, ssid)
|
return NetworkState(type, lp, caps, mock(Network::class.java), subscriberId, ssid)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun NetworkTemplate.assertMatches(ident: NetworkIdentity) =
|
private fun NetworkTemplate.assertMatches(ident: NetworkIdentity) =
|
||||||
|
|||||||
@@ -80,8 +80,6 @@ import android.net.INetworkStatsSession;
|
|||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.net.NetworkInfo.DetailedState;
|
|
||||||
import android.net.NetworkState;
|
import android.net.NetworkState;
|
||||||
import android.net.NetworkStats;
|
import android.net.NetworkStats;
|
||||||
import android.net.NetworkStatsHistory;
|
import android.net.NetworkStatsHistory;
|
||||||
@@ -1456,8 +1454,6 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildWifiState(boolean isMetered, @NonNull String iface) {
|
private static NetworkState buildWifiState(boolean isMetered, @NonNull String iface) {
|
||||||
final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null);
|
|
||||||
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(iface);
|
prop.setInterfaceName(iface);
|
||||||
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
||||||
@@ -1465,7 +1461,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
|
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
|
||||||
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
||||||
capabilities.setSSID(TEST_SSID);
|
capabilities.setSSID(TEST_SSID);
|
||||||
return new NetworkState(info, prop, capabilities, WIFI_NETWORK, null, TEST_SSID);
|
return new NetworkState(TYPE_WIFI, prop, capabilities, WIFI_NETWORK, null, TEST_SSID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildMobile3gState(String subscriberId) {
|
private static NetworkState buildMobile3gState(String subscriberId) {
|
||||||
@@ -1473,17 +1469,14 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildMobile3gState(String subscriberId, boolean isRoaming) {
|
private static NetworkState buildMobile3gState(String subscriberId, boolean isRoaming) {
|
||||||
final NetworkInfo info = new NetworkInfo(
|
|
||||||
TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UMTS, null, null);
|
|
||||||
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
|
||||||
info.setRoaming(isRoaming);
|
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(TEST_IFACE);
|
prop.setInterfaceName(TEST_IFACE);
|
||||||
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
||||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false);
|
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false);
|
||||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !isRoaming);
|
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !isRoaming);
|
||||||
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
|
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
|
||||||
return new NetworkState(info, prop, capabilities, MOBILE_NETWORK, subscriberId, null);
|
return new NetworkState(
|
||||||
|
TYPE_MOBILE, prop, capabilities, MOBILE_NETWORK, subscriberId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkStats buildEmptyStats() {
|
private NetworkStats buildEmptyStats() {
|
||||||
@@ -1491,11 +1484,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildVpnState() {
|
private static NetworkState buildVpnState() {
|
||||||
final NetworkInfo info = new NetworkInfo(TYPE_VPN, 0, null, null);
|
|
||||||
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(TUN_IFACE);
|
prop.setInterfaceName(TUN_IFACE);
|
||||||
return new NetworkState(info, prop, new NetworkCapabilities(), VPN_NETWORK, null, null);
|
return new NetworkState(TYPE_VPN, prop, new NetworkCapabilities(), VPN_NETWORK, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getElapsedRealtime() {
|
private long getElapsedRealtime() {
|
||||||
|
|||||||
Reference in New Issue
Block a user