migration_waiter.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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#ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_MIGRATION_WAITER_H_
6#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_MIGRATION_WAITER_H_
7
8#include "base/macros.h"
9#include "chrome/browser/sync/test/integration/status_change_checker.h"
10#include "sync/internal_api/public/base/model_type.h"
11
12class MigrationWatcher;
13
14// Helper class that checks if the sync backend has successfully completed
15// migration for a set of data types.
16//
17// Collaborates with the MigrationWatcher, defined above.
18class MigrationWaiter : public StatusChangeChecker {
19 public:
20  // Initialize a waiter that will wait until |watcher|'s migrated types
21  // match the provided |exptected_types|.
22  MigrationWaiter(syncer::ModelTypeSet expected_types,
23                  MigrationWatcher* watcher);
24
25  virtual ~MigrationWaiter();
26
27  // Implementation of StatusChangeChecker.
28  virtual bool IsExitConditionSatisfied() OVERRIDE;
29  virtual std::string GetDebugMessage() const OVERRIDE;
30
31  // Function to trigger the waiting.
32  void Wait();
33
34  // Callback invoked by our associated waiter when migration state changes.
35  void OnMigrationStateChange();
36
37 private:
38  // The MigrationWatcher we're observering.
39  MigrationWatcher* const watcher_;
40
41  // The set of data types that are expected to eventually undergo migration.
42  const syncer::ModelTypeSet expected_types_;
43
44  DISALLOW_COPY_AND_ASSIGN(MigrationWaiter);
45};
46
47#endif  // CHROME_BROWSER_SYNC_TEST_INTEGRATION_MIGRATION_WAITER_H_
48