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

Commit 63a027a1 authored by Kweku Adams's avatar Kweku Adams Committed by Android (Google) Code Review
Browse files

Merge "Make applied flex constraints configurable." into main

parents 26d431de a6738a47
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1769,7 +1769,8 @@ public final class ConnectivityController extends RestrictingController implemen

    @VisibleForTesting
    class CcConfig {
        private boolean mFlexIsEnabled = FlexibilityController.FcConfig.DEFAULT_FLEXIBILITY_ENABLED;
        private boolean mFlexIsEnabled =
                FlexibilityController.FcConfig.DEFAULT_APPLIED_CONSTRAINTS != 0;
        private boolean mShouldReprocessNetworkCapabilities = false;

        /**
+124 −61

File changed.

Preview size limit exceeded, changes collapsed.

+15 −10
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import static com.android.server.job.JobSchedulerService.NEVER_INDEX;
import static com.android.server.job.JobSchedulerService.RESTRICTED_INDEX;
import static com.android.server.job.JobSchedulerService.WORKING_INDEX;
import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;
import static com.android.server.job.controllers.FlexibilityController.NUM_SYSTEM_WIDE_FLEXIBLE_CONSTRAINTS;
import static com.android.server.job.controllers.FlexibilityController.SYSTEM_WIDE_FLEXIBLE_CONSTRAINTS;

import android.annotation.ElapsedRealtimeLong;
@@ -155,7 +154,7 @@ public final class JobStatus {
    /**
     * Keeps track of how many flexible constraints must be satisfied for the job to execute.
     */
    private final int mNumRequiredFlexibleConstraints;
    private int mNumAppliedFlexibleConstraints;

    /**
     * Number of required flexible constraints that have been dropped.
@@ -697,11 +696,7 @@ public final class JobStatus {
                && satisfiesMinWindowException
                && (numFailures + numSystemStops) != 1
                && lacksSomeFlexibleConstraints) {
            mNumRequiredFlexibleConstraints =
                    NUM_SYSTEM_WIDE_FLEXIBLE_CONSTRAINTS + (mCanApplyTransportAffinities ? 1 : 0);
            requiredConstraints |= CONSTRAINT_FLEXIBLE;
        } else {
            mNumRequiredFlexibleConstraints = 0;
        }

        this.requiredConstraints = requiredConstraints;
@@ -1527,9 +1522,14 @@ public final class JobStatus {
        return (requiredConstraints & CONSTRAINT_FLEXIBLE) != 0;
    }

    /** Returns the number of flexible job constraints being applied to the job. */
    public int getNumAppliedFlexibleConstraints() {
        return mNumAppliedFlexibleConstraints;
    }

    /** Returns the number of flexible job constraints required to be satisfied to execute */
    public int getNumRequiredFlexibleConstraints() {
        return mNumRequiredFlexibleConstraints - mNumDroppedFlexibleConstraints;
        return mNumAppliedFlexibleConstraints - mNumDroppedFlexibleConstraints;
    }

    /**
@@ -2112,9 +2112,14 @@ public final class JobStatus {
    }

    /** Adjusts the number of required flexible constraints by the given number */
    public void adjustNumRequiredFlexibleConstraints(int adjustment) {
        mNumDroppedFlexibleConstraints = Math.max(0, Math.min(mNumRequiredFlexibleConstraints,
                mNumDroppedFlexibleConstraints - adjustment));
    public void setNumAppliedFlexibleConstraints(int count) {
        mNumAppliedFlexibleConstraints = count;
    }

    /** Sets the number of dropped flexible constraints to the given number */
    public void setNumDroppedFlexibleConstraints(int count) {
        mNumDroppedFlexibleConstraints = Math.max(0,
                Math.min(mNumAppliedFlexibleConstraints, count));
    }

    /**
+177 −59

File changed.

Preview size limit exceeded, changes collapsed.

+13 −0
Original line number Diff line number Diff line
@@ -231,6 +231,19 @@ public class JobStatusTest {
        assertTrue(job.canRunInDoze());
    }

    @Test
    public void testFlexibleConstraintCounts() {
        JobStatus js = createJobStatus(new JobInfo.Builder(101, new ComponentName("foo", "bar"))
                .setUserInitiated(false)
                .build());

        js.setNumAppliedFlexibleConstraints(3);
        js.setNumDroppedFlexibleConstraints(2);
        assertEquals(3, js.getNumAppliedFlexibleConstraints());
        assertEquals(2, js.getNumDroppedFlexibleConstraints());
        assertEquals(1, js.getNumRequiredFlexibleConstraints());
    }

    @Test
    public void testIsUserVisibleJob() {
        JobInfo jobInfo = new JobInfo.Builder(101, new ComponentName("foo", "bar"))