// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/prefs/pref_service_mock_builder.h" #include "base/message_loop_proxy.h" #include "chrome/browser/policy/configuration_policy_pref_store.h" #include "chrome/browser/prefs/command_line_pref_store.h" #include "chrome/browser/prefs/default_pref_store.h" #include "chrome/browser/prefs/pref_notifier_impl.h" #include "chrome/browser/prefs/pref_value_store.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/testing_pref_store.h" #include "chrome/common/json_pref_store.h" #include "content/public/browser/browser_thread.h" using content::BrowserThread; PrefServiceMockBuilder::PrefServiceMockBuilder() : user_prefs_(new TestingPrefStore) { } PrefServiceMockBuilder::~PrefServiceMockBuilder() {} PrefServiceMockBuilder& PrefServiceMockBuilder::WithManagedPrefs(PrefStore* store) { managed_prefs_ = store; return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithExtensionPrefs(PrefStore* store) { extension_prefs_ = store; return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithCommandLinePrefs(PrefStore* store) { command_line_prefs_ = store; return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithUserPrefs(PersistentPrefStore* store) { user_prefs_ = store; return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithRecommendedPrefs(PrefStore* store) { recommended_prefs_ = store; return *this; } #if defined(ENABLE_CONFIGURATION_POLICY) PrefServiceMockBuilder& PrefServiceMockBuilder::WithManagedPolicies( policy::PolicyService* service) { managed_prefs_ = new policy::ConfigurationPolicyPrefStore( service, policy::POLICY_LEVEL_MANDATORY); return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithRecommendedPolicies( policy::PolicyService* service) { recommended_prefs_ = new policy::ConfigurationPolicyPrefStore( service, policy::POLICY_LEVEL_RECOMMENDED); return *this; } #endif PrefServiceMockBuilder& PrefServiceMockBuilder::WithCommandLine(CommandLine* command_line) { command_line_prefs_ = new CommandLinePrefStore(command_line); return *this; } PrefServiceMockBuilder& PrefServiceMockBuilder::WithUserFilePrefs(const FilePath& prefs_file) { return WithUserFilePrefs(prefs_file, BrowserThread::GetMessageLoopProxyForThread( BrowserThread::FILE)); } PrefServiceMockBuilder& PrefServiceMockBuilder::WithUserFilePrefs( const FilePath& prefs_file, base::MessageLoopProxy* message_loop_proxy) { user_prefs_ = new JsonPrefStore(prefs_file, message_loop_proxy); return *this; } PrefService* PrefServiceMockBuilder::Create() { DefaultPrefStore* default_pref_store = new DefaultPrefStore(); PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); PrefService* pref_service = new PrefService( pref_notifier, new PrefValueStore( managed_prefs_.get(), extension_prefs_.get(), command_line_prefs_.get(), user_prefs_.get(), recommended_prefs_.get(), default_pref_store, NULL, pref_notifier), user_prefs_.get(), default_pref_store, NULL, false); managed_prefs_ = NULL; extension_prefs_ = NULL; command_line_prefs_ = NULL; user_prefs_ = NULL; recommended_prefs_ = NULL; user_prefs_ = new TestingPrefStore; return pref_service; }