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