Merge "Propagate the temp allowlist reason to NPMS." into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3f1e0c9d5a
@@ -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) {
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user