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

Commit ec49220b authored by Kweku Adams's avatar Kweku Adams Committed by android-build-merger
Browse files

Merge "Creating separate flags for Time/QuotaControllers." into qt-dev am: 956b55a7

am: 039b72df

Change-Id: I4572704ce157aee9ff59cdaa8610abd2ed171b8d
parents 2999828a 039b72df
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -11955,6 +11955,36 @@ public final class Settings {
         */
        public static final String JOB_SCHEDULER_CONSTANTS = "job_scheduler_constants";
        /**
         * Job scheduler QuotaController specific settings.
         * This is encoded as a key=value list, separated by commas. Ex:
         *
         * "max_job_count_working=5,max_job_count_rare=2"
         *
         * <p>
         * Type: string
         *
         * @hide
         * @see com.android.server.job.JobSchedulerService.Constants
         */
        public static final String JOB_SCHEDULER_QUOTA_CONTROLLER_CONSTANTS =
                "job_scheduler_quota_controller_constants";
        /**
         * Job scheduler TimeController specific settings.
         * This is encoded as a key=value list, separated by commas. Ex:
         *
         * "skip_not_ready_jobs=true5,other_key=2"
         *
         * <p>
         * Type: string
         *
         * @hide
         * @see com.android.server.job.JobSchedulerService.Constants
         */
        public static final String JOB_SCHEDULER_TIME_CONTROLLER_CONSTANTS =
                "job_scheduler_time_controller_constants";
        /**
         * ShortcutManager specific settings.
         * This is encoded as a key=value list, separated by commas. Ex:
+5 −2
Original line number Diff line number Diff line
@@ -501,7 +501,10 @@ message GlobalSettingsProto {
    }
    optional IntentFirewall intent_firewall = 65;

    optional SettingProto job_scheduler_constants = 66;
    optional SettingProto job_scheduler_constants = 66 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto job_scheduler_quota_controller_constants = 149 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto job_scheduler_time_controller_constants = 150 [ (android.privacy).dest = DEST_AUTOMATIC ];

    optional SettingProto keep_profile_in_background = 67 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message LangId {
@@ -1049,5 +1052,5 @@ message GlobalSettingsProto {

    // Please insert fields in alphabetical order and group them into messages
    // if possible (to avoid reaching the method limit).
    // Next tag = 149;
    // Next tag = 151;
}
+2 −0
Original line number Diff line number Diff line
@@ -294,6 +294,8 @@ public class SettingsBackupTest {
                    Settings.Global.INTENT_FIREWALL_UPDATE_CONTENT_URL,
                    Settings.Global.INTENT_FIREWALL_UPDATE_METADATA_URL,
                    Settings.Global.JOB_SCHEDULER_CONSTANTS,
                    Settings.Global.JOB_SCHEDULER_QUOTA_CONTROLLER_CONSTANTS,
                    Settings.Global.JOB_SCHEDULER_TIME_CONTROLLER_CONSTANTS,
                    Settings.Global.KEEP_PROFILE_IN_BACKGROUND,
                    Settings.Global.KERNEL_CPU_THREAD_READER,
                    Settings.Global.LANG_ID_UPDATE_CONTENT_URL,
+6 −0
Original line number Diff line number Diff line
@@ -796,6 +796,12 @@ class SettingsProtoDumpUtil {
        dumpSetting(s, p,
                Settings.Global.JOB_SCHEDULER_CONSTANTS,
                GlobalSettingsProto.JOB_SCHEDULER_CONSTANTS);
        dumpSetting(s, p,
                Settings.Global.JOB_SCHEDULER_QUOTA_CONTROLLER_CONSTANTS,
                GlobalSettingsProto.JOB_SCHEDULER_QUOTA_CONTROLLER_CONSTANTS);
        dumpSetting(s, p,
                Settings.Global.JOB_SCHEDULER_TIME_CONTROLLER_CONSTANTS,
                GlobalSettingsProto.JOB_SCHEDULER_TIME_CONTROLLER_CONSTANTS);
        dumpSetting(s, p,
                Settings.Global.KEEP_PROFILE_IN_BACKGROUND,
                GlobalSettingsProto.KEEP_PROFILE_IN_BACKGROUND);
+17 −243
Original line number Diff line number Diff line
@@ -464,32 +464,6 @@ public class JobSchedulerService extends com.android.server.SystemService
        private static final String KEY_CONN_CONGESTION_DELAY_FRAC = "conn_congestion_delay_frac";
        private static final String KEY_CONN_PREFETCH_RELAX_FRAC = "conn_prefetch_relax_frac";
        private static final String KEY_USE_HEARTBEATS = "use_heartbeats";
        private static final String KEY_TIME_CONTROLLER_SKIP_NOT_READY_JOBS =
                "tc_skip_not_ready_jobs";
        private static final String KEY_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS =
                "qc_allowed_time_per_period_ms";
        private static final String KEY_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS =
                "qc_in_quota_buffer_ms";
        private static final String KEY_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS =
                "qc_window_size_active_ms";
        private static final String KEY_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS =
                "qc_window_size_working_ms";
        private static final String KEY_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS =
                "qc_window_size_frequent_ms";
        private static final String KEY_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS =
                "qc_window_size_rare_ms";
        private static final String KEY_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS =
                "qc_max_execution_time_ms";
        private static final String KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE =
                "qc_max_job_count_active";
        private static final String KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING =
                "qc_max_job_count_working";
        private static final String KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT =
                "qc_max_job_count_frequent";
        private static final String KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE =
                "qc_max_job_count_rare";
        private static final String KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME =
                "qc_max_count_per_allowed_time";

        private static final int DEFAULT_MIN_IDLE_COUNT = 1;
        private static final int DEFAULT_MIN_CHARGING_COUNT = 1;
@@ -511,30 +485,6 @@ public class JobSchedulerService extends com.android.server.SystemService
        private static final float DEFAULT_CONN_CONGESTION_DELAY_FRAC = 0.5f;
        private static final float DEFAULT_CONN_PREFETCH_RELAX_FRAC = 0.5f;
        private static final boolean DEFAULT_USE_HEARTBEATS = false;
        private static final boolean DEFAULT_TIME_CONTROLLER_SKIP_NOT_READY_JOBS = true;
        private static final long DEFAULT_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS =
                10 * 60 * 1000L; // 10 minutes
        private static final long DEFAULT_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS =
                30 * 1000L; // 30 seconds
        private static final long DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS =
                10 * 60 * 1000L; // 10 minutes for ACTIVE -- ACTIVE apps can run jobs at any time
        private static final long DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS =
                2 * 60 * 60 * 1000L; // 2 hours
        private static final long DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS =
                8 * 60 * 60 * 1000L; // 8 hours
        private static final long DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS =
                24 * 60 * 60 * 1000L; // 24 hours
        private static final long DEFAULT_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS =
                4 * 60 * 60 * 1000L; // 4 hours
        private static final int DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE =
                200; // 1200/hr
        private static final int DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING =
                1200; // 600/hr
        private static final int DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT =
                1800; // 225/hr
        private static final int DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE =
                2400; // 100/hr
        private static final int DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME = 20;

        /**
         * Minimum # of idle jobs that must be ready in order to force the JMS to schedule things
@@ -681,97 +631,6 @@ public class JobSchedulerService extends com.android.server.SystemService
         */
        public boolean USE_HEARTBEATS = DEFAULT_USE_HEARTBEATS;

        /**
         * Whether or not TimeController should skip setting wakeup alarms for jobs that aren't
         * ready now.
         */
        public boolean TIME_CONTROLLER_SKIP_NOT_READY_JOBS =
                DEFAULT_TIME_CONTROLLER_SKIP_NOT_READY_JOBS;

        /** How much time each app will have to run jobs within their standby bucket window. */
        public long QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS =
                DEFAULT_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS;

        /**
         * How much time the package should have before transitioning from out-of-quota to in-quota.
         * This should not affect processing if the package is already in-quota.
         */
        public long QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS =
                DEFAULT_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS;

        /**
         * The quota window size of the particular standby bucket. Apps in this standby bucket are
         * expected to run only {@link #QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS} within the past
         * WINDOW_SIZE_MS.
         */
        public long QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS =
                DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS;

        /**
         * The quota window size of the particular standby bucket. Apps in this standby bucket are
         * expected to run only {@link #QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS} within the past
         * WINDOW_SIZE_MS.
         */
        public long QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS =
                DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS;

        /**
         * The quota window size of the particular standby bucket. Apps in this standby bucket are
         * expected to run only {@link #QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS} within the past
         * WINDOW_SIZE_MS.
         */
        public long QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS =
                DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS;

        /**
         * The quota window size of the particular standby bucket. Apps in this standby bucket are
         * expected to run only {@link #QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS} within the past
         * WINDOW_SIZE_MS.
         */
        public long QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS =
                DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS;

        /**
         * The maximum amount of time an app can have its jobs running within a 24 hour window.
         */
        public long QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS =
                DEFAULT_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS;

        /**
         * The maximum number of jobs an app can run within this particular standby bucket's
         * window size.
         */
        public int QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE =
                DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE;

        /**
         * The maximum number of jobs an app can run within this particular standby bucket's
         * window size.
         */
        public int QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING =
                DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING;

        /**
         * The maximum number of jobs an app can run within this particular standby bucket's
         * window size.
         */
        public int QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT =
                DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT;

        /**
         * The maximum number of jobs an app can run within this particular standby bucket's
         * window size.
         */
        public int QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE =
                DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE;

        /**
         * The maximum number of jobs that can run within the past
         * {@link #QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS}.
         */
        public int QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME =
                DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME;

        private final KeyValueListParser mParser = new KeyValueListParser(',');

        void updateConstantsLocked(String value) {
@@ -835,45 +694,6 @@ public class JobSchedulerService extends com.android.server.SystemService
            CONN_PREFETCH_RELAX_FRAC = mParser.getFloat(KEY_CONN_PREFETCH_RELAX_FRAC,
                    DEFAULT_CONN_PREFETCH_RELAX_FRAC);
            USE_HEARTBEATS = mParser.getBoolean(KEY_USE_HEARTBEATS, DEFAULT_USE_HEARTBEATS);
            TIME_CONTROLLER_SKIP_NOT_READY_JOBS = mParser.getBoolean(
                    KEY_TIME_CONTROLLER_SKIP_NOT_READY_JOBS,
                    DEFAULT_TIME_CONTROLLER_SKIP_NOT_READY_JOBS);
            QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS,
                    DEFAULT_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS);
            QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS,
                    DEFAULT_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS);
            QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS,
                    DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS);
            QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS,
                    DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS);
            QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS,
                    DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS);
            QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS,
                    DEFAULT_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS);
            QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS = mParser.getDurationMillis(
                    KEY_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS,
                    DEFAULT_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS);
            QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE = mParser.getInt(
                    KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE,
                    DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE);
            QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING = mParser.getInt(
                    KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING,
                    DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING);
            QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT = mParser.getInt(
                    KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT,
                    DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT);
            QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE = mParser.getInt(
                    KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE,
                    DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE);
            QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME = mParser.getInt(
                    KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME,
                    DEFAULT_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME);
        }

        void dump(IndentingPrintWriter pw) {
@@ -916,37 +736,11 @@ public class JobSchedulerService extends com.android.server.SystemService
            pw.printPair(KEY_CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC).println();
            pw.printPair(KEY_CONN_PREFETCH_RELAX_FRAC, CONN_PREFETCH_RELAX_FRAC).println();
            pw.printPair(KEY_USE_HEARTBEATS, USE_HEARTBEATS).println();
            pw.printPair(KEY_TIME_CONTROLLER_SKIP_NOT_READY_JOBS,
                    TIME_CONTROLLER_SKIP_NOT_READY_JOBS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS,
                    QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS,
                    QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS,
                    QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE).println();
            pw.printPair(KEY_QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME).println();

            pw.decreaseIndent();
        }

        void dump(ProtoOutputStream proto, long fieldId) {
            final long token = proto.start(fieldId);
        void dump(ProtoOutputStream proto) {
            proto.write(ConstantsProto.MIN_IDLE_COUNT, MIN_IDLE_COUNT);
            proto.write(ConstantsProto.MIN_CHARGING_COUNT, MIN_CHARGING_COUNT);
            proto.write(ConstantsProto.MIN_BATTERY_NOT_LOW_COUNT, MIN_BATTERY_NOT_LOW_COUNT);
@@ -974,40 +768,6 @@ public class JobSchedulerService extends com.android.server.SystemService
            proto.write(ConstantsProto.CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC);
            proto.write(ConstantsProto.CONN_PREFETCH_RELAX_FRAC, CONN_PREFETCH_RELAX_FRAC);
            proto.write(ConstantsProto.USE_HEARTBEATS, USE_HEARTBEATS);

            final long tcToken = proto.start(ConstantsProto.TIME_CONTROLLER);
            proto.write(ConstantsProto.TimeController.SKIP_NOT_READY_JOBS,
                    TIME_CONTROLLER_SKIP_NOT_READY_JOBS);
            proto.end(tcToken);

            final long qcToken = proto.start(ConstantsProto.QUOTA_CONTROLLER);
            proto.write(ConstantsProto.QuotaController.ALLOWED_TIME_PER_PERIOD_MS,
                    QUOTA_CONTROLLER_ALLOWED_TIME_PER_PERIOD_MS);
            proto.write(ConstantsProto.QuotaController.IN_QUOTA_BUFFER_MS,
                    QUOTA_CONTROLLER_IN_QUOTA_BUFFER_MS);
            proto.write(ConstantsProto.QuotaController.ACTIVE_WINDOW_SIZE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_ACTIVE_MS);
            proto.write(ConstantsProto.QuotaController.WORKING_WINDOW_SIZE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_WORKING_MS);
            proto.write(ConstantsProto.QuotaController.FREQUENT_WINDOW_SIZE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_FREQUENT_MS);
            proto.write(ConstantsProto.QuotaController.RARE_WINDOW_SIZE_MS,
                    QUOTA_CONTROLLER_WINDOW_SIZE_RARE_MS);
            proto.write(ConstantsProto.QuotaController.MAX_EXECUTION_TIME_MS,
                    QUOTA_CONTROLLER_MAX_EXECUTION_TIME_MS);
            proto.write(ConstantsProto.QuotaController.MAX_JOB_COUNT_ACTIVE,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_ACTIVE);
            proto.write(ConstantsProto.QuotaController.MAX_JOB_COUNT_WORKING,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_WORKING);
            proto.write(ConstantsProto.QuotaController.MAX_JOB_COUNT_FREQUENT,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_FREQUENT);
            proto.write(ConstantsProto.QuotaController.MAX_JOB_COUNT_RARE,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_RARE);
            proto.write(ConstantsProto.QuotaController.MAX_JOB_COUNT_PER_ALLOWED_TIME,
                    QUOTA_CONTROLLER_MAX_JOB_COUNT_PER_ALLOWED_TIME);
            proto.end(qcToken);

            proto.end(token);
        }
    }

@@ -1637,6 +1397,9 @@ public class JobSchedulerService extends com.android.server.SystemService
    public void onBootPhase(int phase) {
        if (PHASE_SYSTEM_SERVICES_READY == phase) {
            mConstantsObserver.start(getContext().getContentResolver());
            for (StateController controller : mControllers) {
                controller.onSystemServicesReady();
            }

            mAppStateTracker = Preconditions.checkNotNull(
                    LocalServices.getService(AppStateTracker.class));
@@ -3448,6 +3211,11 @@ public class JobSchedulerService extends com.android.server.SystemService
        };
        synchronized (mLock) {
            mConstants.dump(pw);
            for (StateController controller : mControllers) {
                pw.increaseIndent();
                controller.dumpConstants(pw);
                pw.decreaseIndent();
            }
            pw.println();

            pw.println("  Heartbeat:");
@@ -3638,7 +3406,13 @@ public class JobSchedulerService extends com.android.server.SystemService
        };

        synchronized (mLock) {
            mConstants.dump(proto, JobSchedulerServiceDumpProto.SETTINGS);
            final long settingsToken = proto.start(JobSchedulerServiceDumpProto.SETTINGS);
            mConstants.dump(proto);
            for (StateController controller : mControllers) {
                controller.dumpConstants(proto);
            }
            proto.end(settingsToken);

            proto.write(JobSchedulerServiceDumpProto.CURRENT_HEARTBEAT, mHeartbeat);
            proto.write(JobSchedulerServiceDumpProto.NEXT_HEARTBEAT, mNextBucketHeartbeat[0]);
            proto.write(JobSchedulerServiceDumpProto.NEXT_HEARTBEAT, mNextBucketHeartbeat[1]);
Loading