browser_ui_prefs.cc revision 868fa2fe829687343ffae624259930155e16dbd8
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 195 registry->RegisterBooleanPref( 196 prefs::kResetDefaultSearchEngine, 197 true, 198 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 199 registry->RegisterBooleanPref( 200 prefs::kResetHomepage, 201 true, 202 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 203 registry->RegisterBooleanPref( 204 prefs::kResetContentSettings, 205 true, 206 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 207 registry->RegisterBooleanPref( 208 prefs::kResetCookiesAndSiteData, 209 true, 210 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 211 registry->RegisterBooleanPref( 212 prefs::kResetExtensions, 213 true, 214 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 215 registry->RegisterIntegerPref( 216 prefs::kResetExtensionsHandling, 217 0, 218 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 219} 220 221void RegisterAppPrefs(const std::string& app_name, Profile* profile) { 222 // We need to register the window position pref. 223 // 224 // TODO(mnissler): Use a separate pref name pointing to a single 225 // dictionary instead. Also tracked as http://crbug.com/167256 226 std::string window_pref(prefs::kBrowserWindowPlacement); 227 window_pref.append("_"); 228 window_pref.append(app_name); 229 PrefService* prefs = profile->GetPrefs(); 230 if (!prefs->FindPreference(window_pref.c_str())) { 231 // TODO(joi): Do all registration up front. 232 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( 233 static_cast<user_prefs::PrefRegistrySyncable*>( 234 prefs->DeprecatedGetPrefRegistry())); 235 registry->RegisterDictionaryPref( 236 window_pref.c_str(), user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 237 } 238} 239 240 241} // namespace chrome 242