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

Commit c26ac495 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Fix timer bug in TrustManagerService." into udc-dev am:...

Merge "Merge "Fix timer bug in TrustManagerService." into udc-dev am: 326dd9c1" into udc-dev-plus-aosp
parents e79b7680 de996df5
Loading
Loading
Loading
Loading
+28 −19
Original line number Diff line number Diff line
@@ -393,6 +393,23 @@ public class TrustManagerService extends SystemService {
                true /* overrideHardTimeout */);
    }

    private void cancelBothTrustableAlarms(int userId) {
        TrustableTimeoutAlarmListener idleTimeout =
                mIdleTrustableTimeoutAlarmListenerForUser.get(
                        userId);
        TrustableTimeoutAlarmListener trustableTimeout =
                mTrustableTimeoutAlarmListenerForUser.get(
                        userId);
        if (idleTimeout != null && idleTimeout.isQueued()) {
            idleTimeout.setQueued(false);
            mAlarmManager.cancel(idleTimeout);
        }
        if (trustableTimeout != null && trustableTimeout.isQueued()) {
            trustableTimeout.setQueued(false);
            mAlarmManager.cancel(trustableTimeout);
        }
    }

    private void handleScheduleTrustedTimeout(int userId, boolean shouldOverride) {
        long when = SystemClock.elapsedRealtime() + TRUST_TIMEOUT_IN_MILLIS;
        TrustedTimeoutAlarmListener alarm = mTrustTimeoutAlarmListenerForUser.get(userId);
@@ -657,6 +674,11 @@ public class TrustManagerService extends SystemService {
                resultCallback.complete(new GrantTrustResult(STATUS_UNLOCKED_BY_GRANT));
            }
        }

        if ((wasTrusted || wasTrustable) && pendingTrustState == TrustState.UNTRUSTED) {
            if (DEBUG) Slog.d(TAG, "Trust was revoked, destroy trustable alarms");
            cancelBothTrustableAlarms(userId);
        }
    }

    private void updateTrustUsuallyManaged(int userId, boolean managed) {
@@ -1908,7 +1930,11 @@ public class TrustManagerService extends SystemService {
                    handleScheduleTrustTimeout(shouldOverride, timeoutType);
                    break;
                case MSG_REFRESH_TRUSTABLE_TIMERS_AFTER_AUTH:
                    TrustableTimeoutAlarmListener trustableAlarm =
                            mTrustableTimeoutAlarmListenerForUser.get(msg.arg1);
                    if (trustableAlarm != null && trustableAlarm.isQueued()) {
                        refreshTrustableTimers(msg.arg1);
                    }
                    break;
            }
        }
@@ -2160,7 +2186,7 @@ public class TrustManagerService extends SystemService {
            TrustedTimeoutAlarmListener otherAlarm;
            boolean otherAlarmPresent;
            if (ENABLE_ACTIVE_UNLOCK_FLAG) {
                cancelBothTrustableAlarms();
                cancelBothTrustableAlarms(mUserId);
                otherAlarm = mTrustTimeoutAlarmListenerForUser.get(mUserId);
                otherAlarmPresent = (otherAlarm != null) && otherAlarm.isQueued();
                if (otherAlarmPresent) {
@@ -2172,23 +2198,6 @@ public class TrustManagerService extends SystemService {
            }
        }

        private void cancelBothTrustableAlarms() {
            TrustableTimeoutAlarmListener idleTimeout =
                    mIdleTrustableTimeoutAlarmListenerForUser.get(
                            mUserId);
            TrustableTimeoutAlarmListener trustableTimeout =
                    mTrustableTimeoutAlarmListenerForUser.get(
                            mUserId);
            if (idleTimeout != null && idleTimeout.isQueued()) {
                idleTimeout.setQueued(false);
                mAlarmManager.cancel(idleTimeout);
            }
            if (trustableTimeout != null && trustableTimeout.isQueued()) {
                trustableTimeout.setQueued(false);
                mAlarmManager.cancel(trustableTimeout);
            }
        }

        private void disableRenewableTrustWhileNonrenewableTrustIsPresent() {
            // if non-renewable trust is running, we need to temporarily prevent
            // renewable trust from being used