Loading services/core/java/com/android/server/NetworkManagementService.java +1 −0 Original line number Diff line number Diff line Loading @@ -2271,6 +2271,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub return ruleName; } @GuardedBy("mRulesLock") private @NonNull SparseIntArray getUidFirewallRulesLR(int chain) { switch (chain) { case FIREWALL_CHAIN_STANDBY: Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +49 −0 Original line number Diff line number Diff line Loading @@ -628,6 +628,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mConnManager = checkNotNull(connManager, "missing IConnectivityManager"); } @GuardedBy("mUidRulesFirstLock") void updatePowerSaveWhitelistUL() { try { int[] whitelist = mDeviceIdleController.getAppIdWhitelistExceptIdle(); Loading @@ -654,6 +655,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * @return whether any uid has been whitelisted. */ @GuardedBy("mUidRulesFirstLock") boolean addDefaultRestrictBackgroundWhitelistUidsUL() { final List<UserInfo> users = mUserManager.getUsers(); final int numberUsers = users.size(); Loading @@ -666,6 +668,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return changed; } @GuardedBy("mUidRulesFirstLock") private boolean addDefaultRestrictBackgroundWhitelistUidsUL(int userId) { final SystemConfig sysConfig = SystemConfig.getInstance(); final PackageManager pm = mContext.getPackageManager(); Loading Loading @@ -1120,6 +1123,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Check {@link NetworkPolicy} against current {@link INetworkStatsService} * to show visible notifications as needed. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNotificationsNL() { if (LOGV) Slog.v(TAG, "updateNotificationsNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNotificationsNL"); Loading Loading @@ -1266,6 +1270,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @return relevant subId, or {@link #INVALID_SUBSCRIPTION_ID} when no * matching subId found. */ @GuardedBy("mNetworkPoliciesSecondLock") private int findRelevantSubIdNL(NetworkTemplate template) { // Mobile template is relevant when any active subscriber matches for (int i = 0; i < mSubIdToSubscriberId.size(); i++) { Loading @@ -1285,6 +1290,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Notify that given {@link NetworkTemplate} is over * {@link NetworkPolicy#limitBytes}, potentially showing dialog to user. */ @GuardedBy("mNetworkPoliciesSecondLock") private void notifyOverLimitNL(NetworkTemplate template) { if (!mOverLimitNotified.contains(template)) { mContext.startActivity(buildNetworkOverLimitIntent(mContext.getResources(), template)); Loading @@ -1292,6 +1298,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mNetworkPoliciesSecondLock") private void notifyUnderLimitNL(NetworkTemplate template) { mOverLimitNotified.remove(template); } Loading Loading @@ -1462,6 +1469,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param subId that has its associated NetworkPolicy updated if necessary * @return if any policies were updated */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean maybeUpdateMobilePolicyCycleAL(int subId, String subscriberId) { if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleAL()"); Loading Loading @@ -1619,6 +1627,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param shouldNormalizePolicies true iff network policies need to be normalized after the * update. */ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) void handleNetworkPoliciesUpdateAL(boolean shouldNormalizePolicies) { if (shouldNormalizePolicies) { normalizePoliciesNL(); Loading @@ -1633,6 +1642,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Proactively control network data connections when they exceed * {@link NetworkPolicy#limitBytes}. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNetworkEnabledNL() { if (LOGV) Slog.v(TAG, "updateNetworkEnabledNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkEnabledNL"); Loading Loading @@ -1773,6 +1783,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link NetworkPolicy} that need to be enforced. When matches found, set * remaining quota based on usage cycle and historical stats. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNetworkRulesNL() { if (LOGV) Slog.v(TAG, "updateNetworkRulesNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkRulesNL"); Loading Loading @@ -1957,6 +1968,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Once any {@link #mNetworkPolicy} are loaded from disk, ensure that we * have at least a default mobile policy defined. */ @GuardedBy("mNetworkPoliciesSecondLock") private void ensureActiveMobilePolicyAL() { if (LOGV) Slog.v(TAG, "ensureActiveMobilePolicyAL()"); if (mSuppressDefaultPolicy) return; Loading @@ -1977,6 +1989,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param subscriberId that we check for an existing policy * @return true if a mobile network policy was added, or false one already existed. */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean ensureActiveMobilePolicyAL(int subId, String subscriberId) { // Poke around to see if we already have a policy final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE, Loading Loading @@ -2036,6 +2049,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * @return if the policy was modified */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean updateDefaultMobilePolicyAL(int subId, NetworkPolicy policy) { if (!policy.inferred) { if (LOGD) Slog.d(TAG, "Ignoring user-defined policy " + policy); Loading Loading @@ -2091,6 +2105,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) private void readPolicyAL() { if (LOGV) Slog.v(TAG, "readPolicyAL()"); Loading Loading @@ -2322,6 +2337,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Perform upgrade step of moving any user-defined meterness overrides over * into {@link WifiConfiguration}. */ @GuardedBy({"mNetworkPoliciesSecondLock", "mUidRulesFirstLock"}) private void upgradeWifiMeteredOverrideAL() { boolean modified = false; final WifiManager wm = mContext.getSystemService(WifiManager.class); Loading Loading @@ -2352,6 +2368,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) void writePolicyAL() { if (LOGV) Slog.v(TAG, "writePolicyAL()"); Loading Loading @@ -2523,6 +2540,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setUidPolicyUncheckedUL(int uid, int oldPolicy, int policy, boolean persist) { setUidPolicyUncheckedUL(uid, policy, false); Loading Loading @@ -2554,6 +2572,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setUidPolicyUncheckedUL(int uid, int policy, boolean persist) { if (policy == POLICY_NONE) { mUidPolicy.delete(uid); Loading Loading @@ -2601,6 +2620,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Removes any persistable state associated with given {@link UserHandle}, persisting * if any changes that are made. */ @GuardedBy("mUidRulesFirstLock") boolean removeUserStateUL(int userId, boolean writePolicy) { mLogger.removingUserState(userId); Loading Loading @@ -2702,10 +2722,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mNetworkPoliciesSecondLock") private void normalizePoliciesNL() { normalizePoliciesNL(getNetworkPolicies(mContext.getOpPackageName())); } @GuardedBy("mNetworkPoliciesSecondLock") private void normalizePoliciesNL(NetworkPolicy[] policies) { mNetworkPolicy.clear(); for (NetworkPolicy policy : policies) { Loading Loading @@ -2795,6 +2817,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setRestrictBackgroundUL(boolean restrictBackground) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setRestrictBackgroundUL"); try { Loading Loading @@ -3447,11 +3470,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private boolean isUidForegroundOnRestrictBackgroundUL(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileOnRestrictBackground(procState); } @GuardedBy("mUidRulesFirstLock") private boolean isUidForegroundOnRestrictPowerUL(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileIdleOrPowerSaveMode(procState); Loading @@ -3467,6 +3492,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #updateRulesForDataUsageRestrictionsUL(int)} and * {@link #updateRulesForPowerRestrictionsUL(int)} */ @GuardedBy("mUidRulesFirstLock") private void updateUidStateUL(int uid, int uidState) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateUidStateUL"); try { Loading @@ -3493,6 +3519,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void removeUidStateUL(int uid) { final int index = mUidState.indexOfKey(uid); if (index >= 0) { Loading Loading @@ -3537,6 +3564,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRulesForPowerSaveUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForPowerSaveUL"); try { Loading @@ -3547,10 +3575,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForRestrictPowerUL(int uid) { updateRulesForWhitelistedPowerSaveUL(uid, mRestrictPower, FIREWALL_CHAIN_POWERSAVE); } @GuardedBy("mUidRulesFirstLock") void updateRulesForDeviceIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForDeviceIdleUL"); try { Loading @@ -3561,12 +3591,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForDeviceIdleUL(int uid) { updateRulesForWhitelistedPowerSaveUL(uid, mDeviceIdleMode, FIREWALL_CHAIN_DOZABLE); } // NOTE: since both fw_dozable and fw_powersave uses the same map // (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method. @GuardedBy("mUidRulesFirstLock") private void updateRulesForWhitelistedPowerSaveUL(boolean enabled, int chain, SparseIntArray rules) { if (enabled) { Loading Loading @@ -3611,6 +3643,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #mPowerSaveWhitelistExceptIdleAppIds} for checking if the {@param uid} is * whitelisted. */ @GuardedBy("mUidRulesFirstLock") private boolean isWhitelistedBatterySaverUL(int uid, boolean deviceIdleMode) { final int appId = UserHandle.getAppId(uid); boolean isWhitelisted = mPowerSaveTempWhitelistAppIds.get(appId) Loading @@ -3623,6 +3656,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // NOTE: since both fw_dozable and fw_powersave uses the same map // (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method. @GuardedBy("mUidRulesFirstLock") private void updateRulesForWhitelistedPowerSaveUL(int uid, boolean enabled, int chain) { if (enabled) { final boolean isWhitelisted = isWhitelistedBatterySaverUL(uid, Loading @@ -3635,6 +3669,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { Loading Loading @@ -3664,6 +3699,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForAppIdleUL(int uid) { if (!isUidValidForBlacklistRules(uid)) return; Loading @@ -3687,6 +3723,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Toggle the firewall standby chain and inform listeners if the uid rules have effectively * changed. */ @GuardedBy("mUidRulesFirstLock") void updateRulesForAppIdleParoleUL() { boolean paroled = mUsageStats.isAppIdleParoleOn(); boolean enableChain = !paroled; Loading Loading @@ -3719,6 +3756,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Update rules that might be changed by {@link #mRestrictBackground}, * {@link #mRestrictPower}, or {@link #mDeviceIdleMode} value. */ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) private void updateRulesForGlobalChangeAL(boolean restrictedNetworksChanged) { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, Loading @@ -3740,6 +3778,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // TODO: rename / document to make it clear these are global (not app-specific) rules @GuardedBy("mUidRulesFirstLock") private void updateRulesForRestrictPowerUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL"); try { Loading @@ -3751,6 +3790,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void updateRulesForRestrictBackgroundUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL"); try { Loading @@ -3771,6 +3811,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // 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)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type); Loading Loading @@ -3822,6 +3863,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void updateRulesForTempWhitelistChangeUL(int appId) { final List<UserInfo> users = mUserManager.getUsers(); final int numUsers = users.size(); Loading Loading @@ -3886,6 +3928,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Clears all state - internal and external - associated with an UID. */ @GuardedBy("mUidRulesFirstLock") private void onUidDeletedUL(int uid) { // First cleanup in-memory state synchronously... mUidRules.delete(uid); Loading Loading @@ -3914,6 +3957,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * <p>This method changes both the external firewall rules and the internal state. */ @GuardedBy("mUidRulesFirstLock") private void updateRestrictionRulesForUidUL(int uid) { // Methods below only changes the firewall rules for the power-related modes. updateRuleForDeviceIdleUL(uid); Loading Loading @@ -4104,6 +4148,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * <p> * <strong>NOTE: </strong>This method does not update the firewall rules on {@code netd}. */ @GuardedBy("mUidRulesFirstLock") private void updateRulesForPowerRestrictionsUL(int uid) { final int oldUidRules = mUidRules.get(uid, RULE_NONE); Loading Loading @@ -4540,6 +4585,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param uidRules new UID rules; if {@code null}, only toggles chain state. * @param toggle whether the chain should be enabled, disabled, or not changed. */ @GuardedBy("mUidRulesFirstLock") private void setUidFirewallRulesUL(int chain, @Nullable SparseIntArray uidRules, @ChainToggleType int toggle) { if (uidRules != null) { Loading Loading @@ -4606,6 +4652,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Add or remove a uid to the firewall blacklist for all network ifaces. */ @GuardedBy("mUidRulesFirstLock") private void enableFirewallChainUL(int chain, boolean enable) { if (mFirewallChainStates.indexOfKey(chain) >= 0 && mFirewallChainStates.get(chain) == enable) { Loading Loading @@ -4717,6 +4764,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mHandler.getLooper().getQueue().addIdleHandler(handler); } @GuardedBy("mUidRulesFirstLock") @VisibleForTesting public void updateRestrictBackgroundByLowPowerModeUL(final PowerSaveState result) { mRestrictBackgroundPowerState = result; Loading Loading @@ -5048,6 +5096,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private boolean isRestrictedByAdminUL(int uid) { final Set<Integer> restrictedUids = mMeteredRestrictedUids.get( UserHandle.getUserId(uid)); Loading Loading
services/core/java/com/android/server/NetworkManagementService.java +1 −0 Original line number Diff line number Diff line Loading @@ -2271,6 +2271,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub return ruleName; } @GuardedBy("mRulesLock") private @NonNull SparseIntArray getUidFirewallRulesLR(int chain) { switch (chain) { case FIREWALL_CHAIN_STANDBY: Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +49 −0 Original line number Diff line number Diff line Loading @@ -628,6 +628,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mConnManager = checkNotNull(connManager, "missing IConnectivityManager"); } @GuardedBy("mUidRulesFirstLock") void updatePowerSaveWhitelistUL() { try { int[] whitelist = mDeviceIdleController.getAppIdWhitelistExceptIdle(); Loading @@ -654,6 +655,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * @return whether any uid has been whitelisted. */ @GuardedBy("mUidRulesFirstLock") boolean addDefaultRestrictBackgroundWhitelistUidsUL() { final List<UserInfo> users = mUserManager.getUsers(); final int numberUsers = users.size(); Loading @@ -666,6 +668,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return changed; } @GuardedBy("mUidRulesFirstLock") private boolean addDefaultRestrictBackgroundWhitelistUidsUL(int userId) { final SystemConfig sysConfig = SystemConfig.getInstance(); final PackageManager pm = mContext.getPackageManager(); Loading Loading @@ -1120,6 +1123,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Check {@link NetworkPolicy} against current {@link INetworkStatsService} * to show visible notifications as needed. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNotificationsNL() { if (LOGV) Slog.v(TAG, "updateNotificationsNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNotificationsNL"); Loading Loading @@ -1266,6 +1270,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @return relevant subId, or {@link #INVALID_SUBSCRIPTION_ID} when no * matching subId found. */ @GuardedBy("mNetworkPoliciesSecondLock") private int findRelevantSubIdNL(NetworkTemplate template) { // Mobile template is relevant when any active subscriber matches for (int i = 0; i < mSubIdToSubscriberId.size(); i++) { Loading @@ -1285,6 +1290,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Notify that given {@link NetworkTemplate} is over * {@link NetworkPolicy#limitBytes}, potentially showing dialog to user. */ @GuardedBy("mNetworkPoliciesSecondLock") private void notifyOverLimitNL(NetworkTemplate template) { if (!mOverLimitNotified.contains(template)) { mContext.startActivity(buildNetworkOverLimitIntent(mContext.getResources(), template)); Loading @@ -1292,6 +1298,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mNetworkPoliciesSecondLock") private void notifyUnderLimitNL(NetworkTemplate template) { mOverLimitNotified.remove(template); } Loading Loading @@ -1462,6 +1469,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param subId that has its associated NetworkPolicy updated if necessary * @return if any policies were updated */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean maybeUpdateMobilePolicyCycleAL(int subId, String subscriberId) { if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleAL()"); Loading Loading @@ -1619,6 +1627,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param shouldNormalizePolicies true iff network policies need to be normalized after the * update. */ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) void handleNetworkPoliciesUpdateAL(boolean shouldNormalizePolicies) { if (shouldNormalizePolicies) { normalizePoliciesNL(); Loading @@ -1633,6 +1642,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Proactively control network data connections when they exceed * {@link NetworkPolicy#limitBytes}. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNetworkEnabledNL() { if (LOGV) Slog.v(TAG, "updateNetworkEnabledNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkEnabledNL"); Loading Loading @@ -1773,6 +1783,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link NetworkPolicy} that need to be enforced. When matches found, set * remaining quota based on usage cycle and historical stats. */ @GuardedBy("mNetworkPoliciesSecondLock") void updateNetworkRulesNL() { if (LOGV) Slog.v(TAG, "updateNetworkRulesNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkRulesNL"); Loading Loading @@ -1957,6 +1968,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Once any {@link #mNetworkPolicy} are loaded from disk, ensure that we * have at least a default mobile policy defined. */ @GuardedBy("mNetworkPoliciesSecondLock") private void ensureActiveMobilePolicyAL() { if (LOGV) Slog.v(TAG, "ensureActiveMobilePolicyAL()"); if (mSuppressDefaultPolicy) return; Loading @@ -1977,6 +1989,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param subscriberId that we check for an existing policy * @return true if a mobile network policy was added, or false one already existed. */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean ensureActiveMobilePolicyAL(int subId, String subscriberId) { // Poke around to see if we already have a policy final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE, Loading Loading @@ -2036,6 +2049,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * @return if the policy was modified */ @GuardedBy("mNetworkPoliciesSecondLock") private boolean updateDefaultMobilePolicyAL(int subId, NetworkPolicy policy) { if (!policy.inferred) { if (LOGD) Slog.d(TAG, "Ignoring user-defined policy " + policy); Loading Loading @@ -2091,6 +2105,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) private void readPolicyAL() { if (LOGV) Slog.v(TAG, "readPolicyAL()"); Loading Loading @@ -2322,6 +2337,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Perform upgrade step of moving any user-defined meterness overrides over * into {@link WifiConfiguration}. */ @GuardedBy({"mNetworkPoliciesSecondLock", "mUidRulesFirstLock"}) private void upgradeWifiMeteredOverrideAL() { boolean modified = false; final WifiManager wm = mContext.getSystemService(WifiManager.class); Loading Loading @@ -2352,6 +2368,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) void writePolicyAL() { if (LOGV) Slog.v(TAG, "writePolicyAL()"); Loading Loading @@ -2523,6 +2540,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setUidPolicyUncheckedUL(int uid, int oldPolicy, int policy, boolean persist) { setUidPolicyUncheckedUL(uid, policy, false); Loading Loading @@ -2554,6 +2572,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setUidPolicyUncheckedUL(int uid, int policy, boolean persist) { if (policy == POLICY_NONE) { mUidPolicy.delete(uid); Loading Loading @@ -2601,6 +2620,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Removes any persistable state associated with given {@link UserHandle}, persisting * if any changes that are made. */ @GuardedBy("mUidRulesFirstLock") boolean removeUserStateUL(int userId, boolean writePolicy) { mLogger.removingUserState(userId); Loading Loading @@ -2702,10 +2722,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mNetworkPoliciesSecondLock") private void normalizePoliciesNL() { normalizePoliciesNL(getNetworkPolicies(mContext.getOpPackageName())); } @GuardedBy("mNetworkPoliciesSecondLock") private void normalizePoliciesNL(NetworkPolicy[] policies) { mNetworkPolicy.clear(); for (NetworkPolicy policy : policies) { Loading Loading @@ -2795,6 +2817,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void setRestrictBackgroundUL(boolean restrictBackground) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setRestrictBackgroundUL"); try { Loading Loading @@ -3447,11 +3470,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private boolean isUidForegroundOnRestrictBackgroundUL(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileOnRestrictBackground(procState); } @GuardedBy("mUidRulesFirstLock") private boolean isUidForegroundOnRestrictPowerUL(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileIdleOrPowerSaveMode(procState); Loading @@ -3467,6 +3492,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #updateRulesForDataUsageRestrictionsUL(int)} and * {@link #updateRulesForPowerRestrictionsUL(int)} */ @GuardedBy("mUidRulesFirstLock") private void updateUidStateUL(int uid, int uidState) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateUidStateUL"); try { Loading @@ -3493,6 +3519,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void removeUidStateUL(int uid) { final int index = mUidState.indexOfKey(uid); if (index >= 0) { Loading Loading @@ -3537,6 +3564,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRulesForPowerSaveUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForPowerSaveUL"); try { Loading @@ -3547,10 +3575,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForRestrictPowerUL(int uid) { updateRulesForWhitelistedPowerSaveUL(uid, mRestrictPower, FIREWALL_CHAIN_POWERSAVE); } @GuardedBy("mUidRulesFirstLock") void updateRulesForDeviceIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForDeviceIdleUL"); try { Loading @@ -3561,12 +3591,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForDeviceIdleUL(int uid) { updateRulesForWhitelistedPowerSaveUL(uid, mDeviceIdleMode, FIREWALL_CHAIN_DOZABLE); } // NOTE: since both fw_dozable and fw_powersave uses the same map // (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method. @GuardedBy("mUidRulesFirstLock") private void updateRulesForWhitelistedPowerSaveUL(boolean enabled, int chain, SparseIntArray rules) { if (enabled) { Loading Loading @@ -3611,6 +3643,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #mPowerSaveWhitelistExceptIdleAppIds} for checking if the {@param uid} is * whitelisted. */ @GuardedBy("mUidRulesFirstLock") private boolean isWhitelistedBatterySaverUL(int uid, boolean deviceIdleMode) { final int appId = UserHandle.getAppId(uid); boolean isWhitelisted = mPowerSaveTempWhitelistAppIds.get(appId) Loading @@ -3623,6 +3656,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // NOTE: since both fw_dozable and fw_powersave uses the same map // (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method. @GuardedBy("mUidRulesFirstLock") private void updateRulesForWhitelistedPowerSaveUL(int uid, boolean enabled, int chain) { if (enabled) { final boolean isWhitelisted = isWhitelistedBatterySaverUL(uid, Loading @@ -3635,6 +3669,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { Loading Loading @@ -3664,6 +3699,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") void updateRuleForAppIdleUL(int uid) { if (!isUidValidForBlacklistRules(uid)) return; Loading @@ -3687,6 +3723,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Toggle the firewall standby chain and inform listeners if the uid rules have effectively * changed. */ @GuardedBy("mUidRulesFirstLock") void updateRulesForAppIdleParoleUL() { boolean paroled = mUsageStats.isAppIdleParoleOn(); boolean enableChain = !paroled; Loading Loading @@ -3719,6 +3756,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Update rules that might be changed by {@link #mRestrictBackground}, * {@link #mRestrictPower}, or {@link #mDeviceIdleMode} value. */ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"}) private void updateRulesForGlobalChangeAL(boolean restrictedNetworksChanged) { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, Loading @@ -3740,6 +3778,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // TODO: rename / document to make it clear these are global (not app-specific) rules @GuardedBy("mUidRulesFirstLock") private void updateRulesForRestrictPowerUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL"); try { Loading @@ -3751,6 +3790,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void updateRulesForRestrictBackgroundUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL"); try { Loading @@ -3771,6 +3811,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // 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)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type); Loading Loading @@ -3822,6 +3863,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private void updateRulesForTempWhitelistChangeUL(int appId) { final List<UserInfo> users = mUserManager.getUsers(); final int numUsers = users.size(); Loading Loading @@ -3886,6 +3928,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Clears all state - internal and external - associated with an UID. */ @GuardedBy("mUidRulesFirstLock") private void onUidDeletedUL(int uid) { // First cleanup in-memory state synchronously... mUidRules.delete(uid); Loading Loading @@ -3914,6 +3957,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * * <p>This method changes both the external firewall rules and the internal state. */ @GuardedBy("mUidRulesFirstLock") private void updateRestrictionRulesForUidUL(int uid) { // Methods below only changes the firewall rules for the power-related modes. updateRuleForDeviceIdleUL(uid); Loading Loading @@ -4104,6 +4148,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * <p> * <strong>NOTE: </strong>This method does not update the firewall rules on {@code netd}. */ @GuardedBy("mUidRulesFirstLock") private void updateRulesForPowerRestrictionsUL(int uid) { final int oldUidRules = mUidRules.get(uid, RULE_NONE); Loading Loading @@ -4540,6 +4585,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param uidRules new UID rules; if {@code null}, only toggles chain state. * @param toggle whether the chain should be enabled, disabled, or not changed. */ @GuardedBy("mUidRulesFirstLock") private void setUidFirewallRulesUL(int chain, @Nullable SparseIntArray uidRules, @ChainToggleType int toggle) { if (uidRules != null) { Loading Loading @@ -4606,6 +4652,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Add or remove a uid to the firewall blacklist for all network ifaces. */ @GuardedBy("mUidRulesFirstLock") private void enableFirewallChainUL(int chain, boolean enable) { if (mFirewallChainStates.indexOfKey(chain) >= 0 && mFirewallChainStates.get(chain) == enable) { Loading Loading @@ -4717,6 +4764,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mHandler.getLooper().getQueue().addIdleHandler(handler); } @GuardedBy("mUidRulesFirstLock") @VisibleForTesting public void updateRestrictBackgroundByLowPowerModeUL(final PowerSaveState result) { mRestrictBackgroundPowerState = result; Loading Loading @@ -5048,6 +5096,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } @GuardedBy("mUidRulesFirstLock") private boolean isRestrictedByAdminUL(int uid) { final Set<Integer> restrictedUids = mMeteredRestrictedUids.get( UserHandle.getUserId(uid)); Loading