1*635a8641SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_TASK_SCHEDULER_TEST_UTILS_H_ 6*635a8641SAndroid Build Coastguard Worker #define BASE_TASK_SCHEDULER_TEST_UTILS_H_ 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker #include "base/memory/ref_counted.h" 9*635a8641SAndroid Build Coastguard Worker #include "base/task_runner.h" 10*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/scheduler_worker_observer.h" 11*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/sequence.h" 12*635a8641SAndroid Build Coastguard Worker #include "testing/gmock/include/gmock/gmock.h" 13*635a8641SAndroid Build Coastguard Worker 14*635a8641SAndroid Build Coastguard Worker namespace base { 15*635a8641SAndroid Build Coastguard Worker namespace internal { 16*635a8641SAndroid Build Coastguard Worker 17*635a8641SAndroid Build Coastguard Worker class SchedulerWorkerPool; 18*635a8641SAndroid Build Coastguard Worker struct Task; 19*635a8641SAndroid Build Coastguard Worker 20*635a8641SAndroid Build Coastguard Worker namespace test { 21*635a8641SAndroid Build Coastguard Worker 22*635a8641SAndroid Build Coastguard Worker class MockSchedulerWorkerObserver : public SchedulerWorkerObserver { 23*635a8641SAndroid Build Coastguard Worker public: 24*635a8641SAndroid Build Coastguard Worker MockSchedulerWorkerObserver(); 25*635a8641SAndroid Build Coastguard Worker ~MockSchedulerWorkerObserver(); 26*635a8641SAndroid Build Coastguard Worker 27*635a8641SAndroid Build Coastguard Worker MOCK_METHOD0(OnSchedulerWorkerMainEntry, void()); 28*635a8641SAndroid Build Coastguard Worker MOCK_METHOD0(OnSchedulerWorkerMainExit, void()); 29*635a8641SAndroid Build Coastguard Worker 30*635a8641SAndroid Build Coastguard Worker private: 31*635a8641SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(MockSchedulerWorkerObserver); 32*635a8641SAndroid Build Coastguard Worker }; 33*635a8641SAndroid Build Coastguard Worker 34*635a8641SAndroid Build Coastguard Worker // An enumeration of possible task scheduler TaskRunner types. Used to 35*635a8641SAndroid Build Coastguard Worker // parametrize relevant task_scheduler tests. 36*635a8641SAndroid Build Coastguard Worker enum class ExecutionMode { PARALLEL, SEQUENCED, SINGLE_THREADED }; 37*635a8641SAndroid Build Coastguard Worker 38*635a8641SAndroid Build Coastguard Worker // Creates a Sequence and pushes |task| to it. Returns that sequence. 39*635a8641SAndroid Build Coastguard Worker scoped_refptr<Sequence> CreateSequenceWithTask(Task task); 40*635a8641SAndroid Build Coastguard Worker 41*635a8641SAndroid Build Coastguard Worker // Creates a TaskRunner that posts tasks to |worker_pool| with the 42*635a8641SAndroid Build Coastguard Worker // |execution_mode| execution mode and the WithBaseSyncPrimitives() trait. 43*635a8641SAndroid Build Coastguard Worker // Caveat: this does not support ExecutionMode::SINGLE_THREADED. 44*635a8641SAndroid Build Coastguard Worker scoped_refptr<TaskRunner> CreateTaskRunnerWithExecutionMode( 45*635a8641SAndroid Build Coastguard Worker SchedulerWorkerPool* worker_pool, 46*635a8641SAndroid Build Coastguard Worker test::ExecutionMode execution_mode); 47*635a8641SAndroid Build Coastguard Worker 48*635a8641SAndroid Build Coastguard Worker } // namespace test 49*635a8641SAndroid Build Coastguard Worker } // namespace internal 50*635a8641SAndroid Build Coastguard Worker } // namespace base 51*635a8641SAndroid Build Coastguard Worker 52*635a8641SAndroid Build Coastguard Worker #endif // BASE_TASK_SCHEDULER_TEST_UTILS_H_ 53