Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d3144c9 authored by Aaron Huang's avatar Aaron Huang Committed by Android (Google) Code Review
Browse files

Merge "Add getters to NetworkStateSnapshot" into sc-dev

parents 48cf9cdf d78c60c1
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -194,13 +194,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 {
+6 −6
Original line number Diff line number Diff line
@@ -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();
+61 −31
Original line number Diff line number Diff line
@@ -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
                + '}';
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -2194,11 +2194,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()]);
+9 −9
Original line number Diff line number Diff line
@@ -1942,7 +1942,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());
    }

    /**
@@ -2023,7 +2023,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
@@ -2111,7 +2111,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--) {
@@ -2147,14 +2147,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) {
@@ -2172,7 +2172,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
@@ -5807,8 +5807,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();
            }
Loading