xref: /aosp_15_r20/external/cronet/base/test/null_task_runner.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_TEST_NULL_TASK_RUNNER_H_
6*6777b538SAndroid Build Coastguard Worker #define BASE_TEST_NULL_TASK_RUNNER_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "base/compiler_specific.h"
9*6777b538SAndroid Build Coastguard Worker #include "base/functional/callback.h"
10*6777b538SAndroid Build Coastguard Worker #include "base/task/single_thread_task_runner.h"
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker namespace base {
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker // ATTENTION: Prefer SingleThreadTaskEnvironment or TaskEnvironment w/
15*6777b538SAndroid Build Coastguard Worker // ThreadPoolExecutionMode::QUEUED over this class. A NullTaskRunner might seem
16*6777b538SAndroid Build Coastguard Worker // appealing, but not running tasks is under-testing the potential side-effects
17*6777b538SAndroid Build Coastguard Worker // of the code under tests. All tests should be okay if tasks born from their
18*6777b538SAndroid Build Coastguard Worker // actions are run or deleted at a later point.
19*6777b538SAndroid Build Coastguard Worker //
20*6777b538SAndroid Build Coastguard Worker // Helper class for tests that need to provide an implementation of a
21*6777b538SAndroid Build Coastguard Worker // *TaskRunner class but don't actually care about tasks being run.
22*6777b538SAndroid Build Coastguard Worker class NullTaskRunner : public base::SingleThreadTaskRunner {
23*6777b538SAndroid Build Coastguard Worker  public:
24*6777b538SAndroid Build Coastguard Worker   NullTaskRunner();
25*6777b538SAndroid Build Coastguard Worker 
26*6777b538SAndroid Build Coastguard Worker   NullTaskRunner(const NullTaskRunner&) = delete;
27*6777b538SAndroid Build Coastguard Worker   NullTaskRunner& operator=(const NullTaskRunner&) = delete;
28*6777b538SAndroid Build Coastguard Worker 
29*6777b538SAndroid Build Coastguard Worker   bool PostDelayedTask(const Location& from_here,
30*6777b538SAndroid Build Coastguard Worker                        base::OnceClosure task,
31*6777b538SAndroid Build Coastguard Worker                        base::TimeDelta delay) override;
32*6777b538SAndroid Build Coastguard Worker   bool PostNonNestableDelayedTask(const Location& from_here,
33*6777b538SAndroid Build Coastguard Worker                                   base::OnceClosure task,
34*6777b538SAndroid Build Coastguard Worker                                   base::TimeDelta delay) override;
35*6777b538SAndroid Build Coastguard Worker   // Always returns true to avoid triggering DCHECKs.
36*6777b538SAndroid Build Coastguard Worker   bool RunsTasksInCurrentSequence() const override;
37*6777b538SAndroid Build Coastguard Worker 
38*6777b538SAndroid Build Coastguard Worker  protected:
39*6777b538SAndroid Build Coastguard Worker   ~NullTaskRunner() override;
40*6777b538SAndroid Build Coastguard Worker };
41*6777b538SAndroid Build Coastguard Worker 
42*6777b538SAndroid Build Coastguard Worker }  // namespace base
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker #endif  // BASE_TEST_NULL_TASK_RUNNER_H_
45