// 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 // MessageLoopCurrent::Get()'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 task_runner_; scoped_refptr previous_task_runner_; DISALLOW_COPY_AND_ASSIGN(ScopedMockTimeMessageLoopTaskRunner); }; } // namespace base #endif // BASE_TEST_SCOPED_MOCK_TIME_MESSAGE_LOOP_TASK_RUNNER_H_