Loading apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java +18 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,11 @@ public final class BatteryController extends RestrictingController { */ private final ArraySet<JobStatus> mChangedJobs = new ArraySet<>(); @GuardedBy("mLock") private Boolean mLastReportedStatsdBatteryNotLow = null; @GuardedBy("mLock") private Boolean mLastReportedStatsdStablePower = null; public BatteryController(JobSchedulerService service) { super(service); mPowerTracker = new PowerTracker(); Loading Loading @@ -173,6 +178,19 @@ public final class BatteryController extends RestrictingController { Slog.d(TAG, "maybeReportNewChargingStateLocked: " + powerConnected + "/" + stablePower + "/" + batteryNotLow); } if (mLastReportedStatsdStablePower == null || mLastReportedStatsdStablePower != stablePower) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_CHARGING, stablePower); mLastReportedStatsdStablePower = stablePower; } if (mLastReportedStatsdBatteryNotLow == null || mLastReportedStatsdBatteryNotLow != stablePower) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_BATTERY_NOT_LOW, batteryNotLow); mLastReportedStatsdBatteryNotLow = batteryNotLow; } final long nowElapsed = sElapsedRealtimeClock.millis(); for (int i = mTrackedTasks.size() - 1; i >= 0; i--) { final JobStatus ts = mTrackedTasks.valueAt(i); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +2 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ public final class DeviceIdleJobsController extends StateController { changed = true; } mDeviceIdleMode = enabled; logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_DEVICE_NOT_DOZING, !mDeviceIdleMode); if (DEBUG) Slog.d(TAG, "mDeviceIdleMode=" + mDeviceIdleMode); mDeviceIdleUpdateFunctor.prepare(); if (enabled) { Loading apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java +2 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public final class IdleController extends RestrictingController implements Idlen @Override public void reportNewIdleState(boolean isIdle) { synchronized (mLock) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_IDLE, isIdle); final long nowElapsed = sElapsedRealtimeClock.millis(); for (int i = mTrackedTasks.size()-1; i >= 0; i--) { mTrackedTasks.valueAt(i).setIdleConstraintSatisfied(nowElapsed, isIdle); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +6 −3 Original line number Diff line number Diff line Loading @@ -151,13 +151,12 @@ public final class JobStatus { */ private static final int STATSD_CONSTRAINTS_TO_LOG = CONSTRAINT_CONTENT_TRIGGER | CONSTRAINT_DEADLINE | CONSTRAINT_IDLE | CONSTRAINT_PREFETCH | CONSTRAINT_TARE_WEALTH | CONSTRAINT_TIMING_DELAY | CONSTRAINT_WITHIN_QUOTA; // TODO(b/129954980) // TODO(b/129954980): ensure this doesn't spam statsd, especially at boot private static final boolean STATS_LOG_ENABLED = false; // No override. Loading Loading @@ -1864,7 +1863,7 @@ public final class JobStatus { } /** Returns a {@link JobServerProtoEnums.Constraint} enum value for the given constraint. */ private int getProtoConstraint(int constraint) { static int getProtoConstraint(int constraint) { switch (constraint) { case CONSTRAINT_BACKGROUND_NOT_RESTRICTED: return JobServerProtoEnums.CONSTRAINT_BACKGROUND_NOT_RESTRICTED; Loading @@ -1882,8 +1881,12 @@ public final class JobStatus { return JobServerProtoEnums.CONSTRAINT_DEVICE_NOT_DOZING; case CONSTRAINT_IDLE: return JobServerProtoEnums.CONSTRAINT_IDLE; case CONSTRAINT_PREFETCH: return JobServerProtoEnums.CONSTRAINT_PREFETCH; case CONSTRAINT_STORAGE_NOT_LOW: return JobServerProtoEnums.CONSTRAINT_STORAGE_NOT_LOW; case CONSTRAINT_TARE_WEALTH: return JobServerProtoEnums.CONSTRAINT_TARE_WEALTH; case CONSTRAINT_TIMING_DELAY: return JobServerProtoEnums.CONSTRAINT_TIMING_DELAY; case CONSTRAINT_WITHIN_QUOTA: Loading apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java +10 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.FrameworkStatsLog; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateChangedListener; Loading Loading @@ -165,6 +166,15 @@ public abstract class StateController { return mService.areComponentsInPlaceLocked(jobStatus); } protected void logDeviceWideConstraintStateToStatsd(int constraint, boolean satisfied) { FrameworkStatsLog.write( FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED, JobStatus.getProtoConstraint(constraint), satisfied ? FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED : FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED); } public abstract void dumpControllerStateLocked(IndentingPrintWriter pw, Predicate<JobStatus> predicate); public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId, Loading Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java +18 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,11 @@ public final class BatteryController extends RestrictingController { */ private final ArraySet<JobStatus> mChangedJobs = new ArraySet<>(); @GuardedBy("mLock") private Boolean mLastReportedStatsdBatteryNotLow = null; @GuardedBy("mLock") private Boolean mLastReportedStatsdStablePower = null; public BatteryController(JobSchedulerService service) { super(service); mPowerTracker = new PowerTracker(); Loading Loading @@ -173,6 +178,19 @@ public final class BatteryController extends RestrictingController { Slog.d(TAG, "maybeReportNewChargingStateLocked: " + powerConnected + "/" + stablePower + "/" + batteryNotLow); } if (mLastReportedStatsdStablePower == null || mLastReportedStatsdStablePower != stablePower) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_CHARGING, stablePower); mLastReportedStatsdStablePower = stablePower; } if (mLastReportedStatsdBatteryNotLow == null || mLastReportedStatsdBatteryNotLow != stablePower) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_BATTERY_NOT_LOW, batteryNotLow); mLastReportedStatsdBatteryNotLow = batteryNotLow; } final long nowElapsed = sElapsedRealtimeClock.millis(); for (int i = mTrackedTasks.size() - 1; i >= 0; i--) { final JobStatus ts = mTrackedTasks.valueAt(i); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +2 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ public final class DeviceIdleJobsController extends StateController { changed = true; } mDeviceIdleMode = enabled; logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_DEVICE_NOT_DOZING, !mDeviceIdleMode); if (DEBUG) Slog.d(TAG, "mDeviceIdleMode=" + mDeviceIdleMode); mDeviceIdleUpdateFunctor.prepare(); if (enabled) { Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java +2 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public final class IdleController extends RestrictingController implements Idlen @Override public void reportNewIdleState(boolean isIdle) { synchronized (mLock) { logDeviceWideConstraintStateToStatsd(JobStatus.CONSTRAINT_IDLE, isIdle); final long nowElapsed = sElapsedRealtimeClock.millis(); for (int i = mTrackedTasks.size()-1; i >= 0; i--) { mTrackedTasks.valueAt(i).setIdleConstraintSatisfied(nowElapsed, isIdle); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +6 −3 Original line number Diff line number Diff line Loading @@ -151,13 +151,12 @@ public final class JobStatus { */ private static final int STATSD_CONSTRAINTS_TO_LOG = CONSTRAINT_CONTENT_TRIGGER | CONSTRAINT_DEADLINE | CONSTRAINT_IDLE | CONSTRAINT_PREFETCH | CONSTRAINT_TARE_WEALTH | CONSTRAINT_TIMING_DELAY | CONSTRAINT_WITHIN_QUOTA; // TODO(b/129954980) // TODO(b/129954980): ensure this doesn't spam statsd, especially at boot private static final boolean STATS_LOG_ENABLED = false; // No override. Loading Loading @@ -1864,7 +1863,7 @@ public final class JobStatus { } /** Returns a {@link JobServerProtoEnums.Constraint} enum value for the given constraint. */ private int getProtoConstraint(int constraint) { static int getProtoConstraint(int constraint) { switch (constraint) { case CONSTRAINT_BACKGROUND_NOT_RESTRICTED: return JobServerProtoEnums.CONSTRAINT_BACKGROUND_NOT_RESTRICTED; Loading @@ -1882,8 +1881,12 @@ public final class JobStatus { return JobServerProtoEnums.CONSTRAINT_DEVICE_NOT_DOZING; case CONSTRAINT_IDLE: return JobServerProtoEnums.CONSTRAINT_IDLE; case CONSTRAINT_PREFETCH: return JobServerProtoEnums.CONSTRAINT_PREFETCH; case CONSTRAINT_STORAGE_NOT_LOW: return JobServerProtoEnums.CONSTRAINT_STORAGE_NOT_LOW; case CONSTRAINT_TARE_WEALTH: return JobServerProtoEnums.CONSTRAINT_TARE_WEALTH; case CONSTRAINT_TIMING_DELAY: return JobServerProtoEnums.CONSTRAINT_TIMING_DELAY; case CONSTRAINT_WITHIN_QUOTA: Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java +10 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.FrameworkStatsLog; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateChangedListener; Loading Loading @@ -165,6 +166,15 @@ public abstract class StateController { return mService.areComponentsInPlaceLocked(jobStatus); } protected void logDeviceWideConstraintStateToStatsd(int constraint, boolean satisfied) { FrameworkStatsLog.write( FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED, JobStatus.getProtoConstraint(constraint), satisfied ? FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED : FrameworkStatsLog.DEVICE_WIDE_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED); } public abstract void dumpControllerStateLocked(IndentingPrintWriter pw, Predicate<JobStatus> predicate); public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId, Loading