1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/prefs/pref_service_syncable_factory.h"
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/debug/trace_event.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/default_pref_store.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_notifier_impl.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/prefs/pref_value_store.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/browser_process.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/prefs/command_line_pref_store.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/prefs/pref_service_syncable.h"
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY)
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/browser_policy_connector.h"
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_pref_store.h"
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_service.h"
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_types.h"
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PrefServiceSyncableFactory::PrefServiceSyncableFactory() {
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PrefServiceSyncableFactory::~PrefServiceSyncableFactory() {
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PrefServiceSyncableFactory::SetManagedPolicies(
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    policy::PolicyService* service) {
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  set_managed_prefs(
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      new policy::ConfigurationPolicyPrefStore(
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          service,
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          g_browser_process->browser_policy_connector()->GetHandlerList(),
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          policy::POLICY_LEVEL_MANDATORY));
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PrefServiceSyncableFactory::SetRecommendedPolicies(
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    policy::PolicyService* service) {
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  set_recommended_prefs(
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      new policy::ConfigurationPolicyPrefStore(
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          service,
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          g_browser_process->browser_policy_connector()->GetHandlerList(),
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          policy::POLICY_LEVEL_RECOMMENDED));
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PrefServiceSyncableFactory::SetCommandLine(CommandLine* command_line) {
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  set_command_line_prefs(new CommandLinePrefStore(command_line));
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)scoped_ptr<PrefServiceSyncable> PrefServiceSyncableFactory::CreateSyncable(
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    user_prefs::PrefRegistrySyncable* pref_registry) {
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  TRACE_EVENT0("browser", "PrefServiceSyncableFactory::CreateSyncable");
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<PrefServiceSyncable> pref_service(
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      new PrefServiceSyncable(
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          pref_notifier,
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          new PrefValueStore(managed_prefs_.get(),
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             supervised_user_prefs_.get(),
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             extension_prefs_.get(),
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             command_line_prefs_.get(),
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             user_prefs_.get(),
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             recommended_prefs_.get(),
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             pref_registry->defaults().get(),
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             pref_notifier),
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          user_prefs_.get(),
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          pref_registry,
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          read_error_callback_,
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          async_));
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return pref_service.Pass();
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
74