diff --git a/services/core/java/com/android/server/power/LowPowerStandbyController.java b/services/core/java/com/android/server/power/LowPowerStandbyController.java index cf59a7cd98277..f248a02a3997c 100644 --- a/services/core/java/com/android/server/power/LowPowerStandbyController.java +++ b/services/core/java/com/android/server/power/LowPowerStandbyController.java @@ -810,7 +810,7 @@ public class LowPowerStandbyController { } } - @NonNull + @Nullable LowPowerStandbyPolicy getPolicy() { synchronized (mLock) { if (!mSupportedConfig) { @@ -912,20 +912,22 @@ public class LowPowerStandbyController { final int[] allowlistUids = getAllowlistUidsLocked(); ipw.print("Allowed UIDs="); ipw.println(Arrays.toString(allowlistUids)); - ipw.println(); final LowPowerStandbyPolicy policy = getPolicy(); - ipw.println("mPolicy:"); - ipw.increaseIndent(); - ipw.print("mIdentifier="); - ipw.println(policy.getIdentifier()); - ipw.print("mExemptPackages="); - ipw.println(String.join(",", policy.getExemptPackages())); - ipw.print("mAllowedReasons="); - ipw.println(lowPowerStandbyAllowedReasonsToString(policy.getAllowedReasons())); - ipw.print("mAllowedFeatures="); - ipw.println(String.join(",", policy.getAllowedFeatures())); - ipw.decreaseIndent(); + if (policy != null) { + ipw.println(); + ipw.println("mPolicy:"); + ipw.increaseIndent(); + ipw.print("mIdentifier="); + ipw.println(policy.getIdentifier()); + ipw.print("mExemptPackages="); + ipw.println(String.join(",", policy.getExemptPackages())); + ipw.print("mAllowedReasons="); + ipw.println(lowPowerStandbyAllowedReasonsToString(policy.getAllowedReasons())); + ipw.print("mAllowedFeatures="); + ipw.println(String.join(",", policy.getAllowedFeatures())); + ipw.decreaseIndent(); + } ipw.println(); ipw.println("UID allowed reasons:"); @@ -965,17 +967,19 @@ public class LowPowerStandbyController { proto.write(LowPowerStandbyControllerDumpProto.ALLOWLIST, appId); } - long policyToken = proto.start(LowPowerStandbyControllerDumpProto.POLICY); final LowPowerStandbyPolicy policy = getPolicy(); - proto.write(LowPowerStandbyPolicyProto.IDENTIFIER, policy.getIdentifier()); - for (String exemptPackage : policy.getExemptPackages()) { - proto.write(LowPowerStandbyPolicyProto.EXEMPT_PACKAGES, exemptPackage); + if (policy != null) { + long policyToken = proto.start(LowPowerStandbyControllerDumpProto.POLICY); + proto.write(LowPowerStandbyPolicyProto.IDENTIFIER, policy.getIdentifier()); + for (String exemptPackage : policy.getExemptPackages()) { + proto.write(LowPowerStandbyPolicyProto.EXEMPT_PACKAGES, exemptPackage); + } + proto.write(LowPowerStandbyPolicyProto.ALLOWED_REASONS, policy.getAllowedReasons()); + for (String feature : policy.getAllowedFeatures()) { + proto.write(LowPowerStandbyPolicyProto.ALLOWED_FEATURES, feature); + } + proto.end(policyToken); } - proto.write(LowPowerStandbyPolicyProto.ALLOWED_REASONS, policy.getAllowedReasons()); - for (String feature : policy.getAllowedFeatures()) { - proto.write(LowPowerStandbyPolicyProto.ALLOWED_FEATURES, feature); - } - proto.end(policyToken); proto.end(token); } } @@ -1045,6 +1049,9 @@ public class LowPowerStandbyController { "Adding to allowlist: uid=" + uid + ", allowedReason=" + allowedReason); } synchronized (mLock) { + if (!mSupportedConfig) { + return; + } if (allowedReason != 0 && !hasAllowedReasonLocked(uid, allowedReason)) { addAllowedReasonLocked(uid, allowedReason); if ((getPolicy().getAllowedReasons() & allowedReason) != 0) { @@ -1060,6 +1067,9 @@ public class LowPowerStandbyController { Slog.i(TAG, "Removing from allowlist: uid=" + uid + ", allowedReason=" + allowedReason); } synchronized (mLock) { + if (!mSupportedConfig) { + return; + } if (allowedReason != 0 && hasAllowedReasonLocked(uid, allowedReason)) { removeAllowedReasonLocked(uid, allowedReason); if ((getPolicy().getAllowedReasons() & allowedReason) != 0) { @@ -1075,6 +1085,9 @@ public class LowPowerStandbyController { final PackageManager packageManager = mContext.getPackageManager(); final LowPowerStandbyPolicy policy = getPolicy(); final List appIds = new ArrayList<>(); + if (policy == null) { + return appIds; + } for (String packageName : policy.getExemptPackages()) { try { @@ -1098,6 +1111,9 @@ public class LowPowerStandbyController { final List userHandles = userManager.getUserHandles(true); final ArraySet uids = new ArraySet<>(mUidAllowedReasons.size()); final LowPowerStandbyPolicy policy = getPolicy(); + if (policy == null) { + return new int[0]; + } final int policyAllowedReasons = policy.getAllowedReasons(); for (int i = 0; i < mUidAllowedReasons.size(); i++) {