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