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

Commit 31f67ee1 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Merge "Print human-readable OEM managed states" am: c4099ac0 am:...

Merge "Merge "Print human-readable OEM managed states" am: c4099ac0 am: c589d4e2" into sc-dev-plus-aosp am: b7467f29

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1636561

Change-Id: I40e0ae1c0499a46b6d8b5570677a3eb285ae421b
parents cde63f3a b7467f29
Loading
Loading
Loading
Loading
+30 −2
Original line number Diff line number Diff line
@@ -26,8 +26,10 @@ import android.service.NetworkIdentityProto;
import android.telephony.Annotation.NetworkType;
import android.util.proto.ProtoOutputStream;

import com.android.net.module.util.NetworkCapabilitiesUtils;
import com.android.net.module.util.NetworkIdentityUtils;

import java.util.ArrayList;
import java.util.Objects;

/**
@@ -121,11 +123,37 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
        }
        builder.append(", metered=").append(mMetered);
        builder.append(", defaultNetwork=").append(mDefaultNetwork);
        // TODO(180557699): Print a human readable string for OEM managed state.
        builder.append(", oemManaged=").append(mOemManaged);
        builder.append(", oemManaged=").append(getOemManagedNames(mOemManaged));
        return builder.append("}").toString();
    }

    /**
     * Get the human readable representation of a bitfield representing the OEM managed state of a
     * network.
     */
    static String getOemManagedNames(int oemManaged) {
        if (oemManaged == OEM_NONE) {
            return "OEM_NONE";
        }
        final int[] bitPositions = NetworkCapabilitiesUtils.unpackBits(oemManaged);
        final ArrayList<String> oemManagedNames = new ArrayList<String>();
        for (int position : bitPositions) {
            oemManagedNames.add(nameOfOemManaged(1 << position));
        }
        return String.join(",", oemManagedNames);
    }

    private static String nameOfOemManaged(int oemManagedBit) {
        switch (oemManagedBit) {
            case OEM_PAID:
                return "OEM_PAID";
            case OEM_PRIVATE:
                return "OEM_PRIVATE";
            default:
                return "Invalid(" + oemManagedBit + ")";
        }
    }

    public void dumpDebug(ProtoOutputStream proto, long tag) {
        final long start = proto.start(tag);

+14 −1
Original line number Diff line number Diff line
@@ -427,7 +427,7 @@ public class NetworkTemplate implements Parcelable {
            builder.append(", subType=").append(mSubType);
        }
        if (mOemManaged != OEM_MANAGED_ALL) {
            builder.append(", oemManaged=").append(mOemManaged);
            builder.append(", oemManaged=").append(getOemManagedNames(mOemManaged));
        }
        builder.append(", subscriberIdMatchRule=")
                .append(subscriberIdMatchRuleToString(mSubscriberIdMatchRule));
@@ -777,6 +777,19 @@ public class NetworkTemplate implements Parcelable {
        }
    }

    private static String getOemManagedNames(int oemManaged) {
        switch (oemManaged) {
            case OEM_MANAGED_ALL:
                return "OEM_MANAGED_ALL";
            case OEM_MANAGED_NO:
                return "OEM_MANAGED_NO";
            case OEM_MANAGED_YES:
                return "OEM_MANAGED_YES";
            default:
                return NetworkIdentity.getOemManagedNames(oemManaged);
        }
    }

    /**
     * Examine the given template and normalize if it refers to a "merged"
     * mobile subscriber. We pick the "lowest" merged subscriber as the primary