Merge "Pipe through packageName from Jobs to TimeController expiries"
This commit is contained in:
committed by
Android (Google) Code Review
commit
3bfeb1dcf7
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user