Refactor updating rules for all apps in NetworkPolicyManagerService am: e944af5bd6

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib1bf72d746a418d7310eb59a8039221fd56988c2
This commit is contained in:
Patrick Rohr
2021-01-12 20:14:27 +00:00
committed by Automerger Merge Worker

View File

@@ -271,6 +271,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.function.IntConsumer;
/**
* Service that maintains low-level network policy rules, using
@@ -4051,7 +4052,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
try {
updateRulesForDeviceIdleUL();
updateRulesForPowerSaveUL();
updateRulesForAllAppsUL(TYPE_RESTRICT_POWER);
forEachUid("updateRulesForRestrictPower",
uid -> updateRulesForPowerRestrictionsUL(uid));
} finally {
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
}
@@ -4061,31 +4063,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private void updateRulesForRestrictBackgroundUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL");
try {
updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND);
forEachUid("updateRulesForRestrictBackground",
uid -> updateRulesForDataUsageRestrictionsUL(uid));
} finally {
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
}
}
private static final int TYPE_RESTRICT_BACKGROUND = 1;
private static final int TYPE_RESTRICT_POWER = 2;
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag = false, value = {
TYPE_RESTRICT_BACKGROUND,
TYPE_RESTRICT_POWER,
})
public @interface RestrictType {
}
// TODO: refactor / consolidate all those updateXyz methods, there are way too many of them...
@GuardedBy("mUidRulesFirstLock")
private void updateRulesForAllAppsUL(@RestrictType int type) {
private void forEachUid(String tag, IntConsumer consumer) {
if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type);
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "forEachUid-" + tag);
}
try {
// update rules for all installed applications
final PackageManager pm = mContext.getPackageManager();
final List<UserInfo> users;
final List<ApplicationInfo> apps;
@@ -4113,16 +4103,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
for (int j = 0; j < appsSize; j++) {
final ApplicationInfo app = apps.get(j);
final int uid = UserHandle.getUid(user.id, app.uid);
switch (type) {
case TYPE_RESTRICT_BACKGROUND:
updateRulesForDataUsageRestrictionsUL(uid);
break;
case TYPE_RESTRICT_POWER:
updateRulesForPowerRestrictionsUL(uid);
break;
default:
Slog.w(TAG, "Invalid type for updateRulesForAllApps: " + type);
}
consumer.accept(uid);
}
}
} finally {