Add UMAs to measure Android tab state transition
[chromium-blink-merge.git] / media / cast / test / skewed_single_thread_task_runner.h
blob666a348a68846360a40966e1ca916699ffd87222
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.
5 #ifndef MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_
6 #define MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_
8 #include <map>
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"
15 namespace media {
16 namespace cast {
17 namespace test {
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);
28 // Set the delay multiplier to |skew|.
29 void SetSkew(double skew);
31 // base::SingleThreadTaskRunner implementation.
32 bool PostDelayedTask(const tracked_objects::Location& from_here,
33 const base::Closure& task,
34 base::TimeDelta delay) final;
36 bool RunsTasksOnCurrentThread() const final;
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) final;
43 protected:
44 ~SkewedSingleThreadTaskRunner() final;
46 private:
47 double skew_;
48 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
50 DISALLOW_COPY_AND_ASSIGN(SkewedSingleThreadTaskRunner);
53 } // namespace test
54 } // namespace cast
55 } // namespace media
57 #endif // MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_