1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // Common utilities for Quic tests 6 7 #ifndef NET_QUIC_TEST_TOOLS_TEST_TASK_RUNNER_H_ 8 #define NET_QUIC_TEST_TOOLS_TEST_TASK_RUNNER_H_ 9 10 #include <vector> 11 12 #include "base/basictypes.h" 13 #include "base/task_runner.h" 14 #include "base/test/test_pending_task.h" 15 16 namespace net { 17 18 class MockClock; 19 20 namespace test { 21 22 typedef base::TestPendingTask PostedTask; 23 24 class TestTaskRunner : public base::TaskRunner { 25 public: 26 explicit TestTaskRunner(MockClock* clock); 27 28 // base::TaskRunner implementation. 29 virtual bool PostDelayedTask(const tracked_objects::Location& from_here, 30 const base::Closure& task, 31 base::TimeDelta delay) OVERRIDE; 32 virtual bool RunsTasksOnCurrentThread() const OVERRIDE; 33 34 const std::vector<PostedTask>& GetPostedTasks() const; 35 36 void RunNextTask(); 37 38 protected: 39 virtual ~TestTaskRunner(); 40 41 private: 42 std::vector<PostedTask>::iterator FindNextTask(); 43 44 MockClock* const clock_; 45 std::vector<PostedTask> tasks_; 46 47 DISALLOW_COPY_AND_ASSIGN(TestTaskRunner); 48 }; 49 50 } // namespace test 51 52 } // namespace net 53 54 #endif // NET_QUIC_TEST_TOOLS_TEST_TASK_RUNNER_H_ 55