Apply dynamic deny list into data usage state
- Initiate and sync existing network policy when creating the instance - Imple a method to suggest list of packages to set as POLICY_REJECT - Reset/clear the policy settings once clear storage or reset preference Bug: 306329984 Test: make SettingsRoboTests Change-Id: I10ba28fee08c29bc2092820fbc8d8ac0e61d30e7
This commit is contained in:
@@ -44,6 +44,7 @@ import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.datausage.lib.AppDataUsageDetailsRepository;
|
||||
import com.android.settings.datausage.lib.NetworkTemplates;
|
||||
import com.android.settings.datausage.lib.NetworkUsageDetailsData;
|
||||
import com.android.settings.fuelgauge.datasaver.DynamicDenylistManager;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.widget.EntityHeaderController;
|
||||
import com.android.settingslib.AppItem;
|
||||
@@ -325,7 +326,8 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
|
||||
private boolean getAppRestrictBackground() {
|
||||
final int uid = mAppItem.key;
|
||||
final int uidPolicy = services.mPolicyManager.getUidPolicy(uid);
|
||||
return (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
|
||||
return (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0
|
||||
&& DynamicDenylistManager.getInstance(mContext).isInManualDenylist(uid);
|
||||
}
|
||||
|
||||
private boolean getUnrestrictData() {
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.content.Context;
|
||||
import android.net.NetworkPolicyManager;
|
||||
import android.util.SparseIntArray;
|
||||
|
||||
import com.android.settings.fuelgauge.datasaver.DynamicDenylistManager;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
@@ -39,6 +40,7 @@ public class DataSaverBackend {
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
private final NetworkPolicyManager mPolicyManager;
|
||||
private final DynamicDenylistManager mDynamicDenylistManager;
|
||||
private final ArrayList<Listener> mListeners = new ArrayList<>();
|
||||
private SparseIntArray mUidPolicies = new SparseIntArray();
|
||||
private boolean mAllowlistInitialized;
|
||||
@@ -50,6 +52,7 @@ public class DataSaverBackend {
|
||||
mContext = context.getApplicationContext();
|
||||
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
|
||||
mPolicyManager = NetworkPolicyManager.from(mContext);
|
||||
mDynamicDenylistManager = DynamicDenylistManager.getInstance(mContext);
|
||||
}
|
||||
|
||||
public void addListener(Listener listener) {
|
||||
@@ -83,7 +86,7 @@ public class DataSaverBackend {
|
||||
|
||||
public void setIsAllowlisted(int uid, String packageName, boolean allowlisted) {
|
||||
final int policy = allowlisted ? POLICY_ALLOW_METERED_BACKGROUND : POLICY_NONE;
|
||||
mPolicyManager.setUidPolicy(uid, policy);
|
||||
mDynamicDenylistManager.setUidPolicyLocked(uid, policy);
|
||||
mUidPolicies.put(uid, policy);
|
||||
if (allowlisted) {
|
||||
mMetricsFeatureProvider.action(
|
||||
@@ -113,7 +116,7 @@ public class DataSaverBackend {
|
||||
|
||||
public void setIsDenylisted(int uid, String packageName, boolean denylisted) {
|
||||
final int policy = denylisted ? POLICY_REJECT_METERED_BACKGROUND : POLICY_NONE;
|
||||
mPolicyManager.setUidPolicy(uid, policy);
|
||||
mDynamicDenylistManager.setUidPolicyLocked(uid, policy);
|
||||
mUidPolicies.put(uid, policy);
|
||||
if (denylisted) {
|
||||
mMetricsFeatureProvider.action(
|
||||
@@ -123,7 +126,8 @@ public class DataSaverBackend {
|
||||
|
||||
public boolean isDenylisted(int uid) {
|
||||
loadDenylist();
|
||||
return mUidPolicies.get(uid, POLICY_NONE) == POLICY_REJECT_METERED_BACKGROUND;
|
||||
return mUidPolicies.get(uid, POLICY_NONE) == POLICY_REJECT_METERED_BACKGROUND
|
||||
&& mDynamicDenylistManager.isInManualDenylist(uid);
|
||||
}
|
||||
|
||||
private void loadDenylist() {
|
||||
|
||||
Reference in New Issue
Block a user