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

Commit f66050e6 authored by Aaron Huang's avatar Aaron Huang Committed by Gerrit Code Review
Browse files

Merge "Have NetworkStats implements iterable"

parents f276eba8 1f7ddfed
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -7523,11 +7523,12 @@ package android.net {
    field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
  }
  public final class NetworkStats implements android.os.Parcelable {
  public final class NetworkStats implements java.lang.Iterable<android.net.NetworkStats.Entry> android.os.Parcelable {
    ctor public NetworkStats(long, int);
    method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
    method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
    method public int describeContents();
    method @NonNull public java.util.Iterator<android.net.NetworkStats.Entry> iterator();
    method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
+31 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -57,7 +58,7 @@ import java.util.function.Predicate;
 */
// @NotThreadSafe
@SystemApi
public final class NetworkStats implements Parcelable {
public final class NetworkStats implements Parcelable, Iterable<NetworkStats.Entry> {
    private static final String TAG = "NetworkStats";

    /**
@@ -677,6 +678,35 @@ public final class NetworkStats implements Parcelable {
        operations[i] = entry.operations;
    }

    /**
     * Iterate over Entry objects.
     *
     * Return an iterator of this object that will iterate through all contained Entry objects.
     *
     * This iterator does not support concurrent modification and makes no guarantee of fail-fast
     * behavior. If any method that can mutate the contents of this object is called while
     * iteration is in progress, either inside the loop or in another thread, then behavior is
     * undefined.
     * The remove() method is not implemented and will throw UnsupportedOperationException.
     * @hide
     */
    @SystemApi
    @NonNull public Iterator<Entry> iterator() {
        return new Iterator<Entry>() {
            int mIndex = 0;

            @Override
            public boolean hasNext() {
                return mIndex < size;
            }

            @Override
            public Entry next() {
                return getValues(mIndex++, null);
            }
        };
    }

    /**
     * Return specific stats entry.
     * @hide