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#include "media/cast/test/skewed_single_thread_task_runner.h"
6
7#include "base/logging.h"
8#include "base/time/tick_clock.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11namespace media {
12namespace cast {
13namespace test {
14
15SkewedSingleThreadTaskRunner::SkewedSingleThreadTaskRunner(
16    const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) :
17    skew_(1.0),
18    task_runner_(task_runner) {
19}
20
21SkewedSingleThreadTaskRunner::~SkewedSingleThreadTaskRunner() {}
22
23void SkewedSingleThreadTaskRunner::SetSkew(double skew) {
24  skew_ = skew;
25}
26
27bool SkewedSingleThreadTaskRunner::PostDelayedTask(
28    const tracked_objects::Location& from_here,
29    const base::Closure& task,
30    base::TimeDelta delay) {
31  return task_runner_->PostDelayedTask(
32      from_here,
33      task,
34      base::TimeDelta::FromMicroseconds(delay.InMicroseconds() * skew_));
35}
36
37bool SkewedSingleThreadTaskRunner::RunsTasksOnCurrentThread() const {
38  return task_runner_->RunsTasksOnCurrentThread();
39}
40
41bool SkewedSingleThreadTaskRunner::PostNonNestableDelayedTask(
42    const tracked_objects::Location& from_here,
43    const base::Closure& task,
44    base::TimeDelta delay) {
45  return task_runner_->PostNonNestableDelayedTask(
46      from_here,
47      task,
48      base::TimeDelta::FromMicroseconds(delay.InMicroseconds() * skew_));
49}
50
51}  // namespace test
52}  // namespace cast
53}  // namespace media
54