tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

delay_policy.h (1510B)


      1 // Copyright 2021 The Chromium Authors
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BASE_TASK_DELAY_POLICY_H_
      6 #define BASE_TASK_DELAY_POLICY_H_
      7 
      8 #include "base/time/time.h"
      9 
     10 namespace base {
     11 namespace subtle {
     12 
     13 // Policies affecting how a delayed task is scheduled when a TimeTicks is
     14 // specified.
     15 enum class DelayPolicy {
     16  // A delayed task with kFlexibleNoSooner may not run any sooner than the
     17  // specified time, but might run slightly after. This is the behavior implied
     18  // by PostDelayedTask.
     19  kFlexibleNoSooner,
     20  // A delayed task with kFlexiblePreferEarly means the task should attempt to
     21  // run near the deadline and preferably a little bit before than after if the
     22  // scheduler applies slack.
     23  kFlexiblePreferEarly,
     24  // A delayed task with kPrecise means it may not run any sooner than the
     25  // specified time and preferably as close as possible to the specified time,
     26  // which may affect scheduling policies if the scheduler usually applies
     27  // slack.
     28  kPrecise,
     29 };
     30 
     31 inline DelayPolicy MaybeOverrideDelayPolicy(DelayPolicy delay_policy,
     32                                            TimeDelta delay,
     33                                            TimeDelta max_precise_delay) {
     34  if (delay >= max_precise_delay && delay_policy == DelayPolicy::kPrecise) {
     35    return DelayPolicy::kFlexibleNoSooner;
     36  }
     37  return delay_policy;
     38 }
     39 
     40 }  // namespace subtle
     41 }  // namespace base
     42 
     43 #endif  // BASE_TASK_SEQUENCED_TASK_RUNNER_H_