summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index 4d5eef2f65f5..1e13dbf9b057 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -1404,8 +1404,31 @@ public class JobSchedulerService extends com.android.server.SystemService
}
mChangedJobList.remove(cancelled);
// Cancel if running.
- mConcurrencyManager.stopJobOnServiceContextLocked(
+ final boolean wasRunning = mConcurrencyManager.stopJobOnServiceContextLocked(
cancelled, reason, internalReasonCode, debugReason);
+ // If the job was running, the JobServiceContext should log with state FINISHED.
+ if (!wasRunning) {
+ FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED,
+ cancelled.getSourceUid(), null, cancelled.getBatteryName(),
+ FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__CANCELLED,
+ internalReasonCode, cancelled.getStandbyBucket(),
+ cancelled.getJobId(),
+ cancelled.hasChargingConstraint(),
+ cancelled.hasBatteryNotLowConstraint(),
+ cancelled.hasStorageNotLowConstraint(),
+ cancelled.hasTimingDelayConstraint(),
+ cancelled.hasDeadlineConstraint(),
+ cancelled.hasIdleConstraint(),
+ cancelled.hasConnectivityConstraint(),
+ cancelled.hasContentTriggerConstraint(),
+ cancelled.isRequestedExpeditedJob(),
+ /* isRunningAsExpeditedJob */ false,
+ reason,
+ cancelled.getJob().isPrefetch(),
+ cancelled.getJob().getPriority(),
+ cancelled.getEffectivePriority(),
+ cancelled.getNumFailures());
+ }
// If this is a replacement, bring in the new version of the job
if (incomingJob != null) {
if (DEBUG) Slog.i(TAG, "Tracking replacement job " + incomingJob.toShortString());