~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/chromium/src/base/test/test_simple_task_runner.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
#ifndef BASE_TEST_TEST_SIMPLE_TASK_RUNNER_H_
6
 
#define BASE_TEST_TEST_SIMPLE_TASK_RUNNER_H_
7
 
 
8
 
#include <deque>
9
 
 
10
 
#include "base/basictypes.h"
11
 
#include "base/compiler_specific.h"
12
 
#include "base/single_thread_task_runner.h"
13
 
#include "base/test/test_pending_task.h"
14
 
#include "base/threading/thread_checker.h"
15
 
 
16
 
namespace base {
17
 
 
18
 
class TimeDelta;
19
 
 
20
 
// TestSimpleTaskRunner is a simple TaskRunner implementation that can
21
 
// be used for testing.  It implements SingleThreadTaskRunner as that
22
 
// interface implements SequencedTaskRunner, which in turn implements
23
 
// TaskRunner, so TestSimpleTaskRunner can be passed in to a function
24
 
// that accepts any *TaskRunner object.
25
 
//
26
 
// TestSimpleTaskRunner has the following properties which make it simple:
27
 
//
28
 
//   - It is non-thread safe; all member functions must be called on
29
 
//     the same thread.
30
 
//   - Tasks are simply stored in a queue in FIFO order, ignoring delay
31
 
//     and nestability.
32
 
//   - Tasks aren't guaranteed to be destroyed immediately after
33
 
//     they're run.
34
 
//
35
 
// However, TestSimpleTaskRunner allows for reentrancy, in that it
36
 
// handles the running of tasks that in turn call back into itself
37
 
// (e.g., to post more tasks).
38
 
//
39
 
// If you need more complicated properties, consider using this class
40
 
// as a template for writing a test TaskRunner implementation using
41
 
// TestPendingTask.
42
 
//
43
 
// Note that, like any TaskRunner, TestSimpleTaskRunner is
44
 
// ref-counted.
45
 
class TestSimpleTaskRunner : public SingleThreadTaskRunner {
46
 
 public:
47
 
  TestSimpleTaskRunner();
48
 
 
49
 
  // SingleThreadTaskRunner implementation.
50
 
  virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
51
 
                               const Closure& task,
52
 
                               TimeDelta delay) OVERRIDE;
53
 
  virtual bool PostNonNestableDelayedTask(
54
 
      const tracked_objects::Location& from_here,
55
 
      const Closure& task,
56
 
      TimeDelta delay) OVERRIDE;
57
 
 
58
 
  virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
59
 
 
60
 
  const std::deque<TestPendingTask>& GetPendingTasks() const;
61
 
  bool HasPendingTask() const;
62
 
  base::TimeDelta NextPendingTaskDelay() const;
63
 
 
64
 
  // Clears the queue of pending tasks without running them.
65
 
  void ClearPendingTasks();
66
 
 
67
 
  // Runs each current pending task in order and clears the queue.
68
 
  // Any tasks posted by the tasks are not run.
69
 
  void RunPendingTasks();
70
 
 
71
 
  // Runs pending tasks until the queue is empty.
72
 
  void RunUntilIdle();
73
 
 
74
 
 protected:
75
 
  virtual ~TestSimpleTaskRunner();
76
 
 
77
 
 private:
78
 
  ThreadChecker thread_checker_;
79
 
  std::deque<TestPendingTask> pending_tasks_;
80
 
 
81
 
  DISALLOW_COPY_AND_ASSIGN(TestSimpleTaskRunner);
82
 
};
83
 
 
84
 
}  // namespace base
85
 
 
86
 
#endif  // BASE_TEST_TEST_SIMPLE_TASK_RUNNER_H_