| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_TEST_SCOPED_MOCK_TIME_MESSAGE_LOOP_TASK_RUNNER_H_ |
| #define BASE_TEST_SCOPED_MOCK_TIME_MESSAGE_LOOP_TASK_RUNNER_H_ |
| |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/test/test_mock_time_task_runner.h" |
| |
| namespace base { |
| |
| class SingleThreadTaskRunner; |
| |
| // A scoped wrapper around TestMockTimeTaskRunner that replaces |
| // MessageLoop::current()'s task runner (and consequently |
| // ThreadTaskRunnerHandle) with a TestMockTimeTaskRunner and resets it back at |
| // the end of its scope. |
| // |
| // Note: RunLoop() will not work in the scope of a |
| // ScopedMockTimeMessageLoopTaskRunner, the underlying TestMockTimeTaskRunner's |
| // methods must be used instead to pump tasks. |
| // |
| // DEPRECATED: Use a TestMockTimeTaskRunner::Type::kBoundToThread instead of a |
| // MessageLoop + ScopedMockTimeMessageLoopTaskRunner. |
| // TODO(gab): Remove usage of this API and delete it. |
| class ScopedMockTimeMessageLoopTaskRunner { |
| public: |
| ScopedMockTimeMessageLoopTaskRunner(); |
| ~ScopedMockTimeMessageLoopTaskRunner(); |
| |
| TestMockTimeTaskRunner* task_runner() { return task_runner_.get(); } |
| TestMockTimeTaskRunner* operator->() { return task_runner_.get(); } |
| |
| private: |
| const scoped_refptr<TestMockTimeTaskRunner> task_runner_; |
| scoped_refptr<SingleThreadTaskRunner> previous_task_runner_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ScopedMockTimeMessageLoopTaskRunner); |
| }; |
| |
| } // namespace base |
| |
| #endif // BASE_TEST_SCOPED_MOCK_TIME_MESSAGE_LOOP_TASK_RUNNER_H_ |