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