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. 4 5 #ifndef CHROME_BROWSER_PREFS_PREF_SERVICE_SYNCABLE_FACTORY_H_ 6 #define CHROME_BROWSER_PREFS_PREF_SERVICE_SYNCABLE_FACTORY_H_ 7 8 #include "base/prefs/pref_service_factory.h" 9 10 class PrefServiceSyncable; 11 12 namespace base { 13 class CommandLine; 14 } 15 16 namespace policy { 17 class PolicyService; 18 } 19 20 namespace user_prefs { 21 class PrefRegistrySyncable; 22 } 23 24 // A PrefServiceFactory that also knows how to build a 25 // PrefServiceSyncable, and may know about Chrome concepts such as 26 // PolicyService. 27 class PrefServiceSyncableFactory : public base::PrefServiceFactory { 28 public: 29 PrefServiceSyncableFactory(); 30 virtual ~PrefServiceSyncableFactory(); 31 32 #if defined(ENABLE_CONFIGURATION_POLICY) 33 // Set up policy pref stores using the given policy service. 34 void SetManagedPolicies(policy::PolicyService* service); 35 void SetRecommendedPolicies(policy::PolicyService* service); 36 #endif 37 38 // Specifies to use an actual command-line backed command-line pref store. 39 void SetCommandLine(base::CommandLine* command_line); 40 41 scoped_ptr<PrefServiceSyncable> CreateSyncable( 42 user_prefs::PrefRegistrySyncable* registry); 43 44 private: 45 DISALLOW_COPY_AND_ASSIGN(PrefServiceSyncableFactory); 46 }; 47 48 #endif // CHROME_BROWSER_PREFS_PREF_SERVICE_SYNCABLE_FACTORY_H_ 49