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