blob: 37db9b3009f59adc2e093e286d7ce8f75808a1b2 [file] [log] [blame]
// Copyright 2014 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 "chrome/browser/sync/test/integration/migration_waiter.h"
#include "base/logging.h"
#include "chrome/browser/sync/test/integration/migration_watcher.h"
MigrationWaiter::MigrationWaiter(syncer::ModelTypeSet expected_types,
MigrationWatcher* watcher)
: watcher_(watcher), expected_types_(expected_types) {
DCHECK(!expected_types_.Empty());
watcher_->set_migration_waiter(this);
}
MigrationWaiter::~MigrationWaiter() {
watcher_->clear_migration_waiter();
}
// Returns true when sync reports that there is no pending migration, and
// migration is complete for all data types in |expected_types_|.
bool MigrationWaiter::IsExitConditionSatisfied() {
return watcher_->GetMigratedTypes().HasAll(expected_types_) &&
!watcher_->HasPendingBackendMigration();
}
std::string MigrationWaiter::GetDebugMessage() const {
return "Waiting to migrate (" + ModelTypeSetToString(expected_types_) +
"); " + "Currently migrated: (" +
ModelTypeSetToString(watcher_->GetMigratedTypes()) + ")";
}
void MigrationWaiter::OnMigrationStateChange() {
CheckExitCondition();
}