Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / media / cast / test / skewed_single_thread_task_runner.h
1 // Copyright 2014 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 MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_
6 #define MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_
7
8 #include <map>
9
10 #include "base/basictypes.h"
11 #include "base/single_thread_task_runner.h"
12 #include "base/test/simple_test_tick_clock.h"
13 #include "base/test/test_pending_task.h"
14
15 namespace media {
16 namespace cast {
17 namespace test {
18
19 // This class wraps a SingleThreadTaskRunner, and allows you to scale
20 // the delay for any posted task by a factor. The factor is changed by
21 // calling SetSkew(). A skew of 2.0 means that all delayed task will
22 // have to wait twice as long.
23 class SkewedSingleThreadTaskRunner : public base::SingleThreadTaskRunner {
24  public:
25   explicit SkewedSingleThreadTaskRunner(
26       const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
27
28   // Set the delay multiplier to |skew|.
29   void SetSkew(double skew);
30
31   // base::SingleThreadTaskRunner implementation.
32   bool PostDelayedTask(const tracked_objects::Location& from_here,
33                        const base::Closure& task,
34                        base::TimeDelta delay) override;
35
36   bool RunsTasksOnCurrentThread() const override;
37
38   // This function is currently not used, and will return false.
39   bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
40                                   const base::Closure& task,
41                                   base::TimeDelta delay) override;
42
43  protected:
44   ~SkewedSingleThreadTaskRunner() override;
45
46  private:
47   double skew_;
48   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
49
50   DISALLOW_COPY_AND_ASSIGN(SkewedSingleThreadTaskRunner);
51 };
52
53 }  // namespace test
54 }  // namespace cast
55 }  // namespace media
56
57 #endif  // MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_