1 // Copyright 2013 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.
5 #ifndef COMPONENTS_SYNC_PREFERENCES_PREF_SERVICE_SYNCABLE_FACTORY_H_
6 #define COMPONENTS_SYNC_PREFERENCES_PREF_SERVICE_SYNCABLE_FACTORY_H_
10 #include "base/macros.h"
11 #include "components/prefs/pref_service_factory.h"
12 #include "components/prefs/pref_value_store.h"
15 class BrowserPolicyConnector;
19 namespace user_prefs {
20 class PrefRegistrySyncable;
23 namespace sync_preferences {
25 class PrefModelAssociatorClient;
26 class PrefServiceSyncable;
28 // A PrefServiceFactory that also knows how to build a
29 // PrefServiceSyncable, and may know about Chrome concepts such as
31 class PrefServiceSyncableFactory : public PrefServiceFactory {
33 PrefServiceSyncableFactory();
34 ~PrefServiceSyncableFactory() override;
36 // Set up policy pref stores using the given policy service and connector.
37 // These will assert when policy is not used.
38 void SetManagedPolicies(policy::PolicyService* service,
39 policy::BrowserPolicyConnector* connector);
40 void SetRecommendedPolicies(policy::PolicyService* service,
41 policy::BrowserPolicyConnector* connector);
43 void SetPrefModelAssociatorClient(
44 PrefModelAssociatorClient* pref_model_associator_client);
46 // |delegate| might be null during test or if we're not using the Mojo pref
48 std::unique_ptr<PrefServiceSyncable> CreateSyncable(
49 scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry,
50 std::unique_ptr<PrefValueStore::Delegate> delegate = nullptr);
53 PrefModelAssociatorClient* pref_model_associator_client_ = nullptr;
55 DISALLOW_COPY_AND_ASSIGN(PrefServiceSyncableFactory);
58 } // namespace sync_preferences
60 #endif // COMPONENTS_SYNC_PREFERENCES_PREF_SERVICE_SYNCABLE_FACTORY_H_