Loading core/java/android/net/INetworkPolicyManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ interface INetworkPolicyManager { void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage); void factoryReset(String subscriber); boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork); } core/java/android/os/INetworkManagementService.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -435,4 +435,6 @@ interface INetworkManagementService int removeRoutesFromLocalNetwork(in List<RouteInfo> routes); void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges); boolean isNetworkRestricted(int uid); } services/core/java/com/android/server/NetworkManagementService.java +37 −27 Original line number Diff line number Diff line Loading @@ -2658,22 +2658,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub return failures; } private void setFirewallChainState(int chain, boolean state) { synchronized (mRulesLock) { mFirewallChainStates.put(chain, state); } } private boolean getFirewallChainState(int chain) { synchronized (mRulesLock) { return mFirewallChainStates.get(chain); } @Override public boolean isNetworkRestricted(int uid) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); return isNetworkRestrictedInternal(uid); } @VisibleForTesting class LocalService extends NetworkManagementInternal { @Override public boolean isNetworkRestrictedForUid(int uid) { private boolean isNetworkRestrictedInternal(int uid) { synchronized (mRulesLock) { if (getFirewallChainState(FIREWALL_CHAIN_STANDBY) && mUidFirewallStandbyRules.get(uid) == FIREWALL_RULE_DENY) { Loading Loading @@ -2702,6 +2693,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub return false; } } private void setFirewallChainState(int chain, boolean state) { synchronized (mRulesLock) { mFirewallChainStates.put(chain, state); } } private boolean getFirewallChainState(int chain) { synchronized (mRulesLock) { return mFirewallChainStates.get(chain); } } @VisibleForTesting class LocalService extends NetworkManagementInternal { @Override public boolean isNetworkRestrictedForUid(int uid) { return isNetworkRestrictedInternal(uid); } } @VisibleForTesting Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +44 −34 Original line number Diff line number Diff line Loading @@ -4315,6 +4315,47 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @Override public boolean isUidNetworkingBlocked(int uid, boolean isNetworkMetered) { mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); return isUidNetworkingBlockedInternal(uid, isNetworkMetered); } private boolean isUidNetworkingBlockedInternal(int uid, boolean isNetworkMetered) { final int uidRules; final boolean isBackgroundRestricted; synchronized (mUidRulesFirstLock) { uidRules = mUidRules.get(uid, RULE_NONE); isBackgroundRestricted = mRestrictBackground; } if (hasRule(uidRules, RULE_REJECT_ALL)) { if (LOGV) logUidStatus(uid, "blocked by power restrictions"); return true; } if (!isNetworkMetered) { if (LOGV) logUidStatus(uid, "allowed on unmetered network"); return false; } if (hasRule(uidRules, RULE_REJECT_METERED)) { if (LOGV) logUidStatus(uid, "blacklisted on metered network"); return true; } if (hasRule(uidRules, RULE_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "whitelisted on metered network"); return false; } if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); return false; } if (isBackgroundRestricted) { if (LOGV) logUidStatus(uid, "blocked when background is restricted"); return true; } if (LOGV) logUidStatus(uid, "allowed by default"); return false; } private class NetworkPolicyManagerInternalImpl extends NetworkPolicyManagerInternal { @Override Loading Loading @@ -4352,42 +4393,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { */ @Override public boolean isUidNetworkingBlocked(int uid, String ifname) { final int uidRules; final boolean isBackgroundRestricted; final boolean isNetworkMetered; synchronized (mUidRulesFirstLock) { uidRules = mUidRules.get(uid, RULE_NONE); isBackgroundRestricted = mRestrictBackground; synchronized (mNetworkPoliciesSecondLock) { isNetworkMetered = mMeteredIfaces.contains(ifname); } } if (hasRule(uidRules, RULE_REJECT_ALL)) { if (LOGV) logUidStatus(uid, "blocked by power restrictions"); return true; } if (!isNetworkMetered) { if (LOGV) logUidStatus(uid, "allowed on unmetered network"); return false; } if (hasRule(uidRules, RULE_REJECT_METERED)) { if (LOGV) logUidStatus(uid, "blacklisted on metered network"); return true; } if (hasRule(uidRules, RULE_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "whitelisted on metered network"); return false; } if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); return false; } if (isBackgroundRestricted) { if (LOGV) logUidStatus(uid, "blocked when background is restricted"); return true; } if (LOGV) logUidStatus(uid, "allowed by default"); return false; return isUidNetworkingBlockedInternal(uid, isNetworkMetered); } } Loading services/tests/servicestests/res/raw/conntestapp −912 B (8.07 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
core/java/android/net/INetworkPolicyManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ interface INetworkPolicyManager { void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage); void factoryReset(String subscriber); boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork); }
core/java/android/os/INetworkManagementService.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -435,4 +435,6 @@ interface INetworkManagementService int removeRoutesFromLocalNetwork(in List<RouteInfo> routes); void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges); boolean isNetworkRestricted(int uid); }
services/core/java/com/android/server/NetworkManagementService.java +37 −27 Original line number Diff line number Diff line Loading @@ -2658,22 +2658,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub return failures; } private void setFirewallChainState(int chain, boolean state) { synchronized (mRulesLock) { mFirewallChainStates.put(chain, state); } } private boolean getFirewallChainState(int chain) { synchronized (mRulesLock) { return mFirewallChainStates.get(chain); } @Override public boolean isNetworkRestricted(int uid) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); return isNetworkRestrictedInternal(uid); } @VisibleForTesting class LocalService extends NetworkManagementInternal { @Override public boolean isNetworkRestrictedForUid(int uid) { private boolean isNetworkRestrictedInternal(int uid) { synchronized (mRulesLock) { if (getFirewallChainState(FIREWALL_CHAIN_STANDBY) && mUidFirewallStandbyRules.get(uid) == FIREWALL_RULE_DENY) { Loading Loading @@ -2702,6 +2693,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub return false; } } private void setFirewallChainState(int chain, boolean state) { synchronized (mRulesLock) { mFirewallChainStates.put(chain, state); } } private boolean getFirewallChainState(int chain) { synchronized (mRulesLock) { return mFirewallChainStates.get(chain); } } @VisibleForTesting class LocalService extends NetworkManagementInternal { @Override public boolean isNetworkRestrictedForUid(int uid) { return isNetworkRestrictedInternal(uid); } } @VisibleForTesting Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +44 −34 Original line number Diff line number Diff line Loading @@ -4315,6 +4315,47 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @Override public boolean isUidNetworkingBlocked(int uid, boolean isNetworkMetered) { mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); return isUidNetworkingBlockedInternal(uid, isNetworkMetered); } private boolean isUidNetworkingBlockedInternal(int uid, boolean isNetworkMetered) { final int uidRules; final boolean isBackgroundRestricted; synchronized (mUidRulesFirstLock) { uidRules = mUidRules.get(uid, RULE_NONE); isBackgroundRestricted = mRestrictBackground; } if (hasRule(uidRules, RULE_REJECT_ALL)) { if (LOGV) logUidStatus(uid, "blocked by power restrictions"); return true; } if (!isNetworkMetered) { if (LOGV) logUidStatus(uid, "allowed on unmetered network"); return false; } if (hasRule(uidRules, RULE_REJECT_METERED)) { if (LOGV) logUidStatus(uid, "blacklisted on metered network"); return true; } if (hasRule(uidRules, RULE_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "whitelisted on metered network"); return false; } if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); return false; } if (isBackgroundRestricted) { if (LOGV) logUidStatus(uid, "blocked when background is restricted"); return true; } if (LOGV) logUidStatus(uid, "allowed by default"); return false; } private class NetworkPolicyManagerInternalImpl extends NetworkPolicyManagerInternal { @Override Loading Loading @@ -4352,42 +4393,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { */ @Override public boolean isUidNetworkingBlocked(int uid, String ifname) { final int uidRules; final boolean isBackgroundRestricted; final boolean isNetworkMetered; synchronized (mUidRulesFirstLock) { uidRules = mUidRules.get(uid, RULE_NONE); isBackgroundRestricted = mRestrictBackground; synchronized (mNetworkPoliciesSecondLock) { isNetworkMetered = mMeteredIfaces.contains(ifname); } } if (hasRule(uidRules, RULE_REJECT_ALL)) { if (LOGV) logUidStatus(uid, "blocked by power restrictions"); return true; } if (!isNetworkMetered) { if (LOGV) logUidStatus(uid, "allowed on unmetered network"); return false; } if (hasRule(uidRules, RULE_REJECT_METERED)) { if (LOGV) logUidStatus(uid, "blacklisted on metered network"); return true; } if (hasRule(uidRules, RULE_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "whitelisted on metered network"); return false; } if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); return false; } if (isBackgroundRestricted) { if (LOGV) logUidStatus(uid, "blocked when background is restricted"); return true; } if (LOGV) logUidStatus(uid, "allowed by default"); return false; return isUidNetworkingBlockedInternal(uid, isNetworkMetered); } } Loading
services/tests/servicestests/res/raw/conntestapp −912 B (8.07 KiB) File changed.No diff preview for this file type. View original file View changed file