Loading core/java/android/os/Trace.java +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public final class Trace { public static final long TRACE_TAG_SYSTEM_SERVER = 1L << 19; /** @hide */ public static final long TRACE_TAG_DATABASE = 1L << 20; /** @hide */ public static final long TRACE_TAG_NETWORK = 1L << 21; private static final long TRACE_TAG_NOT_READY = 1L << 63; private static final int MAX_SECTION_NAME_LEN = 127; Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +240 −188 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; Loading Loading @@ -570,6 +571,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } public void systemReady() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady"); try { if (!isBandwidthControlEnabled()) { Slog.w(TAG, "bandwidth controls disabled, unable to enforce policy"); return; Loading Loading @@ -665,7 +668,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { MANAGE_NETWORK_POLICY, mHandler); // listen for configured wifi networks to be removed final IntentFilter wifiConfigFilter = new IntentFilter(CONFIGURED_NETWORKS_CHANGED_ACTION); final IntentFilter wifiConfigFilter = new IntentFilter(CONFIGURED_NETWORKS_CHANGED_ACTION); mContext.registerReceiver(mWifiConfigReceiver, wifiConfigFilter, null, mHandler); // listen for wifi state changes to catch metered hint Loading @@ -674,14 +678,21 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mContext.registerReceiver(mWifiStateReceiver, wifiStateFilter, null, mHandler); mUsageStats.addAppIdleStateChangeListener(new AppIdleStateChangeListener()); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } final private IUidObserver mUidObserver = new IUidObserver.Stub() { @Override public void onUidStateChanged(int uid, int procState) throws RemoteException { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "onUidStateChanged"); try { synchronized (mUidRulesFirstLock) { updateUidStateUL(uid, procState); } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } @Override public void onUidGone(int uid) throws RemoteException { Loading Loading @@ -2046,7 +2057,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // Must whitelist foreground apps before turning data saver mode on. // TODO: there is no need to iterate through all apps here, just those in the foreground, // so it could call AM to get the UIDs of such apps, and iterate through them instead. updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND); updateRulesForRestrictBackgroundUL(); try { if (!mNetworkManager.setDataSaverModeEnabled(mRestrictBackground)) { Slog.e(TAG, "Could not change Data Saver Mode on NMS to " + mRestrictBackground); Loading Loading @@ -2204,6 +2215,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { public void setDeviceIdleMode(boolean enabled) { mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setDeviceIdleMode"); try { synchronized (mUidRulesFirstLock) { if (mDeviceIdleMode != enabled) { mDeviceIdleMode = enabled; Loading @@ -2219,6 +2232,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private NetworkPolicy findPolicyForNetworkNL(NetworkIdentity ident) { Loading Loading @@ -2505,6 +2521,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #updateRulesForPowerRestrictionsUL(int)} */ private void updateUidStateUL(int uid, int uidState) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateUidStateUL"); try { final int oldUidState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); if (oldUidState != uidState) { // state changed, push updated rules Loading @@ -2525,6 +2543,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } updateNetworkStats(uid, isUidStateForegroundUL(uidState)); } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void removeUidStateUL(int uid) { Loading Loading @@ -2576,8 +2597,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForPowerSaveUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForPowerSaveUL"); try { updateRulesForWhitelistedPowerSaveUL(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, mUidFirewallPowerSaveRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForRestrictPowerUL(int uid) { Loading @@ -2585,8 +2611,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForDeviceIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForDeviceIdleUL"); try { updateRulesForWhitelistedPowerSaveUL(mDeviceIdleMode, FIREWALL_CHAIN_DOZABLE, mUidFirewallDozableRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForDeviceIdleUL(int uid) { Loading Loading @@ -2648,6 +2679,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { final SparseIntArray uidRules = mUidFirewallStandbyRules; uidRules.clear(); Loading @@ -2669,6 +2702,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } setUidFirewallRules(FIREWALL_CHAIN_STANDBY, uidRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForAppIdleUL(int uid) { Loading @@ -2693,9 +2729,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #mRestrictPower}, or {@link #mDeviceIdleMode} value. */ private void updateRulesForGlobalChangeAL(boolean restrictedNetworksChanged) { long start; if (LOGD) start = System.currentTimeMillis(); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForGlobalChangeAL"); try { updateRulesForRestrictPowerUL(); updateRulesForRestrictBackgroundUL(); Loading @@ -2704,22 +2739,30 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { normalizePoliciesNL(); updateNetworkRulesNL(); } if (LOGD) { final long delta = System.currentTimeMillis() - start; Slog.d(TAG, "updateRulesForGlobalChangeAL(" + restrictedNetworksChanged + ") took " + delta + "ms"); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void updateRulesForRestrictPowerUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL"); try { updateRulesForDeviceIdleUL(); updateRulesForAppIdleUL(); updateRulesForPowerSaveUL(); updateRulesForAllAppsUL(TYPE_RESTRICT_POWER); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void updateRulesForRestrictBackgroundUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL"); try { updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private static final int TYPE_RESTRICT_BACKGROUND = 1; Loading @@ -2734,6 +2777,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // TODO: refactor / consolidate all those updateXyz methods, there are way too many of them... private void updateRulesForAllAppsUL(@RestrictType int type) { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type); } try { final PackageManager pm = mContext.getPackageManager(); // update rules for all installed applications Loading Loading @@ -2762,6 +2809,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } } private void updateRulesForTempWhitelistChangeUL() { Loading Loading
core/java/android/os/Trace.java +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public final class Trace { public static final long TRACE_TAG_SYSTEM_SERVER = 1L << 19; /** @hide */ public static final long TRACE_TAG_DATABASE = 1L << 20; /** @hide */ public static final long TRACE_TAG_NETWORK = 1L << 21; private static final long TRACE_TAG_NOT_READY = 1L << 63; private static final int MAX_SECTION_NAME_LEN = 127; Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +240 −188 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; Loading Loading @@ -570,6 +571,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } public void systemReady() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady"); try { if (!isBandwidthControlEnabled()) { Slog.w(TAG, "bandwidth controls disabled, unable to enforce policy"); return; Loading Loading @@ -665,7 +668,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { MANAGE_NETWORK_POLICY, mHandler); // listen for configured wifi networks to be removed final IntentFilter wifiConfigFilter = new IntentFilter(CONFIGURED_NETWORKS_CHANGED_ACTION); final IntentFilter wifiConfigFilter = new IntentFilter(CONFIGURED_NETWORKS_CHANGED_ACTION); mContext.registerReceiver(mWifiConfigReceiver, wifiConfigFilter, null, mHandler); // listen for wifi state changes to catch metered hint Loading @@ -674,14 +678,21 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mContext.registerReceiver(mWifiStateReceiver, wifiStateFilter, null, mHandler); mUsageStats.addAppIdleStateChangeListener(new AppIdleStateChangeListener()); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } final private IUidObserver mUidObserver = new IUidObserver.Stub() { @Override public void onUidStateChanged(int uid, int procState) throws RemoteException { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "onUidStateChanged"); try { synchronized (mUidRulesFirstLock) { updateUidStateUL(uid, procState); } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } @Override public void onUidGone(int uid) throws RemoteException { Loading Loading @@ -2046,7 +2057,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // Must whitelist foreground apps before turning data saver mode on. // TODO: there is no need to iterate through all apps here, just those in the foreground, // so it could call AM to get the UIDs of such apps, and iterate through them instead. updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND); updateRulesForRestrictBackgroundUL(); try { if (!mNetworkManager.setDataSaverModeEnabled(mRestrictBackground)) { Slog.e(TAG, "Could not change Data Saver Mode on NMS to " + mRestrictBackground); Loading Loading @@ -2204,6 +2215,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { public void setDeviceIdleMode(boolean enabled) { mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setDeviceIdleMode"); try { synchronized (mUidRulesFirstLock) { if (mDeviceIdleMode != enabled) { mDeviceIdleMode = enabled; Loading @@ -2219,6 +2232,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private NetworkPolicy findPolicyForNetworkNL(NetworkIdentity ident) { Loading Loading @@ -2505,6 +2521,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #updateRulesForPowerRestrictionsUL(int)} */ private void updateUidStateUL(int uid, int uidState) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateUidStateUL"); try { final int oldUidState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); if (oldUidState != uidState) { // state changed, push updated rules Loading @@ -2525,6 +2543,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } updateNetworkStats(uid, isUidStateForegroundUL(uidState)); } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void removeUidStateUL(int uid) { Loading Loading @@ -2576,8 +2597,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForPowerSaveUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForPowerSaveUL"); try { updateRulesForWhitelistedPowerSaveUL(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, mUidFirewallPowerSaveRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForRestrictPowerUL(int uid) { Loading @@ -2585,8 +2611,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForDeviceIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForDeviceIdleUL"); try { updateRulesForWhitelistedPowerSaveUL(mDeviceIdleMode, FIREWALL_CHAIN_DOZABLE, mUidFirewallDozableRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForDeviceIdleUL(int uid) { Loading Loading @@ -2648,6 +2679,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { final SparseIntArray uidRules = mUidFirewallStandbyRules; uidRules.clear(); Loading @@ -2669,6 +2702,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } setUidFirewallRules(FIREWALL_CHAIN_STANDBY, uidRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForAppIdleUL(int uid) { Loading @@ -2693,9 +2729,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * {@link #mRestrictPower}, or {@link #mDeviceIdleMode} value. */ private void updateRulesForGlobalChangeAL(boolean restrictedNetworksChanged) { long start; if (LOGD) start = System.currentTimeMillis(); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForGlobalChangeAL"); try { updateRulesForRestrictPowerUL(); updateRulesForRestrictBackgroundUL(); Loading @@ -2704,22 +2739,30 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { normalizePoliciesNL(); updateNetworkRulesNL(); } if (LOGD) { final long delta = System.currentTimeMillis() - start; Slog.d(TAG, "updateRulesForGlobalChangeAL(" + restrictedNetworksChanged + ") took " + delta + "ms"); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void updateRulesForRestrictPowerUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL"); try { updateRulesForDeviceIdleUL(); updateRulesForAppIdleUL(); updateRulesForPowerSaveUL(); updateRulesForAllAppsUL(TYPE_RESTRICT_POWER); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private void updateRulesForRestrictBackgroundUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL"); try { updateRulesForAllAppsUL(TYPE_RESTRICT_BACKGROUND); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private static final int TYPE_RESTRICT_BACKGROUND = 1; Loading @@ -2734,6 +2777,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // TODO: refactor / consolidate all those updateXyz methods, there are way too many of them... private void updateRulesForAllAppsUL(@RestrictType int type) { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type); } try { final PackageManager pm = mContext.getPackageManager(); // update rules for all installed applications Loading Loading @@ -2762,6 +2809,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } } private void updateRulesForTempWhitelistChangeUL() { Loading