summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2021-04-29 09:39:19 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-04-29 09:39:19 +0000
commit289a438f06d862098ea288d92d22b3fd97d61572 (patch)
tree33e19ead88545071213fd28a6548cda2aa1731d3
parentb2551d4cc9b0884c2393fd966358d4a74acb9e20 (diff)
parent2f83b6a72d2b5fc6a4b1d31bb038c91ba211dbdc (diff)
Merge "Add getters to NetworkStateSnapshot" am: 2f83b6a72d
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1684649 Change-Id: I3263514a5d75141c81e5f9d7389603ed369e95df
-rw-r--r--core/api/module-lib-current.txt10
-rw-r--r--core/java/android/net/NetworkIdentity.java12
-rw-r--r--core/java/android/net/NetworkStateSnapshot.java92
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java6
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java18
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java21
-rw-r--r--tests/net/java/com/android/server/net/NetworkStatsServiceTest.java6
7 files changed, 97 insertions, 68 deletions
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 7069e7141a22..848f480c79a1 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -59,13 +59,13 @@ package android.net {
public final class NetworkStateSnapshot implements android.os.Parcelable {
ctor public NetworkStateSnapshot(@NonNull android.net.Network, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, @Nullable String, int);
method public int describeContents();
+ method public int getLegacyType();
+ method @NonNull public android.net.LinkProperties getLinkProperties();
+ method @NonNull public android.net.Network getNetwork();
+ method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
+ method @Nullable public String getSubscriberId();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStateSnapshot> CREATOR;
- field public final int legacyType;
- field @NonNull public final android.net.LinkProperties linkProperties;
- field @NonNull public final android.net.Network network;
- field @NonNull public final android.net.NetworkCapabilities networkCapabilities;
- field @Nullable public final String subscriberId;
}
public class NetworkWatchlistManager {
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index 1eef7d9a5337..3bde6fa6913d 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -186,19 +186,19 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
*/
public static NetworkIdentity buildNetworkIdentity(Context context,
NetworkStateSnapshot snapshot, boolean defaultNetwork, @NetworkType int subType) {
- final int legacyType = snapshot.legacyType;
+ final int legacyType = snapshot.getLegacyType();
- final String subscriberId = snapshot.subscriberId;
+ final String subscriberId = snapshot.getSubscriberId();
String networkId = null;
- boolean roaming = !snapshot.networkCapabilities.hasCapability(
+ boolean roaming = !snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
- boolean metered = !snapshot.networkCapabilities.hasCapability(
+ boolean metered = !snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
- final int oemManaged = getOemBitfield(snapshot.networkCapabilities);
+ final int oemManaged = getOemBitfield(snapshot.getNetworkCapabilities());
if (legacyType == TYPE_WIFI) {
- networkId = snapshot.networkCapabilities.getSsid();
+ networkId = snapshot.getNetworkCapabilities().getSsid();
if (networkId == null) {
final WifiManager wifi = context.getSystemService(WifiManager.class);
final WifiInfo info = wifi.getConnectionInfo();
diff --git a/core/java/android/net/NetworkStateSnapshot.java b/core/java/android/net/NetworkStateSnapshot.java
index 0d26c2de8698..9df861a6ffdc 100644
--- a/core/java/android/net/NetworkStateSnapshot.java
+++ b/core/java/android/net/NetworkStateSnapshot.java
@@ -37,47 +37,76 @@ import java.util.Objects;
public final class NetworkStateSnapshot implements Parcelable {
/** The network associated with this snapshot. */
@NonNull
- public final Network network;
+ private final Network mNetwork;
/** The {@link NetworkCapabilities} of the network associated with this snapshot. */
@NonNull
- public final NetworkCapabilities networkCapabilities;
+ private final NetworkCapabilities mNetworkCapabilities;
/** The {@link LinkProperties} of the network associated with this snapshot. */
@NonNull
- public final LinkProperties linkProperties;
+ private final LinkProperties mLinkProperties;
/**
* The Subscriber Id of the network associated with this snapshot. See
* {@link android.telephony.TelephonyManager#getSubscriberId()}.
*/
@Nullable
- public final String subscriberId;
+ private final String mSubscriberId;
/**
* The legacy type of the network associated with this snapshot. See
* {@code ConnectivityManager#TYPE_*}.
*/
- public final int legacyType;
+ private final int mLegacyType;
public NetworkStateSnapshot(@NonNull Network network,
@NonNull NetworkCapabilities networkCapabilities,
@NonNull LinkProperties linkProperties,
@Nullable String subscriberId, int legacyType) {
- this.network = Objects.requireNonNull(network);
- this.networkCapabilities = Objects.requireNonNull(networkCapabilities);
- this.linkProperties = Objects.requireNonNull(linkProperties);
- this.subscriberId = subscriberId;
- this.legacyType = legacyType;
+ mNetwork = Objects.requireNonNull(network);
+ mNetworkCapabilities = Objects.requireNonNull(networkCapabilities);
+ mLinkProperties = Objects.requireNonNull(linkProperties);
+ mSubscriberId = subscriberId;
+ mLegacyType = legacyType;
}
/** @hide */
public NetworkStateSnapshot(@NonNull Parcel in) {
- network = in.readParcelable(null);
- networkCapabilities = in.readParcelable(null);
- linkProperties = in.readParcelable(null);
- subscriberId = in.readString();
- legacyType = in.readInt();
+ mNetwork = in.readParcelable(null);
+ mNetworkCapabilities = in.readParcelable(null);
+ mLinkProperties = in.readParcelable(null);
+ mSubscriberId = in.readString();
+ mLegacyType = in.readInt();
+ }
+
+ /** Get the network associated with this snapshot */
+ @NonNull
+ public Network getNetwork() {
+ return mNetwork;
+ }
+
+ /** Get {@link NetworkCapabilities} of the network associated with this snapshot. */
+ @NonNull
+ public NetworkCapabilities getNetworkCapabilities() {
+ return mNetworkCapabilities;
+ }
+
+ /** Get the {@link LinkProperties} of the network associated with this snapshot. */
+ @NonNull
+ public LinkProperties getLinkProperties() {
+ return mLinkProperties;
+ }
+
+ /** Get the Subscriber Id of the network associated with this snapshot. */
+ @Nullable
+ public String getSubscriberId() {
+ return mSubscriberId;
+ }
+
+ /** Get the legacy type of the network associated with this snapshot. */
+ public int getLegacyType() {
+ return mLegacyType;
}
@Override
@@ -87,11 +116,11 @@ public final class NetworkStateSnapshot implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel out, int flags) {
- out.writeParcelable(network, flags);
- out.writeParcelable(networkCapabilities, flags);
- out.writeParcelable(linkProperties, flags);
- out.writeString(subscriberId);
- out.writeInt(legacyType);
+ out.writeParcelable(mNetwork, flags);
+ out.writeParcelable(mNetworkCapabilities, flags);
+ out.writeParcelable(mLinkProperties, flags);
+ out.writeString(mSubscriberId);
+ out.writeInt(mLegacyType);
}
@NonNull
@@ -115,26 +144,27 @@ public final class NetworkStateSnapshot implements Parcelable {
if (this == o) return true;
if (!(o instanceof NetworkStateSnapshot)) return false;
NetworkStateSnapshot that = (NetworkStateSnapshot) o;
- return legacyType == that.legacyType
- && Objects.equals(network, that.network)
- && Objects.equals(networkCapabilities, that.networkCapabilities)
- && Objects.equals(linkProperties, that.linkProperties)
- && Objects.equals(subscriberId, that.subscriberId);
+ return mLegacyType == that.mLegacyType
+ && Objects.equals(mNetwork, that.mNetwork)
+ && Objects.equals(mNetworkCapabilities, that.mNetworkCapabilities)
+ && Objects.equals(mLinkProperties, that.mLinkProperties)
+ && Objects.equals(mSubscriberId, that.mSubscriberId);
}
@Override
public int hashCode() {
- return Objects.hash(network, networkCapabilities, linkProperties, subscriberId, legacyType);
+ return Objects.hash(mNetwork,
+ mNetworkCapabilities, mLinkProperties, mSubscriberId, mLegacyType);
}
@Override
public String toString() {
return "NetworkStateSnapshot{"
- + "network=" + network
- + ", networkCapabilities=" + networkCapabilities
- + ", linkProperties=" + linkProperties
- + ", subscriberId='" + NetworkIdentityUtils.scrubSubscriberId(subscriberId) + '\''
- + ", legacyType=" + legacyType
+ + "network=" + mNetwork
+ + ", networkCapabilities=" + mNetworkCapabilities
+ + ", linkProperties=" + mLinkProperties
+ + ", subscriberId='" + NetworkIdentityUtils.scrubSubscriberId(mSubscriberId) + '\''
+ + ", legacyType=" + mLegacyType
+ '}';
}
}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 4cba44eaab44..a81860d43cc9 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -2179,11 +2179,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
for (NetworkStateSnapshot snapshot : getAllNetworkStateSnapshots()) {
// NetworkStateSnapshot doesn't contain NetworkInfo, so need to fetch it from the
// NetworkAgentInfo.
- final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(snapshot.network);
+ final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(snapshot.getNetwork());
if (nai != null && nai.networkInfo.isConnected()) {
result.add(new NetworkState(new NetworkInfo(nai.networkInfo),
- snapshot.linkProperties, snapshot.networkCapabilities, snapshot.network,
- snapshot.subscriberId));
+ snapshot.getLinkProperties(), snapshot.getNetworkCapabilities(),
+ snapshot.getNetwork(), snapshot.getSubscriberId()));
}
}
return result.toArray(new NetworkState[result.size()]);
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 03fdf6cdc69e..d0da91207a47 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1921,7 +1921,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
* Collect all ifaces from a {@link NetworkStateSnapshot} into the given set.
*/
private static void collectIfaces(ArraySet<String> ifaces, NetworkStateSnapshot snapshot) {
- ifaces.addAll(snapshot.linkProperties.getAllInterfaceNames());
+ ifaces.addAll(snapshot.getLinkProperties().getAllInterfaceNames());
}
/**
@@ -2002,7 +2002,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
mNetIdToSubId.clear();
final ArrayMap<NetworkStateSnapshot, NetworkIdentity> identified = new ArrayMap<>();
for (final NetworkStateSnapshot snapshot : snapshots) {
- mNetIdToSubId.put(snapshot.network.getNetId(), parseSubId(snapshot));
+ mNetIdToSubId.put(snapshot.getNetwork().getNetId(), parseSubId(snapshot));
// 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
@@ -2090,7 +2090,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// One final pass to catch any metered ifaces that don't have explicitly
// defined policies; typically Wi-Fi networks.
for (final NetworkStateSnapshot snapshot : snapshots) {
- if (!snapshot.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
+ if (!snapshot.getNetworkCapabilities().hasCapability(NET_CAPABILITY_NOT_METERED)) {
matchingIfaces.clear();
collectIfaces(matchingIfaces, snapshot);
for (int j = matchingIfaces.size() - 1; j >= 0; j--) {
@@ -2126,14 +2126,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
mSubscriptionOpportunisticQuota.clear();
for (final NetworkStateSnapshot snapshot : snapshots) {
if (!quotaEnabled) continue;
- if (snapshot.network == null) continue;
- final int subId = getSubIdLocked(snapshot.network);
+ if (snapshot.getNetwork() == null) continue;
+ final int subId = getSubIdLocked(snapshot.getNetwork());
final SubscriptionPlan plan = getPrimarySubscriptionPlanLocked(subId);
if (plan == null) continue;
final long quotaBytes;
final long limitBytes = plan.getDataLimitBytes();
- if (!snapshot.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)) {
+ if (!snapshot.getNetworkCapabilities().hasCapability(NET_CAPABILITY_NOT_ROAMING)) {
// Clamp to 0 when roaming
quotaBytes = 0;
} else if (limitBytes == SubscriptionPlan.BYTES_UNKNOWN) {
@@ -2151,7 +2151,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
.truncatedTo(ChronoUnit.DAYS)
.toInstant().toEpochMilli();
final long totalBytes = getTotalBytes(
- NetworkTemplate.buildTemplateMobileAll(snapshot.subscriberId),
+ NetworkTemplate.buildTemplateMobileAll(snapshot.getSubscriberId()),
start, startOfDay);
final long remainingBytes = limitBytes - totalBytes;
// Number of remaining days including current day
@@ -5770,8 +5770,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private int parseSubId(@NonNull NetworkStateSnapshot snapshot) {
int subId = INVALID_SUBSCRIPTION_ID;
- if (snapshot.networkCapabilities.hasTransport(TRANSPORT_CELLULAR)) {
- NetworkSpecifier spec = snapshot.networkCapabilities.getNetworkSpecifier();
+ if (snapshot.getNetworkCapabilities().hasTransport(TRANSPORT_CELLULAR)) {
+ NetworkSpecifier spec = snapshot.getNetworkCapabilities().getNetworkSpecifier();
if (spec instanceof TelephonyNetworkSpecifier) {
subId = ((TelephonyNetworkSpecifier) spec).getSubscriptionId();
}
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 19f5e3cd5dfa..3c14440c6467 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -24,7 +24,6 @@ import static android.content.Intent.ACTION_UID_REMOVED;
import static android.content.Intent.ACTION_USER_REMOVED;
import static android.content.Intent.EXTRA_UID;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkIdentity.SUBTYPE_COMBINED;
import static android.net.NetworkStack.checkNetworkStackPermission;
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
@@ -97,12 +96,12 @@ import android.net.INetworkStatsSession;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
+import android.net.NetworkSpecifier;
import android.net.NetworkStack;
import android.net.NetworkStateSnapshot;
import android.net.NetworkStats;
import android.net.NetworkStats.NonMonotonicObserver;
import android.net.NetworkStatsHistory;
-import android.net.NetworkSpecifier;
import android.net.NetworkTemplate;
import android.net.TelephonyNetworkSpecifier;
import android.net.TrafficStats;
@@ -1296,9 +1295,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
final ArraySet<String> mobileIfaces = new ArraySet<>();
for (NetworkStateSnapshot snapshot : snapshots) {
final int displayTransport =
- getDisplayTransport(snapshot.networkCapabilities.getTransportTypes());
+ getDisplayTransport(snapshot.getNetworkCapabilities().getTransportTypes());
final boolean isMobile = (NetworkCapabilities.TRANSPORT_CELLULAR == displayTransport);
- final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, snapshot.network);
+ final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, snapshot.getNetwork());
final int subType = combineSubtypeEnabled ? SUBTYPE_COMBINED
: getSubTypeForStateSnapshot(snapshot);
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, snapshot,
@@ -1306,7 +1305,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
// Traffic occurring on the base interface is always counted for
// both total usage and UID details.
- final String baseIface = snapshot.linkProperties.getInterfaceName();
+ final String baseIface = snapshot.getLinkProperties().getInterfaceName();
if (baseIface != null) {
findOrCreateNetworkIdentitySet(mActiveIfaces, baseIface).add(ident);
findOrCreateNetworkIdentitySet(mActiveUidIfaces, baseIface).add(ident);
@@ -1316,7 +1315,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
// 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
// per carrier's policy, modem will report 0 usage for VT calls.
- if (snapshot.networkCapabilities.hasCapability(
+ if (snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_IMS) && !ident.getMetered()) {
// Copy the identify from IMS one but mark it as metered.
@@ -1364,7 +1363,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
// accounting is explicitly bypassed for traffic from the clat uid.
//
// TODO: This code might be combined to above code.
- for (String iface : snapshot.linkProperties.getAllInterfaceNames()) {
+ for (String iface : snapshot.getLinkProperties().getAllInterfaceNames()) {
// baseIface has been handled, so ignore it.
if (TextUtils.equals(baseIface, iface)) continue;
if (iface != null) {
@@ -1383,11 +1382,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
}
private static int getSubIdForMobile(@NonNull NetworkStateSnapshot state) {
- if (!state.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+ if (!state.getNetworkCapabilities().hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
throw new IllegalArgumentException("Mobile state need capability TRANSPORT_CELLULAR");
}
- final NetworkSpecifier spec = state.networkCapabilities.getNetworkSpecifier();
+ final NetworkSpecifier spec = state.getNetworkCapabilities().getNetworkSpecifier();
if (spec instanceof TelephonyNetworkSpecifier) {
return ((TelephonyNetworkSpecifier) spec).getSubscriptionId();
} else {
@@ -1402,11 +1401,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
* transport types do not actually fill this value.
*/
private int getSubTypeForStateSnapshot(@NonNull NetworkStateSnapshot state) {
- if (!state.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+ if (!state.getNetworkCapabilities().hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return 0;
}
- return mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(state.subscriberId);
+ return mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(state.getSubscriberId());
}
private static <K> NetworkIdentitySet findOrCreateNetworkIdentitySet(
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index d6b8e684c513..fd374bc9e68f 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -894,7 +894,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
final LinkProperties stackedProp = new LinkProperties();
stackedProp.setInterfaceName(stackedIface);
final NetworkStateSnapshot wifiState = buildWifiState();
- wifiState.linkProperties.addStackedLink(stackedProp);
+ wifiState.getLinkProperties().addStackedLink(stackedProp);
NetworkStateSnapshot[] states = new NetworkStateSnapshot[] {wifiState};
expectNetworkStatsSummary(buildEmptyStats());
@@ -1585,10 +1585,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
}
private String getActiveIface(NetworkStateSnapshot... states) throws Exception {
- if (states == null || states.length == 0 || states[0].linkProperties == null) {
+ if (states == null || states.length == 0 || states[0].getLinkProperties() == null) {
return null;
}
- return states[0].linkProperties.getInterfaceName();
+ return states[0].getLinkProperties().getInterfaceName();
}
private void expectNetworkStatsSummary(NetworkStats summary) throws Exception {