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

Commit d079e422 authored by Aaron Huang's avatar Aaron Huang Committed by Automerger Merge Worker
Browse files

Merge "Track interfaces and roaming changed event history" am: 81f7940d am:...

Merge "Track interfaces and roaming changed event history" am: 81f7940d am: e425ef87 am: d4e05e10 am: 05df8aa1

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



Change-Id: I0c71988e31ffce7eb9e912023b28d92fb66f1167
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3a1f3422 05df8aa1
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.app.ActivityManager;
import android.app.ActivityManager.ProcessCapability;
import android.net.NetworkPolicyManager;
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;

@@ -79,6 +80,8 @@ public class NetworkPolicyLogger {
    private static final int EVENT_APP_IDLE_WL_CHANGED = 14;
    private static final int EVENT_METERED_ALLOWLIST_CHANGED = 15;
    private static final int EVENT_METERED_DENYLIST_CHANGED = 16;
    private static final int EVENT_ROAMING_CHANGED = 17;
    private static final int EVENT_INTERFACES_CHANGED = 18;

    private final LogBuffer mNetworkBlockedBuffer = new LogBuffer(MAX_NETWORK_BLOCKED_LOG_SIZE);
    private final LogBuffer mUidStateChangeBuffer = new LogBuffer(MAX_LOG_SIZE);
@@ -265,6 +268,24 @@ public class NetworkPolicyLogger {
        }
    }

    void roamingChanged(int netId, boolean newRoaming) {
        synchronized (mLock) {
            if (LOGD || mDebugUid != INVALID_UID) {
                Slog.d(TAG, getRoamingChangedLog(netId, newRoaming));
            }
            mEventsBuffer.roamingChanged(netId, newRoaming);
        }
    }

    void interfacesChanged(int netId, ArraySet<String> newIfaces) {
        synchronized (mLock) {
            if (LOGD || mDebugUid != INVALID_UID) {
                Slog.d(TAG, getInterfacesChangedLog(netId, newIfaces.toString()));
            }
            mEventsBuffer.interfacesChanged(netId, newIfaces.toString());
        }
    }

    void setDebugUid(int uid) {
        mDebugUid = uid;
    }
@@ -348,6 +369,14 @@ public class NetworkPolicyLogger {
        return "metered-denylist for " + uid + " changed to " + added;
    }

    private static String getRoamingChangedLog(int netId, boolean newRoaming) {
        return "Roaming of netId=" + netId + " changed to " + newRoaming;
    }

    private static String getInterfacesChangedLog(int netId, String newIfaces) {
        return "Interfaces of netId=" + netId + " changed to " + newIfaces;
    }

    private static String getFirewallChainName(int chain) {
        switch (chain) {
            case FIREWALL_CHAIN_DOZABLE:
@@ -570,6 +599,28 @@ public class NetworkPolicyLogger {
            data.timeStamp = System.currentTimeMillis();
        }

        public void roamingChanged(int netId, boolean newRoaming) {
            final Data data = getNextSlot();
            if (data == null) return;

            data.reset();
            data.type = EVENT_ROAMING_CHANGED;
            data.ifield1 = netId;
            data.bfield1 = newRoaming;
            data.timeStamp = System.currentTimeMillis();
        }

        public void interfacesChanged(int netId, String newIfaces) {
            final Data data = getNextSlot();
            if (data == null) return;

            data.reset();
            data.type = EVENT_INTERFACES_CHANGED;
            data.ifield1 = netId;
            data.sfield1 = newIfaces;
            data.timeStamp = System.currentTimeMillis();
        }

        public void reverseDump(IndentingPrintWriter pw) {
            final Data[] allData = toArray();
            for (int i = allData.length - 1; i >= 0; --i) {
@@ -621,6 +672,10 @@ public class NetworkPolicyLogger {
                    return getMeteredAllowlistChangedLog(data.ifield1, data.bfield1);
                case EVENT_METERED_DENYLIST_CHANGED:
                    return getMeteredDenylistChangedLog(data.ifield1, data.bfield1);
                case EVENT_ROAMING_CHANGED:
                    return getRoamingChangedLog(data.ifield1, data.bfield1);
                case EVENT_INTERFACES_CHANGED:
                    return getInterfacesChangedLog(data.ifield1, data.sfield1);
                default:
                    return String.valueOf(data.type);
            }
+11 −1
Original line number Diff line number Diff line
@@ -1367,8 +1367,17 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                final boolean roamingChanged = updateCapabilityChange(
                        mNetworkRoaming, newRoaming, network);

                if (meteredChanged || roamingChanged) {
                final boolean shouldUpdateNetworkRules = meteredChanged || roamingChanged;

                if (meteredChanged) {
                    mLogger.meterednessChanged(network.getNetId(), newMetered);
                }

                if (roamingChanged) {
                    mLogger.roamingChanged(network.getNetId(), newRoaming);
                }

                if (shouldUpdateNetworkRules) {
                    updateNetworkRulesNL();
                }
            }
@@ -1381,6 +1390,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                final boolean ifacesChanged = updateNetworkToIfacesNL(network.getNetId(),
                        newIfaces);
                if (ifacesChanged) {
                    mLogger.interfacesChanged(network.getNetId(), newIfaces);
                    updateNetworkRulesNL();
                }
            }