Home | History | Annotate | Download | only in integration
      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 
     12 class 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.
     18 class 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