blob: eb0a7e11f41b30dd8ca9834a9b0baa08d24f9e8e [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "platform/scheduler/test/fake_web_task_runner.h"
#include "base/logging.h"
#include "wtf/RefCounted.h"
namespace blink {
namespace scheduler {
class FakeWebTaskRunner::Data : public WTF::ThreadSafeRefCounted<Data> {
public:
Data() : time_(0.0) {}
std::unique_ptr<Task> task_;
double time_;
private:
~Data() {}
friend ThreadSafeRefCounted<Data>;
DISALLOW_COPY_AND_ASSIGN(Data);
};
FakeWebTaskRunner::FakeWebTaskRunner() : data_(adoptRef(new Data)) {}
FakeWebTaskRunner::FakeWebTaskRunner(PassRefPtr<Data> data)
: data_(std::move(data)) {
}
FakeWebTaskRunner::~FakeWebTaskRunner() {
}
void FakeWebTaskRunner::setTime(double new_time) {
data_->time_ = new_time;
}
void FakeWebTaskRunner::postTask(const WebTraceLocation&, Task*) {
NOTREACHED();
}
void FakeWebTaskRunner::postDelayedTask(const WebTraceLocation&,
Task* task,
double) {
data_->task_.reset(task);
}
bool FakeWebTaskRunner::runsTasksOnCurrentThread() {
return true;
}
std::unique_ptr<WebTaskRunner> FakeWebTaskRunner::clone() {
return WTF::wrapUnique(new FakeWebTaskRunner(data_));
}
double FakeWebTaskRunner::virtualTimeSeconds() const {
return data_->time_;
}
double FakeWebTaskRunner::monotonicallyIncreasingVirtualTimeSeconds() const {
return data_->time_;
}
SingleThreadTaskRunner* FakeWebTaskRunner::toSingleThreadTaskRunner() {
NOTREACHED();
return nullptr;
}
} // namespace scheduler
} // namespace blink