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 10class PrefServiceSyncable; 11 12namespace base { 13class CommandLine; 14} 15 16namespace policy { 17class PolicyService; 18} 19 20namespace user_prefs { 21class 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. 27class 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