• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_
6 #define CHROME_BROWSER_SYNC_TEST_INTEGRATION_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_
7 
8 #include <vector>
9 
10 #include "base/compiler_specific.h"
11 #include "base/time/time.h"
12 #include "chrome/browser/sync/profile_sync_service_observer.h"
13 #include "chrome/browser/sync/test/integration/status_change_checker.h"
14 
15 class ProfileSyncService;
16 
17 // This class provides some common functionality for StatusChangeCheckers that
18 // observe many ProfileSyncServices.  This class is abstract.  Its descendants
19 // are expected to provide additional functionality.
20 class MultiClientStatusChangeChecker
21   : public StatusChangeChecker,
22     public ProfileSyncServiceObserver {
23  public:
24   explicit MultiClientStatusChangeChecker(
25       std::vector<ProfileSyncService*> services);
26   virtual ~MultiClientStatusChangeChecker();
27 
28   // Called when waiting times out.
29   void OnTimeout();
30 
31   // Blocks until the exit condition is satisfied or a timeout occurs.
32   void Wait();
33 
34   // ProfileSyncServiceObserver implementation.
35   virtual void OnStateChanged() OVERRIDE;
36 
37   // StatusChangeChecker implementations and stubs.
38   virtual bool IsExitConditionSatisfied() = 0;
39   virtual std::string GetDebugMessage() const = 0;
40 
41  protected:
services()42   const std::vector<ProfileSyncService*>& services() { return services_; }
43 
44  private:
45   std::vector<ProfileSyncService*> services_;
46 };
47 
48 #endif  // CHROME_BROWSER_SYNC_TEST_INTEGRATION_MULTI_CLIENT_STATUS_CHANGE_CHECKER_H_
49