Refactor updating rules for all apps in NetworkPolicyManagerService am: e944af5bd6 am: 9405e43734
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1545864 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Iee0b722916a5b48bb2b375f8d7e0f39620936617
This commit is contained in:
@@ -271,6 +271,7 @@ import java.util.Objects;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.function.IntConsumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that maintains low-level network policy rules, using
|
* Service that maintains low-level network policy rules, using
|
||||||
@@ -4051,7 +4052,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
try {
|
try {
|
||||||
updateRulesForDeviceIdleUL();
|
updateRulesForDeviceIdleUL();
|
||||||
updateRulesForPowerSaveUL();
|
updateRulesForPowerSaveUL();
|
||||||
updateRulesForAllAppsUL(TYPE_RESTRICT_POWER);
|
forEachUid("updateRulesForRestrictPower",
|
||||||
|
uid -> updateRulesForPowerRestrictionsUL(uid));
|
||||||
} finally {
|
} finally {
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
|
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
|
||||||
}
|
}
|
||||||
@@ -4061,31 +4063,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
private void updateRulesForRestrictBackgroundUL() {
|
private void updateRulesForRestrictBackgroundUL() {
|
||||||
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL");
|
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL");
|
||||||
try {
|
try {
|
||||||
updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND);
|
forEachUid("updateRulesForRestrictBackground",
|
||||||
|
uid -> updateRulesForDataUsageRestrictionsUL(uid));
|
||||||
} finally {
|
} finally {
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
|
Trace.traceEnd(Trace.TRACE_TAG_NETWORK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int TYPE_RESTRICT_BACKGROUND = 1;
|
private void forEachUid(String tag, IntConsumer consumer) {
|
||||||
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) {
|
|
||||||
if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) {
|
if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) {
|
||||||
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type);
|
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "forEachUid-" + tag);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// update rules for all installed applications
|
// update rules for all installed applications
|
||||||
|
|
||||||
final PackageManager pm = mContext.getPackageManager();
|
final PackageManager pm = mContext.getPackageManager();
|
||||||
final List<UserInfo> users;
|
final List<UserInfo> users;
|
||||||
final List<ApplicationInfo> apps;
|
final List<ApplicationInfo> apps;
|
||||||
@@ -4113,16 +4103,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
for (int j = 0; j < appsSize; j++) {
|
for (int j = 0; j < appsSize; j++) {
|
||||||
final ApplicationInfo app = apps.get(j);
|
final ApplicationInfo app = apps.get(j);
|
||||||
final int uid = UserHandle.getUid(user.id, app.uid);
|
final int uid = UserHandle.getUid(user.id, app.uid);
|
||||||
switch (type) {
|
consumer.accept(uid);
|
||||||
case TYPE_RESTRICT_BACKGROUND:
|
|
||||||
updateRulesForDataUsageRestrictionsUL(uid);
|
|
||||||
break;
|
|
||||||
case TYPE_RESTRICT_POWER:
|
|
||||||
updateRulesForPowerRestrictionsUL(uid);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Slog.w(TAG, "Invalid type for updateRulesForAllApps: " + type);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user