// 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. #ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_ #define CHROME_BROWSER_SYNC_TEST_INTEGRATION_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_ #include #include "base/compiler_specific.h" #include "base/time/time.h" #include "chrome/browser/sync/profile_sync_service_observer.h" #include "chrome/browser/sync/test/integration/status_change_checker.h" class ProfileSyncService; // This class provides some common functionality for StatusChangeCheckers that // observe many ProfileSyncServices. This class is abstract. Its descendants // are expected to provide additional functionality. class MultiClientStatusChangeChecker : public StatusChangeChecker, public ProfileSyncServiceObserver { public: explicit MultiClientStatusChangeChecker( std::vector services); virtual ~MultiClientStatusChangeChecker(); // Called when waiting times out. void OnTimeout(); // Blocks until the exit condition is satisfied or a timeout occurs. void Wait(); // ProfileSyncServiceObserver implementation. virtual void OnStateChanged() OVERRIDE; // StatusChangeChecker implementations and stubs. virtual bool IsExitConditionSatisfied() = 0; virtual std::string GetDebugMessage() const = 0; protected: const std::vector& services() { return services_; } private: std::vector services_; }; #endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_