blob: 552b6ae6fc1b45280be23c96a2f5939acede8123 [file] [log] [blame]
// Copyright (c) 2012 The Chromium OS 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 "power_manager/common/test_main_loop_runner.h"
#include <base/check.h>
#include <base/location.h>
#include <base/logging.h>
#include <base/run_loop.h>
#include "power_manager/common/util.h"
namespace power_manager {
TestMainLoopRunner::TestMainLoopRunner() : timed_out_(false) {}
TestMainLoopRunner::~TestMainLoopRunner() {}
bool TestMainLoopRunner::StartLoop(base::TimeDelta timeout_delay) {
CHECK(!runner_.get()) << "Loop is already running";
timed_out_ = false;
timeout_timer_.Start(FROM_HERE, timeout_delay, this,
&TestMainLoopRunner::OnTimeout);
runner_.reset(new base::RunLoop);
runner_->Run();
runner_.reset();
return !timed_out_;
}
void TestMainLoopRunner::StopLoop() {
CHECK(runner_.get()) << "Loop isn't running";
timeout_timer_.Stop();
runner_->Quit();
}
bool TestMainLoopRunner::LoopIsRunning() const {
return runner_.get();
}
void TestMainLoopRunner::OnTimeout() {
CHECK(runner_.get());
timed_out_ = true;
runner_->Quit();
}
} // namespace power_manager