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

Commit c746b381 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

Pipe through packageName from Jobs to TimeController expiries

Bug: 67782010
Test: manual
Change-Id: Icfe9e6a510c94527b239d8b1f330dd2670796d6e
parent 8a0f0ed4
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ public final class TimeController extends StateController {
            maybeUpdateAlarmsLocked(
                    job.hasTimingDelayConstraint() ? job.getEarliestRunTime() : Long.MAX_VALUE,
                    job.hasDeadlineConstraint() ? job.getLatestRunTimeElapsed() : Long.MAX_VALUE,
                    job.getSourceUid());
                    new WorkSource(job.getSourceUid(), job.getSourcePackageName()));
        }
    }

@@ -156,6 +156,7 @@ public final class TimeController extends StateController {
        synchronized (mLock) {
            long nextExpiryTime = Long.MAX_VALUE;
            int nextExpiryUid = 0;
            String nextExpiryPackageName = null;
            final long nowElapsedMillis = SystemClock.elapsedRealtime();

            Iterator<JobStatus> it = mTrackedJobs.iterator();
@@ -171,10 +172,13 @@ public final class TimeController extends StateController {
                } else {  // Sorted by expiry time, so take the next one and stop.
                    nextExpiryTime = job.getLatestRunTimeElapsed();
                    nextExpiryUid = job.getSourceUid();
                    nextExpiryPackageName = job.getSourcePackageName();
                    break;
                }
            }
            setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryUid);
            setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryPackageName != null
                    ? new WorkSource(nextExpiryUid, nextExpiryPackageName)
                    : new WorkSource(nextExpiryUid));
        }
    }

@@ -200,6 +204,7 @@ public final class TimeController extends StateController {
            final long nowElapsedMillis = SystemClock.elapsedRealtime();
            long nextDelayTime = Long.MAX_VALUE;
            int nextDelayUid = 0;
            String nextDelayPackageName = null;
            boolean ready = false;
            Iterator<JobStatus> it = mTrackedJobs.iterator();
            while (it.hasNext()) {
@@ -221,13 +226,16 @@ public final class TimeController extends StateController {
                    if (nextDelayTime > jobDelayTime) {
                        nextDelayTime = jobDelayTime;
                        nextDelayUid = job.getSourceUid();
                        nextDelayPackageName = job.getSourcePackageName();
                    }
                }
            }
            if (ready) {
                mStateChangedListener.onControllerStateChanged();
            }
            setDelayExpiredAlarmLocked(nextDelayTime, nextDelayUid);
            setDelayExpiredAlarmLocked(nextDelayTime, nextDelayPackageName != null
                    ? new WorkSource(nextDelayUid, nextDelayPackageName)
                    : new WorkSource(nextDelayUid));
        }
    }

@@ -241,12 +249,12 @@ public final class TimeController extends StateController {
    }

    private void maybeUpdateAlarmsLocked(long delayExpiredElapsed, long deadlineExpiredElapsed,
            int uid) {
            WorkSource ws) {
        if (delayExpiredElapsed < mNextDelayExpiredElapsedMillis) {
            setDelayExpiredAlarmLocked(delayExpiredElapsed, uid);
            setDelayExpiredAlarmLocked(delayExpiredElapsed, ws);
        }
        if (deadlineExpiredElapsed < mNextJobExpiredElapsedMillis) {
            setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, uid);
            setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, ws);
        }
    }

@@ -255,11 +263,11 @@ public final class TimeController extends StateController {
     * delay will expire.
     * This alarm <b>will</b> wake up the phone.
     */
    private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) {
    private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) {
        alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
        mNextDelayExpiredElapsedMillis = alarmTimeElapsedMillis;
        updateAlarmWithListenerLocked(DELAY_TAG, mNextDelayExpiredListener,
                mNextDelayExpiredElapsedMillis, uid);
                mNextDelayExpiredElapsedMillis, ws);
    }

    /**
@@ -267,11 +275,11 @@ public final class TimeController extends StateController {
     * deadline will expire.
     * This alarm <b>will</b> wake up the phone.
     */
    private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) {
    private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) {
        alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis);
        mNextJobExpiredElapsedMillis = alarmTimeElapsedMillis;
        updateAlarmWithListenerLocked(DEADLINE_TAG, mDeadlineExpiredListener,
                mNextJobExpiredElapsedMillis, uid);
                mNextJobExpiredElapsedMillis, ws);
    }

    private long maybeAdjustAlarmTime(long proposedAlarmTimeElapsedMillis) {
@@ -283,7 +291,7 @@ public final class TimeController extends StateController {
    }

    private void updateAlarmWithListenerLocked(String tag, OnAlarmListener listener,
            long alarmTimeElapsed, int uid) {
            long alarmTimeElapsed, WorkSource ws) {
        ensureAlarmServiceLocked();
        if (alarmTimeElapsed == Long.MAX_VALUE) {
            mAlarmService.cancel(listener);
@@ -292,7 +300,7 @@ public final class TimeController extends StateController {
                Slog.d(TAG, "Setting " + tag + " for: " + alarmTimeElapsed);
            }
            mAlarmService.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmTimeElapsed,
                    AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, new WorkSource(uid));
                    AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, ws);
        }
    }