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 @@ -143,6 +143,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 @@ -566,6 +567,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 @@ -661,7 +664,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 @@ -670,14 +674,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 @@ -2049,7 +2060,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 @@ -2145,6 +2156,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 @@ -2160,6 +2173,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private NetworkPolicy findPolicyForNetworkNL(NetworkIdentity ident) { Loading Loading @@ -2434,6 +2450,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 @@ -2454,6 +2472,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 @@ -2505,8 +2526,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 @@ -2514,8 +2540,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 @@ -2577,6 +2608,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { final SparseIntArray uidRules = mUidFirewallStandbyRules; uidRules.clear(); Loading @@ -2598,6 +2631,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } setUidFirewallRules(FIREWALL_CHAIN_STANDBY, uidRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForAppIdleUL(int uid) { Loading @@ -2622,9 +2658,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 @@ -2633,22 +2668,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 @@ -2663,6 +2706,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 @@ -2691,6 +2738,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 @@ -143,6 +143,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 @@ -566,6 +567,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 @@ -661,7 +664,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 @@ -670,14 +674,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 @@ -2049,7 +2060,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 @@ -2145,6 +2156,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 @@ -2160,6 +2173,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } private NetworkPolicy findPolicyForNetworkNL(NetworkIdentity ident) { Loading Loading @@ -2434,6 +2450,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 @@ -2454,6 +2472,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 @@ -2505,8 +2526,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 @@ -2514,8 +2540,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 @@ -2577,6 +2608,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } void updateRulesForAppIdleUL() { Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL"); try { final SparseIntArray uidRules = mUidFirewallStandbyRules; uidRules.clear(); Loading @@ -2598,6 +2631,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } setUidFirewallRules(FIREWALL_CHAIN_STANDBY, uidRules); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } } void updateRuleForAppIdleUL(int uid) { Loading @@ -2622,9 +2658,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 @@ -2633,22 +2668,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 @@ -2663,6 +2706,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 @@ -2691,6 +2738,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