Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +19 −10 Original line number Diff line number Diff line Loading @@ -526,8 +526,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final SparseBooleanArray mRestrictBackgroundAllowlistRevokedUids = new SparseBooleanArray(); final Object mMeteredIfacesLock = new Object(); /** Set of ifaces that are metered. */ @GuardedBy("mNetworkPoliciesSecondLock") @GuardedBy("mMeteredIfacesLock") private ArraySet<String> mMeteredIfaces = new ArraySet<>(); /** Set of over-limit templates that have been notified. */ @GuardedBy("mNetworkPoliciesSecondLock") Loading Loading @@ -1980,6 +1981,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // Remove quota from any interfaces that are no longer metered. synchronized (mMeteredIfacesLock) { for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) { final String iface = mMeteredIfaces.valueAt(i); if (!newMeteredIfaces.contains(iface)) { Loading @@ -1987,6 +1989,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } mMeteredIfaces = newMeteredIfaces; } final ContentResolver cr = mContext.getContentResolver(); final boolean quotaEnabled = Settings.Global.getInt(cr, Loading Loading @@ -2038,7 +2041,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mSubscriptionOpportunisticQuota.put(subId, quotaBytes); } final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); final String[] meteredIfaces; synchronized (mMeteredIfacesLock) { meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); } mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget(); mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); Loading Loading @@ -3460,7 +3466,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { fout.print("Restrict background: "); fout.println(mRestrictBackground); fout.print("Restrict power: "); fout.println(mRestrictPower); fout.print("Device idle: "); fout.println(mDeviceIdleMode); fout.print("Metered ifaces: "); fout.println(mMeteredIfaces); synchronized (mMeteredIfacesLock) { fout.print("Metered ifaces: "); fout.println(mMeteredIfaces); } fout.println(); fout.print("mRestrictBackgroundLowPowerMode: " + mRestrictBackgroundLowPowerMode); Loading Loading @@ -4656,7 +4665,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } case MSG_LIMIT_REACHED: { final String iface = (String) msg.obj; synchronized (mNetworkPoliciesSecondLock) { synchronized (mMeteredIfacesLock) { // fast return if not needed. if (!mMeteredIfaces.contains(iface)) { return true; Loading Loading @@ -5298,7 +5307,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { isBackgroundRestricted = mRestrictBackground; } final boolean isNetworkMetered; synchronized (mNetworkPoliciesSecondLock) { synchronized (mMeteredIfacesLock) { isNetworkMetered = mMeteredIfaces.contains(ifname); } final boolean ret = isUidNetworkingBlockedInternal(uid, uidRules, isNetworkMetered, Loading Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +19 −10 Original line number Diff line number Diff line Loading @@ -526,8 +526,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final SparseBooleanArray mRestrictBackgroundAllowlistRevokedUids = new SparseBooleanArray(); final Object mMeteredIfacesLock = new Object(); /** Set of ifaces that are metered. */ @GuardedBy("mNetworkPoliciesSecondLock") @GuardedBy("mMeteredIfacesLock") private ArraySet<String> mMeteredIfaces = new ArraySet<>(); /** Set of over-limit templates that have been notified. */ @GuardedBy("mNetworkPoliciesSecondLock") Loading Loading @@ -1980,6 +1981,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } // Remove quota from any interfaces that are no longer metered. synchronized (mMeteredIfacesLock) { for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) { final String iface = mMeteredIfaces.valueAt(i); if (!newMeteredIfaces.contains(iface)) { Loading @@ -1987,6 +1989,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } mMeteredIfaces = newMeteredIfaces; } final ContentResolver cr = mContext.getContentResolver(); final boolean quotaEnabled = Settings.Global.getInt(cr, Loading Loading @@ -2038,7 +2041,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mSubscriptionOpportunisticQuota.put(subId, quotaBytes); } final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); final String[] meteredIfaces; synchronized (mMeteredIfacesLock) { meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); } mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget(); mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); Loading Loading @@ -3460,7 +3466,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { fout.print("Restrict background: "); fout.println(mRestrictBackground); fout.print("Restrict power: "); fout.println(mRestrictPower); fout.print("Device idle: "); fout.println(mDeviceIdleMode); fout.print("Metered ifaces: "); fout.println(mMeteredIfaces); synchronized (mMeteredIfacesLock) { fout.print("Metered ifaces: "); fout.println(mMeteredIfaces); } fout.println(); fout.print("mRestrictBackgroundLowPowerMode: " + mRestrictBackgroundLowPowerMode); Loading Loading @@ -4656,7 +4665,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } case MSG_LIMIT_REACHED: { final String iface = (String) msg.obj; synchronized (mNetworkPoliciesSecondLock) { synchronized (mMeteredIfacesLock) { // fast return if not needed. if (!mMeteredIfaces.contains(iface)) { return true; Loading Loading @@ -5298,7 +5307,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { isBackgroundRestricted = mRestrictBackground; } final boolean isNetworkMetered; synchronized (mNetworkPoliciesSecondLock) { synchronized (mMeteredIfacesLock) { isNetworkMetered = mMeteredIfaces.contains(ifname); } final boolean ret = isUidNetworkingBlockedInternal(uid, uidRules, isNetworkMetered, Loading