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

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

Change-Id: I1a2df03a2407f67e6243dcb6b4fd6b6e1fbee91c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Aaron Huang
2022-07-27 02:40:46 +00:00
committed by Automerger Merge Worker
2 changed files with 66 additions and 1 deletions

View File

@@ -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);
}

View File

@@ -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();
}
}