Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d942698c authored by Kweku Adams's avatar Kweku Adams
Browse files

Disallow long regular jobs in Doze and battery saver.

There are a subset of regular jobs that could run while the device is
dozing or in battery saver. Make sure we don't let those jobs run longer
than their minimum execution guarantee in those states.

Bug: 171305774
Test: atest CtsJobSchedulerTestCases
Change-Id: Ib2aa328225f0a485b3a62b6be6fc26d18e150519
parent baba0836
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -753,13 +753,22 @@ class JobConcurrencyManager {
            return null;
        }

        // We're over the minimum guaranteed runtime. Stop the job if we're over config limits,
        // there are pending jobs that could replace this one, or the device state is not conducive
        // to long runs.

        if (mPowerManager.isPowerSaveMode()) {
            return "battery saver";
        }
        if (mPowerManager.isDeviceIdleMode()) {
            return "deep doze";
        }

        // Update config in case memory usage has changed significantly.
        updateCounterConfigLocked();

        @WorkType final int workType = context.getRunningJobWorkType();

        // We're over the minimum guaranteed runtime. Stop the job if we're over config limits or
        // there are pending jobs that could replace this one.
        if (mRunningJobs.size() > mWorkTypeConfig.getMaxTotal()
                || mWorkCountTracker.isOverTypeLimit(workType)) {
            return "too many jobs running";
@@ -786,13 +795,6 @@ class JobConcurrencyManager {
                    return "blocking " + workTypeToString(workType) + " queue";
                }
            }

            if (mPowerManager.isPowerSaveMode()) {
                return "battery saver";
            }
            if (mPowerManager.isDeviceIdleMode()) {
                return "deep doze";
            }
        }

        // Easy check. If there are pending jobs of the same work type, then we know that