Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37ec4b71 authored by Robert Horvath's avatar Robert Horvath
Browse files

Handle `null` LPS policy when LPS is not supported

Bug: 268851195
Test: `dumpsys power` on device without LPS supported
Change-Id: I65936dda9a1fe93183fcaf46f11944ef81d79dc9
parent 559266a7
Loading
Loading
Loading
Loading
+38 −22
Original line number Diff line number Diff line
@@ -812,7 +812,7 @@ public class LowPowerStandbyController {
        }
    }

    @NonNull
    @Nullable
    LowPowerStandbyPolicy getPolicy() {
        synchronized (mLock) {
            if (!mSupportedConfig) {
@@ -914,9 +914,10 @@ public class LowPowerStandbyController {
            final int[] allowlistUids = getAllowlistUidsLocked();
            ipw.print("Allowed UIDs=");
            ipw.println(Arrays.toString(allowlistUids));
            ipw.println();

            final LowPowerStandbyPolicy policy = getPolicy();
            if (policy != null) {
                ipw.println();
                ipw.println("mPolicy:");
                ipw.increaseIndent();
                ipw.print("mIdentifier=");
@@ -928,6 +929,7 @@ public class LowPowerStandbyController {
                ipw.print("mAllowedFeatures=");
                ipw.println(String.join(",", policy.getAllowedFeatures()));
                ipw.decreaseIndent();
            }

            ipw.println();
            ipw.println("UID allowed reasons:");
@@ -967,8 +969,9 @@ public class LowPowerStandbyController {
                proto.write(LowPowerStandbyControllerDumpProto.ALLOWLIST, appId);
            }

            long policyToken = proto.start(LowPowerStandbyControllerDumpProto.POLICY);
            final LowPowerStandbyPolicy policy = getPolicy();
            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);
@@ -978,6 +981,7 @@ public class LowPowerStandbyController {
                    proto.write(LowPowerStandbyPolicyProto.ALLOWED_FEATURES, feature);
                }
                proto.end(policyToken);
            }
            proto.end(token);
        }
    }
@@ -1047,6 +1051,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) {
@@ -1062,6 +1069,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) {
@@ -1077,6 +1087,9 @@ public class LowPowerStandbyController {
        final PackageManager packageManager = mContext.getPackageManager();
        final LowPowerStandbyPolicy policy = getPolicy();
        final List<Integer> appIds = new ArrayList<>();
        if (policy == null) {
            return appIds;
        }

        for (String packageName : policy.getExemptPackages()) {
            try {
@@ -1100,6 +1113,9 @@ public class LowPowerStandbyController {
        final List<UserHandle> userHandles = userManager.getUserHandles(true);
        final ArraySet<Integer> 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++) {