| Index: chrome/browser/sync/test/integration/status_change_checker.cc
|
| diff --git a/chrome/browser/sync/test/integration/status_change_checker.cc b/chrome/browser/sync/test/integration/status_change_checker.cc
|
| index b92b06a9abd3d7f237c9c24070384bcc3952f400..d8cbd1ad61bdf34effda864f4b3f63cb5866ca79 100644
|
| --- a/chrome/browser/sync/test/integration/status_change_checker.cc
|
| +++ b/chrome/browser/sync/test/integration/status_change_checker.cc
|
| @@ -4,6 +4,55 @@
|
|
|
| #include "chrome/browser/sync/test/integration/status_change_checker.h"
|
|
|
| -StatusChangeChecker::StatusChangeChecker() {}
|
| +#include "base/logging.h"
|
| +#include "base/message_loop/message_loop.h"
|
| +#include "base/timer/timer.h"
|
| +
|
| +StatusChangeChecker::StatusChangeChecker()
|
| + : timed_out_(false),
|
| + wait_started_(false) {}
|
|
|
| StatusChangeChecker::~StatusChangeChecker() {}
|
| +
|
| +bool StatusChangeChecker::TimedOut() const {
|
| + return timed_out_;
|
| +}
|
| +
|
| +base::TimeDelta StatusChangeChecker::GetTimeoutDuration() {
|
| + return base::TimeDelta::FromSeconds(45);
|
| +}
|
| +
|
| +void StatusChangeChecker::StartBlockingWait() {
|
| + DCHECK(!wait_started_) << "This class is intended for one use only.";
|
| + wait_started_ = true;
|
| +
|
| + base::OneShotTimer<StatusChangeChecker> timer;
|
| + timer.Start(FROM_HERE,
|
| + GetTimeoutDuration(),
|
| + base::Bind(&StatusChangeChecker::OnTimeout,
|
| + base::Unretained(this)));
|
| +
|
| + {
|
| + base::MessageLoop* loop = base::MessageLoop::current();
|
| + base::MessageLoop::ScopedNestableTaskAllower allow(loop);
|
| + loop->Run();
|
| + }
|
| +}
|
| +
|
| +void StatusChangeChecker::StopWaiting() {
|
| + base::MessageLoop::current()->QuitWhenIdle();
|
| +}
|
| +
|
| +void StatusChangeChecker::CheckExitCondition() {
|
| + DVLOG(1) << "Await -> Checking Condition: " << GetDebugMessage();
|
| + if (IsExitConditionSatisfied()) {
|
| + DVLOG(1) << "Await -> Condition met: " << GetDebugMessage();
|
| + StopWaiting();
|
| + }
|
| +}
|
| +
|
| +void StatusChangeChecker::OnTimeout() {
|
| + DVLOG(1) << "Await -> Timed out: " << GetDebugMessage();
|
| + timed_out_ = true;
|
| + StopWaiting();
|
| +}
|
|
|