Loading apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +18 −9 Original line number Diff line number Diff line Loading @@ -1536,13 +1536,14 @@ public class DeviceIdleController extends SystemService @VisibleForTesting static final int MSG_REPORT_STATIONARY_STATUS = 7; private static final int MSG_FINISH_IDLE_OP = 8; private static final int MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS = 9; private static final int MSG_SEND_CONSTRAINT_MONITORING = 10; @VisibleForTesting static final int MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR = 11; @VisibleForTesting static final int MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR = 12; private static final int MSG_REPORT_TEMP_APP_WHITELIST_CHANGED = 13; private static final int MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS = 14; private static final int MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS = 15; final class MyHandler extends Handler { MyHandler(Looper looper) { Loading Loading @@ -1659,10 +1660,17 @@ public class DeviceIdleController extends SystemService } } } break; case MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS: { case MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS: { final int appId = msg.arg1; final boolean added = (msg.arg2 == 1); mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, added); final int reasonCode = msg.arg2; final String reason = (String) msg.obj; mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true, reasonCode, reason); } break; case MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS: { final int appId = msg.arg1; mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, false, REASON_UNKNOWN, /* reason= */ null); } break; case MSG_SEND_CONSTRAINT_MONITORING: { final IDeviceIdleConstraint constraint = (IDeviceIdleConstraint) msg.obj; Loading Loading @@ -2811,14 +2819,15 @@ public class DeviceIdleController extends SystemService // NPMS needs to update its state synchronously in certain situations so we // can't have it use the TempAllowlistChangeListener path right now. // TODO: see if there's a way to simplify/consolidate mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS, appId, 1) .sendToTarget(); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS, appId, reasonCode, reason).sendToTarget(); } reportTempWhitelistChangedLocked(uid, true); } } if (informWhitelistChanged) { mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true); mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true, reasonCode, reason); } } Loading Loading @@ -2890,8 +2899,8 @@ public class DeviceIdleController extends SystemService final int appId = UserHandle.getAppId(uid); updateTempWhitelistAppIdsLocked(uid, false, 0, 0, REASON_UNKNOWN, reason, INVALID_UID); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS, appId, 0) .sendToTarget(); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS, appId, /* unused= */ 0).sendToTarget(); reportTempWhitelistChangedLocked(uid, false); try { mBatteryStats.noteEvent(BatteryStats.HistoryItem.EVENT_TEMP_WHITELIST_FINISH, Loading services/core/java/com/android/server/net/NetworkPolicyLogger.java +14 −8 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_RESTRICTED; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY; import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT; import static android.os.PowerExemptionManager.reasonCodeToString; import static android.os.Process.INVALID_UID; import android.app.ActivityManager; Loading Loading @@ -192,13 +193,12 @@ public class NetworkPolicyLogger { } } void tempPowerSaveWlChanged(int appId, boolean added) { void tempPowerSaveWlChanged(int appId, boolean added, int reasonCode, String reason) { synchronized (mLock) { if (LOGV || appId == UserHandle.getAppId(mDebugUid)) { Slog.v(TAG, getTempPowerSaveWlChangedLog(appId, added)); Slog.v(TAG, getTempPowerSaveWlChangedLog(appId, added, reasonCode, reason)); } mEventsBuffer.tempPowerSaveWlChanged(appId, added); mEventsBuffer.tempPowerSaveWlChanged(appId, added, reasonCode, reason); } } Loading Loading @@ -326,8 +326,10 @@ public class NetworkPolicyLogger { return "Parole state: " + paroleOn; } private static String getTempPowerSaveWlChangedLog(int appId, boolean added) { return "temp-power-save whitelist for " + appId + " changed to: " + added; private static String getTempPowerSaveWlChangedLog(int appId, boolean added, int reasonCode, String reason) { return "temp-power-save whitelist for " + appId + " changed to: " + added + "; reason=" + reasonCodeToString(reasonCode) + " <" + reason + ">"; } private static String getUidFirewallRuleChangedLog(int chain, int uid, int rule) { Loading Loading @@ -497,14 +499,17 @@ public class NetworkPolicyLogger { data.timeStamp = System.currentTimeMillis(); } public void tempPowerSaveWlChanged(int appId, boolean added) { public void tempPowerSaveWlChanged(int appId, boolean added, int reasonCode, String reason) { final Data data = getNextSlot(); if (data == null) return; data.reset(); data.type = EVENT_TEMP_POWER_SAVE_WL_CHANGED; data.ifield1 = appId; data.ifield2 = reasonCode; data.bfield1 = added; data.sfield1 = reason; data.timeStamp = System.currentTimeMillis(); } Loading Loading @@ -571,7 +576,8 @@ public class NetworkPolicyLogger { case EVENT_PAROLE_STATE_CHANGED: return getParoleStateChanged(data.bfield1); case EVENT_TEMP_POWER_SAVE_WL_CHANGED: return getTempPowerSaveWlChangedLog(data.ifield1, data.bfield1); return getTempPowerSaveWlChangedLog(data.ifield1, data.bfield1, data.ifield2, data.sfield1); case EVENT_UID_FIREWALL_RULE_CHANGED: return getUidFirewallRuleChangedLog(data.ifield1, data.ifield2, data.ifield3); case EVENT_FIREWALL_CHAIN_ENABLED: Loading services/core/java/com/android/server/net/NetworkPolicyManagerInternal.java +8 −2 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package com.android.server.net; import android.annotation.NonNull; import android.annotation.Nullable; import android.net.Network; import android.net.NetworkTemplate; import android.net.netstats.provider.NetworkStatsProvider; import android.os.PowerExemptionManager.ReasonCode; import android.telephony.SubscriptionPlan; import java.util.Set; Loading @@ -41,9 +43,13 @@ public abstract class NetworkPolicyManagerInternal { * that network rules for that appId can be updated. * * @param appId The appId which has been updated in the allowlist. * @param added Denotes whether the {@param appId} has been added or removed from the allowlist. * @param added Denotes whether the {@code appId} has been added or removed from the allowlist. * @param reasonCode one of {@link ReasonCode} indicating the reason for the change. * Only valid when {@code added} is {@code true}. * @param reason an optional human-readable reason explaining why the app is temp allow-listed. */ public abstract void onTempPowerSaveWhitelistChange(int appId, boolean added); public abstract void onTempPowerSaveWhitelistChange(int appId, boolean added, @ReasonCode int reasonCode, @Nullable String reason); /** * Return the active {@link SubscriptionPlan} for the given network. Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +4 −2 Original line number Diff line number Diff line Loading @@ -211,6 +211,7 @@ import android.os.Message; import android.os.MessageQueue.IdleHandler; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.PowerExemptionManager.ReasonCode; import android.os.PowerManager; import android.os.PowerManager.ServiceType; import android.os.PowerManagerInternal; Loading Loading @@ -5743,12 +5744,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } @Override public void onTempPowerSaveWhitelistChange(int appId, boolean added) { public void onTempPowerSaveWhitelistChange(int appId, boolean added, @ReasonCode int reasonCode, @Nullable String reason) { synchronized (mUidRulesFirstLock) { if (!mSystemReady) { return; } mLogger.tempPowerSaveWlChanged(appId, added); mLogger.tempPowerSaveWlChanged(appId, added, reasonCode, reason); if (added) { mPowerSaveTempWhitelistAppIds.put(appId, true); } else { Loading Loading
apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +18 −9 Original line number Diff line number Diff line Loading @@ -1536,13 +1536,14 @@ public class DeviceIdleController extends SystemService @VisibleForTesting static final int MSG_REPORT_STATIONARY_STATUS = 7; private static final int MSG_FINISH_IDLE_OP = 8; private static final int MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS = 9; private static final int MSG_SEND_CONSTRAINT_MONITORING = 10; @VisibleForTesting static final int MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR = 11; @VisibleForTesting static final int MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR = 12; private static final int MSG_REPORT_TEMP_APP_WHITELIST_CHANGED = 13; private static final int MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS = 14; private static final int MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS = 15; final class MyHandler extends Handler { MyHandler(Looper looper) { Loading Loading @@ -1659,10 +1660,17 @@ public class DeviceIdleController extends SystemService } } } break; case MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS: { case MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS: { final int appId = msg.arg1; final boolean added = (msg.arg2 == 1); mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, added); final int reasonCode = msg.arg2; final String reason = (String) msg.obj; mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true, reasonCode, reason); } break; case MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS: { final int appId = msg.arg1; mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, false, REASON_UNKNOWN, /* reason= */ null); } break; case MSG_SEND_CONSTRAINT_MONITORING: { final IDeviceIdleConstraint constraint = (IDeviceIdleConstraint) msg.obj; Loading Loading @@ -2811,14 +2819,15 @@ public class DeviceIdleController extends SystemService // NPMS needs to update its state synchronously in certain situations so we // can't have it use the TempAllowlistChangeListener path right now. // TODO: see if there's a way to simplify/consolidate mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS, appId, 1) .sendToTarget(); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_ADDED_TO_NPMS, appId, reasonCode, reason).sendToTarget(); } reportTempWhitelistChangedLocked(uid, true); } } if (informWhitelistChanged) { mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true); mNetworkPolicyManagerInternal.onTempPowerSaveWhitelistChange(appId, true, reasonCode, reason); } } Loading Loading @@ -2890,8 +2899,8 @@ public class DeviceIdleController extends SystemService final int appId = UserHandle.getAppId(uid); updateTempWhitelistAppIdsLocked(uid, false, 0, 0, REASON_UNKNOWN, reason, INVALID_UID); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_CHANGED_TO_NPMS, appId, 0) .sendToTarget(); mHandler.obtainMessage(MSG_REPORT_TEMP_APP_WHITELIST_REMOVED_TO_NPMS, appId, /* unused= */ 0).sendToTarget(); reportTempWhitelistChangedLocked(uid, false); try { mBatteryStats.noteEvent(BatteryStats.HistoryItem.EVENT_TEMP_WHITELIST_FINISH, Loading
services/core/java/com/android/server/net/NetworkPolicyLogger.java +14 −8 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_RESTRICTED; import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY; import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT; import static android.os.PowerExemptionManager.reasonCodeToString; import static android.os.Process.INVALID_UID; import android.app.ActivityManager; Loading Loading @@ -192,13 +193,12 @@ public class NetworkPolicyLogger { } } void tempPowerSaveWlChanged(int appId, boolean added) { void tempPowerSaveWlChanged(int appId, boolean added, int reasonCode, String reason) { synchronized (mLock) { if (LOGV || appId == UserHandle.getAppId(mDebugUid)) { Slog.v(TAG, getTempPowerSaveWlChangedLog(appId, added)); Slog.v(TAG, getTempPowerSaveWlChangedLog(appId, added, reasonCode, reason)); } mEventsBuffer.tempPowerSaveWlChanged(appId, added); mEventsBuffer.tempPowerSaveWlChanged(appId, added, reasonCode, reason); } } Loading Loading @@ -326,8 +326,10 @@ public class NetworkPolicyLogger { return "Parole state: " + paroleOn; } private static String getTempPowerSaveWlChangedLog(int appId, boolean added) { return "temp-power-save whitelist for " + appId + " changed to: " + added; private static String getTempPowerSaveWlChangedLog(int appId, boolean added, int reasonCode, String reason) { return "temp-power-save whitelist for " + appId + " changed to: " + added + "; reason=" + reasonCodeToString(reasonCode) + " <" + reason + ">"; } private static String getUidFirewallRuleChangedLog(int chain, int uid, int rule) { Loading Loading @@ -497,14 +499,17 @@ public class NetworkPolicyLogger { data.timeStamp = System.currentTimeMillis(); } public void tempPowerSaveWlChanged(int appId, boolean added) { public void tempPowerSaveWlChanged(int appId, boolean added, int reasonCode, String reason) { final Data data = getNextSlot(); if (data == null) return; data.reset(); data.type = EVENT_TEMP_POWER_SAVE_WL_CHANGED; data.ifield1 = appId; data.ifield2 = reasonCode; data.bfield1 = added; data.sfield1 = reason; data.timeStamp = System.currentTimeMillis(); } Loading Loading @@ -571,7 +576,8 @@ public class NetworkPolicyLogger { case EVENT_PAROLE_STATE_CHANGED: return getParoleStateChanged(data.bfield1); case EVENT_TEMP_POWER_SAVE_WL_CHANGED: return getTempPowerSaveWlChangedLog(data.ifield1, data.bfield1); return getTempPowerSaveWlChangedLog(data.ifield1, data.bfield1, data.ifield2, data.sfield1); case EVENT_UID_FIREWALL_RULE_CHANGED: return getUidFirewallRuleChangedLog(data.ifield1, data.ifield2, data.ifield3); case EVENT_FIREWALL_CHAIN_ENABLED: Loading
services/core/java/com/android/server/net/NetworkPolicyManagerInternal.java +8 −2 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package com.android.server.net; import android.annotation.NonNull; import android.annotation.Nullable; import android.net.Network; import android.net.NetworkTemplate; import android.net.netstats.provider.NetworkStatsProvider; import android.os.PowerExemptionManager.ReasonCode; import android.telephony.SubscriptionPlan; import java.util.Set; Loading @@ -41,9 +43,13 @@ public abstract class NetworkPolicyManagerInternal { * that network rules for that appId can be updated. * * @param appId The appId which has been updated in the allowlist. * @param added Denotes whether the {@param appId} has been added or removed from the allowlist. * @param added Denotes whether the {@code appId} has been added or removed from the allowlist. * @param reasonCode one of {@link ReasonCode} indicating the reason for the change. * Only valid when {@code added} is {@code true}. * @param reason an optional human-readable reason explaining why the app is temp allow-listed. */ public abstract void onTempPowerSaveWhitelistChange(int appId, boolean added); public abstract void onTempPowerSaveWhitelistChange(int appId, boolean added, @ReasonCode int reasonCode, @Nullable String reason); /** * Return the active {@link SubscriptionPlan} for the given network. Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +4 −2 Original line number Diff line number Diff line Loading @@ -211,6 +211,7 @@ import android.os.Message; import android.os.MessageQueue.IdleHandler; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.PowerExemptionManager.ReasonCode; import android.os.PowerManager; import android.os.PowerManager.ServiceType; import android.os.PowerManagerInternal; Loading Loading @@ -5743,12 +5744,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } @Override public void onTempPowerSaveWhitelistChange(int appId, boolean added) { public void onTempPowerSaveWhitelistChange(int appId, boolean added, @ReasonCode int reasonCode, @Nullable String reason) { synchronized (mUidRulesFirstLock) { if (!mSystemReady) { return; } mLogger.tempPowerSaveWlChanged(appId, added); mLogger.tempPowerSaveWlChanged(appId, added, reasonCode, reason); if (added) { mPowerSaveTempWhitelistAppIds.put(appId, true); } else { Loading