• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_PROFILE_SYNC_SERVICE_BASE_H_
6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_BASE_H_
7 
8 #include "chrome/browser/sync/profile_sync_service_observer.h"
9 #include "sync/internal_api/public/base/model_type.h"
10 
11 namespace content {
12 class BrowserContext;
13 }
14 
15 // API for ProfileSyncService.
16 class ProfileSyncServiceBase {
17  public:
18   // Retrieve the sync service to use in the given context.
19   // Returns NULL if sync is not enabled for the context.
20   static ProfileSyncServiceBase* FromBrowserContext(
21       content::BrowserContext* context);
22 
23   typedef ProfileSyncServiceObserver Observer;
24 
~ProfileSyncServiceBase()25   virtual ~ProfileSyncServiceBase() {}
26 
27   // Whether sync is enabled by user or not.
28   virtual bool HasSyncSetupCompleted() const = 0;
29 
30   // Returns whether processing changes is allowed.  Check this before doing
31   // any model-modifying operations.
32   virtual bool ShouldPushChanges() = 0;
33 
34   // Get the set of current active data types (those chosen or configured by
35   // the user which have not also encountered a runtime error).
36   virtual syncer::ModelTypeSet GetActiveDataTypes() const = 0;
37 
38   // Adds/removes an observer. ProfileSyncServiceBase does not take
39   // ownership of the observer.
40   virtual void AddObserver(Observer* observer) = 0;
41   virtual void RemoveObserver(Observer* observer) = 0;
42 
43   // Returns true if |observer| has already been added as an observer.
44   virtual bool HasObserver(Observer* observer) const = 0;
45 };
46 
47 #endif  // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_BASE_H_
48