browser_ui_prefs.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2012 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/ui/browser_ui_prefs.h"
6
7#include "base/prefs/pref_registry_simple.h"
8#include "base/prefs/pref_service.h"
9#include "chrome/browser/first_run/first_run.h"
10#include "chrome/browser/profiles/profile.h"
11#include "chrome/common/pref_names.h"
12#include "components/user_prefs/pref_registry_syncable.h"
13
14namespace chrome {
15
16void RegisterBrowserPrefs(PrefRegistrySimple* registry) {
17  registry->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0);
18  registry->RegisterBooleanPref(prefs::kAllowFileSelectionDialogs, true);
19  registry->RegisterIntegerPref(prefs::kShowFirstRunBubbleOption,
20                             first_run::FIRST_RUN_BUBBLE_DONT_SHOW);
21}
22
23void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
24  registry->RegisterBooleanPref(
25      prefs::kHomePageChanged,
26      false,
27      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
28  registry->RegisterBooleanPref(
29      prefs::kHomePageIsNewTabPage,
30      true,
31      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
32  registry->RegisterBooleanPref(
33      prefs::kShowHomeButton,
34      false,
35      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
36#if defined(OS_MACOSX)
37  // This really belongs in platform code, but there's no good place to
38  // initialize it between the time when the AppController is created
39  // (where there's no profile) and the time the controller gets another
40  // crack at the start of the main event loop. By that time,
41  // StartupBrowserCreator has already created the browser window, and it's too
42  // late: we need the pref to be already initialized. Doing it here also saves
43  // us from having to hard-code pref registration in the several unit tests
44  // that use this preference.
45  registry->RegisterBooleanPref(
46      prefs::kShowUpdatePromotionInfoBar,
47      true,
48      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
49#endif
50  registry->RegisterBooleanPref(
51      prefs::kDeleteBrowsingHistory,
52      true,
53      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
54  registry->RegisterBooleanPref(
55      prefs::kDeleteDownloadHistory,
56      true,
57      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
58  registry->RegisterBooleanPref(
59      prefs::kDeleteCache,
60      true,
61      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
62  registry->RegisterBooleanPref(
63      prefs::kDeleteCookies,
64      true,
65      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
66  registry->RegisterBooleanPref(
67      prefs::kDeletePasswords,
68      false,
69      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
70  registry->RegisterBooleanPref(
71      prefs::kDeleteFormData,
72      false,
73      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
74  registry->RegisterBooleanPref(
75      prefs::kDeleteHostedAppsData,
76      false,
77      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
78  registry->RegisterIntegerPref(
79      prefs::kDeleteTimePeriod,
80      0,
81      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
82  registry->RegisterInt64Pref(
83      prefs::kLastClearBrowsingDataTime,
84      0,
85      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
86  registry->RegisterBooleanPref(
87      prefs::kCheckDefaultBrowser,
88      true,
89      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
90#if defined(OS_WIN)
91  // As with Mac-spacific code above, it should be in a platform-specific
92  // section somewhere, but there is no good place for it.
93  registry->RegisterBooleanPref(
94      prefs::kSuppressSwitchToMetroModeOnSetDefault,
95      false,
96      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
97#endif
98  registry->RegisterBooleanPref(
99      prefs::kShowOmniboxSearchHint,
100      true,
101      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
102  registry->RegisterBooleanPref(
103      prefs::kWebAppCreateOnDesktop,
104      true,
105      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
106  registry->RegisterBooleanPref(
107      prefs::kWebAppCreateInAppsMenu,
108      true,
109      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
110  registry->RegisterBooleanPref(
111      prefs::kWebAppCreateInQuickLaunchBar,
112      true,
113      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
114  registry->RegisterBooleanPref(
115      prefs::kEnableTranslate,
116      true,
117      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
118  registry->RegisterStringPref(
119      prefs::kCloudPrintEmail,
120      std::string(),
121      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
122  registry->RegisterBooleanPref(
123      prefs::kCloudPrintProxyEnabled,
124      true,
125      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
126  registry->RegisterBooleanPref(
127      prefs::kCloudPrintSubmitEnabled,
128      true,
129      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
130  registry->RegisterBooleanPref(
131      prefs::kDevToolsDisabled,
132      false,
133      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
134  registry->RegisterIntegerPref(
135      prefs::kDevToolsHSplitLocation,
136      -1,
137      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
138  registry->RegisterIntegerPref(
139      prefs::kDevToolsVSplitLocation,
140      -1,
141      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
142  registry->RegisterDictionaryPref(
143      prefs::kBrowserWindowPlacement,
144      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
145  registry->RegisterDictionaryPref(
146      prefs::kPreferencesWindowPlacement,
147      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
148  registry->RegisterBooleanPref(
149      prefs::kImportBookmarks,
150      true,
151      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
152  registry->RegisterBooleanPref(
153      prefs::kImportHistory,
154      true,
155      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
156  registry->RegisterBooleanPref(
157      prefs::kImportHomepage,
158      true,
159      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
160  registry->RegisterBooleanPref(
161      prefs::kImportSearchEngine,
162      true,
163      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
164  registry->RegisterBooleanPref(
165      prefs::kImportSavedPasswords,
166      true,
167      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
168  registry->RegisterBooleanPref(
169      prefs::kEnableDoNotTrack,
170      false,
171      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
172
173  // Dictionaries to keep track of default tasks in the file browser.
174  registry->RegisterDictionaryPref(
175      prefs::kDefaultTasksByMimeType,
176      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
177  registry->RegisterDictionaryPref(
178      prefs::kDefaultTasksBySuffix,
179      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
180
181  // We need to register the type of these preferences in order to query
182  // them even though they're only typically controlled via policy.
183  registry->RegisterBooleanPref(
184      prefs::kPluginsAllowOutdated,
185      false,
186      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
187  registry->RegisterBooleanPref(
188      prefs::kPluginsAlwaysAuthorize,
189      false,
190      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
191  registry->RegisterBooleanPref(
192      prefs::kClearPluginLSODataEnabled,
193      true,
194      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
195  registry->RegisterBooleanPref(
196      prefs::kHideWebStoreIcon,
197      false,
198      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
199}
200
201void RegisterAppPrefs(const std::string& app_name, Profile* profile) {
202  // We need to register the window position pref.
203  //
204  // TODO(mnissler): Use a separate pref name pointing to a single
205  // dictionary instead. Also tracked as http://crbug.com/167256
206  std::string window_pref(prefs::kBrowserWindowPlacement);
207  window_pref.append("_");
208  window_pref.append(app_name);
209  PrefService* prefs = profile->GetPrefs();
210  if (!prefs->FindPreference(window_pref.c_str())) {
211    // TODO(joi): Do all registration up front.
212    scoped_refptr<user_prefs::PrefRegistrySyncable> registry(
213        static_cast<user_prefs::PrefRegistrySyncable*>(
214            prefs->DeprecatedGetPrefRegistry()));
215    registry->RegisterDictionaryPref(
216        window_pref.c_str(), user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
217  }
218}
219
220
221}  // namespace chrome
222