Merge "Fix Doze FGS job handling."
This commit is contained in:
@@ -1633,12 +1633,9 @@ public class JobSchedulerService extends com.android.server.SystemService
|
||||
for (int i=0; i<mActiveServices.size(); i++) {
|
||||
final JobServiceContext jsc = mActiveServices.get(i);
|
||||
final JobStatus job = jsc.getRunningJobLocked();
|
||||
if (job != null
|
||||
&& !job.canRunInDoze()
|
||||
&& !job.dozeWhitelisted
|
||||
&& !job.uidActive) {
|
||||
// We will report active if we have a job running and it is not an exception
|
||||
// due to being in the foreground or whitelisted.
|
||||
if (job != null && !job.canRunInDoze()) {
|
||||
// We will report active if we have a job running and it does not have an
|
||||
// exception that allows it to run in Doze.
|
||||
active = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ public final class DeviceIdleJobsController extends StateController {
|
||||
pw.print((jobStatus.satisfiedConstraints
|
||||
& JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0
|
||||
? " RUNNABLE" : " WAITING");
|
||||
if (jobStatus.dozeWhitelisted) {
|
||||
if (jobStatus.appHasDozeExemption) {
|
||||
pw.print(" WHITELISTED");
|
||||
}
|
||||
if (mAllowInIdleJobs.contains(jobStatus)) {
|
||||
@@ -273,7 +273,7 @@ public final class DeviceIdleJobsController extends StateController {
|
||||
proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName());
|
||||
proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED,
|
||||
(jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0);
|
||||
proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted);
|
||||
proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.appHasDozeExemption);
|
||||
proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus));
|
||||
|
||||
proto.end(jsToken);
|
||||
|
||||
@@ -267,7 +267,7 @@ public final class JobStatus {
|
||||
private final boolean mHasMediaBackupExemption;
|
||||
|
||||
// Set to true if doze constraint was satisfied due to app being whitelisted.
|
||||
public boolean dozeWhitelisted;
|
||||
boolean appHasDozeExemption;
|
||||
|
||||
// Set to true when the app is "active" per AppStateTracker
|
||||
public boolean uidActive;
|
||||
@@ -1179,7 +1179,8 @@ public final class JobStatus {
|
||||
* in Doze.
|
||||
*/
|
||||
public boolean canRunInDoze() {
|
||||
return (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0
|
||||
return appHasDozeExemption
|
||||
|| (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0
|
||||
|| ((shouldTreatAsExpeditedJob() || startedAsExpeditedJob)
|
||||
&& (mDynamicConstraints & CONSTRAINT_DEVICE_NOT_DOZING) == 0);
|
||||
}
|
||||
@@ -1243,7 +1244,7 @@ public final class JobStatus {
|
||||
/** @return true if the constraint was changed, false otherwise. */
|
||||
boolean setDeviceNotDozingConstraintSatisfied(final long nowElapsed,
|
||||
boolean state, boolean whitelisted) {
|
||||
dozeWhitelisted = whitelisted;
|
||||
appHasDozeExemption = whitelisted;
|
||||
if (setConstraintSatisfied(CONSTRAINT_DEVICE_NOT_DOZING, nowElapsed, state)) {
|
||||
// The constraint was changed. Update the ready flag.
|
||||
mReadyNotDozing = state || canRunInDoze();
|
||||
@@ -2110,7 +2111,7 @@ public final class JobStatus {
|
||||
}
|
||||
pw.decreaseIndent();
|
||||
|
||||
if (dozeWhitelisted) {
|
||||
if (appHasDozeExemption) {
|
||||
pw.println("Doze whitelisted: true");
|
||||
}
|
||||
if (uidActive) {
|
||||
@@ -2323,7 +2324,7 @@ public final class JobStatus {
|
||||
dumpConstraints(proto, JobStatusDumpProto.SATISFIED_CONSTRAINTS, satisfiedConstraints);
|
||||
dumpConstraints(proto, JobStatusDumpProto.UNSATISFIED_CONSTRAINTS,
|
||||
((requiredConstraints | CONSTRAINT_WITHIN_QUOTA) & ~satisfiedConstraints));
|
||||
proto.write(JobStatusDumpProto.IS_DOZE_WHITELISTED, dozeWhitelisted);
|
||||
proto.write(JobStatusDumpProto.IS_DOZE_WHITELISTED, appHasDozeExemption);
|
||||
proto.write(JobStatusDumpProto.IS_UID_ACTIVE, uidActive);
|
||||
proto.write(JobStatusDumpProto.IS_EXEMPTED_FROM_APP_STANDBY,
|
||||
job.isExemptedFromAppStandby());
|
||||
|
||||
Reference in New Issue
Block a user