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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user