1// Copyright (c) 2011 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#include "chrome/browser/prefs/pref_service_mock_builder.h"
6
7#include "chrome/browser/policy/configuration_policy_pref_store.h"
8#include "chrome/browser/prefs/command_line_pref_store.h"
9#include "chrome/browser/prefs/default_pref_store.h"
10#include "chrome/browser/prefs/pref_service.h"
11#include "chrome/browser/prefs/testing_pref_store.h"
12#include "chrome/common/json_pref_store.h"
13#include "content/browser/browser_thread.h"
14
15PrefServiceMockBuilder::PrefServiceMockBuilder()
16  : user_prefs_(new TestingPrefStore) {
17}
18
19PrefServiceMockBuilder::~PrefServiceMockBuilder() {}
20
21PrefServiceMockBuilder&
22PrefServiceMockBuilder::WithManagedPlatformPrefs(PrefStore* store) {
23  managed_platform_prefs_ = store;
24  return *this;
25}
26
27PrefServiceMockBuilder&
28PrefServiceMockBuilder::WithManagedCloudPrefs(PrefStore* store) {
29  managed_cloud_prefs_ = store;
30  return *this;
31}
32
33PrefServiceMockBuilder&
34PrefServiceMockBuilder::WithExtensionPrefs(PrefStore* store) {
35  extension_prefs_ = store;
36  return *this;
37}
38
39PrefServiceMockBuilder&
40PrefServiceMockBuilder::WithCommandLinePrefs(PrefStore* store) {
41  command_line_prefs_ = store;
42  return *this;
43}
44
45PrefServiceMockBuilder&
46PrefServiceMockBuilder::WithUserPrefs(PersistentPrefStore* store) {
47  user_prefs_ = store;
48  return *this;
49}
50
51PrefServiceMockBuilder&
52PrefServiceMockBuilder::WithRecommendedPlatformPrefs(PrefStore* store) {
53  recommended_platform_prefs_ = store;
54  return *this;
55}
56
57PrefServiceMockBuilder&
58PrefServiceMockBuilder::WithRecommendedCloudPrefs(PrefStore* store) {
59  recommended_cloud_prefs_ = store;
60  return *this;
61}
62
63PrefServiceMockBuilder&
64PrefServiceMockBuilder::WithManagedPlatformProvider(
65    policy::ConfigurationPolicyProvider* provider) {
66  managed_platform_prefs_ = new policy::ConfigurationPolicyPrefStore(provider);
67  return *this;
68}
69
70PrefServiceMockBuilder&
71PrefServiceMockBuilder::WithManagedCloudProvider(
72    policy::ConfigurationPolicyProvider* provider) {
73  managed_cloud_prefs_ = new policy::ConfigurationPolicyPrefStore(provider);
74  return *this;
75}
76
77PrefServiceMockBuilder&
78PrefServiceMockBuilder::WithRecommendedPlatformProvider(
79    policy::ConfigurationPolicyProvider* provider) {
80  recommended_platform_prefs_ =
81      new policy::ConfigurationPolicyPrefStore(provider);
82  return *this;
83}
84
85PrefServiceMockBuilder&
86PrefServiceMockBuilder::WithRecommendedCloudProvider(
87    policy::ConfigurationPolicyProvider* provider) {
88  recommended_cloud_prefs_ = new policy::ConfigurationPolicyPrefStore(provider);
89  return *this;
90}
91
92PrefServiceMockBuilder&
93PrefServiceMockBuilder::WithCommandLine(CommandLine* command_line) {
94  command_line_prefs_ = new CommandLinePrefStore(command_line);
95  return *this;
96}
97
98PrefServiceMockBuilder&
99PrefServiceMockBuilder::WithUserFilePrefs(const FilePath& prefs_file) {
100  user_prefs_ =
101      new JsonPrefStore(prefs_file,
102                        BrowserThread::GetMessageLoopProxyForThread(
103                            BrowserThread::FILE));
104  return *this;
105}
106
107PrefService* PrefServiceMockBuilder::Create() {
108  PrefService* pref_service =
109      new PrefService(managed_platform_prefs_.get(),
110                      managed_cloud_prefs_.get(),
111                      extension_prefs_.get(),
112                      command_line_prefs_.get(),
113                      user_prefs_.get(),
114                      recommended_platform_prefs_.get(),
115                      recommended_cloud_prefs_.get(),
116                      new DefaultPrefStore(),
117                      NULL);
118  managed_platform_prefs_ = NULL;
119  managed_cloud_prefs_ = NULL;
120  extension_prefs_ = NULL;
121  command_line_prefs_ = NULL;
122  user_prefs_ = NULL;
123  recommended_platform_prefs_ = NULL;
124  recommended_cloud_prefs_ = NULL;
125  user_prefs_ = new TestingPrefStore;
126  return pref_service;
127}
128