diff options
| author | 2018-03-16 18:43:59 -0700 | |
|---|---|---|
| committer | 2018-03-20 11:20:58 -0700 | |
| commit | 33a412b52d49c15e2948f3392b7c619c4e3e308d (patch) | |
| tree | 6700dd0216541ab77b758f4a4dc0a832185e34bc | |
| parent | 27fd8bd327e3f666a126fe58f61f41113a29b112 (diff) | |
ScheduledJobStateChanged: add stop reason
Adds stop reason to scheduled job state changed
Bug: b/71755130
Test: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.atom.UidAtomTests#testScheduledJobState
Test: cts-tradefed run cts-dev -m CtsIncidentHostTestCases -t com.android.server.cts.JobSchedulerIncidentTest
Change-Id: Ic29a5e9160ac258140a52d31bc6210300949545d
| -rw-r--r-- | cmds/statsd/src/atoms.proto | 6 | ||||
| -rw-r--r-- | core/java/android/app/job/JobParameters.java | 11 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 7 | ||||
| -rw-r--r-- | core/proto/android/app/job/enums.proto (renamed from core/proto/android/app/jobparameters.proto) | 25 | ||||
| -rw-r--r-- | core/proto/android/os/batterystats.proto | 4 | ||||
| -rw-r--r-- | core/proto/android/server/jobscheduler.proto | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/job/JobSchedulerService.java | 4 |
7 files changed, 36 insertions, 27 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index f74188f5e69f..79ae23d777b4 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -23,6 +23,7 @@ option java_outer_classname = "AtomsProto"; import "frameworks/base/cmds/statsd/src/atom_field_options.proto"; import "frameworks/base/core/proto/android/app/enums.proto"; +import "frameworks/base/core/proto/android/app/job/enums.proto"; import "frameworks/base/core/proto/android/bluetooth/enums.proto"; import "frameworks/base/core/proto/android/os/enums.proto"; import "frameworks/base/core/proto/android/server/enums.proto"; @@ -362,7 +363,10 @@ message ScheduledJobStateChanged { } optional State state = 3; - // TODO: Consider adding the stopReason (int) + // The reason a job has stopped. + // This is only applicable when the state is FINISHED. + // The default value is CANCELED. + optional android.app.job.StopReasonEnum stop_reason = 4; } /** diff --git a/core/java/android/app/job/JobParameters.java b/core/java/android/app/job/JobParameters.java index c71bf2e65731..d67f11bb6c2b 100644 --- a/core/java/android/app/job/JobParameters.java +++ b/core/java/android/app/job/JobParameters.java @@ -36,15 +36,16 @@ import android.os.RemoteException; public class JobParameters implements Parcelable { /** @hide */ - public static final int REASON_CANCELED = 0; + public static final int REASON_CANCELED = JobProtoEnums.STOP_REASON_CANCELLED; // 0. /** @hide */ - public static final int REASON_CONSTRAINTS_NOT_SATISFIED = 1; + public static final int REASON_CONSTRAINTS_NOT_SATISFIED = + JobProtoEnums.STOP_REASON_CONSTRAINTS_NOT_SATISFIED; //1. /** @hide */ - public static final int REASON_PREEMPT = 2; + public static final int REASON_PREEMPT = JobProtoEnums.STOP_REASON_PREEMPT; // 2. /** @hide */ - public static final int REASON_TIMEOUT = 3; + public static final int REASON_TIMEOUT = JobProtoEnums.STOP_REASON_TIMEOUT; // 3. /** @hide */ - public static final int REASON_DEVICE_IDLE = 4; + public static final int REASON_DEVICE_IDLE = JobProtoEnums.STOP_REASON_DEVICE_IDLE; // 4. /** @hide */ public static String getReasonName(int reason) { diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 06230c1f8145..bbff515646bb 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -19,6 +19,7 @@ package com.android.internal.os; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; +import android.app.job.JobProtoEnums; import android.bluetooth.BluetoothActivityEnergyInfo; import android.bluetooth.UidTraffic; import android.content.ContentResolver; @@ -10045,7 +10046,8 @@ public class BatteryStatsImpl extends BatteryStats { if (t != null) { t.startRunningLocked(elapsedRealtimeMs); StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), null, - name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED); + name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED, + JobProtoEnums.STOP_REASON_CANCELLED); } } @@ -10055,7 +10057,8 @@ public class BatteryStatsImpl extends BatteryStats { t.stopRunningLocked(elapsedRealtimeMs); if (!t.isRunningLocked()) { // only tell statsd if truly stopped StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), null, - name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED); + name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED, + stopReason); } } if (mBsi.mOnBatteryTimeBase.isRunning()) { diff --git a/core/proto/android/app/jobparameters.proto b/core/proto/android/app/job/enums.proto index 4f6a2a247e72..0f14f20e586a 100644 --- a/core/proto/android/app/jobparameters.proto +++ b/core/proto/android/app/job/enums.proto @@ -15,19 +15,18 @@ */ syntax = "proto2"; -option java_multiple_files = true; -package android.app; +package android.app.job; -/** - * An android.app.JobParameters object. - */ -message JobParametersProto { - enum CancelReason { - REASON_CANCELLED = 0; - REASON_CONSTRAINTS_NOT_SATISFIED = 1; - REASON_PREEMPT = 2; - REASON_TIMEOUT = 3; - REASON_DEVICE_IDLE = 4; - } +option java_outer_classname = "JobProtoEnums"; +option java_multiple_files = true; + +// Reasons a job is stopped. +// Primarily used in android.app.job.JobParameters.java. +enum StopReasonEnum { + STOP_REASON_CANCELLED = 0; + STOP_REASON_CONSTRAINTS_NOT_SATISFIED = 1; + STOP_REASON_PREEMPT = 2; + STOP_REASON_TIMEOUT = 3; + STOP_REASON_DEVICE_IDLE = 4; } diff --git a/core/proto/android/os/batterystats.proto b/core/proto/android/os/batterystats.proto index 345c8ef18603..8e98ac9e0e40 100644 --- a/core/proto/android/os/batterystats.proto +++ b/core/proto/android/os/batterystats.proto @@ -19,7 +19,7 @@ option java_multiple_files = true; package android.os; -import "frameworks/base/core/proto/android/app/jobparameters.proto"; +import "frameworks/base/core/proto/android/app/job/enums.proto"; import "frameworks/base/core/proto/android/os/powermanager.proto"; import "frameworks/base/core/proto/android/telephony/enums.proto"; import "frameworks/base/libs/incident/proto/android/privacy.proto"; @@ -637,7 +637,7 @@ message UidProto { message ReasonCount { option (android.msg_privacy).dest = DEST_AUTOMATIC; - optional android.app.JobParametersProto.CancelReason name = 1; + optional android.app.job.StopReasonEnum name = 1; optional int32 count = 2; } repeated ReasonCount reason_count = 2; diff --git a/core/proto/android/server/jobscheduler.proto b/core/proto/android/server/jobscheduler.proto index 9193129def11..122e5c48214d 100644 --- a/core/proto/android/server/jobscheduler.proto +++ b/core/proto/android/server/jobscheduler.proto @@ -20,7 +20,7 @@ package com.android.server.job; option java_multiple_files = true; -import "frameworks/base/core/proto/android/app/jobparameters.proto"; +import "frameworks/base/core/proto/android/app/job/enums.proto"; import "frameworks/base/core/proto/android/content/clipdata.proto"; import "frameworks/base/core/proto/android/content/component_name.proto"; import "frameworks/base/core/proto/android/content/intent.proto"; @@ -465,7 +465,7 @@ message DataSetProto { message StopReasonCount { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional .android.app.JobParametersProto.CancelReason reason = 1; + optional .android.app.job.StopReasonEnum reason = 1; optional int32 count = 2; } repeated StopReasonCount stop_reasons = 9; @@ -516,7 +516,7 @@ message JobPackageHistoryProto { optional int32 job_id = 4; optional string tag = 5 [ (.android.privacy).dest = DEST_EXPLICIT ]; // Only valid for STOP_JOB or STOP_PERIODIC_JOB Events. - optional .android.app.JobParametersProto.CancelReason stop_reason = 6; + optional .android.app.job.StopReasonEnum stop_reason = 6; } repeated HistoryEvent history_event = 1; } diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 0b1f9a65868c..66817fad4e5b 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -29,6 +29,7 @@ import android.app.IUidObserver; import android.app.job.IJobScheduler; import android.app.job.JobInfo; import android.app.job.JobParameters; +import android.app.job.JobProtoEnums; import android.app.job.JobScheduler; import android.app.job.JobService; import android.app.job.JobWorkItem; @@ -880,7 +881,8 @@ public final class JobSchedulerService extends com.android.server.SystemService startTrackingJobLocked(jobStatus, toCancel); StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uId, null, jobStatus.getBatteryName(), - StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED); + StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED, + JobProtoEnums.STOP_REASON_CANCELLED); // If the job is immediately ready to run, then we can just immediately // put it in the pending list and try to schedule it. This is especially |