Loading apex/jobscheduler/service/aconfig/job.aconfig +0 −10 Original line number Diff line number Diff line Loading @@ -39,16 +39,6 @@ flag { } } flag { name: "create_work_chain_by_default" namespace: "backstage_power" description: "Create a workchain by default when acquiring a wakelock" bug: "352676818" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "remove_user_during_user_switch" namespace: "backstage_power" Loading apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -1521,8 +1521,7 @@ class JobConcurrencyManager { final int numControllers = controllers.size(); final PowerManager.WakeLock wl = mPowerManager.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, jobStatus.getWakelockTag()); wl.setWorkSource(mService.deriveWorkSource( jobStatus.getSourceUid(), jobStatus.getSourcePackageName())); wl.setWorkSource(mService.deriveWorkSource(jobStatus.getSourceUid())); wl.setReferenceCounted(false); // Since the quota controller will start counting from the time prepareForExecutionLocked() // is called, hold a wakelock to make sure the CPU doesn't suspend between that call and Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +7 −13 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ package com.android.server.job; import static android.app.job.JobParameters.OVERRIDE_HANDLE_ABANDONED_JOBS; import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.Manifest.permission.MANAGE_ACTIVITY_TASKS; import static android.app.job.JobParameters.OVERRIDE_HANDLE_ABANDONED_JOBS; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER; import static android.text.format.DateUtils.HOUR_IN_MILLIS; Loading Loading @@ -1633,18 +1633,12 @@ public class JobSchedulerService extends com.android.server.SystemService } @NonNull public WorkSource deriveWorkSource(int sourceUid, @Nullable String sourcePackageName) { if (Flags.createWorkChainByDefault() || WorkSource.isChainedBatteryAttributionEnabled(getContext())) { public WorkSource deriveWorkSource(int sourceUid) { WorkSource ws = new WorkSource(); ws.createWorkChain() .addNode(sourceUid, null) .addNode(Process.SYSTEM_UID, "JobScheduler"); return ws; } else { return sourcePackageName == null ? new WorkSource(sourceUid) : new WorkSource(sourceUid, sourcePackageName); } } @Nullable Loading apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +1 −2 Original line number Diff line number Diff line Loading @@ -447,8 +447,7 @@ public final class JobServiceContext implements ServiceConnection { mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, job.getWakelockTag()); mWakeLock.setWorkSource( mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mWakeLock.setWorkSource(mService.deriveWorkSource(job.getSourceUid())); mWakeLock.setReferenceCounted(false); mWakeLock.acquire(); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java +5 −6 Original line number Diff line number Diff line Loading @@ -114,8 +114,7 @@ public final class TimeController extends StateController { mTrackedJobs.add(job); job.setTrackingController(JobStatus.TRACKING_TIME); WorkSource ws = mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName()); WorkSource ws = mService.deriveWorkSource(job.getSourceUid()); // Only update alarms if the job would be ready with the relevant timing constraint // satisfied. Loading Loading @@ -186,7 +185,7 @@ public final class TimeController extends StateController { } else if (wouldBeReadyWithConstraintLocked(job, JobStatus.CONSTRAINT_DEADLINE)) { // This job's deadline is earlier than the current set alarm. Update the alarm. setDeadlineExpiredAlarmLocked(job.getLatestRunTimeElapsed(), mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mService.deriveWorkSource(job.getSourceUid())); } } if (job.hasTimingDelayConstraint() Loading @@ -202,7 +201,7 @@ public final class TimeController extends StateController { } else if (wouldBeReadyWithConstraintLocked(job, JobStatus.CONSTRAINT_TIMING_DELAY)) { // This job's delay is earlier than the current set alarm. Update the alarm. setDelayExpiredAlarmLocked(job.getEarliestRunTime(), mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mService.deriveWorkSource(job.getSourceUid())); } } } Loading Loading @@ -275,7 +274,7 @@ public final class TimeController extends StateController { } } setDeadlineExpiredAlarmLocked(nextExpiryTime, mService.deriveWorkSource(nextExpiryUid, nextExpiryPackageName)); mService.deriveWorkSource(nextExpiryUid)); } } Loading Loading @@ -337,7 +336,7 @@ public final class TimeController extends StateController { mStateChangedListener.onControllerStateChanged(changedJobs); } setDelayExpiredAlarmLocked(nextDelayTime, mService.deriveWorkSource(nextDelayUid, nextDelayPackageName)); mService.deriveWorkSource(nextDelayUid)); } } Loading Loading
apex/jobscheduler/service/aconfig/job.aconfig +0 −10 Original line number Diff line number Diff line Loading @@ -39,16 +39,6 @@ flag { } } flag { name: "create_work_chain_by_default" namespace: "backstage_power" description: "Create a workchain by default when acquiring a wakelock" bug: "352676818" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "remove_user_during_user_switch" namespace: "backstage_power" Loading
apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -1521,8 +1521,7 @@ class JobConcurrencyManager { final int numControllers = controllers.size(); final PowerManager.WakeLock wl = mPowerManager.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, jobStatus.getWakelockTag()); wl.setWorkSource(mService.deriveWorkSource( jobStatus.getSourceUid(), jobStatus.getSourcePackageName())); wl.setWorkSource(mService.deriveWorkSource(jobStatus.getSourceUid())); wl.setReferenceCounted(false); // Since the quota controller will start counting from the time prepareForExecutionLocked() // is called, hold a wakelock to make sure the CPU doesn't suspend between that call and Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +7 −13 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ package com.android.server.job; import static android.app.job.JobParameters.OVERRIDE_HANDLE_ABANDONED_JOBS; import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.Manifest.permission.MANAGE_ACTIVITY_TASKS; import static android.app.job.JobParameters.OVERRIDE_HANDLE_ABANDONED_JOBS; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER; import static android.text.format.DateUtils.HOUR_IN_MILLIS; Loading Loading @@ -1633,18 +1633,12 @@ public class JobSchedulerService extends com.android.server.SystemService } @NonNull public WorkSource deriveWorkSource(int sourceUid, @Nullable String sourcePackageName) { if (Flags.createWorkChainByDefault() || WorkSource.isChainedBatteryAttributionEnabled(getContext())) { public WorkSource deriveWorkSource(int sourceUid) { WorkSource ws = new WorkSource(); ws.createWorkChain() .addNode(sourceUid, null) .addNode(Process.SYSTEM_UID, "JobScheduler"); return ws; } else { return sourcePackageName == null ? new WorkSource(sourceUid) : new WorkSource(sourceUid, sourcePackageName); } } @Nullable Loading
apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +1 −2 Original line number Diff line number Diff line Loading @@ -447,8 +447,7 @@ public final class JobServiceContext implements ServiceConnection { mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, job.getWakelockTag()); mWakeLock.setWorkSource( mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mWakeLock.setWorkSource(mService.deriveWorkSource(job.getSourceUid())); mWakeLock.setReferenceCounted(false); mWakeLock.acquire(); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java +5 −6 Original line number Diff line number Diff line Loading @@ -114,8 +114,7 @@ public final class TimeController extends StateController { mTrackedJobs.add(job); job.setTrackingController(JobStatus.TRACKING_TIME); WorkSource ws = mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName()); WorkSource ws = mService.deriveWorkSource(job.getSourceUid()); // Only update alarms if the job would be ready with the relevant timing constraint // satisfied. Loading Loading @@ -186,7 +185,7 @@ public final class TimeController extends StateController { } else if (wouldBeReadyWithConstraintLocked(job, JobStatus.CONSTRAINT_DEADLINE)) { // This job's deadline is earlier than the current set alarm. Update the alarm. setDeadlineExpiredAlarmLocked(job.getLatestRunTimeElapsed(), mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mService.deriveWorkSource(job.getSourceUid())); } } if (job.hasTimingDelayConstraint() Loading @@ -202,7 +201,7 @@ public final class TimeController extends StateController { } else if (wouldBeReadyWithConstraintLocked(job, JobStatus.CONSTRAINT_TIMING_DELAY)) { // This job's delay is earlier than the current set alarm. Update the alarm. setDelayExpiredAlarmLocked(job.getEarliestRunTime(), mService.deriveWorkSource(job.getSourceUid(), job.getSourcePackageName())); mService.deriveWorkSource(job.getSourceUid())); } } } Loading Loading @@ -275,7 +274,7 @@ public final class TimeController extends StateController { } } setDeadlineExpiredAlarmLocked(nextExpiryTime, mService.deriveWorkSource(nextExpiryUid, nextExpiryPackageName)); mService.deriveWorkSource(nextExpiryUid)); } } Loading Loading @@ -337,7 +336,7 @@ public final class TimeController extends StateController { mStateChangedListener.onControllerStateChanged(changedJobs); } setDelayExpiredAlarmLocked(nextDelayTime, mService.deriveWorkSource(nextDelayUid, nextDelayPackageName)); mService.deriveWorkSource(nextDelayUid)); } } Loading